เครื่องเวกเตอร์ค้ำยัน

| ส่วนหนึ่งของเนื้อหา |
| การเรียนรู้ของเครื่อง และ การทำเหมืองข้อมูล |
|---|
เครื่องเวกเตอร์ค้ำยัน (อังกฤษ: support-vector machine; SVM) หรือ โครงข่ายเวกเตอร์ค้ำยัน (support-vector network) เป็นโมเดลการเรียนรู้แบบมีผู้สอนสำหรับการจำแนกประเภทข้อมูลและการถดถอย โมเดลดั้งเดิมสำหรับการจำแนกสองชั้นจะหาไฮเปอร์เพลนที่แบ่งตัวอย่างฝึกสองกลุ่ม โดยเลือกเส้นแบ่งที่มีระยะขอบ (margin) ถึงตัวอย่างใกล้ที่สุดกว้างที่สุด ตัวอย่างฝึกที่กำหนดตำแหน่งของเส้นแบ่งเรียกว่าเวกเตอร์ค้ำยัน (support vector)[1]
SVM เชิงเส้นใช้เส้นตรงในสองมิติ ระนาบในสามมิติ หรือไฮเปอร์เพลนในมิติที่สูงกว่าเป็นขอบเขตการตัดสินใจ เมื่อเส้นแบ่งเชิงเส้นไม่เพียงพอ SVM สามารถใช้ฟังก์ชันเคอร์เนลคำนวณผลคูณภายในเสมือนอยู่ในปริภูมิคุณลักษณะอีกปริภูมิหนึ่ง จึงสร้างขอบเขตการตัดสินใจไม่เป็นเชิงเส้นได้โดยไม่ต้องสร้างพิกัดในปริภูมินั้นโดยตรง วิธีนี้เรียกว่าเคล็ดลับเคอร์เนล (kernel trick)[2] SVM เป็นตระกูลวิธี ไม่ใช่คำรับรองว่าวิธีนี้ให้ผลดีที่สุดกับทุกชุดข้อมูล; ผลขึ้นกับลักษณะเด่น การปรับพารามิเตอร์ วิธีประเมิน และโจทย์ที่นำไปใช้[3]
หลักการ
[แก้]การจำแนกสองชั้นและไฮเปอร์เพลน
[แก้]พิจารณาชุดข้อมูลฝึก ซึ่ง เป็นเวกเตอร์คุณลักษณะ และกำหนดป้ายกำกับของการจำแนกสองชั้นเป็น SVM เชิงเส้นเรียนรู้เวกเตอร์น้ำหนัก และค่าคงที่ เพื่อสร้างฟังก์ชันตัดสินใจ
จุดที่ทำให้ คือไฮเปอร์เพลน แผนการจำแนกพื้นฐานให้ผลเป็น จึงใช้เครื่องหมายของคะแนนตัดสินว่าตัวอย่างอยู่คนละด้านของไฮเปอร์เพลน ไม่ได้หมายความว่าค่าสัมบูรณ์ของคะแนนเป็นความน่าจะเป็นของชั้นข้อมูล[4]

