พื้นฐาน AI

อะไรคือ Support Vector Machines?

mm
เพิ่ม Unite.AI ลงในแหล่งข้อมูลที่คุณต้องการบน Google

อะไรคือ Support Vector Machines?

Support vector machines เป็นประเภทของเครื่องจักรเรียนรู้แบบ分类ที่มีการใช้กันอย่างแพร่หลาย Support vector machines มีประโยชน์อย่างมากสำหรับการทำนายตัวเลข การจำแนกประเภท และการรู้จำรูปแบบ

Support vector machines ทำงานโดยการวาดเส้นแบ่งระหว่างจุดข้อมูล โดยมีเป้าหมายที่จะหาส่วนแบ่งที่ดีที่สุดระหว่างจุดข้อมูล (หรือที่เรียกว่า “ส่วนแบ่งที่ดีที่สุด”) เมื่อใช้ Support vector machines เป้าหมายคือการทำให้ส่วนแบ่งระหว่างจุดข้อมูลและเส้นแบ่งมีขนาดใหญ่ที่สุดเท่าที่จะเป็นไปได้ เพื่อให้ระยะห่างระหว่างจุดข้อมูลใดๆ และเส้นแบ่งมีขนาดใหญ่ที่สุดเท่าที่จะเป็นไปได้ นี่คือคำอธิบายอย่างง่ายๆ ว่า Support vector machines (SVMs) ทำงานอย่างไร แต่เรามาดูรายละเอียดเพิ่มเติมเกี่ยวกับวิธีการทำงานของ SVMs กัน

เป้าหมายของ Support Vector Machines

ลองนึกภาพกราฟที่มีจุดข้อมูลหลายจุด โดยอาศัยคุณลักษณะที่กำหนดโดยแกน X และ Y จุดข้อมูลบนกราฟสามารถแบ่งออกเป็นสองกลุ่มได้ และกลุ่มที่จุดข้อมูลอยู่ในกลุ่มใดจะบ่งบอกถึงประเภทของจุดข้อมูลนั้น ลองนึกภาพว่าเราต้องการวาดเส้นแบ่งระหว่างจุดข้อมูลสองกลุ่ม โดยที่จุดข้อมูลทั้งหมดในกลุ่มหนึ่งจะอยู่ด้านหนึ่งของเส้นแบ่ง และจุดข้อมูลทั้งหมดในกลุ่มอื่นจะอยู่อีกด้านหนึ่งของเส้นแบ่ง เส้นแบ่งนี้เรียกว่า “ไฮเปอร์เพลน”

คุณสามารถนึกภาพ Support vector machine เป็นการสร้าง “ถนน” ที่แบ่งเมืองออกเป็นเขตๆ โดยที่อาคาร (จุดข้อมูล) ทั้งหมดที่อยู่ด้านหนึ่งของถนนจะอยู่ในเขตเดียวกัน

เป้าหมายของ Support vector machine ไม่ใช่แค่วาดเส้นแบ่งและแบ่งจุดข้อมูลเท่านั้น แต่ยังต้องวาดเส้นแบ่งที่มีระยะห่างระหว่างเส้นแบ่งและจุดข้อมูลที่ใหญ่ที่สุดเท่าที่จะเป็นไปได้ เมื่อใช้คำอธิบาย “ถนน” ถ้าผู้วางแผนเมืองออกแบบถนนแล้ว เขาไม่ต้องการให้ถนนอยู่ใกล้กับบ้านหรืออาคารอื่นๆ ระยะห่างระหว่างถนนและอาคารทั้งสองด้านต้องมีขนาดใหญ่ที่สุดเท่าที่จะเป็นไปได้ ระยะห่างที่ใหญ่ขึ้นจะทำให้เครื่องจำแนกสามารถทำนายได้ดีขึ้น ในกรณีการจำแนกประเภททวินาม การวาดเส้นแบ่งที่ถูกต้องหมายถึงการเลือกเส้นแบ่งที่อยู่ตรงกลางระหว่างสองประเภท หากเส้นแบ่ง/ไฮเปอร์เพลนอยู่ห่างจากประเภทหนึ่ง มันจะอยู่ใกล้กับอีกประเภทหนึ่ง ดังนั้น ไฮเปอร์เพลนต้องสร้างสมดุลระหว่างระยะห่างระหว่างสองประเภท

