Gradient Descent เป็นไปได้สำหรับ kernelized SVMs (ถ้าเป็นเช่นนั้นทำไมผู้คนถึงใช้ Quadratic Programming)


21

เหตุใดผู้คนจึงใช้เทคนิคการเขียนโปรแกรม Quadratic (เช่น SMO) เมื่อต้องรับมือกับ kernelized SVM เกิดอะไรขึ้นกับ Gradient Descent มันเป็นไปไม่ได้ที่จะใช้กับเมล็ดหรือมันช้าเกินไป (และทำไม)

นี่คือบริบทอีกเล็กน้อย: พยายามทำความเข้าใจ SVM ให้ดีขึ้นเล็กน้อยฉันใช้ Gradient Descent เพื่อฝึกอบรมตัวจําแนก SVM เชิงเส้นโดยใช้ฟังก์ชันต้นทุนต่อไปนี้:

J(w,b)=C∑i=1mmax(0,1−y(i)(wt⋅x(i)+b))+12wt⋅w

ฉันใช้สัญลักษณ์ต่อไปนี้:

  • wเป็นตุ้มน้ำหนักคุณลักษณะของโมเดลและคือพารามิเตอร์ biasb
  • x(i)เป็นเวกเตอร์คุณลักษณะของอินสแตนซ์การฝึกอบรมของith
  • y(i)เป็นคลาสเป้าหมาย (-1 หรือ 1) สำหรับอินสแตนซ์ith
  • mคือจำนวนอินสแตนซ์ของการฝึกอบรม
  • Cคือพารามิเตอร์การทำให้เป็นมาตรฐาน

ฉันได้รับเวกเตอร์ไล่ระดับ (ย่อย) (ที่เกี่ยวกับและ ) จากสมการนี้และการไล่ระดับสีไล่ลงทำงานได้ดีwb

ตอนนี้ฉันต้องการที่จะแก้ไขปัญหาที่ไม่ใช่เชิงเส้น ฉันสามารถแทนที่ผลิตภัณฑ์ dot ทั้งหมดด้วยในฟังก์ชันต้นทุนโดยที่คือฟังก์ชันเคอร์เนล (เช่น Gaussian RBF, ) จากนั้นใช้แคลคูลัสเพื่อรับ เวกเตอร์ไล่ระดับสี (ย่อย) และไปข้างหน้าด้วย Gradient Descent?ut⋅vK(u,v)KK(u,v)=e−γ‖u−v‖2

หากช้าเกินไปทำไมถึงเป็นเช่นนั้น ฟังก์ชั่นค่าใช้จ่ายไม่นูนหรือไม่ หรือเป็นเพราะการไล่ระดับสีเปลี่ยนแปลงเร็วเกินไป (ไม่ใช่ Lipschitz ต่อเนื่อง) ดังนั้นอัลกอริธึมจึงกระโดดข้ามหุบเขาในระหว่างการสืบเชื้อสายดังนั้นมันจึงมาบรรจบกันช้ามาก? แต่ถึงอย่างนั้นมันจะเลวร้ายยิ่งกว่าความซับซ้อนของเวลาโปรแกรม Quadratic ซึ่งเป็นO(nตัวอย่าง2×nคุณสมบัติ)อย่างไร ถ้าเป็นเรื่องของมินิมาในท้องถิ่น Stochastic GD ไม่สามารถหลอมได้หรือไม่?

คำตอบ:


6

ชุดเพื่อให้และ , กับ , ที่คือการทำแผนที่ของเมทริกซ์อินพุตดั้งเดิม ,x สิ่งนี้ยอมให้หนึ่งแก้ SVM ผ่านการกำหนดครั้งแรก ใช้สัญลักษณ์ของคุณสำหรับการสูญเสีย:Wเสื้อ φ ( x ) = ยูที ⋅ K W T W = ยูทีเคยูK = φ ( x ) เสื้อ φ ( x ) φ ( x ) xw=ϕ(x)⋅uwtϕ(x)=ut⋅Kwtw=utKuK=ϕ(x)tϕ(x)ϕ(x)x

J(w,b)=C∑i=1mmax(0,1−y(i)(ut⋅K(i)+b))+12ut⋅K⋅u

