เหตุใดผู้คนจึงใช้เทคนิคการเขียนโปรแกรม Quadratic (เช่น SMO) เมื่อต้องรับมือกับ kernelized SVM เกิดอะไรขึ้นกับ Gradient Descent มันเป็นไปไม่ได้ที่จะใช้กับเมล็ดหรือมันช้าเกินไป (และทำไม)
นี่คือบริบทอีกเล็กน้อย: พยายามทำความเข้าใจ SVM ให้ดีขึ้นเล็กน้อยฉันใช้ Gradient Descent เพื่อฝึกอบรมตัวจําแนก SVM เชิงเส้นโดยใช้ฟังก์ชันต้นทุนต่อไปนี้:
ฉันใช้สัญลักษณ์ต่อไปนี้:
- เป็นตุ้มน้ำหนักคุณลักษณะของโมเดลและคือพารามิเตอร์ bias
- เป็นเวกเตอร์คุณลักษณะของอินสแตนซ์การฝึกอบรมของ
- เป็นคลาสเป้าหมาย (-1 หรือ 1) สำหรับอินสแตนซ์
- คือจำนวนอินสแตนซ์ของการฝึกอบรม
- คือพารามิเตอร์การทำให้เป็นมาตรฐาน
ฉันได้รับเวกเตอร์ไล่ระดับ (ย่อย) (ที่เกี่ยวกับและ ) จากสมการนี้และการไล่ระดับสีไล่ลงทำงานได้ดี
ตอนนี้ฉันต้องการที่จะแก้ไขปัญหาที่ไม่ใช่เชิงเส้น ฉันสามารถแทนที่ผลิตภัณฑ์ dot ทั้งหมดด้วยในฟังก์ชันต้นทุนโดยที่คือฟังก์ชันเคอร์เนล (เช่น Gaussian RBF, ) จากนั้นใช้แคลคูลัสเพื่อรับ เวกเตอร์ไล่ระดับสี (ย่อย) และไปข้างหน้าด้วย Gradient Descent?
หากช้าเกินไปทำไมถึงเป็นเช่นนั้น ฟังก์ชั่นค่าใช้จ่ายไม่นูนหรือไม่ หรือเป็นเพราะการไล่ระดับสีเปลี่ยนแปลงเร็วเกินไป (ไม่ใช่ Lipschitz ต่อเนื่อง) ดังนั้นอัลกอริธึมจึงกระโดดข้ามหุบเขาในระหว่างการสืบเชื้อสายดังนั้นมันจึงมาบรรจบกันช้ามาก? แต่ถึงอย่างนั้นมันจะเลวร้ายยิ่งกว่าความซับซ้อนของเวลาโปรแกรม Quadratic ซึ่งเป็นอย่างไร ถ้าเป็นเรื่องของมินิมาในท้องถิ่น Stochastic GD ไม่สามารถหลอมได้หรือไม่?