การย้อนกลับการแพร่กระจายในโครงข่ายประสาทเทียม: อัลกอริทึมการเรียนรู้ของเครื่องและตัวอย่าง

⚡ สรุปอย่างชาญฉลาด

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

  • 🔘 แนวคิดหลัก: กฎลูกโซ่จะให้ค่าความชันของการสูญเสียสำหรับน้ำหนักแต่ละตัว ทีละชั้น
  • ☑️ วงจรการฝึกฝน: ส่งผ่านข้อมูลไปข้างหน้า วัดค่าความคลาดเคลื่อน ส่งต่อความคลาดเคลื่อนนั้นกลับไปข้างหลัง อัปเดตค่าน้ำหนัก แล้วทำซ้ำ
  • สองสายพันธุ์: การแพร่ย้อนกลับแบบคงที่ (Static backpropagation) จะแมปอินพุตคงที่ไปยังเอาต์พุตคงที่ ในขณะที่การแพร่ย้อนกลับแบบวนซ้ำ (Recurrent backpropagation) จะทำการปรับให้เข้าที่ก่อน จากนั้นจึงแพร่ต่อไป
  • 🧪 ทำไมมันเรื่อง: การลดระดับความชัน (Gradient descent) ยังคงใช้ได้ผลดีกับโครงข่ายประสาทเทียมเชิงลึกก็ต่อเมื่อมีการนำค่าความชันกลับมาใช้ซ้ำในแต่ละชั้น
  • 🛠️ ขีดจำกัดที่ทราบ: ประสิทธิภาพขึ้นอยู่กับคุณภาพของข้อมูลป้อนเข้า และตัวอย่างที่มีสัญญาณรบกวนจะทำให้ค่าถ่วงน้ำหนักที่เรียนรู้ผิดเพี้ยนไป
  • ⚙️ พลังชีวิตแบบไล่ระดับ: การคูณอนุพันธ์ขนาดเล็กจำนวนมากเข้าด้วยกันทำให้ค่าความชันลดลงจนเป็นศูนย์ ฟังก์ชัน ReLU และการทำให้เป็นมาตรฐานจะช่วยลดผลกระทบนี้ได้

การแพร่ย้อนกลับในโครงข่ายประสาทเทียม: อัลกอริทึมการเรียนรู้ของเครื่อง

โครงข่ายประสาทเทียมคืออะไร?

โครงข่ายประสาทเทียม (Artificial Neural Network) คือกลุ่มของหน่วยอินพุต/เอาต์พุตที่เชื่อมต่อกัน โดยแต่ละการเชื่อมต่อจะมีน้ำหนัก มันช่วยในการสร้างแบบจำลองการทำนายจากฐานข้อมูลขนาดใหญ่ และการออกแบบนั้นได้ยืมคำศัพท์มาจากระบบประสาทของมนุษย์ โครงข่ายประเภทนี้สนับสนุนการทำความเข้าใจภาพ การเรียนรู้ของเครื่อง การประมวลผลเสียงพูดของคอมพิวเตอร์ และงานการจดจำรูปแบบอื่นๆ อีกมากมาย

การแพร่กระจายย้อนกลับ (Backpropagation) คืออัลกอริทึมที่ใช้ตัดสินว่าค่าน้ำหนักเหล่านั้นควรเป็นเท่าใด ดังนั้นจึงควรศึกษาทั้งสองแนวคิดนี้ควบคู่กันไป

Backpropagation คืออะไร?

การย้อนกลับการแพร่กระจาย (Backpropagation) เป็นหัวใจสำคัญของการฝึกโครงข่ายประสาทเทียม เป็นวิธีการปรับแต่งน้ำหนักของโครงข่ายประสาทเทียมโดยอาศัยอัตราความผิดพลาดที่ได้รับในรอบการฝึกก่อนหน้า (epoch หรือ iteration) การปรับแต่งน้ำหนักอย่างเหมาะสมจะช่วยลดอัตราความผิดพลาดและทำให้แบบจำลองมีความน่าเชื่อถือมากขึ้นโดยการเพิ่มความสามารถในการสรุปผล (generalization)

Backpropagation ในโครงข่ายประสาทเทียมเป็นรูปแบบย่อของ “การเผยแพร่ข้อผิดพลาดแบบย้อนกลับ” เป็นวิธีมาตรฐานในการฝึกโครงข่ายประสาทเทียม วิธีการนี้จะช่วยคำนวณความชันของฟังก์ชันการสูญเสียโดยคำนึงถึงน้ำหนักทั้งหมดในเครือข่าย

