2.2.2
Softmax Regression
สรุป
- Softmax regression ขยายลอจิสติกรีเกรสชันไปยังหลายคลาสและให้ความน่าจะเป็นของทุกคลาสพร้อมกัน
- เอาต์พุตอยู่ในช่วง \([0,1]\) และรวมกันเป็น 1 จึงนำไปตั้ง threshold หรือคำนวณต้นทุนได้โดยตรง
- ฝึกโดยลดทอน cross-entropy ซึ่งปรับความน่าจะเป็นที่พยากรณ์ให้ตรงกับความจริง
- ใน scikit-learn ระบุ
LogisticRegression(multi_class="multinomial")ก็ได้ Softmax regression และยังใช้ L1/L2 ได้
สัญชาตญาณ #
การเข้าใจวิธีนี้ควรดูสมมติฐานของโมเดล ลักษณะข้อมูล และผลของการตั้งค่าพารามิเตอร์ต่อการทั่วไปของโมเดล
คำอธิบายโดยละเอียด #
สูตรสำคัญ #
สำหรับคลาส \(K\) คลาส ความน่าจะเป็นของคลาส \(k\) คือ
$$ P(y = k \mid \mathbf{x}) = \frac{\exp\left(\mathbf{w}_k^\top \mathbf{x} + b_k\right)} {\sum_{j=1}^{K} \exp\left(\mathbf{w}_j^\top \mathbf{x} + b_j\right)}. $$ลดทอน cross-entropy
$$ L = - \sum_{i=1}^{n} \sum_{k=1}^{K} \mathbb{1}(y_i = k) \log P(y = k \mid \mathbf{x}_i). $$การเพิ่มโทษ L1/L2 ช่วยควบคุมการเรียนรู้เกินได้เหมือนลอจิสติกรีเกรสชันแบบสองคลาส
ทดลองด้วย Python #
ตัวอย่างต่อไปนี้ฝึก softmax regression กับข้อมูล 3 คลาสและวาดเส้นแบ่ง
| |

เอกสารอ้างอิง #
- Bishop, C. M. (2006). Pattern Recognition and Machine Learning. Springer.
- Murphy, K. P. (2012). Machine Learning: A Probabilistic Perspective. MIT Press.