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


21

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

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

J(w,b)=Ci=1mmax(0,1y(i)(wtx(i)+b))+12wtw

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

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

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

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

หากช้าเกินไปทำไมถึงเป็นเช่นนั้น ฟังก์ชั่นค่าใช้จ่ายไม่นูนหรือไม่ หรือเป็นเพราะการไล่ระดับสีเปลี่ยนแปลงเร็วเกินไป (ไม่ใช่ 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)=utKwtw=utKuK=ϕ(x)tϕ(x)ϕ(x)x

J(w,b)=Ci=1mmax(0,1y(i)(utK(i)+b))+12utKu

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)=Ci=1mmax(0,1y(i)(wtϕ(x(i))+b))+12wtw

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

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

minw,b,ζCi=1mζ(i)+12wtw

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

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

minα12αtQα1tα

ภายใต้และสำหรับ0อัลฟ่าฉันCฉัน=1,2,,ม.ytα=00αiCi=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.