Softmax Function คืออะไร

ECoding
Super AI Engineer
Published in
3 min readMar 28, 2021

ในการทำให้ Machine Learning สามารถทำ Classification ได้นั้น ถ้าหากเราใช้ Neural network บางครั้งเราก็จะเพิ่ม Softmax Function ไว้ท้ายสุดของ Neural Network ดังรูป

ซึ่งวันนี้ผมจะมาแชร์เรื่องของ Softmax Function กัน แต่ก่อนที่จะเข้าไปในเรื่องของ Softmax Function แบบเจาะลึกผมขออธิบายภาพรวมแบบคร่าวๆในการทำให้ Neural Network สามารถทำ Classification กันก่อน

สมมุติว่าเราต้องการสร้าง Neural Network ให้สามารถแยกได้ว่าวันนี้ ฝนตก, ลูกเห็บตก และ อากาศปกติ โดยข้อมูลที่จะใช้ในการคำนวณนั้น ก็จะมี อุณหภูมิ, ความชื้น, ความกดอากาศ , แรงลม และ ทิศทางของลม ซึ่งเราสร้าง Neural Network ได้ดังรูป

จากรูป Neural Network ที่สร้างขึ้นมานั้นจะเห็น Layer Input จะต้องมี 5 Node เพราะว่าเราจะเอาข้อมูล 5 ค่ามาคำนวณคือ อุณหภูมิ, ความชื้น, ความกดอากาศ , แรงลม และ ทิศทางของลม ส่วน Output Layer จะมี Node อยู่ 3 Node เพราะว่าเราต้องการให้ทำนาย 3 ค่าคือ ฝนตก, ลูกเห็บตก, อากาศปกติ

ซึ่งค่าที่เราต้องการให้ ออกมา ทาง Output Layer ต้องการให้เป็นค่า 0 หรือ 1 เท่านั้น เช่น หาก Neural Network รับข้อมูลมาแล้วทำนายว่า ฝนตก ค่าที่ได้ควรเป็น 1,0,0 ดังรูปด้านล่าง

หรือหาก Neural Network รับข้อมูลมาแล้วทำนายว่า ลูกเห็บตก ค่าที่ได้ควรเป็น 0,1,0 ดังรูปด้านล่าง

หรือหาก Neural Network รับข้อมูลมาแล้วทำนายว่า อากาศปกติ ค่าที่ได้ควรเป็น 0,0,1 ดังรูปด้านล่าง

แต่เนื่องจากค่า Output จาก Neural Network จริงนั้นเป็นค่าอะไรก็ไม่รู้ ที่สามารถออกมาได้เช่น อาจจะเป็นค่า 25, 10, 12 , … เป็นต้น

ดังนั้นจะเราต้องการบังคับให้ Neural Network ให้ Output ออกเป็นค่า 0 หรือ 1 เราจึงต้องนำค่า Output จาก Neural Network เข้าสมการสักอย่างนึงที่คอยปรับค่า Neural Network ให้อยู่ระหว่าง 0–1 ซึ่งสมการนึงที่เราจะใช้ คือสมการที่ชื่อว่า Softmax หรือเรียกว่า Softmax function

โดยหลังจากเอาเข้า Softmax แล้วผลที่ได้ออกมาจาก Softmax นั้นจะเป็นค่าที่บอกถึงความน่าจะเป็นว่า มีโอกาสฝนตกเท่าไหร่, มีโอกาสลูกเห็บตกเท่าไหร่ หรือมีโอกาสที่อากาศปกติเท่าไหร่ และต้องมีเงื่อนไขว่า ผลรวมของความน่าจะเป็นทั้งหมด ของ ฝนตก, ลูกเห็บตก , อากาศปกติ ต้องเป็น ค่า 1 เท่านั้น ดังรูป

ซึ่งในการที่จะทำนายก็เพียงแค่เลือกผลของความน่าจะเป็นที่มากที่สุด ตัวอย่างเช่น หากเรารับข้อมูลมาดังนี้

อุณหภูมิ = 27
ความชื้น = 77 %
ความกดอากาศ = 1012 hpa
แรงลม = 18 km/hr
ทิศทางของลม = 8 degree

ผลที่ได้เป็นดังรูป

จะเห็นว่า ค่าของฝนตกมีค่าเป็น 0.9999974338 ซึ่งเป็นค่าที่มากกว่า ลูกเห็บตก(0.0000003059) และ อากาศปกติ (0.0000022603) ดังนั้นจึงทำนายว่าเป็น “ฝนตก”

“แล้วสมการ Softmax หน้าตาเป็นยังไง?”

สมการ Softmax หน้าเป็นดังนี้

เพื่อให้เข้าใจมากขึ้นเราลองนำไปใช้กันเลยดีกว่า สมมุติว่าค่าที่ ออกมาจาก Neural Network เป็นดังภาพ คือค่า 25, 10 และ 12

เสร็จแล้วเราก็เอาค่าที่ได้มาเข้า สมการ Softmax ได้ดังนี้

เราจะให้ค่า e = 2.71828 เสมอ และในการคำนวณแต่ละผลลัพธ์เราก็จะเอาค่า e มายกกำลังด้วย ค่าที่ได้จาก Neural network หารด้วยผลรวมของ e ยกกำลังแต่ละค่า จึงทำให้ค่าที่ได้แต่ละผลลัพธ์มีค่าที่ไม่เกินเลข 1 และสาเหตุที่เราทำการยกกำลังเนื่องจากเราต้องการให้ค่าที่ได้จาก Softmax แต่ละผลลัพธ์มีค่าที่แตกต่างกันมากนั่นเอง (จากตัวอย่างจะเห็นว่า หากเราเอาค่า 25 เข้า Softmax ผลที่ได้จะเป็น 0.9999974338 ซึ่งได้แตกต่างจากผลลัพธ์อื่นมาก)

หวังว่าโพสน์นี้จะมีประโยชน์นะครับ ขอบคุณครับ

Contact

--

--