ยุคกับการย้ำเตือนเมื่อฝึกเครือข่ายประสาท


คำตอบ:


574

ในคำศัพท์เครือข่ายประสาท:

  • one epoch = หนึ่ง pass forward และ one backward pass ของตัวอย่างการฝึกอบรมทั้งหมด
  • size batch = จำนวนตัวอย่างการฝึกอบรมในหนึ่งการส่งต่อ / ย้อนหลัง ยิ่งแบทช์มีขนาดใหญ่เท่าใดคุณจะต้องมีพื้นที่หน่วยความจำมากขึ้น
  • จำนวนการวนซ้ำ = จำนวนครั้งการผ่านแต่ละครั้งโดยใช้ [ขนาดชุด] จำนวนตัวอย่าง เพื่อความชัดเจนหนึ่ง pass = หนึ่ง pass ข้างหน้า + one backward pass (เราไม่นับการส่งต่อไปข้างหน้าและ backward pass เป็นสองรอบที่แตกต่างกัน)

ตัวอย่าง: หากคุณมีตัวอย่างการฝึกอบรม 1,000 ตัวอย่างและขนาดแบทช์ของคุณคือ 500 ดังนั้นจะใช้เวลา 2 รอบในการทำ 1 ครั้ง

FYI: ขนาดแบทช์ของการค้าเทียบกับจำนวนการวนซ้ำเพื่อฝึกอบรมเครือข่ายประสาท


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


37
ฉันสับสน ทำไมคุณถึงฝึกฝนมากกว่าหนึ่งยุค - กับข้อมูลทั้งหมดมากกว่าหนึ่งครั้ง จะไม่นำไปสู่การ overfitting?
Soubriquet

29
@Soubriquet Neural Networks ได้รับการฝึกอบรมโดยใช้วิธีการปรับให้เหมาะสมแบบวนซ้ำ (ส่วนใหญ่, การไล่ระดับสี) ซึ่งมักจะต้องผ่านการฝึกซ้อมหลายครั้งเพื่อให้ได้ผลลัพธ์ที่ดี
Franck Dernoncourt

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

5
@pikachuchameleon สิ่งนี้ขึ้นอยู่กับความซับซ้อนของงาน: ยุคหนึ่งอาจเพียงพอในบางกรณี
Franck Dernoncourt

9
@ MaxPower - โดยทั่วไปขั้นตอนจะดำเนินการหลังการวนซ้ำแต่ละครั้งตามคำตอบของ Franck Dernoncourt นั่นคือสิ่งที่เราทำกับข้อมูลจากการย้อนหลัง ในการไล่ระดับสีแบบมินิ - แบทช์ด้วยการวนซ้ำmต่อยุคเราอัปเดตพารามิเตอร์mครั้งต่อยุค
dan mackinlay

142

กาลเวลาและการทำซ้ำอธิบายสิ่งต่าง ๆ


ยุค

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

การย้ำ

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


ตัวอย่าง

ตัวอย่างอาจทำให้ชัดเจนยิ่งขึ้น

สมมติว่าคุณมีชุดข้อมูล 10 ตัวอย่าง (หรือตัวอย่าง) คุณมีขนาดแบตช์เป็น 2 และคุณได้ระบุว่าคุณต้องการให้อัลกอริทึมทำงาน 3 ครั้ง

ดังนั้นในแต่ละยุคคุณมี 5 ชุด (10/2 = 5) แต่ละแบทช์จะถูกส่งผ่านอัลกอริธึมดังนั้นคุณมี 5 ซ้ำต่อยุค เนื่องจากคุณระบุ 3 ยุคคุณจะมีการทำซ้ำทั้งหมด 15 ครั้ง (5 * 3 = 15) สำหรับการฝึกอบรม


15
คุณช่วยอธิบายได้ไหมว่าตุ้มน้ำหนักได้รับการอัพเดทหลังจากยุคสมัยทุกครั้งหรือหลังการวนซ้ำทุกครั้งหรือไม่
Geek ที่สืบทอดมา

7
@ รับมรดกดูน้ำหนักจะถูกอัพเดทหลังจากแต่ละชุดไม่ใช่ยุคหรือซ้ำ
thisisbhavin

2
@bhavindhedhi 1 ชุด = 1 ซ้ำได้ใช่ไหม
Bee

2
@ ไม่รับตัวอย่าง 10,000 ตัวอย่างการฝึกอบรมและ 1,000 ตัวอย่างต่อชุดจากนั้นจะใช้เวลา 10 ซ้ำเพื่อให้ครบ 1 ตอน
thisisbhavin

4
@bhavindhedhi ฉันคิดว่าสิ่งที่ผึ้งถามคือในตัวอย่างของคุณจาก 10,000 ตัวอย่างที่มี 1,000 ต่อชุดคุณมี 10 ชุดทั้งหมดซึ่งเท่ากับ 10 ซ้ำ ฉันคิดว่ามันสมเหตุสมผล แต่ไม่แน่ใจว่ามันเป็นวิธีการตีความที่ถูกต้องหรือไม่
Michael Du

24

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

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


3
เยี่ยมมากคุณสามารถอ้างอิงถึงสิ่งพิมพ์ที่มีรายละเอียดได้หรือไม่?
อเล็กซ์

17

เพื่อให้เข้าใจถึงความแตกต่างระหว่างเหล่านี้คุณจะต้องเข้าใจการไล่โทนสีโคตรขั้นตอนวิธีการและตัวแปรของมัน

