ขนาดของชุดงานมีผลต่อการรวมกันของ SGD และทำไม?


18

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

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

1|X|xXl(x,w)Expdata[l(x,w)]


นี่คือความคิด (อาจผิด) ของฉันที่พยายามอธิบาย

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

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

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


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

อย่างไรก็ตามบทความนี้ (Wilson และ Martinez, 2003) แสดงให้เห็นว่าขนาดของชุดที่ใหญ่กว่านั้นยังคงเป็นข้อเสียเปรียบเล็กน้อย เป็นเช่นนั้นหรือไม่ ป้อนคำอธิบายรูปภาพที่นี่

คำตอบ:


12

แน่นอนว่าการอัปเดตหนึ่งครั้งด้วยมินิบัสขนาดใหญ่นั้น "ดีกว่า" (ในแง่ของความถูกต้อง) มากกว่าการอัปเดตหนึ่งครั้งด้วยมินิบัสขนาดเล็ก สามารถเห็นได้ในตารางที่คุณคัดลอกในคำถามของคุณ (โทรหาขนาดตัวอย่าง):ยังไม่มีข้อความ

  • ชุดขนาด 1: จำนวนการปรับปรุง27ยังไม่มีข้อความ
  • 8343×ยังไม่มีข้อความ200000.47ยังไม่มีข้อความ

คุณจะเห็นว่าด้วยแบตช์ที่ใหญ่กว่าคุณต้องมีการอัพเดทน้อยลงเพื่อความแม่นยำเดียวกัน

แต่ไม่สามารถนำมาเปรียบเทียบได้เพราะมันไม่ได้ประมวลผลข้อมูลจำนวนเท่ากัน ฉันอ้างอิงบทความแรก:

kBJ1JkBJ

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

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

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

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


1
ขอบคุณมันทำให้รู้สึกดี ดังนั้นโดยทั่วไปถ้าทำการอัพเดทในจำนวนเดียวกันขนาดของแบตช์ที่ใหญ่กว่าจะดีอย่างน้อยใช่ไหม?
dontloo

คุณทราบถึงการทดลองที่เผยแพร่แล้วหรือไม่ (เปรียบเทียบขนาดของชุดผลิตภัณฑ์ที่แตกต่างกับจำนวนการปรับปรุงที่แน่นอน)
dontloo

ใช่สำหรับจำนวนอัปเดตเท่ากันชุดที่ใหญ่กว่าจะดีกว่าเสมอ ฉันไม่รู้สิ่งพิมพ์ถ้าฉันเจอฉันจะโพสต์
เบอนัวต์ซานเชซ

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

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

4

หากต้องการเพิ่มคำตอบของ Curtis White (และเพิ่มการอ้างอิงเพิ่มเติม):

ใช่ SGD ทำงานเป็นประเภทของการทำกฎ นี้เป็นสิ่งสำคัญเพราะมิฉะนั้นก็ยากที่จะอธิบายว่าทำไม DNNs ไม่เคย overfit เพราะพวกเขาสามารถ

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

การอ้างอิงเพิ่มเติม:

  • ที่นี่ [2] กระดาษอื่นที่ทำเป็นทางการนี้ (หรือพยายามฉันไม่ได้ติดตามทุกอย่างผ่านตัวเองตรวจสอบด้วยตัวเอง!)
  • กระดาษนี้ [3] อ้างว่ามีขั้นตอนของการ"stochastic relaxation, or random diffusion"ที่ stochasticity "maximiz[ation of] the conditional entropy of the layer"ธรรมชาติในการนำไปสู่การ

ทั้งสองประเภทกล่าวว่า SGD สอดคล้องกับคำว่าการทำให้เป็นมาตรฐานของเอนโทรปี

อาจมีวิธีอื่นที่ขนาดแบตช์มีอิทธิพลต่อการลู่เข้า นี่คือสิ่งที่ฉันรู้


[1] ตัวอย่าง: "มุมมองแบบเบย์เกี่ยวกับลักษณะทั่วไปและการไล่ระดับสีแบบสุ่ม Stochastic", Smith, Le, 2018. จากนามธรรม: "We propose that the noise introduced by small mini-batches drives the parameters towards minima whose evidence is large."

[2] "การไล่ระดับสีแบบสุ่ม Stochastic ทำการอนุมานแบบแปรผันมาบรรจบกันเพื่อ จำกัด วงรอบสำหรับเครือข่ายที่ลึก", Chaudhari, Soatto 2017

[3] "การเปิดกล่องดำของ Deep Neural Networks ผ่าน Information" Schwartz-Ziv, Tishby, 2017

[4] "การทำความเข้าใจการเรียนรู้อย่างลึกซึ้งนั้นจำเป็นต้องมีการทบทวนแนวคิดทั่วไป", C. Zhang ฯลฯ 2016


(+1) การอ้างอิงที่ดี btw ผู้เขียนคนแรกของ [4] คือ C. Zhang
user20160

โอ้คุณพูดถูก! แก้ไขมันขอบคุณสำหรับการแก้ไข
dasWesen

0

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

ดูที่นี่

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