เหตุใดนักวิจัยเครือข่ายประสาทจึงสนใจเกี่ยวกับยุค


69

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

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


1
+1 สำหรับคำถามที่น่าสนใจฉันมีคำถามเดียวกันเกือบจะแน่นอนว่าจะถาม!
Haitao Du

หลักฐานเล็ก ๆ น้อย ๆ แต่เมื่อไม่นานมานี้ฉันได้ติดตั้งโครงข่ายประสาทเทียมหนึ่งชั้นโดยใช้ SGD บนข้อมูล MNIST ซึ่งมีขนาด 50,000 การฝึกอบรม หลังจากหนึ่งการสุ่มวิ่งผ่านความถูกต้องของการจัดประเภทไม่สูงกว่า 30-40% มากและความน่าจะเป็นบันทึกไม่ชัดเจน ดังนั้นฉันจึงทำขั้นตอนซ้ำอีก 30 ครั้งเพื่อนำไปสู่ความแม่นยำมากกว่า 90% อย่างน้อยโดยการตอบโต้ตัวอย่างสิ่งนี้แสดงให้ฉันเห็นว่าพวกเขามีความจำเป็น
tomka

6
@tomka ดูเหมือนว่าจะให้หลักฐานว่าการส่งผ่านข้อมูลจำนวนมากเป็นสิ่งที่จำเป็นซึ่งสอดคล้องกับวิธีการที่นำเสนอที่นี่: เก็บตัวอย่างต่อการฝึกซ้ำเพื่อฝึกอาการคลื่นไส้ k
Sycorax

1
คำถามที่น่าสนใจอีกข้อหนึ่งก็คือ: คำสั่งซื้อแบบกลุ่มย่อยจะมีผลกระทบต่อการ overfitting หรือไม่
Kh40tiK

3
@Pinocchio การปฏิบัติตามมาตรฐานของ SGD คือการสุ่มตัวอย่างโดยไม่มีการแทนที่ (จนกว่ากลุ่มตัวอย่างจะหมดลง ณ จุดที่จุดเริ่มต้นใหม่เริ่มต้นอีกครั้งพร้อมกับข้อมูลทั้งหมด) คำถามของฉันคือทำไมมันไม่ใช้การสุ่มตัวอย่างด้วยการแทนที่ ปรากฎว่าคำตอบเดียวคือการสุ่มตัวอย่างโดยไม่มีการทดแทนช่วยเพิ่มอัตราการบรรจบกันของแบบจำลอง
Sycorax

คำตอบ:


60

นอกจากคำตอบของ Franck เกี่ยวกับการปฏิบัติจริงและคำตอบของเดวิดเกี่ยวกับการมองกลุ่มย่อยเล็ก ๆ ซึ่งทั้งสองเป็นประเด็นสำคัญ - ในความเป็นจริงมีเหตุผลทางทฤษฎีบางอย่างที่ชอบการสุ่มตัวอย่างโดยไม่ต้องเปลี่ยน เหตุผลอาจเกี่ยวข้องกับประเด็นของดาวิด (ซึ่งเป็นปัญหาของนักสะสมคูปอง )

ในปี 2009 Léon Bottou เปรียบเทียบประสิทธิภาพการบรรจบกันของปัญหาการจำแนกข้อความโดยเฉพาะ ( )n=781,265

Bottou (2009) บรรจบด่วนอยากรู้อยากเห็นของบางส่วน Stochastic ไล่โทนสีโคตรอัลกอริทึม การประชุมวิชาการเรื่องการเรียนรู้และวิทยาศาสตร์ข้อมูล ( pdf ของผู้เขียน )

เขาฝึกฝนเครื่องเวกเตอร์สนับสนุนผ่านทาง SGD ด้วยสามวิธี:

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

CE[C(θt)minθC(θ)]C tθtt

  • สำหรับการสุ่มการบรรจบกันนั้นอยู่ที่ประมาณ (ตามที่คาดไว้โดยทฤษฎีที่มีอยู่ ณ จุดนั้น)t1
  • วงจรที่ได้มาบรรจบกันตามลำดับของ (ด้วยแต่แตกต่างกันไปขึ้นอยู่กับการเรียงลำดับตัวอย่างเช่นสำหรับรูปที่ 1 ของเขา)อัลฟ่า> 1 อัลฟ่า1.8tαα>1α1.8
  • สลับวุ่นวายมากขึ้น แต่สายที่ดีที่สุดให้พอดี , มากเร็วกว่าสุ่มt2