m × m u m × 1Kคือ matrix และคือ matrix ไม่มีที่สิ้นสุดm×mum×1

อันที่จริงคู่มักจะแก้ปัญหาได้เร็วกว่า แต่ตัวแรกนั้นมีข้อดีเช่นกันโดยประมาณ (ซึ่งไม่รับประกันในสูตรคู่)


ทีนี้ทำไมคู่ที่โดดเด่นมากกว่านั้นไม่ชัดเจนเลย: [1]

เหตุผลทางประวัติศาสตร์ที่มากที่สุดของการวิจัยในทศวรรษที่ผ่านมาได้รับเกี่ยวกับการเพิ่มประสิทธิภาพคู่มีความชัดเจน เราเชื่อว่าเป็นเพราะ SVM ได้ถูกนำมาใช้เป็นครั้งแรกในการกำหนดสูตรยาก [Boser et al., 1992] ซึ่งการเพิ่มประสิทธิภาพแบบคู่ (เนื่องจากข้อ จำกัด ) ดูเหมือนเป็นธรรมชาติมากขึ้น อย่างไรก็ตามโดยทั่วไปแล้วควรเลือกใช้อัตรากำไรขั้นต้นที่อ่อนนุ่มแม้ว่าข้อมูลการฝึกอบรมนั้นจะแยกกันได้: ขอบเขตการตัดสินใจมีความแข็งแกร่งมากขึ้นเนื่องจากมีการพิจารณาประเด็นการฝึกอบรมเพิ่มเติม [Chapelle et al., 2000]


Chapelle (2007) ระบุความซับซ้อนของเวลาทั้งการเพิ่มประสิทธิภาพครั้งแรกและแบบคู่คือกรณีที่เลวร้ายที่สุดคือแต่พวกเขาวิเคราะห์การสูญเสียบานพับกำลังสองและโดยประมาณดังนั้นจึงไม่ใช่การสูญเสียบานพับที่เหมาะสมเนื่องจากไม่มีความแตกต่างที่จะใช้กับวิธีการของนิวตัน O ( n 3 )O(nnsv+nsv3)O(n3)


[1] Chapelle, O. (2007) การฝึกอบรมเครื่องเวกเตอร์สนับสนุนในครั้งแรก การคำนวณทางประสาท, 19 (5), 1155-1178


1
+1 คุณอาจขยายความซับซ้อนของเวลาด้วย
— seanv507

@ seanv507 ขอบคุณจริง ๆ ฉันควรจะแก้ไขได้ในไม่ช้าฉันจะอัปเดตคำตอบนี้
— Firebug

4

หากเราใช้การแปลงกับเวกเตอร์น้ำหนักอินพุตทั้งหมด ( ) เราจะได้รับฟังก์ชั่นต้นทุนต่อไปนี้:x ( i )ϕx(i)

J(w,b)=C∑i=1mmax(0,1−y(i)(wt⋅ϕ(x(i))+b))+12wt⋅w

เคอร์เนลเคล็ดลับแทนที่โดย{V}) เนื่องจากน้ำหนักเวกเตอร์จะไม่เปลี่ยนเคล็ดลับเคอร์เนลไม่สามารถนำไปใช้กับฟังก์ชั่นค่าใช้จ่ายดังกล่าวข้างต้นK ( u , v ) wϕ(u)t⋅ϕ(v)K(u,v)w

ฟังก์ชันต้นทุนด้านบนสอดคล้องกับรูปแบบเบื้องต้นของวัตถุประสงค์ SVM:

minw,b,ζC∑i=1mζ(i)+12wt⋅w

ภายใต้และสำหรับζ ( i ) ≥ 0 i = 1 , ⋯ , my(i)(wt⋅ϕ(x(i))+b)≥1−ζ(i))ζ(i)≥0i=1,⋯,m

รูปแบบคู่คือ:

minα12αt⋅Q⋅α−1t⋅α

ภายใต้และสำหรับ0≤อัลฟ่าฉัน ≤Cฉัน=1,2,⋯,ม.yt⋅α=00≤αi≤Ci=1,2,⋯,m