สองคำนี้มักทำให้สับสนกัน Backpropagation เท่านั้น คำนวณ ความชัน; ตัวปรับค่าให้เหมาะสม เช่น การลดความชัน คือสิ่งที่ทำจริง ๆ การเปลี่ยนแปลง น้ำหนักที่ใช้การไล่ระดับนั้น เฟรมเวิร์กสมัยใหม่เกือบทุกตัวจะทำการย้อนกลับการแพร่กระจายโดยอัตโนมัติผ่านกลไก autodiff ของมัน

วิธีการทำงานของอัลกอริทึม Backpropagation

อัลกอริทึมการแพร่กระจายย้อนกลับ (Back propagation) ในโครงข่ายประสาทเทียมคำนวณเกรเดียนต์ของฟังก์ชันความสูญเสียสำหรับน้ำหนักเดียวโดยใช้กฎลูกโซ่ มันคำนวณได้อย่างมีประสิทธิภาพทีละชั้น ซึ่งแตกต่างจากการคำนวณโดยตรงแบบดั้งเดิม มันคำนวณเกรเดียนต์ แต่ไม่ได้กำหนดวิธีการใช้เกรเดียนต์ มันเป็นการขยายการคำนวณในกฎเดลต้า (Delta rule)

กฎลูกโซ่เป็นสิ่งที่ทำให้กระบวนการนี้มีประสิทธิภาพ อิทธิพลของน้ำหนักเริ่มต้นหนึ่งค่าต่อค่าความสูญเสียสุดท้ายเป็นผลมาจากอนุพันธ์เฉพาะที่ตลอดเส้นทางไปยังเอาต์พุต ดังนั้นอัลกอริทึมจึงแคชผลลัพธ์ระดับกลางของแต่ละเลเยอร์ในระหว่างทางกลับและนำกลับมาใช้ใหม่สำหรับน้ำหนักทุกค่าในเลเยอร์ด้านล่างแทนที่จะคำนวณเครือข่ายทั้งหมดใหม่สำหรับแต่ละน้ำหนัก

พิจารณาแผนภาพตัวอย่างโครงข่ายประสาทเทียมแบบย้อนกลับ (Back propagation neural network) ต่อไปนี้เพื่อทำความเข้าใจ รูปภาพ tracกระบวนการนี้ประกอบด้วยขั้นตอนการประมวลผลครบวงจร: ข้อมูลนำเข้าจะเข้ามาทางด้านซ้าย ค่าแอคติเวชันจะเคลื่อนที่ไปข้างหน้าผ่านเลเยอร์ที่ซ่อนอยู่ไปยังเอาต์พุต และค่าความคลาดเคลื่อนที่วัดได้จะเดินทางกลับมาตามเส้นทางการเชื่อมต่อเดียวกันเพื่อแก้ไขค่าน้ำหนัก

แผนภาพอัลกอริธึมการแพร่กระจายย้อนกลับ (Backpropagation) แสดงการส่งผ่านข้อมูลไปข้างหน้าผ่านชั้นอินพุต ชั้นซ่อน และชั้นเอาต์พุต และข้อผิดพลาดที่เดินทางย้อนกลับ

  1. อินพุต X มาถึงผ่านเส้นทางที่เชื่อมต่อไว้ล่วงหน้า
  2. อินพุตถูกสร้างแบบจำลองโดยใช้น้ำหนักจริง W โดยปกติแล้วน้ำหนักจะถูกเลือกแบบสุ่ม
  3. คำนวณเอาต์พุตสำหรับเซลล์ประสาททุกตัวตั้งแต่เลเยอร์อินพุต เลเยอร์ที่ซ่อนอยู่ ไปจนถึงเลเยอร์เอาท์พุต
  4. คำนวณค่าความคลาดเคลื่อนในผลลัพธ์:
    ErrorB= Actual Output – Desired Output
    
  5. เดินทางกลับจากเลเยอร์เอาต์พุตไปยังเลเยอร์ที่ซ่อนอยู่เพื่อปรับน้ำหนักเพื่อลดข้อผิดพลาด
  6. ทำซ้ำขั้นตอนนี้ไปเรื่อยๆ จนกว่าจะได้ผลลัพธ์ที่ต้องการ

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

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

