ความแตกต่างระหว่างยุคและการทำซ้ำเมื่อฝึก perceptron หลายชั้นคืออะไร?
ความแตกต่างระหว่างยุคและการทำซ้ำเมื่อฝึก perceptron หลายชั้นคืออะไร?
คำตอบ:
ในคำศัพท์เครือข่ายประสาท:
ตัวอย่าง: หากคุณมีตัวอย่างการฝึกอบรม 1,000 ตัวอย่างและขนาดแบทช์ของคุณคือ 500 ดังนั้นจะใช้เวลา 2 รอบในการทำ 1 ครั้ง
FYI: ขนาดแบทช์ของการค้าเทียบกับจำนวนการวนซ้ำเพื่อฝึกอบรมเครือข่ายประสาท
คำว่า "แบทช์" นั้นคลุมเครือ: บางคนใช้เพื่อกำหนดชุดการฝึกอบรมทั้งหมดและบางคนใช้เพื่ออ้างถึงจำนวนตัวอย่างการฝึกอบรมในการส่งต่อ / การย้อนกลับหนึ่งครั้ง (ดังที่ฉันทำในคำตอบนี้) เพื่อหลีกเลี่ยงความคลุมเครือที่และให้ชัดเจนว่าสอดคล้องกับชุดจำนวนตัวอย่างการฝึกอบรมในหนึ่งผ่านไปข้างหน้า / ถอยหลังหนึ่งสามารถใช้ระยะมินิแบทช์
กาลเวลาและการทำซ้ำอธิบายสิ่งต่าง ๆ
ยุคอธิบายจำนวนครั้งที่อัลกอริทึมเห็นทั้งชุดข้อมูล ดังนั้นทุกครั้งที่อัลกอริทึมได้เห็นตัวอย่างทั้งหมดในชุดข้อมูลยุคได้เสร็จสิ้นแล้ว
การวนซ้ำอธิบายจำนวนครั้งที่ชุดข้อมูลผ่านอัลกอริทึม ในกรณีของเครือข่ายประสาทที่หมายความว่าผ่านไปข้างหน้าและย้อนกลับผ่านไป ดังนั้นเวลาที่คุณผ่านชุดของข้อมูลที่ผ่าน NN ทุกท่านเสร็จสิ้นการทำซ้ำ
ตัวอย่างอาจทำให้ชัดเจนยิ่งขึ้น
สมมติว่าคุณมีชุดข้อมูล 10 ตัวอย่าง (หรือตัวอย่าง) คุณมีขนาดแบตช์เป็น 2 และคุณได้ระบุว่าคุณต้องการให้อัลกอริทึมทำงาน 3 ครั้ง
ดังนั้นในแต่ละยุคคุณมี 5 ชุด (10/2 = 5) แต่ละแบทช์จะถูกส่งผ่านอัลกอริธึมดังนั้นคุณมี 5 ซ้ำต่อยุค เนื่องจากคุณระบุ 3 ยุคคุณจะมีการทำซ้ำทั้งหมด 15 ครั้ง (5 * 3 = 15) สำหรับการฝึกอบรม
อัลกอริธึมการฝึกอบรมเครือข่ายนิวรัลจำนวนมากเกี่ยวข้องกับการนำเสนอข้อมูลทั้งหมดที่กำหนดให้กับเครือข่ายประสาท บ่อยครั้งที่มีการนำเสนอชุดข้อมูลเดียวทั้งหมดเรียกว่า "ยุค" ในทางตรงกันข้ามอัลกอริทึมบางตัวจะนำเสนอข้อมูลไปยังเครือข่ายประสาทในแต่ละครั้ง
"การวนซ้ำ" เป็นคำทั่วไปมากขึ้น แต่เมื่อคุณถามเกี่ยวกับมันพร้อมกับ "ยุค" ฉันคิดว่าแหล่งที่มาของคุณอ้างถึงการนำเสนอกรณีเดียวกับเครือข่ายประสาท
เพื่อให้เข้าใจถึงความแตกต่างระหว่างเหล่านี้คุณจะต้องเข้าใจการไล่โทนสีโคตรขั้นตอนวิธีการและตัวแปรของมัน
ก่อนที่ฉันจะเริ่มต้นด้วยคำตอบที่แท้จริงฉันต้องการสร้างพื้นหลัง
ชุดเป็นชุดข้อมูลที่สมบูรณ์ ขนาดของมันคือจำนวนตัวอย่างการฝึกอบรมทั้งหมดในชุดข้อมูลที่มี
ขนาดมินิแบทช์คือจำนวนของตัวอย่างที่กระบวนการอัลกอริทึมการเรียนรู้ในรอบเดียว (ไปข้างหน้าและข้างหลัง)
มินิแบทช์เป็นส่วนเล็ก ๆ ของชุดข้อมูลของที่กำหนดขนาดมินิแบทช์
การทำซ้ำคือจำนวนชุดของข้อมูลที่อัลกอริทึมได้เห็น
Epochsคือจำนวนครั้งที่อัลกอริทึมการเรียนรู้เห็นชุดข้อมูลที่สมบูรณ์ ตอนนี้สิ่งนี้อาจไม่เท่ากับจำนวนการวนซ้ำเนื่องจากชุดข้อมูลสามารถประมวลผลในชุดข้อมูลขนาดเล็กได้ในสาระสำคัญการผ่านครั้งเดียวอาจดำเนินการเพียงส่วนหนึ่งของชุดข้อมูล ในกรณีดังกล่าวจำนวนของการทำซ้ำไม่เท่ากับจำนวนของยุคสมัย
ในกรณีของการไล่ระดับสีแบบแบทช์แบทช์ทั้งหมดจะถูกประมวลผลในแต่ละการฝึกอบรม ดังนั้นเครื่องมือเพิ่มประสิทธิภาพการไล่ระดับสีแบบลาดเอียงจะส่งผลให้คอนเวอร์เจนซ์ที่ราบรื่นกว่าการไล่ระดับสีแบบมินิแบทช์ แต่ใช้เวลามากกว่า โคตรลาดของชุดรับประกันว่าจะหาที่ดีที่สุดถ้ามันมีอยู่
โคตรลาด Stochastic เป็นกรณีพิเศษของมินิชุดลาดเชื้อสายซึ่งในขนาดมินิชุดคือ1
คุณมีข้อมูลการฝึกอบรมที่คุณสลับและเลือกชุดมินิจากมัน เมื่อคุณปรับน้ำหนักและอคติของคุณโดยใช้มินิแบทช์เดียวคุณจะทำซ้ำได้หนึ่งครั้ง เมื่อคุณหมดมินิแบทช์ของคุณคุณได้เสร็จสิ้นยุค จากนั้นคุณสุ่มข้อมูลการฝึกอบรมของคุณอีกครั้งเลือกแบทช์ย่อยอีกครั้งและวนซ้ำทั้งหมดอีกครั้ง นั่นจะเป็นยุคที่สองของคุณ
โดยทั่วไปแล้วคุณจะแบ่งการทดสอบของคุณออกเป็นชุดเล็ก ๆ เพื่อให้เครือข่ายเรียนรู้และทำการฝึกอบรมทีละขั้นตามจำนวนเลเยอร์ของคุณโดยใช้การไล่ระดับสีลงมาจนสุด ขั้นตอนเล็ก ๆ เหล่านี้สามารถเรียกซ้ำได้
ยุคสอดคล้องกับการฝึกอบรมทั้งชุดจะผ่านเครือข่ายทั้งหมดในครั้งเดียว มันจะมีประโยชน์ในการ จำกัด สิ่งนี้เช่นการต่อสู้จนเกินไป
ยุคมีการวนซ้ำสองสามครั้ง นั่นคือสิ่งที่ 'ยุค' นี้เป็นจริง มานิยาม 'ยุค' เป็นจำนวนการวนซ้ำของชุดข้อมูลเพื่อฝึกโครงข่ายประสาทเทียม
เพื่อความเข้าใจของฉันเมื่อคุณต้องการฝึกอบรม NN คุณต้องมีชุดข้อมูลขนาดใหญ่ที่เกี่ยวข้องกับรายการข้อมูลจำนวนมาก เมื่อ NN กำลังได้รับการฝึกฝนไอเท็มข้อมูลจะเข้าสู่ NN หนึ่งต่อหนึ่งซึ่งเรียกว่าการวนซ้ำ เมื่อชุดข้อมูลทั้งหมดผ่านไปก็จะเรียกว่ายุค
ฉันเชื่อว่าการทำซ้ำนั้นเทียบเท่ากับการส่งต่อชุดเดียว + backprop เป็นชุด SGD ยุคกำลังจะผ่านชุดข้อมูลทั้งหมดครั้งเดียว (ตามที่คนอื่นพูดถึง)
ฉันเดาในบริบทของคำศัพท์เครือข่ายประสาท:
ในการกำหนดการวนซ้ำ ( ขั้นตอน aka ) คุณต้องทราบขนาดแบทช์ก่อน :
ขนาดแบทช์:คุณอาจไม่ต้องการประมวลผลอินสแตนซ์การฝึกอบรมทั้งหมดในการส่งต่อครั้งเดียวเนื่องจากไม่มีประสิทธิภาพและต้องการหน่วยความจำจำนวนมาก ดังนั้นสิ่งที่ทำกันโดยทั่วไปคือแยกอินสแตนซ์การฝึกอบรมออกเป็นชุดย่อย (เช่นแบตช์) ดำเนินการผ่านหนึ่งผ่านชุดย่อยที่เลือก (เช่นแบทช์) จากนั้นปรับเครือข่ายให้เหมาะสมผ่านแบ็คเพจ จำนวนกรณีการฝึกอบรมภายในเซต (เช่นชุด) เรียกว่าbatch_size
ซ้ำ: (ขั้นตอนการฝึกอบรม aka) คุณรู้ว่าเครือข่ายของคุณจะต้องผ่านทุกกรณีการฝึกอบรมในครั้งเดียวเพื่อให้สมบูรณ์หนึ่งยุค แต่เดี๋ยวก่อน! เมื่อคุณแยกอินสแตนซ์การฝึกของคุณออกเป็นแบทช์นั่นหมายความว่าคุณสามารถประมวลผลแบทช์เดียวเท่านั้น(เซ็ตย่อยของอินสแตนซ์การฝึกอบรม) ในการส่งต่อครั้งเดียวดังนั้นแบทช์อื่น ๆ นี่คือที่คำซ้ำเข้ามาเล่น:
ตัวอย่างเช่นเมื่อคุณมี 1,000 อินสแตนซ์การฝึกอบรมและคุณต้องการทำการแบทช์ด้วยขนาด 10 คุณต้องทำ 10,000/10 = 1,000 ซ้ำเพื่อให้ครบหนึ่งยุค
หวังว่านี่จะตอบคำถามของคุณได้!
epoch คือการวนซ้ำของกลุ่มตัวอย่างสำหรับการฝึกอบรมเช่นอัลกอริธึมการไล่ระดับสีในเครือข่ายที่เป็นกลาง การอ้างอิงที่ดีคือ: http://neuralnetworksanddeeplearning.com/chap1.html
โปรดทราบว่าหน้านี้มีรหัสสำหรับอัลกอริทึมการไล่ระดับสีไล่ระดับซึ่งใช้ยุค
def SGD(self, training_data, epochs, mini_batch_size, eta,
test_data=None):
"""Train the neural network using mini-batch stochastic
gradient descent. The "training_data" is a list of tuples
"(x, y)" representing the training inputs and the desired
outputs. The other non-optional parameters are
self-explanatory. If "test_data" is provided then the
network will be evaluated against the test data after each
epoch, and partial progress printed out. This is useful for
tracking progress, but slows things down substantially."""
if test_data: n_test = len(test_data)
n = len(training_data)
for j in xrange(epochs):
random.shuffle(training_data)
mini_batches = [
training_data[k:k+mini_batch_size]
for k in xrange(0, n, mini_batch_size)]
for mini_batch in mini_batches:
self.update_mini_batch(mini_batch, eta)
if test_data:
print "Epoch {0}: {1} / {2}".format(
j, self.evaluate(test_data), n_test)
else:
print "Epoch {0} complete".format(j)
ดูรหัส สำหรับแต่ละยุคเราสุ่มสร้างชุดย่อยของอินพุตสำหรับอัลกอริทึมการไล่ระดับสี ทำไมยุคสมัยถึงมีประสิทธิภาพก็อธิบายไว้ในหน้าด้วย โปรดดู
การฝึกอบรมเต็มรูปแบบผ่านชุดข้อมูลทั้งหมดเพื่อให้เห็นตัวอย่างแต่ละตัวอย่างหนึ่งครั้ง ดังนั้นยุคหมายถึงการทำซ้ำการฝึกอบรมN / ชุดขนาดโดยที่ N คือจำนวนตัวอย่างทั้งหมด
การอัปเดตตุ้มน้ำหนักของโมเดลหนึ่งครั้งในระหว่างการฝึก ซ้ำประกอบด้วยการคำนวณการไล่ระดับสีของพารามิเตอร์ที่เกี่ยวกับการสูญเสียที่เดียวชุดของข้อมูล
เป็นโบนัส:
ชุดของตัวอย่างที่ใช้ในการทำซ้ำ (นั่นคือหนึ่งลาด ปรับปรุง) ของการฝึกอบรมรุ่น
ดูขนาดแบทช์ด้วย
แหล่งที่มา: https://developers.google.com/machine-learning/glossary/
1.Epoch เป็น 1 รอบสมบูรณ์ที่เครือข่ายประสาทได้เห็นข้อมูลทั้งหมดที่เขา
2. อาจมี 100,000 ภาพในการฝึกอบรมโมเดลอย่างไรก็ตามพื้นที่หน่วยความจำอาจไม่เพียงพอสำหรับการประมวลผลภาพทั้งหมดในครั้งเดียวดังนั้นเราจึงแยกการฝึกอบรมแบบจำลองด้วยชิ้นส่วนข้อมูลขนาดเล็กที่เรียกว่าแบตช์ เช่นขนาดชุดเป็น 100
3. เราจำเป็นต้องครอบคลุมภาพทั้งหมดโดยใช้หลายชุด ดังนั้นเราจะต้องมี 1,000 การวนซ้ำเพื่อครอบคลุม 100,000 ภาพทั้งหมด (ขนาดแบทช์ 100 * 1,000 การวนซ้ำ)
4. เมื่อ Neural Network ดูข้อมูลทั้งหมดจะถูกเรียกว่า 1 Epoch (จุดที่ 1) อาจต้องใช้หลายยุคเพื่อฝึกฝนโมเดล (ให้เราบอกว่า 10 ยุค)