นี่คือรูปที่ 1 ของเขาที่แสดงให้เห็นว่า: ภาพประกอบของการบรรจบกันในอัตราที่กำหนด

นี่คือการยืนยันทางทฤษฎีภายหลังจากกระดาษ:

Gürbüzbalaban, Ozdaglar และ Parrilo (2015) ทำไมสุ่ม reshuffling Beats Stochastic ไล่โทนสีโคตร arXiv: 1510.08560 ( วิดีโอการเชิญพูดคุยที่ NIPS 2015 )

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


3
นี่คือคำตอบที่ลึกซึ้งมาก ขอบคุณมากสำหรับการสนับสนุนของคุณ
Sycorax

1
ขอโทษสำหรับความเขลา แต่คุณคิดที่จะอธิบายเพิ่มเติมอีกเล็กน้อยว่าความแตกต่างระหว่างทั้งสามนั้นคืออะไร? โดยเฉพาะอย่างยิ่งฉันสับสนเกี่ยวกับการสุ่มเมื่อคุณพูดว่า "ตัวอย่าง" คุณหมายถึงอะไร ฉันรู้ว่านี่ไม่ใช่สิ่งที่คุณอ้างถึง แต่มินิชุดมาตรฐาน Neural Net SGD มักจะเป็นกลุ่มตัวอย่างโดยไม่มีการแทนที่ในแต่ละรอบซ้ำ นั่นคือสิ่งที่สุ่มทำ ถ้าเป็นเช่นนั้นจะแตกต่างจาก Shuffle อย่างไร
Pinocchio

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

3
@Pinocchio ลองนึกภาพชุดข้อมูลสี่เศร้า สุ่มอาจไป ACADBBCA; แต่ละรายการเป็นแบบสุ่มสมบูรณ์ รอบอาจไป BDAC BDAC BDAC; มันเลือกหนึ่งคำสั่งสำหรับแต่ละยุคแล้วซ้ำ การสลับอาจเป็น BDAC ADCB CBAD; มันไปในยุค แต่แต่ละคนจะสุ่ม การวิเคราะห์นี้ไม่ได้ใช้มินิบัสเพียงแค่หนึ่งองค์ประกอบต่อครั้ง
Dougal

นี่คือคำตอบที่ดี ขอบคุณคุณ!
DankMasterDan

24

แน่นอนว่ามันไม่จำเป็นจากจุดแสดงประสิทธิภาพด้วยชุดฝึกอบรมที่มีขนาดใหญ่ แต่การใช้ epochs นั้นสะดวกสบายเช่น:

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

[1] ให้เหตุผลอีกข้อหนึ่งซึ่งไม่เกี่ยวข้องกับการกำหนดค่าคอมพิวเตอร์ในปัจจุบันมากนัก:

สำหรับวิธีการไล่ระดับความชันแบบสุ่ม (รวมถึงกรณี mini-batch) สิ่งสำคัญคือประสิทธิภาพของตัวประมาณค่าที่แต่ละตัวอย่างหรือมินิเซ็ตจะถูกสุ่มตัวอย่างโดยอิสระ เนื่องจากการเข้าถึงหน่วยความจำแบบสุ่ม (หรือแย่ลงไปที่ดิสก์) นั้นมีราคาแพงการประมาณที่ดีเรียกว่าการไล่ระดับสีแบบเพิ่มหน่วย (Bertsekas, 2010) คือการเยี่ยมชมตัวอย่าง (หรือแบตช์ขนาดเล็ก) ในลำดับคงที่ หรือดิสก์ (ทำซ้ำตัวอย่างในลำดับเดียวกันในยุคที่สองหากเราไม่ได้อยู่ในกรณีออนไลน์ที่บริสุทธิ์ซึ่งแต่ละตัวอย่างมีการเยี่ยมชมเพียงครั้งเดียว)ในบริบทนี้จะปลอดภัยกว่าถ้าตัวอย่างหรือชุดเล็ก ๆ ถูกวางไว้ในลำดับแบบสุ่มก่อน (เพื่อให้แน่ใจว่าเป็นกรณีนี้มันจะมีประโยชน์ในการสับตัวอย่างก่อน) การบรรจบกันของ Faster นั้นเร็วขึ้นหากมีการเปลี่ยนแปลงลำดับของการเข้าเยี่ยมชมมินิแบทช์สำหรับแต่ละยุคซึ่งจะมีประสิทธิภาพพอสมควรหากชุดการฝึกอบรมเก็บไว้ในหน่วยความจำคอมพิวเตอร์