ทำไมเราต้องมีการขยายพันธุ์กลับ?

ข้อดีที่โดดเด่นที่สุดของ Backpropagation คือ:

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

กล่าวโดยสรุป หากไม่มีวิธีการที่มีประสิทธิภาพในการหาค่าความชัน การฝึกฝนโมเดลที่มีความลึกมากกว่าหนึ่งชั้นจะเป็นไปไม่ได้ในเชิงการคำนวณ

เครือข่าย Feed Forward คืออะไร?

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

ความแตกต่างนี้มีความสำคัญในที่นี้ เพราะการส่งผ่านไปข้างหน้าของการแพร่กระจายย้อนกลับนั้นก็คือการส่งผ่านไปข้างหน้าแบบป้อนกลับนั่นเอง เพียงแต่การแก้ไขข้อผิดพลาดทำงานในทิศทางตรงกันข้าม

ประเภทของเครือข่าย Backpropagation

เครือข่าย Backpropagation สองประเภทคือ:

  • การแพร่กระจายกลับแบบคงที่
  • การแพร่กระจายกลับซ้ำ

การแพร่กระจายกลับแบบคงที่

เป็นเครือข่ายแบ็กโพรพาเกชันชนิดหนึ่งที่สร้างแผนที่ping เป็นการรับข้อมูลคงที่เพื่อให้ได้ผลลัพธ์คงที่ มีประโยชน์ในการแก้ปัญหาการจำแนกประเภทแบบคงที่ เช่น การรู้จำอักษรด้วยแสง (Optical Character Recognition หรือ OCR)

การแพร่กระจายกลับซ้ำ

การแพร่กระจายย้อนกลับแบบวนซ้ำใน การทำเหมืองข้อมูล ค่าที่ได้จะถูกส่งต่อไปเรื่อยๆ จนกว่าจะถึงค่าคงที่ จากนั้นจะคำนวณค่าความคลาดเคลื่อนและส่งย้อนกลับไป

ความแตกต่างหลักระหว่างทั้งสองวิธีนี้คือ: แผนที่ping การแพร่ย้อนกลับแบบคงที่ (static back-propagation) นั้นรวดเร็ว ในขณะที่การแพร่ย้อนกลับแบบวนซ้ำ (recurrent backpropagation) นั้นไม่คงที่ ตารางด้านล่างแสดงผลลัพธ์ทั้งสองแบบควบคู่กันไป

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