การคำนวณไฮเปอร์เพลนที่แบ่ง

_support vector machine_ คำนวณไฮเปอร์เพลนที่ดีที่สุด/เส้นแบ่งโดยใช้สูตรคณิตศาสตร์ เราจะไม่กล่าวถึงสูตรในการคำนวณไฮเปอร์เพลนอย่างละเอียด แต่เส้นจะถูกคำนวณโดยใช้สูตรที่มีชื่อเสียงของเส้นตรง:

Y = ax + b

ในขณะเดียวกัน เส้นถูกสร้างขึ้นจากจุด ซึ่งหมายความว่าไฮเปอร์เพลนใดๆ สามารถอธิบายได้ด้วย: ชุดของจุดที่อยู่ในแนวขนานกับไฮเปอร์เพลนที่เสนอ โดยพิจารณาจากน้ำหนักของโมเดลคูณด้วยชุดของคุณลักษณะที่ถูกปรับเปลี่ยนโดยออฟเซต/เเบียส (“d”) ที่กำหนด

Support vector machines วาดไฮเปอร์เพลนหลายเส้น ตัวอย่างเช่น เส้นแบ่งเป็นไฮเปอร์เพลนหนึ่ง แต่จุดข้อมูลที่เครื่องจำแนกพิจารณานั้นอยู่บนไฮเปอร์เพลนด้วย ค่า x ถูกกำหนดโดยคุณลักษณะในเซตข้อมูล ตัวอย่างเช่น หากคุณมีเซตข้อมูลที่มีข้อมูลเกี่ยวกับความสูงและน้ำหนักของคนหลายคน “ความสูง” และ “น้ำหนัก” จะเป็นคุณลักษณะที่ใช้ในการคำนวณ “x” ระยะห่างระหว่างไฮเปอร์เพลนที่เสนอและ “เวกเตอร์สนับสนุน” (จุดข้อมูล) ที่อยู่ด้านหนึ่งและด้านอื่นของเส้นแบ่งถูกคำนวณโดยใช้สูตรต่อไปนี้:

W * X – b

ในขณะที่คุณสามารถอ่านเพิ่มเติมเกี่ยวกับ数学เบื้องหลัง Support vector machines ได้ หากคุณกำลังมองหาความเข้าใจที่直观มากขึ้นเกี่ยวกับ Support vector machines เพียงแค่รู้ว่าเป้าหมายคือการเพิ่มระยะห่างระหว่างเส้นแบ่งที่เสนอและไฮเปอร์เพลนที่อยู่ในแนวขนานกับมัน (และจุดข้อมูลที่อยู่บนไฮเปอร์เพลนนั้น)

