เหตุใดเราจึงควรสลับข้อมูลในขณะฝึกเครือข่ายประสาท


15

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

จากการค้นหาของ Google ฉันพบคำตอบต่อไปนี้:

  • ช่วยให้การฝึกอบรมมาบรรจบกันอย่างรวดเร็ว
  • มันป้องกันอคติใด ๆ ในระหว่างการฝึกอบรม
  • มันป้องกันโมเดลจากการเรียนรู้ลำดับของการฝึกอบรม

แต่ฉันมีความยากลำบากในการทำความเข้าใจว่าทำไมผลกระทบเหล่านี้เกิดจากการสับแบบสุ่ม ใครสามารถให้คำอธิบายง่ายๆ

คำตอบ:


8

หากต้องการลองอธิบายอีกครั้ง:

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

ด้วยความเคารพต่อความเร็ว: วิธีมินิ - แบทช์พึ่งพาการไล่ระดับสีแบบสุ่ม (และการปรับปรุง) ซึ่งหมายความว่าพวกเขาต้องอาศัยการสุ่มเพื่อค้นหาขั้นต่ำ Shuffling mini-batches ทำให้การไล่ระดับสีมีความผันแปรมากกว่าซึ่งสามารถช่วยให้การบรรจบกันเพิ่มขึ้นเพราะมันจะเพิ่มโอกาสในการตีทิศทางที่ดี (หรืออย่างน้อยนั่นก็เป็นสิ่งที่ฉันเข้าใจ)


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

1
ในคำพวกเขาไม่สามารถ หากใช้การฝึกอบรมแบบกลุ่มย่อย (เช่นมากกว่าหนึ่งชุดต่อยุค) ดังนั้นคำสั่งซื้อที่เฉพาะเจาะจงต่อข้อมูลอาจมีผลต่อการฝึกอบรมในแง่ที่ว่าการฝึกอบรมในกลุ่มเล็ก ๆ กลุ่มหนึ่งก่อนผู้แก้ไขอาจเข้าสู่ภูมิภาคหนึ่ง ๆ ท้องถิ่นขั้นต่ำ ... ) มากกว่าอีกแห่ง แต่การที่จะบอกว่า NN เรียนรู้เกี่ยวกับการเรียงลำดับข้อมูลนั้นไม่ถูกต้องจริงๆเพราะการทำนายแต่ละครั้งนั้นไม่ขึ้นอยู่กับการทำนายอื่น ๆ และแน่นอนว่าการสั่งซื้อภายในกลุ่มย่อยจะไม่มีผลใด ๆ ทั้งสิ้น
Josh

6

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


6

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

กระบวนการฝึกอบรมโครงข่ายประสาทเทียมคือการหาค่าต่ำสุดของฟังก์ชั่นการสูญเสียโดยที่แทนเมทริกซ์ (หรือเมทริกซ์หลายตัว) ของน้ำหนักระหว่างเซลล์ประสาทและแทนชุดข้อมูลการฝึกอบรม ฉันใช้ตัวห้อยสำหรับเพื่อระบุว่าการลดขนาดของเกิดขึ้นเฉพาะกับน้ำหนัก (นั่นคือเรากำลังมองหาที่ลดขนาด ) ในขณะที่ได้รับการแก้ไขX(W)WXXWWX

ตอนนี้ถ้าเราคิดว่าเรามีองค์ประกอบใน (นั่นคือมีน้ำหนักในเครือข่าย)เป็นพื้นผิวในพื้นที่มิติมิติ ลองจินตนาการว่าเรามีน้ำหนักเซลล์ประสาทเพียงสองตัว ( ) จากนั้นมีการตีความทางเรขาคณิตง่าย ๆ : มันเป็นพื้นผิวในพื้นที่ 3 มิติ สิ่งนี้เกิดขึ้นจากความจริงที่ว่าสำหรับเมทริกซ์ใด ๆ ของน้ำหนักฟังก์ชันการสูญเสียสามารถถูกประเมินบนและค่านั้นจะกลายเป็นระดับความสูงของพื้นผิวPWPP+1P=2WX

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