ประวัติความเป็นมาของการย้อนกลับ

  • ในปี ค.ศ. 1961 แนวคิดพื้นฐานของการแพร่กระจายย้อนกลับอย่างต่อเนื่อง (continuous backpropagation) ได้ถูกนำเสนอขึ้นในบริบทของทฤษฎีการควบคุมโดย เจ. เคลลี่, เฮนรี่ อาร์เธอร์ และ อี. ไบรสัน
  • ในปี 1969 ไบรสันและโฮได้เสนอวิธีการเพิ่มประสิทธิภาพระบบไดนามิกแบบหลายขั้นตอน
  • ในปี 1970 เซปโป ลินเนนมา ได้ตีพิมพ์วิธีการหาอนุพันธ์อัตโนมัติแบบย้อนกลับ ซึ่งเป็นวิธีการคำนวณที่เป็นพื้นฐานของการแพร่กระจายย้อนกลับ (backpropagation) ในปัจจุบัน
  • ในปี 1974 Werbos ระบุถึงความเป็นไปได้ของการนำหลักการนี้ไปประยุกต์ใช้กับโครงข่ายประสาทเทียม
  • ในปี 1982 Hopfield ได้นำแนวคิดของเขาเกี่ยวกับโครงข่ายประสาทเทียม
  • ในปี 1986 ด้วยความพยายามของ David E. Rumelhart, Geoffrey E. Hinton, Ronald J. Williams ทำให้การเผยแพร่ย้อนกลับได้รับการยอมรับ
  • ในปี 1989 ยานน์ เลอคุนและเพื่อนร่วมงานได้ฝึกฝนโครงข่ายประสาทเทียมแบบคอนโวลูชันโดยใช้การแพร่กระจายย้อนกลับเพื่ออ่านตัวเลขที่เขียนด้วยลายมือ ซึ่งเป็นหนึ่งในตัวอย่างการใช้งานจริงขนาดใหญ่ครั้งแรกๆ
  • ในปี 1993 Wan เป็นคนแรกที่ชนะการประกวดการจดจำรูปแบบระดับนานาชาติด้วยความช่วยเหลือของวิธี backpropagation
  • ในปี 2006 ผลงานของฮินตันเกี่ยวกับโครงข่ายความเชื่อเชิงลึกและการฝึกฝนล่วงหน้าแบบทีละชั้นได้จุดประกายความสนใจในการฝึกฝนโครงข่ายเชิงลึกอีกครั้ง ซึ่งหยุดชะงักไปเนื่องจากปัญหาการหายไปของเกรเดียนต์
  • ในปี 2010 Xavier Glorot และ Yoshua Bengio ได้วิเคราะห์ว่าทำไมโครงข่ายประสาทเทียมเชิงลึกจึงฝึกฝนได้ยาก และได้นำเสนอวิธีการเริ่มต้นน้ำหนักที่ดีขึ้น ซึ่งเมื่อรวมกับการใช้ฟังก์ชันกระตุ้น ReLU ทำให้การแพร่กระจายย้อนกลับเชิงลึก (deep backpropagation) สามารถใช้งานได้จริง
  • ในปี 2012 AlexNet (พัฒนาโดย Krizhevsky, Sutskever และ Hinton) ชนะการแข่งขัน ImageNet โดยใช้การแพร่กระจายย้อนกลับที่เร่งความเร็วด้วย GPU ซึ่งเป็นจุดเริ่มต้นของกระแสการเรียนรู้เชิงลึกสมัยใหม่
  • ในปี 2014 ตัวปรับแต่ง Adam (Kingma และ Ba) ได้ถูกนำมาใช้และกลายเป็นตัวเลือกการลดระดับความชันเริ่มต้นที่ใช้ร่วมกับการแพร่กระจายย้อนกลับอย่างรวดเร็ว
  • ในปี 2015 การทำให้เป็นมาตรฐานแบบกลุ่ม (Batch Normalization) และโครงข่ายประสาทเทียมแบบตกค้าง (ResNet) ได้แก้ไขปัญหาการไหลของเกรเดียนต์ในโครงข่ายประสาทเทียมที่มีความลึกมาก ทำให้สามารถส่งผ่านเกรเดียนต์ย้อนกลับ (Backpropagation) ผ่านชั้นต่างๆ นับร้อยชั้นได้
  • ในช่วงปี 2015-2017 TensorFlow และ PyTorch ได้ทำให้การหาอนุพันธ์อัตโนมัติเป็นคุณสมบัติมาตรฐานของซอฟต์แวร์ ดังนั้นจึงไม่จำเป็นต้องหาค่าความชันด้วยมืออีกต่อไป
  • ในปี 2017 สถาปัตยกรรม Transformer ได้ถูกนำมาใช้ และได้รับการฝึกฝนแบบครบวงจรด้วยการแพร่กระจายย้อนกลับ (backpropagation) เช่นเดียวกับโมเดลภาษาขนาดใหญ่ที่สร้างขึ้นบนสถาปัตยกรรมนี้
  • ในปี 2019 Bengio, Hinton และ LeCun ได้รับรางวัล ACM AM Turing Award จากผลงานด้านโครงข่ายประสาทเทียมเชิงลึก
  • ในปี 2020 บทความเรื่อง “Backpropagation and the Brain” (Lillicrap, Santoro, Marris, Akerman, and Hinton) ได้เสนอว่าสมองอาจจำลองการเรียนรู้แบบ backpropagation ได้ ซึ่งเป็นการเปิดประเด็นถกเถียงเรื่องความเป็นไปได้ทางชีววิทยาขึ้นอีกครั้ง
  • ในปี 2022 ฮินตันได้เสนออัลกอริทึม Forward-Forward ซึ่งเป็นวิธีการฝึกฝนที่หลีกเลี่ยงการส่งผ่านข้อมูลย้อนกลับโดยสิ้นเชิง
  • ในปี 2024 จอห์น ฮอปฟิลด์ และ เจฟฟรีย์ ฮินตัน ได้รับรางวัลโนเบลสาขาฟิสิกส์ จากการค้นพบพื้นฐานที่ทำให้เกิดการเรียนรู้ของเครื่องจักรด้วยโครงข่ายประสาทเทียม
  • ในปี 2025 วิธีการส่งต่อข้อมูลไปข้างหน้า (forward-forward methods) ได้ถูกขยายไปใช้กับเครือข่ายประสาทแบบคอนโวลูชัน (convolutional networks) ซึ่งแสดงให้เห็นว่าการฝึกฝนโดยไม่ต้องใช้การแพร่กระจายย้อนกลับ (backpropagation-free training) สามารถใช้งานได้กับงานจำแนกประเภทภาพ
  • ณ ปี 2026 การแพร่กระจายย้อนกลับ (backpropagation) ยังคงเป็นอัลกอริธึมการฝึกอบรมมาตรฐานสำหรับโมเดลการเรียนรู้เชิงลึกเกือบทั้งหมด ในขณะที่การวิจัยยังคงดำเนินต่อไปเกี่ยวกับวิธีการเรียนรู้แบบไร้เกรดเดียนต์ แบบเฉพาะที่ และแบบขนาน ซึ่งจะช่วยลดต้นทุนด้านหน่วยความจำและการคำนวณ