ภาพ: ZackWeinberg via Wikimedia Commons, CC BY SA 3.0 (https://commons.wikimedia.org/wiki/File:Svm_separating_hyperplanes_(SVG).svg)

การจำแนกประเภทหลายประเภท

กระบวนการที่อธิบายไว้จนถึงตอนนี้ใช้กับการจำแนกประเภททวินามเท่านั้น อย่างไรก็ตาม เครื่องจำแนก Support vector machines สามารถใช้สำหรับการจำแนกประเภทที่ไม่ใช่ทวินามได้ เมื่อใช้ Support vector machines กับการจำแนกประเภทที่มีสามหรือมากกว่าสามประเภท จะมีการใช้เส้นแบ่งหลายเส้น ตัวอย่างเช่น หากการจำแนกประเภทมีสามประเภทแทนสองประเภท จะมีการใช้เส้นแบ่งสองเส้นเพื่อแบ่งจุดข้อมูลออกเป็นประเภท และพื้นที่ที่ประกอบขึ้นเป็นประเภทเดียวจะอยู่ระหว่างเส้นแบ่งสองเส้นแทนเส้นแบ่งหนึ่งเส้น

การแบ่งที่ไม่เป็นเส้นตรง

กระบวนการที่อธิบายไว้ข้างต้นใช้กับกรณีที่ข้อมูลสามารถแบ่งออกได้ด้วยเส้นตรง โปรดทราบว่าในความเป็นจริง เซตข้อมูลมักไม่สามารถแบ่งออกได้ด้วยเส้นตรง ซึ่งหมายความว่าเมื่อใช้ Support vector machines คุณมักจะต้องใช้เทคนิคสองแบบ: อัลกอริทึม “มาร์จินอ่อน” และ “เทคนิคเคอร์เนล” ลองนึกภาพสถานการณ์ที่จุดข้อมูลของประเภทต่างๆ ผสมกัน โดยมีบางกรณี属于ประเภทหนึ่ง แต่อยู่ใน “กลุ่ม” ของอีกประเภทหนึ่ง คุณจะทำให้เครื่องจำแนกจัดการกับกรณีเหล่านี้ได้อย่างไร?

ยุทธวิธีหนึ่งที่สามารถใช้ในการจัดการกับเซตข้อมูลที่ไม่สามารถแบ่งออกได้ด้วยเส้นตรงคือการใช้ Support vector machine ที่มี “มาร์จินอ่อน” เครื่องจำแนกที่มีมาร์จินอ่อนจะยอมรับกรณีที่จำแนกไม่ถูกต้องบางกรณี และจะพยายามวาดเส้นแบ่งที่ดีที่สุดระหว่างกลุ่มจุดข้อมูล โดยที่กลุ่มเหล่านี้มีกรณีส่วนใหญ่属于ประเภทที่เกี่ยวข้อง เครื่องจำแนกที่มีมาร์จินอ่อนจะพยายามสร้างเส้นแบ่งที่ดีที่สุดระหว่างความแม่นยำและมาร์จิน

ความอดทนของเครื่องจำแนกที่มีต่อข้อผิดพลาดสามารถปรับได้โดยการปรับไฮเปอร์พารามิเตอร์ที่เรียกว่า “C” ค่า C ควบคุมจำนวนเวกเตอร์สนับสนุนที่เครื่องจำแนกพิจารณาเมื่อวาดเส้นแบ่ง ค่า C คือการลงโทษที่ใช้กับการจำแนกไม่ถูกต้อง ซึ่งหมายความว่าค่า C ที่ใหญ่ขึ้นจะทำให้เครื่องจำแนกพิจารณาเวกเตอร์สนับสนุนน้อยลงและมีมาร์จินแคบลง

เทคนิคเคอร์เนลจะแปลงข้อมูลในลักษณะที่ไม่เป็นเส้นตรงและแปลงมันให้เป็นรูปแบบใหม่ ภาพ: Shiyu Ju via Wikmedia Commons, CC BY SA 4.0 (https://commons.wikimedia.org/wiki/File:Kernel_trick_idea.svg)

เทคนิคเคอร์เนลจะใช้การแปลงที่ไม่เป็นเส้นตรงกับคุณลักษณะในเซตข้อมูล และสร้างคุณลักษณะใหม่โดยใช้ฟังก์ชันคณิตศาสตร์ที่ไม่เป็นเส้นตรง สิ่งที่ได้จากการใช้การแปลงเหล่านี้คือเส้นแบ่งที่ไม่เป็นเส้นตรง เนื่องจากเครื่องจำแนกไม่จำเป็นต้องวาดเส้นแบ่งที่เป็นเส้นตรงเท่านั้น จึงสามารถวาดเส้นแบ่งที่โค้งงอได้ ซึ่งสามารถจับจุดข้อมูลได้ดีขึ้นและลดการจำแนกไม่ถูกต้องให้เหลือน้อยที่สุด ฟังก์ชันเคอร์เนลที่ไม่เป็นเส้นตรงสองแบบที่ได้รับความนิยมมากที่สุดคือ ฟังก์ชันรัศมีเบซิสและฟังก์ชันพหุนาม ฟังก์ชันพหุนามจะสร้างการผสมพหุนามของคุณลักษณะที่มีอยู่ทั้งหมด ในขณะที่ฟังก์ชันรัศมีเบซิสจะสร้างคุณลักษณะใหม่โดยการวัดระยะห่างระหว่างจุดศูนย์กลาง/จุดกับจุดอื่นๆ ทั้งหมด

นักบล็อกและโปรแกรมเมอร์ที่มีความเชี่ยวชาญใน Machine Learning และ Deep Learning หัวข้อ Daniel หวังที่จะช่วยให้ผู้อื่นใช้พลังของ AI สำหรับสิ่งที่ดี