ก่อนที่ฉันจะเริ่มต้นด้วยคำตอบที่แท้จริงฉันต้องการสร้างพื้นหลัง

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

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

มินิแบทช์เป็นส่วนเล็ก ๆ ของชุดข้อมูลของที่กำหนดขนาดมินิแบทช์

การทำซ้ำคือจำนวนชุดของข้อมูลที่อัลกอริทึมได้เห็น

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

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

โคตรลาด Stochastic เป็นกรณีพิเศษของมินิชุดลาดเชื้อสายซึ่งในขนาดมินิชุดคือ1

การไล่ระดับสีแบบแบทช์กับการไล่ระดับสีแบบมินิ - แบท

การเปรียบเทียบของการไล่ระดับแบทช์สุ่มและมินิแบทช์


12

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


มันสามารถเชื่อมโยงกับการตรวจสอบข้าม?
sk

8

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

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


7

ยุคมีการวนซ้ำสองสามครั้ง นั่นคือสิ่งที่ 'ยุค' นี้เป็นจริง มานิยาม 'ยุค' เป็นจำนวนการวนซ้ำของชุดข้อมูลเพื่อฝึกโครงข่ายประสาทเทียม


4
ผมคิดว่ายุคสมัยนี้ไม่ได้เป็นเพียงตัวเลข ...
Nikana Reklawyks

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

7

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


6

ฉันเชื่อว่าการทำซ้ำนั้นเทียบเท่ากับการส่งต่อชุดเดียว + backprop เป็นชุด SGD ยุคกำลังจะผ่านชุดข้อมูลทั้งหมดครั้งเดียว (ตามที่คนอื่นพูดถึง)


5

ฉันเดาในบริบทของคำศัพท์เครือข่ายประสาท:

  • ตอนที่:เมื่อเครือข่ายของคุณจบลงที่การฝึกซ้อมทั้งหมด (เช่นหนึ่งครั้งสำหรับการฝึกแต่ละครั้ง) มันจะเสร็จสมบูรณ์หนึ่งครั้ง

ในการกำหนดการวนซ้ำ ( ขั้นตอน aka ) คุณต้องทราบขนาดแบทช์ก่อน :

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

  • ซ้ำ: (ขั้นตอนการฝึกอบรม aka) คุณรู้ว่าเครือข่ายของคุณจะต้องผ่านทุกกรณีการฝึกอบรมในครั้งเดียวเพื่อให้สมบูรณ์หนึ่งยุค แต่เดี๋ยวก่อน! เมื่อคุณแยกอินสแตนซ์การฝึกของคุณออกเป็นแบทช์นั่นหมายความว่าคุณสามารถประมวลผลแบทช์เดียวเท่านั้น(เซ็ตย่อยของอินสแตนซ์การฝึกอบรม) ในการส่งต่อครั้งเดียวดังนั้นแบทช์อื่น ๆ นี่คือที่คำซ้ำเข้ามาเล่น:

    • ความหมาย:จำนวนของอ้อมไปข้างหน้า (จำนวนสำหรับกระบวนการที่คุณได้สร้าง) ว่าเครือข่ายของคุณมีการทำเพื่อให้สมบูรณ์หนึ่งยุค (เช่นไปกว่ากรณีการฝึกอบรมทั้งหมด) เรียกซ้ำ

ตัวอย่างเช่นเมื่อคุณมี 1,000 อินสแตนซ์การฝึกอบรมและคุณต้องการทำการแบทช์ด้วยขนาด 10 คุณต้องทำ 10,000/10 = 1,000 ซ้ำเพื่อให้ครบหนึ่งยุค

หวังว่านี่จะตอบคำถามของคุณได้!


3

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)

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


1

ยุค

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

การย้ำ

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

เป็นโบนัส:

ชุด

ชุดของตัวอย่างที่ใช้ในการทำซ้ำ (นั่นคือหนึ่งลาด ปรับปรุง) ของการฝึกอบรมรุ่น

ดูขนาดแบทช์ด้วย

แหล่งที่มา: https://developers.google.com/machine-learning/glossary/


0

1.Epoch เป็น 1 รอบสมบูรณ์ที่เครือข่ายประสาทได้เห็นข้อมูลทั้งหมดที่เขา
2. อาจมี 100,000 ภาพในการฝึกอบรมโมเดลอย่างไรก็ตามพื้นที่หน่วยความจำอาจไม่เพียงพอสำหรับการประมวลผลภาพทั้งหมดในครั้งเดียวดังนั้นเราจึงแยกการฝึกอบรมแบบจำลองด้วยชิ้นส่วนข้อมูลขนาดเล็กที่เรียกว่าแบตช์ เช่นขนาดชุดเป็น 100
3. เราจำเป็นต้องครอบคลุมภาพทั้งหมดโดยใช้หลายชุด ดังนั้นเราจะต้องมี 1,000 การวนซ้ำเพื่อครอบคลุม 100,000 ภาพทั้งหมด (ขนาดแบทช์ 100 * 1,000 การวนซ้ำ)
4. เมื่อ Neural Network ดูข้อมูลทั้งหมดจะถูกเรียกว่า 1 Epoch (จุดที่ 1) อาจต้องใช้หลายยุคเพื่อฝึกฝนโมเดล (ให้เราบอกว่า 10 ยุค)

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