ประเด็นสำคัญในการขยายพันธุ์กลับ

  • ลดความซับซ้อนของโครงสร้างเครือข่ายโดยการลบลิงก์ที่มีน้ำหนักซึ่งมีผลกระทบต่อเครือข่ายที่ฝึกฝนน้อยที่สุด
  • คุณต้องศึกษากลุ่มของค่าอินพุตและการเปิดใช้งานเพื่อพัฒนาความสัมพันธ์ระหว่างเลเยอร์อินพุตและเลเยอร์หน่วยที่ซ่อนอยู่
  • ช่วยในการประเมินผลกระทบที่ตัวแปรอินพุตที่กำหนดมีต่อเอาท์พุตเครือข่าย ความรู้ที่ได้รับจากการวิเคราะห์นี้ควรแสดงเป็นกฎเกณฑ์
  • การเผยแพร่กลับมีประโยชน์อย่างยิ่งสำหรับโครงข่ายประสาทเชิงลึกที่ทำงานในโครงการที่มีแนวโน้มเกิดข้อผิดพลาด เช่น การรู้จำรูปภาพหรือคำพูด
  • การย้อนกลับการแพร่กระจาย (Backpropagation) ใช้ประโยชน์จากกฎของห่วงโซ่และกำลัง ซึ่งทำให้สามารถทำงานได้กับจำนวนเอาต์พุตใดๆ ก็ได้

แนวทางปฏิบัติที่ดีที่สุดสำหรับการย้อนกลับการแพร่กระจาย (Backpropagation)

การย้อนกลับการแพร่กระจาย (Backpropagation) ในโครงข่ายประสาทเทียมสามารถอธิบายได้ด้วยการเปรียบเทียบกับ "เชือกรองเท้า" การอัปเดตน้ำหนักมีพฤติกรรมคล้ายกับแรงดึงของเชือกรองเท้า: ถ้าเบาเกินไปก็จะไม่ยึดติดกัน ถ้ามากเกินไปก็จะขาด

ความตึงของลูกไม้ ความหมายระหว่างการฝึกอบรม
ความตึงเครียดน้อยเกินไป ไม่มีการรัดแน่นเพียงพอและหลวมเกินไป — แบบจำลองไม่พอดีตัว
ความตึงเครียดมากเกินไป ข้อจำกัดมากเกินไป (การฝึกหนักเกินไป); ใช้เวลานานเกินไป (กระบวนการค่อนข้างช้า); มีโอกาสแตกหักสูงขึ้น
ดึงเชือกข้างหนึ่งมากกว่าอีกข้างหนึ่ง ความไม่สบายใจ (อคติ) — ส่วนใดส่วนหนึ่งของเครือข่ายมีอิทธิพลเหนือกว่าในการปรับให้เข้ากัน

จากตัวอย่างเปรียบเทียบนี้ มีแนวทางปฏิบัติสองประการที่ควรยึดถือ คือ ปรับขนาดข้อมูลป้อนเข้าก่อนการฝึกฝน เพื่อไม่ให้คุณลักษณะใดคุณลักษณะหนึ่งทำงานหนักกว่าคุณลักษณะอื่น และเฝ้าสังเกตค่าความสูญเสียในการตรวจสอบความถูกต้อง เพื่อลดความตึงเครียดก่อนที่จะเกิดการฝึกฝนมากเกินไป