วิธีแก้ปัญหานี้คือการฝึกอบรมแบบกลุ่มย่อยรวมกับการสับ โดยการสับแถวและการฝึกอบรมในเซตย่อยของมันในระหว่างการวนซ้ำที่กำหนดจะเปลี่ยนไปด้วยการวนซ้ำทุกครั้งและเป็นไปได้ค่อนข้างจริงที่จะไม่มีการวนซ้ำสองครั้งในการฝึกซ้ำและ epochs ทั้งหมดในเดียวกัน. ผลที่ได้คือตัวแก้ปัญหาสามารถ "เด้ง" ออกมาจากระดับต่ำสุดในท้องถิ่นได้อย่างง่ายดาย ลองจินตนาการว่าแก้จะติดอยู่ในขั้นต่ำท้องถิ่นย้ำด้วยการฝึกอบรมมินิชุดx_iค่าต่ำสุดในท้องถิ่นนี้สอดคล้องกับประเมินที่ค่าน้ำหนักเฉพาะ เราจะเรียกมันว่าXXiXiXi(Wi). ในการทำซ้ำครั้งต่อไปรูปร่างของพื้นผิวการสูญเสียของเราจะเปลี่ยนไปเพราะเราใช้นั่นคืออาจใช้ค่าที่แตกต่างจากและเป็นไปได้มากที่ไม่ตรงกับจำนวนขั้นต่ำในท้องถิ่น! ขณะนี้เราสามารถคำนวณการปรับปรุงการไล่ระดับสีและดำเนินการฝึกอบรมต่อไป ต้องมีความชัดเจน: รูปร่างของจะ - ทั่วไป - ไม่ว่าจะแตกต่างจากที่{i}} โปรดทราบว่านี่ผมหมายถึงฟังก์ชั่นการสูญเสียประเมินในการฝึกอบรมชุด ; มันเป็นพื้นผิวที่สมบูรณ์ที่กำหนดเหนือค่าที่เป็นไปได้ทั้งหมดของXi+1Xi+1(Wi)Xi(Wi)Xi+1XiXWมากกว่าการประเมินผลของการสูญเสียที่ (ซึ่งเป็นเพียงเกลา) สำหรับค่าเฉพาะของWโปรดทราบด้วยว่าหากใช้งานแบบย่อส่วนโดยไม่มีการสับเปลี่ยนยังมีระดับ "การกระจาย" ของพื้นผิวที่สูญเสีย แต่จะมีจำนวนข้อผิดพลาดที่ไม่ซ้ำกันจำนวน จำกัด (และค่อนข้างเล็ก) ที่เห็นโดยตัวแก้ปัญหา (โดยเฉพาะ ชุดมินิแบทช์เดียวกัน - และดังนั้นจึงสูญเสียพื้นผิว - ในแต่ละช่วงเวลา)W

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


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

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

2
บางทีฉันอาจไม่ได้ตอบคำถามของคุณเกี่ยวกับ minima ในพื้นที่ให้ดี ในทางทฤษฎีพื้นผิวการสูญเสียเหล่านี้ควรมีความคล้ายคลึงกันในระดับหนึ่งเนื่องจากการแจกแจงความน่าจะเป็นของการตอบสนอง (มีเงื่อนไขในตัวทำนายของแบบจำลอง) จะถือว่าคงที่ตลอดชุดข้อมูลการฝึกอบรมทั้งหมด ดังนั้นหากขั้นต่ำลึกพอที่มันควรจะปรากฏขึ้นในชุดมินิจำนวนมากดังนั้นนักแก้ปัญหาจึงไม่น่าจะเด้งออกมา แต่ถ้าค่าต่ำสุดนั้นเป็นเพียงแค่ "เสียง" ดังนั้นกลยุทธ์นี้ควรใช้งานได้ดีและอนุญาตให้แบบจำลองดำเนินการฝึกอบรมต่อไป
Josh

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

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

4

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


1

เมื่อคุณฝึกอบรมเครือข่ายของคุณโดยใช้ชุดข้อมูลคงที่หมายถึงข้อมูลที่คุณไม่เคยสับระหว่างการฝึก คุณมีโอกาสมากที่จะรับน้ำหนักที่สูงมากและต่ำมากเช่น 40,70, -101,200 ... เป็นต้น เพียงแค่นี้หมายความว่าเครือข่ายของคุณไม่ได้เรียนรู้ข้อมูลการฝึกอบรม แต่ได้เรียนรู้เสียงของข้อมูลการฝึกอบรม กรณีคลาสสิกของรูปแบบ overfit ด้วยเครือข่ายดังกล่าวคุณจะได้รับการคาดการณ์สำหรับข้อมูลที่คุณใช้ในการฝึกอบรม หากคุณใช้อินพุตอื่น ๆ เพื่อทดสอบโมเดลของคุณจะแยกออกจากกัน ตอนนี้เมื่อคุณสลับการฝึกอบรมข้อมูลหลังจากแต่ละยุค (การวนซ้ำของชุดโดยรวม) คุณเพียงป้อนข้อมูลต่าง ๆ ไปยังเซลล์ประสาทในแต่ละยุคและควบคุมความหมายน้ำหนักอย่างง่ายคุณจะมีน้ำหนักที่ต่ำกว่าศูนย์ และนั่นหมายความว่าเครือข่ายของคุณสามารถสร้างภาพรวมที่ดีขึ้นได้

ฉันหวังว่าชัดเจน


1

นี่คือคำอธิบายที่เข้าใจง่ายยิ่งขึ้น:

เมื่อใช้การไล่ระดับสีเราต้องการให้การสูญเสียลดลงในทิศทางของการไล่ระดับสี การไล่ระดับสีจะถูกคำนวณโดยข้อมูลจากมินิแบทช์เดียวสำหรับการอัพเดตน้ำหนักแต่ละรอบ สิ่งที่เราต้องการให้เกิดขึ้นคือการไล่ระดับสีแบบมินิแบทช์นั้นเป็นการประมาณความลาดชันของประชากรเพราะสิ่งนี้คาดว่าจะทำให้การลู่เข้าเร็วขึ้น (ลองนึกภาพถ้าคุณป้อนข้อมูลเครือข่าย 100 class1 ใน mini-batch หนึ่งและ 100 class2 data ในอีกเครือข่ายจะเลื่อนไปมาวิธีที่ดีกว่าคือการป้อนข้อมูลด้วย 50 class1 + 50 class2 ในแต่ละ mini-batch)

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

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

นั่นคือความเข้าใจของฉัน หวังว่ามันจะช่วย

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