วันเสาร์ที่ 18 พฤศจิกายน พ.ศ. 2560

Softmax vs Sigmoid

อธิบายแบบง่ายกว่าในนั้นคือ
sigmoid เป็น การวัดค่าความเก่งในตัวมันเอง 1/1+exp(-x) ถ้า x ยิ่งเยอะ ค่าก็ยิ่งเข้าหา 1 เพราะ exp(-inf) = 0 >>>>>>>> lim 1/1-0 = 1 ถ้า x ยิ่งน้อยค่าก็ยิ่งเข้าหา 0 เพราะ exp(inf) = inf >>>>>>>> lim 1/1+inf = 0

จะเห็นแค่มันวัดค่า true false อยู่กับตัวมันเอง ทีนี้สมมติว่าเรามี node output  NN  2 อัน node สองอันนั้นมันก็จะเป็น independent กัน
แต่ softmax เป็น exp(xi)/sum(exp(xiถึงxn)) ถ้าเราถอด exp ออกมันก็คือค่าความน่าจะเป็นธรรมดา พอผ่านแบ็คพรอพแล้วมันแอดจัสค่า xi แต่ละตัวอีกรอบบางตัวเพิ่ม บางตัวลด สมมติว่า ถ้าค่า exp xi ตัวใดตัวนึงสูงขึ้น ต่อให้ตัวอื่นคงที่ ค่าprob ของตัวอื่นก็จะลด สรุปคือมัน dependent กัน

ถาม: ฟังก์ชั่นทั้งสองใช้กับ multiclass ได้หรือไม่
ตอบ: ได้ทั้งสองอัน ขึ้นอยู่กับ architecture ของ NN เรา

ถาม: ฟังก์ชั่นทั้งสองอันไหนดีกว่า
ตอบ: ขึ้นอยู๋กับคลาสงาน ยกตัวอย่างง่ายๆ ถ้าเราต้องการแค่ค่า maximum เป้าหมายอย่างเดียวเช่นแยกภาพ หมา กับ แมว softmax เป็นทางเลือกที่ง่ายกว่า แต่ถ้าต้องการคำตอบแบบเป็น ranking กรณีที่คำตอบมันอาจจะเป็นก้ำกึ่งๆระหว่างสองคลาสได้เช่น แยกพันธ์หมา แล้วมีพวกพันธ์ที่คล้ายกันอยู่มากเช่น พันธ์ชิบะ อาคิตะ คอร์กิ (multiclass relevance) sigmoid จะช่วยให้เราจัดอันดับแร้งค์กิ้งได้ดีกว่า

ถ้าจะเอาละเอียดเกี่ยวกับเรื่องนี้แนะว่าอ่านนี่ดีกว่าครับ
http://cs231n.github.io/linear-classify/#softmax

และ
Softmax vs Sigmoid
http://dataaspirant.com/2017/03/07/difference-between-softmax-function-and-sigmoid-function/

ไม่มีความคิดเห็น:

แสดงความคิดเห็น