[1] Bengio, Yoshua " คำแนะนำการปฏิบัติสำหรับการฝึกอบรมสถาปัตยกรรมเชิงลึกแบบไล่โทนสี " Neural Networks: Tricks of the Trade Springer Berlin Heidelberg, 2012 437-478


1
k

1
@Sycorax Sampling โดยไม่มีการเปลี่ยนแม้จะเป็นแบบไม่อิสระก็คือ "อิสระโดยประมาณ" ในแง่ที่ว่ามันสามารถแลกเปลี่ยนได้ จากมุมมองของการฝึกอบรมตัวจําแนกซึ่งไม่สนใจมากเกินไปเกี่ยวกับจุดข้อมูลใด ๆ การแลกเปลี่ยนนี้ค่อนข้างแน่นอนใกล้กับ "อิสระโดยประมาณ"
Dougal

18

ฉันไม่เห็นด้วยที่ค่อนข้างชัดเจนว่ามันจะไม่สำคัญ สมมติว่ามีตัวอย่างการฝึกอบรมนับล้านตัวอย่างและเราได้ตัวอย่างสิบล้านตัวอย่าง

ใน R เราสามารถดูได้อย่างรวดเร็วว่าการกระจายนั้นมีลักษณะอย่างไร

plot(dbinom(0:40, size = 10 * 1E6, prob = 1E-6), type = "h")

PMF แบบทวินาม

ตัวอย่างบางส่วนจะถูกเยี่ยมชม 20+ ครั้งในขณะที่ 1% ของพวกเขาจะเข้าชม 3 ครั้งหรือน้อยกว่า หากเลือกชุดการฝึกอบรมอย่างรอบคอบเพื่อแสดงการกระจายตัวอย่างที่คาดหวังในข้อมูลจริงสิ่งนี้อาจมีผลกระทบที่แท้จริงในบางพื้นที่ของชุดข้อมูล --- โดยเฉพาะอย่างยิ่งเมื่อคุณเริ่มแบ่งข้อมูลออกเป็นกลุ่มเล็ก ๆ

พิจารณากรณีล่าสุดที่ผู้มีสิทธิเลือกตั้งอิลลินอยส์คนหนึ่งได้รับผลเกิน 30x อย่างมีประสิทธิภาพและเปลี่ยนการประมาณการแบบจำลองสำหรับกลุ่มประชากรของเขา (และในระดับที่น้อยลงสำหรับประชากรทั้งหมดของสหรัฐอเมริกา) หากเราสุ่มตัวอย่างภาพ "Ruffed Grouse" ที่ถ่ายโดยมีพื้นหลังสีเขียวในวันที่มีเมฆมากโดยมีความชัดลึกแคบ ๆ และเน้นภาพบ่นประเภทอื่น ๆ แบบจำลองอาจเชื่อมโยงคุณสมบัติที่ไม่เกี่ยวข้องเหล่านั้นเข้ากับฉลากหมวดหมู่ ยิ่งมีวิธีในการแบ่งข้อมูลมากเท่าไหร่กลุ่มย่อยเหล่านี้ก็จะยิ่งมีมากขึ้นเท่านั้นและโอกาสที่มากขึ้นสำหรับความผิดพลาดประเภทนี้ก็จะมีมากขึ้น


1
ฉันไม่คิดว่ามันจะสร้างความแตกต่างในทางปฏิบัติสำหรับชุดฝึกอบรมขนาดใหญ่ แต่แน่นอนฉันคาดหวังว่ามันจะมีชุดฝึกอบรมขนาดเล็กกว่า
Franck Dernoncourt

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

ค่อนข้างแน่ใจว่าคุณควรใช้การแจกแจงแบบสม่ำเสมอไม่ใช่ทวินาม
lahwran

2
107106samples = sample(1:1E6, size = 1E7, replace = TRUE)plot(table(table(samples)) / 1E7)

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