หากตัวอย่างฝึกแยกเชิงเส้นได้ มีไฮเปอร์เพลนที่แบ่งข้อมูลถูกต้องได้หลายอัน SVM เลือกไฮเปอร์เพลนที่เพิ่มระยะห่างจากเส้นแบ่งถึงตัวอย่างฝึกที่ใกล้ที่สุดของทั้งสองด้านให้มากที่สุด เมื่อปรับมาตราส่วนของ และ ให้ขอบเขตของระยะขอบเป็น ความกว้างระหว่างขอบเขตทั้งสองคือ ดังนั้นปัญหาแบบระยะขอบแข็ง (hard margin) เขียนได้ว่า[1][4]
- (สำหรับทุก )
การเขียนเช่นนี้ทำให้การเพิ่มระยะขอบเท่ากับการแก้ปัญหาการหาค่าเหมาะที่สุดแบบนูน (convex optimization) ของวัตถุประสงค์กำลังสองภายใต้เงื่อนไขเชิงเส้น ในกรณีที่ข้อมูลแยกเชิงเส้นได้ คำตอบระดับโลกของปัญหานี้กำหนดขอบเขตการตัดสินใจ; อย่างไรก็ดี ความเป็นเอกฐานของพารามิเตอร์หรือเวกเตอร์ค้ำยันอาจขึ้นกับข้อมูลที่ซ้ำกันและรูปแบบการกำหนดปัญหา[4]
ระยะขอบแบบอ่อน
[แก้]ข้อมูลจริงมักมีสัญญาณรบกวน ชั้นข้อมูลซ้อนทับกัน หรือป้ายกำกับคลาดเคลื่อน จึงอาจไม่มีเส้นแบ่งที่จัดทุกตัวอย่างถูกต้อง SVM แบบระยะขอบแบบอ่อน (soft margin) เพิ่มตัวแปรผ่อนปรน เพื่ออนุญาตให้ละเมิดระยะขอบได้ แล้วแก้ปัญหาต่อไปนี้ภายใต้เงื่อนไขบรรทัดที่สอง
ค่าบวก เป็นไฮเปอร์พารามิเตอร์ที่ควบคุมการแลกเปลี่ยนระหว่างการรักษาระยะขอบกว้างกับการลงโทษตัวอย่างที่อยู่ในระยะขอบหรือถูกจำแนกผิด กล่าวอย่างหยาบ ที่ใหญ่ให้ความสำคัญกับข้อผิดพลาดของข้อมูลฝึกมากกว่า แต่ผลต่อข้อมูลใหม่ต้องตรวจด้วยการประเมินที่แยกจากข้อมูลฝึก ไม่ควรสรุปจากค่าความถูกต้องของชุดฝึกเพียงอย่างเดียว[1][3]
เวกเตอร์ค้ำยันและรูปแบบทวิภาค
[แก้]เมื่อตั้งปัญหาในรูปทวิภาค (dual form) ตัวอย่างแต่ละตัวมีสัมประสิทธิ์ และฟังก์ชันตัดสินใจเชิงเส้นเขียนได้เป็น
ตัวอย่างที่มี คือเวกเตอร์ค้ำยัน จึงมีเพียงตัวอย่างส่วนหนึ่งที่ปรากฏโดยตรงในฟังก์ชันตัดสินใจ สำหรับระยะขอบแบบแข็ง เวกเตอร์ค้ำยันอยู่บนขอบของระยะขอบ; สำหรับระยะขอบแบบอ่อน เวกเตอร์ค้ำยันอาจอยู่บนหรือภายในระยะขอบ และบางตัวอาจถูกจำแนกผิดได้[1][4] คำว่า “ค้ำยัน” จึงไม่ได้หมายถึงตัวอย่างที่เป็นตัวแทนทุกตัวของชั้นข้อมูล แต่หมายถึงตัวอย่างที่มีผลต่อเส้นแบ่งที่เรียนรู้ได้
เคล็ดลับเคอร์เนล
[แก้]
ให้ แทนการแปลงข้อมูลสู่ปริภูมิคุณลักษณะ หากคำนวณได้ว่า
ก็ไม่จำเป็นต้องสร้าง อย่างชัดแจ้ง เพราะแทนผลคูณภายในในรูปทวิภาคด้วย ได้โดยตรง ฟังก์ชันตัดสินใจจึงเป็น
ฟังก์ชันที่ใช้บ่อยได้แก่เคอร์เนลเชิงเส้น , เคอร์เนลพหุนาม และเคอร์เนลฐานรัศมีแบบเกาส์เซียน (radial basis function: RBF) โดย เป็นพารามิเตอร์ความกว้างของเคอร์เนล เคอร์เนลที่ใช้กับ SVM ต้องสอดคล้องกับผลคูณภายในของปริภูมิคุณลักษณะ (ในทางปฏิบัติมักตรวจด้วยเงื่อนไขเมทริกซ์กึ่งกำหนดบวก) มิฉะนั้นคุณสมบัติของปัญหาการหาค่าเหมาะที่สุดมาตรฐานอาจไม่คงอยู่[2][5]
เคอร์เนลไม่ได้ทำให้ข้อมูล “แยกได้เสมอ” และมิติที่สูงขึ้นไม่ได้ทำให้โมเดลดีกว่าโดยตัวมันเอง การเลือกเคอร์เนลและค่าของ , หรือดีกรีของพหุนามเป็นส่วนหนึ่งของการเลือกโมเดล จึงต้องทำภายในกระบวนการตรวจสอบไขว้ (cross-validation) โดยกันชุดทดสอบสุดท้ายไว้ต่างหาก[3][6]
การฝึกและการประเมินผล
[แก้]การฝึก SVM คือการแก้ปัญหาการหาค่าเหมาะที่สุด ไม่ใช่เพียงวาดเส้นแบ่งผ่านข้อมูล สำหรับ SVM เชิงเส้นอาจแก้ปัญหาในรูปปฐมภูมิ (primal form) ได้โดยตรง; SVM เคอร์เนลมักใช้รูปทวิภาคหรืออัลกอริทึมแยกปัญหาเป็นส่วนย่อย เช่น sequential minimal optimization (SMO) เพื่อไม่ต้องแก้ปัญหากำลังสองขนาดใหญ่ในคราวเดียว[6] ซอฟต์แวร์ SVM จึงต่างกันที่ชนิดของโมเดล ตัวแก้ปัญหา และการรองรับข้อมูลขนาดใหญ่ ไม่ใช่เพียงต่างกันที่ชื่อคำสั่ง
ก่อนฝึก มักปรับมาตราส่วนของคุณลักษณะเชิงตัวเลขโดยอาศัยเฉพาะข้อมูลฝึก เพราะระยะห่างและเคอร์เนล RBF ไวต่อหน่วยวัดของตัวแปร ตัวอย่างเช่น คุณลักษณะที่วัดเป็นหลักล้านอาจครอบงำคุณลักษณะที่อยู่ระหว่างศูนย์ถึงหนึ่ง หากปรับมาตราส่วนด้วยข้อมูลทั้งชุดก่อนแยกทดสอบจะทำให้ข้อมูลจากชุดทดสอบรั่วไหลเข้าสู่ขั้นตอนฝึกได้[3] สำหรับข้อมูลไม่สมดุล ควรรายงานตัวชี้วัดที่สะท้อนเป้าหมายของโจทย์ เช่น precision, recall, F1 score หรือพื้นที่ใต้เส้นโค้ง ROC ร่วมกับการกำหนดน้ำหนักชั้นข้อมูลหรือเกณฑ์ตัดสินใจอย่างชัดเจน แทนการรายงานความถูกต้องโดยรวมเพียงค่าเดียว[3]
รูปแบบและส่วนขยาย
[แก้]| รูปแบบ | งานหรือแนวคิด | ข้อสังเกต |
|---|---|---|
| SVM เชิงเส้น | การจำแนกด้วยไฮเปอร์เพลนในปริภูมิข้อมูลเดิม | เหมาะเป็นจุดเริ่มต้นที่ตีความน้ำหนักได้ง่ายกว่าในบางบริบท และหลีกเลี่ยงการสร้างเมทริกซ์เคอร์เนลเต็ม |
| SVM เคอร์เนล | การจำแนกไม่เป็นเชิงเส้นผ่านฟังก์ชันเคอร์เนล | ต้องเลือกเคอร์เนลและไฮเปอร์พารามิเตอร์; ต้นทุนการคำนวณอาจสูงเมื่อจำนวนตัวอย่างหรือจำนวนเวกเตอร์ค้ำยันมาก |
| SVM หลายชั้นข้อมูล | การจำแนกตั้งแต่สามชั้นขึ้นไป | มักลดเป็นปัญหาสองชั้นหลายปัญหา เช่น one-versus-rest หรือ one-versus-one; ยังมีสูตรที่แก้หลายชั้นพร้อมกัน |
| การถดถอยเวกเตอร์ค้ำยัน (support-vector regression: SVR) | ทำนายค่าต่อเนื่อง | ใช้การสูญเสียแบบ -insensitive ซึ่งไม่ลงโทษความคลาดเคลื่อนภายในท่อกว้าง |
| SVM ชั้นเดียว (one-class SVM) | ตรวจจับความแปลกใหม่หรือค่านอกกลุ่มจากข้อมูลของชั้นเดียว | เรียนรู้ขอบเขตของข้อมูลปกติ ไม่ใช่การจำแนกสองชั้นที่มีตัวอย่างของทั้งสองชั้น |
การจำแนกหลายชั้นข้อมูล
[แก้]SVM ดั้งเดิมกำหนดสำหรับปัญหาสองชั้น การใช้กับหลายชั้นข้อมูลทำได้โดยสร้างตัวจำแนกสองชั้นหลายตัว เช่น one-versus-rest ซึ่งแยกแต่ละชั้นออกจากชั้นที่เหลือ หรือ one-versus-one ซึ่งสร้างตัวจำแนกให้แก่ทุกคู่ของชั้นข้อมูลแล้วรวมผลโหวต นอกจากนี้มีการกำหนดปัญหาหลายชั้นข้อมูลเป็นปัญหาการหาค่าเหมาะที่สุดเดียวโดยตรง วิธีที่เหมาะสมขึ้นกับจำนวนชั้น ขนาดข้อมูล และตัวแก้ปัญหาที่ใช้[7]
การถดถอยเวกเตอร์ค้ำยัน
[แก้]
ในการถดถอยเวกเตอร์ค้ำยัน (SVR) เป้าหมายไม่ใช่เลือกป้ายกำกับ แต่เป็นหาฟังก์ชันที่คลาดจากค่าจริงไม่เกิน ให้มากที่สุด พร้อมควบคุมความซับซ้อนของฟังก์ชัน จุดข้อมูลที่อยู่นอกท่อ หรือแตะขอบท่อมีบทบาทเป็นเวกเตอร์ค้ำยันได้ SVR มีทั้งรุ่นเชิงเส้นและรุ่นใช้เคอร์เนล จึงใช้กับความสัมพันธ์ไม่เป็นเชิงเส้นได้เช่นเดียวกับ SVM สำหรับการจำแนก[8]
การตรวจจับความแปลกใหม่
[แก้]SVM ชั้นเดียวเรียนรู้บริเวณของปริภูมิคุณลักษณะที่รองรับข้อมูลตัวอย่างชุดเดียว แล้วใช้ตรวจว่าตัวอย่างใหม่อยู่ภายในบริเวณนั้นหรือไม่ จึงมักใช้ในบริบทการตรวจจับความแปลกใหม่ (novelty detection) โดยต้องระวังว่าผลลัพธ์ขึ้นกับนิยามของ “ปกติ” ในข้อมูลฝึก ตลอดจนเคอร์เนลและพารามิเตอร์ที่เลือก[9]
จุดเด่นและข้อจำกัด
[แก้]SVM ให้กรอบการเรียนรู้ที่ชัดเจน: วัตถุประสงค์ของระยะขอบแบบอ่อนเป็นปัญหานูน จึงไม่มีปัญหาติดอยู่ในคำตอบเฉพาะที่ต่ำสุดของวัตถุประสงค์นั้นเหมือนการหาค่าเหมาะที่สุดแบบไม่เป็นนูนหลายชนิด และการใช้เคอร์เนลเปิดทางให้กำหนดความคล้ายคลึงที่เหมาะกับข้อมูลได้[1][5] แต่ข้อได้เปรียบเชิงทฤษฎีนี้ไม่ได้ขจัดปัญหาการเลือกคุณลักษณะ เคอร์เนล ไฮเปอร์พารามิเตอร์ หรือความคลาดเคลื่อนของข้อมูล
SVM เคอร์เนลอาจใช้หน่วยความจำและเวลาเพิ่มขึ้นมากเมื่อมีตัวอย่างจำนวนมาก เพราะการฝึกและการทำนายอาจต้องอาศัยค่าระหว่างคู่ตัวอย่างและจำนวนเวกเตอร์ค้ำยัน ด้วยเหตุนี้ SVM เชิงเส้นหรือวิธีอื่นจึงอาจเหมาะกว่าเมื่อข้อมูลมีขนาดใหญ่มากหรือคุณลักษณะเป็นเวกเตอร์เบาบางมิติสูง[6] การประเมินจึงควรเปรียบเทียบกับฐานอ้างอิงที่เหมาะสม เช่นการถดถอยโลจิสติก ตัวจำแนกเชิงเส้น ต้นไม้ หรือโมเดลอื่นที่สอดคล้องกับข้อมูล แทนการเลือก SVM เพียงเพราะมีเคอร์เนลหรือมีชื่อเสียงในงานก่อนหน้า[3]
คะแนนจาก SVM สำหรับการจำแนกไม่ได้เป็นค่าความน่าจะเป็นโดยกำเนิด หากการตัดสินใจต้องใช้ความน่าจะเป็นหรือความเสี่ยง ควรปรับเทียบคะแนนด้วยข้อมูลที่กันไว้และประเมินการปรับเทียบแยกต่างหาก การนำคะแนนไปตีความเป็นความเชื่อมั่นของระบบโดยตรงอาจทำให้การตัดสินใจผิดพลาดได้[3]
ประวัติ
[แก้]รากฐานทางทฤษฎีของ SVM อยู่ในทฤษฎีการเรียนรู้เชิงสถิติและงานของวลาดีมีร์ วัปนิกกับอเล็กเซย์ เชอร์โวนเยนคิส (Alexey Chervonenkis) ว่าด้วยความสามารถของตัวจำแนกและการวางนัยทั่วไป[10] ค.ศ. 1992 เบิร์นฮาร์ด โบเซอร์ อิซาแบล กียง และวัปนิกเสนออัลกอริทึมฝึกตัวจำแนกระยะขอบสูงสุดและการใช้เคอร์เนลในงานนี้[2] ต่อมาโครินนา กอร์เตสและวัปนิกเผยแพร่ support-vector networks ใน ค.ศ. 1995 ซึ่งกำหนดรูปแบบระยะขอบแบบอ่อนที่กลายเป็นแกนสำคัญของ SVM ในการใช้งานจริง[1]
ในปลายคริสต์ทศวรรษ 1990 และคริสต์ทศวรรษ 2000 มีการพัฒนาสูตรสำหรับหลายชั้นข้อมูล การถดถอย การตรวจจับความแปลกใหม่ และตัวแก้ปัญหาที่ทำให้ใช้ SVM กับชุดข้อมูลขนาดใหญ่ขึ้นได้[7][8][6] SVM จึงเป็นส่วนสำคัญของยุคที่การเรียนรู้ของเครื่องเชื่อมทฤษฎีการวางนัยทั่วไป การหาค่าเหมาะที่สุด และการประมวลผลข้อมูลเชิงปฏิบัติเข้าด้วยกัน
การประยุกต์
[แก้]SVM ใช้กับงานการจำแนกและการถดถอยได้ในหลายสาขา ตัวอย่างคลาสสิกคือการจัดหมวดหมู่เอกสาร ซึ่งข้อมูลข้อความมักแทนด้วยเวกเตอร์คุณลักษณะมิติสูงและเบาบาง[11] รวมทั้งการวิเคราะห์ข้อมูลชีวสารสนเทศ ซึ่งอาจกำหนดเคอร์เนลให้สะท้อนความคล้ายของลำดับ ชนิดข้อมูล หรือความสัมพันธ์ระหว่างตัวอย่าง[12] อย่างไรก็ดี ชื่อสาขาการใช้งานไม่ได้บอกว่าควรใช้ SVM เสมอไป การเลือกโมเดลต้องเริ่มจากคำถามที่วัดได้ คุณภาพและปริมาณข้อมูล ต้นทุนของข้อผิดพลาด ความจำเป็นต้องอธิบายผล และการทดสอบกับข้อมูลที่ไม่เคยใช้ในการพัฒนาโมเดล[3]
ซอฟต์แวร์
[แก้]LIBSVM เป็นไลบรารีที่รวบรวม SVM สำหรับการจำแนก การถดถอย และ SVM ชั้นเดียว พร้อมอธิบายรายละเอียดการเลือกพารามิเตอร์ การจำแนกหลายชั้น และการประมาณความน่าจะเป็น[6] นอกจากนี้ ซอฟต์แวร์การเรียนรู้ของเครื่องหลายชุดมีตัวประมาณ SVM เชิงเส้นและเคอร์เนล โดยผู้ใช้ควรตรวจเอกสารของรุ่นซอฟต์แวร์ที่ใช้เพื่อทราบชนิดเคอร์เนล ค่าเริ่มต้น และขั้นตอนปรับเทียบที่รองรับ
ดูเพิ่ม
[แก้]อ่านเพิ่มเติม
[แก้]- Cristianini, Nello; Shawe-Taylor, John (2000). An Introduction to Support Vector Machines and Other Kernel-based Learning Methods. Cambridge University Press. ISBN 978-0-521-78019-3. ตำราบทนำที่อธิบาย SVM และวิธีเคอร์เนลอย่างเป็นระบบ
- Schölkopf, Bernhard; Smola, Alexander J. (2002). Learning with Kernels: Support Vector Machines, Regularization, Optimization, and Beyond. MIT Press. ISBN 978-0-262-19475-4. ครอบคลุมทฤษฎีเคอร์เนล การทำให้เป็นระเบียบ และการหาค่าเหมาะที่สุด
- Steinwart, Ingo; Christmann, Andreas (2008). Support Vector Machines. Springer. doi:10.1007/978-0-387-77242-4. ISBN 978-0-387-77242-4. ตำราเชิงทฤษฎีละเอียดเรื่องความสอดคล้องและอัตราการวางนัยทั่วไป
อ้างอิง
[แก้]- 1 2 3 4 5 6 Cortes, Corinna; Vapnik, Vladimir (1995). "Support-Vector Networks". Machine Learning. 20 (3): 273–297. doi:10.1007/BF00994018.
- 1 2 3 Boser, Bernhard E.; Guyon, Isabelle M.; Vapnik, Vladimir N. (1992). "A Training Algorithm for Optimal Margin Classifiers". Proceedings of the Fifth Annual Workshop on Computational Learning Theory. น. 144–152. doi:10.1145/130385.130401.
- 1 2 3 4 5 6 7 8 Hastie, Trevor; Tibshirani, Robert; Friedman, Jerome (2009). The Elements of Statistical Learning: Data Mining, Inference, and Prediction (พิมพ์ครั้งที่ 2). Springer. ISBN 978-0-387-84857-0.
- 1 2 3 4 Burges, Christopher J. C. (1998). "A Tutorial on Support Vector Machines for Pattern Recognition". Data Mining and Knowledge Discovery. 2 (2): 121–167. doi:10.1023/A:1009715923555.
- 1 2 Schölkopf, Bernhard; Smola, Alexander J. (2002). Learning with Kernels: Support Vector Machines, Regularization, Optimization, and Beyond. MIT Press. ISBN 978-0-262-19475-4.
- 1 2 3 4 5 Chang, Chih-Chung; Lin, Chih-Jen (2011). "LIBSVM: A Library for Support Vector Machines". ACM Transactions on Intelligent Systems and Technology. 2 (3): 1–27. doi:10.1145/1961189.1961199.
- 1 2 Hsu, Chih-Wei; Lin, Chih-Jen (2002). "A Comparison of Methods for Multiclass Support Vector Machines". IEEE Transactions on Neural Networks. 13 (2): 415–425. doi:10.1109/72.991427.
- 1 2 Smola, Alex J.; Schölkopf, Bernhard (2004). "A Tutorial on Support Vector Regression". Statistics and Computing. 14: 199–222. doi:10.1023/B:STCO.0000035301.49549.88.
- ↑ Schölkopf, Bernhard; Platt, John C.; Shawe-Taylor, John; Smola, Alex J.; Williamson, Robert C. (2001). "Estimating the Support of a High-Dimensional Distribution". Neural Computation. 13 (7): 1443–1471. doi:10.1162/089976601750264965.
- ↑ Vapnik, Vladimir N.; Chervonenkis, Alexey Ya. (1974). Theory of Pattern Recognition (ภาษารัสเซีย). Nauka.
- ↑ Joachims, Thorsten (1998). "Text Categorization with Support Vector Machines: Learning with Many Relevant Features". Machine Learning: ECML-98. Lecture Notes in Computer Science. เล่มที่ 1398. น. 137–142. doi:10.1007/BFb0026683.
- ↑ Ben-Hur, Asa; Ong, Choon Hui; Zucker, Anat; Schölkopf, Bernhard; Ruppin, Eytan (2008). "Support Vector Machines and Kernels for Computational Biology". PLoS Computational Biology. 4 (10). e1000173. doi:10.1371/journal.pcbi.1000173. PMC 2553344.
{{cite journal}}: CS1 maint: unflagged free DOI (ลิงก์)