โดยที่เป็นเวกเตอร์ที่เต็มไปด้วย 1s และคือ matrix ที่มีองค์ประกอบ{(ญ)})คำถาม1QQ ฉันj = y ( i ) y ( j ) ϕ ( x ( i ) ) t ⋅ ϕ ( x ( j ) )m×mQij=y(i)y(j)ϕ(x(i))t⋅ϕ(x(j))

ตอนนี้เราสามารถใช้เคล็ดลับเคอร์เนลโดยคำนวณดังนี้:QiJ

QผมJ=Y(ผม)Y(J)K(x(ผม),x(J))

ดังนั้นเคล็ดลับเคอร์เนลสามารถใช้ได้เฉพาะในรูปแบบคู่ของปัญหา SVM (รวมถึงอัลกอริทึมอื่น ๆ เช่นการถดถอยโลจิสติก)

ตอนนี้คุณสามารถใช้ไลบรารี Quadratic Programming แบบ off-the-shelf เพื่อแก้ปัญหานี้หรือใช้ตัวคูณแบบลากรองจ์เพื่อรับฟังก์ชั่นที่ไม่มีข้อ จำกัด (ฟังก์ชั่นค่าใช้จ่ายสองเท่า) จากนั้นค้นหาขั้นต่ำโดยใช้ Gradient Descent หรือเทคนิคการเพิ่มประสิทธิภาพอื่น ๆ หนึ่งในวิธีที่มีประสิทธิภาพมากที่สุดน่าจะเป็นอัลกอริธึม SMO ที่นำมาใช้โดยlibsvmไลบรารี (สำหรับ SVM เคอร์เนล)


1
ฉันไม่แน่ใจว่าทำไมคุณทำเครื่องหมายคำตอบ Community Wiki ของคุณ ดูเหมือนว่าคำตอบที่ถูกต้องสำหรับคำถามของคุณ
— Sycorax พูดว่า Reinstate Monica

ขอบคุณ @GeneralAbrial ฉันทำเครื่องหมายคำตอบของฉันเป็น Community Wiki เพื่อหลีกเลี่ยงความสงสัยใด ๆ ที่ฉันรู้คำตอบก่อนถามคำถาม
— MiniQuark

1
คุณควรทำสิ่งที่คุณคิดว่าถูกต้องเสมอ แต่ก็เป็นเรื่องเพียว ๆ ที่จะถามและตอบคำถามของคุณเอง
— Sycorax พูดว่า Reinstate Monica

เดี๋ยวก่อนคุณเปลี่ยนเวกเตอร์น้ำหนักเป็นไม่ได้แล้วและกับแล้วปรับน้ำหนักตัวอย่าง ? W=φ(x)⋅ยูw t w = u t K u K = ϕ t ϕ uWเสื้อφ(x)=ยู⋅KWเสื้อW=ยูเสื้อKยูK=φเสื้อφยู
— Firebug

2

ฉันอาจจะผิด แต่ฉันไม่เห็นวิธีที่เราสามารถแทนที่ผลิตภัณฑ์ดอทด้วยเมล็ดโดยไม่ต้องเปลี่ยนเป็นปัญหาคู่

เมล็ดแมปอินพุตโดยปริยายไปยังพื้นที่คุณลักษณะบางอย่างที่กลายเป็นฟังก์ชั่นการสูญเสียก็จะกลายเป็น ถ้าใช้เคอร์เนลเกาส์เซียน จะไม่มีที่สิ้นสุด มิติดังนั้นจะ{w}xφ(x)
J(W,ข)=CΣผม=1ม.ม.ax(0,1-Y(ผม)(Wเสื้อ⋅φ(x(ผม))+ข))+12Wเสื้อ⋅W
φ(x(ผม))W

ดูเหมือนว่าเป็นการยากที่จะเพิ่มประสิทธิภาพเวกเตอร์ของมิติที่ไม่มีที่สิ้นสุดโดยใช้การไล่ระดับสีโดยตรง

ปรับปรุง
คำตอบของ Firebug ให้วิธีการแทนที่ผลิตภัณฑ์ดอทด้วยเมล็ดในสูตรแรก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.