ข้อเสียของการใช้ Backpropagation

  • ประสิทธิภาพที่แท้จริงของการเผยแพร่ย้อนกลับในปัญหาเฉพาะนั้นขึ้นอยู่กับข้อมูลอินพุต
  • อัลกอริธึมการแพร่กระจายกลับในการทำเหมืองข้อมูลค่อนข้างไวต่อข้อมูลที่มีเสียงดัง
  • ในการประมวลผลแบบมินิแบทช์ การแพร่กระจายย้อนกลับควรดำเนินการโดยใช้แนวทางแบบเมทริกซ์; looping การยกตัวอย่างทีละตัวอย่างนั้นช้ากว่าอย่างเห็นได้ชัด
  • ในโครงข่ายประสาทเทียมแบบลึก การคูณอนุพันธ์ขนาดเล็กซ้ำๆ กัน อาจทำให้ค่าเกรเดียนต์ลดลงเข้าใกล้ศูนย์ ส่งผลให้เลเยอร์แรกๆ แทบไม่เรียนรู้เลย ซึ่งเป็นปัญหาเกรเดียนต์หายไปดังที่ได้อธิบายไว้ใน Google หลักสูตร Machine Learning Crash.

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

คำถามที่พบบ่อย

การย้อนกลับการแพร่กระจาย (Backpropagation) คำนวณเกรเดียนต์ของฟังก์ชันความสูญเสียเทียบกับน้ำหนักแต่ละตัว การไล่ระดับความชัน (Gradient descent) คือตัวปรับค่าที่เหมาะสมที่สุดซึ่งใช้เกรเดียนต์นั้นและปรับเปลี่ยนน้ำหนักแต่ละตัว วิธีหนึ่งวัดความชัน อีกวิธีหนึ่งทำการปรับค่าทีละขั้น

อัตราการเรียนรู้กำหนดว่าน้ำหนักแต่ละตัวจะเคลื่อนที่ไปตามเกรเดียนต์ได้ไกลแค่ไหน ถ้าอัตราน้อยเกินไป การฝึกจะช้ามาก ถ้าอัตรามากเกินไป ค่าความสูญเสียจะแกว่งไปมาหรือเบี่ยงเบนไปจากค่าเดิม ตารางการฝึกที่ลดอัตราลงเรื่อยๆ ในแต่ละรอบมักจะลู่เข้าสู่ค่าที่ถูกต้องได้ดีกว่า

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

ฟังก์ชันความสูญเสียที่สามารถหาอนุพันธ์ได้นั้นใช้ได้หมด ค่าเฉลี่ยกำลังสองของความคลาดเคลื่อนเหมาะกับการถดถอย เอนโทรปีไขว้แบบไบนารีเหมาะกับปัญหาแบบสองคลาส และเอนโทรปีไขว้แบบแคทิคัลเหมาะกับเลเยอร์เอาต์พุตแบบหลายคลาส การเลือกใช้ฟังก์ชันความสูญเสียจะเปลี่ยนค่าเกรเดียนต์ที่เลเยอร์เอาต์พุต ไม่ใช่ตัวอัลกอริทึมแบบย้อนกลับเอง

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

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

น้ำหนักมากทำให้ผลิตภัณฑ์ย้อนกลับเพิ่มขึ้นในทุกชั้นจนกระทั่งการอัปเดตเกินขีดจำกัดและการสูญเสียไม่เสถียร การตัดแบบไล่ระดับสีpingการใช้ค่าน้ำหนักเริ่มต้นที่น้อยลง การปรับค่ามาตรฐานแบบกลุ่ม และอัตราการเรียนรู้ที่ต่ำลง จะช่วยรักษาระดับค่าให้อยู่ในขอบเขตที่กำหนด

แบตช์ (Batch) คือกลุ่มของตัวอย่างที่ประมวลผลก่อนการอัปเดตน้ำหนักหนึ่งครั้ง การวนซ้ำ (Iteration) คือการอัปเดตดังกล่าวหนึ่งครั้ง ยุค (Epoch) คือการประมวลผลชุดข้อมูลฝึกฝนครบหนึ่งรอบ โดยมีจำนวนการวนซ้ำเท่ากับจำนวนแบตช์

สรุปโพสต์นี้ด้วย: