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


155

ฉันใช้ห้องสมุดนี้เพื่อสร้างตัวแทนการเรียนรู้

ฉันได้สร้างกรณีฝึกอบรม แต่ฉันไม่รู้ว่าชุดการตรวจสอบและการทดสอบคืออะไร
ครูพูดว่า:

70% ควรเป็นกรณีรถไฟ 10% จะเป็นกรณีทดสอบและ 20% ที่เหลือควรเป็นกรณีตรวจสอบ

แก้ไข

ฉันมีรหัสนี้สำหรับการฝึกอบรม แต่ฉันไม่มีความคิดที่จะหยุดการฝึกอบรมเมื่อใด

  def train(self, train, validation, N=0.3, M=0.1):
    # N: learning rate
    # M: momentum factor
    accuracy = list()
    while(True):
        error = 0.0
        for p in train:
            input, target = p
            self.update(input)
            error = error + self.backPropagate(target, N, M)
        print "validation"
        total = 0
        for p in validation:
            input, target = p
            output = self.update(input)
            total += sum([abs(target - output) for target, output in zip(target, output)]) #calculates sum of absolute diference between target and output

        accuracy.append(total)
        print min(accuracy)
        print sum(accuracy[-5:])/5
        #if i % 100 == 0:
        print 'error %-14f' % error
        if ? < ?:
            break

แก้ไข

ฉันจะได้รับข้อผิดพลาดเฉลี่ย 0.2 จากข้อมูลการตรวจสอบความถูกต้องหลังจากทำซ้ำ 20 ครั้งการฝึกอบรมนั่นควรจะเป็น 80%?

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

1
        avg error 0.520395 
        validation
        0.246937882684
2
        avg error 0.272367   
        validation
        0.228832420879
3
        avg error 0.249578    
        validation
        0.216253590304
        ...
22
        avg error 0.227753
        validation
        0.200239244714
23
        avg error 0.227905    
        validation
        0.199875013416

1
"... นั่นควรจะเป็น 80%?" ไม่ข้อผิดพลาดโดยเฉลี่ยและเปอร์เซ็นต์ที่ถูกต้องเป็นสองสิ่งที่แตกต่างกัน สมมติว่าค่าเป้าหมายของคุณคือ 5.0 และเซลล์ประสาทของคุณคืน 4.8 (เช่นข้อผิดพลาด 0.2) อาจยอมรับข้อผิดพลาด 0.2 ขึ้นอยู่กับข้อมูลดังนั้นหากข้อผิดพลาดมีขนาดเล็กพอคุณอาจพิจารณาว่าอินสแตนซ์นั้นระบุไว้ถูกต้อง ดังนั้นหากคุณมี 10 เป้าหมายและข้อผิดพลาดการจัดหมวดหมู่ของคุณสำหรับ 7 รายการอยู่ในช่วงที่ยอมรับได้คุณจะต้องจำแนก 70% ของข้อมูลอย่างถูกต้อง
คิริล

เกณฑ์การเลิกจ้างที่คุณต้องการคืออะไร?
คิริล

คำตอบ:


292

ชุดฝึกอบรมและการตรวจสอบจะใช้ในระหว่างการฝึกอบรม

for each epoch
    for each training data instance
        propagate error through the network
        adjust the weights
        calculate the accuracy over training data
    for each validation data instance
        calculate the accuracy over the validation data
    if the threshold validation accuracy is met
        exit training
    else
        continue training

เมื่อคุณเสร็จสิ้นการฝึกอบรมจากนั้นคุณรันชุดการทดสอบและตรวจสอบว่ามีความแม่นยำเพียงพอ

ชุดฝึกอบรม : ชุดข้อมูลนี้ใช้สำหรับปรับน้ำหนักของเครือข่ายประสาทเทียม

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

ชุดทดสอบ : ชุดข้อมูลนี้ใช้สำหรับการทดสอบโซลูชันขั้นสุดท้ายเท่านั้นเพื่อยืนยันพลังการทำนายที่แท้จริงของเครือข่าย


งูหลามของ: Xi เพียงลาดเทรับเกณฑ์หยุด .. ค่าที่มาบรรจบกัน .. แต่เสมอกับ flutuation บาง ..
แดเนียล

@Daniel ความแม่นยำในการฝึกอบรมมีความผันผวนหรือความแม่นยำในการตรวจสอบมีความผันผวนหรือไม่? เป็นไปได้ว่าความแม่นยำในการตรวจสอบของคุณมีความผันผวน แต่มีโอกาสน้อยกว่าที่ความแม่นยำในการฝึกอบรมจะผันผวน เมื่อคุณพูดว่า "input, target = p" หมายความว่าคุณตั้งค่าเป็น p หรือไม่
คิริล

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

5
ชุดการตรวจสอบความถูกต้องใช้ในกระบวนการฝึกอบรม ชุดทดสอบไม่ได้ ชุดการทดสอบอนุญาตให้ 1) ดูว่าชุดการฝึกอบรมนั้นเพียงพอและ 2) ว่าชุดการตรวจสอบทำหน้าที่ป้องกันการ overfitting หรือไม่ หากคุณใช้ชุดการทดสอบในกระบวนการฝึกอบรมจะเป็นเพียงชุดการตรวจสอบอีกชุดหนึ่งและจะไม่แสดงว่าเกิดอะไรขึ้นเมื่อมีการป้อนข้อมูลใหม่ในเครือข่าย
Anton Andreev

2
@AntonAndreev ฉันไม่เข้าใจ ตามที่คำตอบของคุณไม่ว่าจะเป็นvalidation setหรือtest setจะใช้ในการปรับแต่งน้ำหนักของเครือข่ายประสาท ทำไมคุณไม่สามารถใช้ชุดข้อมูลเดียวกันไม่ได้ใช้ในการฝึกอบรมเรื่องน้ำหนักเป็นvalidation setและtest set? สิ่งที่ได้มาจากการแยกพวกเขาออกจากกัน?
Gili

77

ชุดการฝึกอบรม : ชุดของตัวอย่างที่ใช้สำหรับการเรียนรู้นั่นคือเพื่อให้พอดีกับพารามิเตอร์ [เช่นน้ำหนัก] ของตัวจําแนก

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

ชุดทดสอบ : ชุดตัวอย่างที่ใช้เพื่อประเมินประสิทธิภาพ [การวางนัยทั่วไป] ของตัวจําแนกประเภทที่ระบุอย่างสมบูรณ์เท่านั้น

จากftp://ftp.sas.com/pub/neural/FAQ1.txtส่วน " อะไรคือประชากรตัวอย่างชุดฝึกอบรมชุดการออกแบบการตรวจสอบ "

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

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

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

แก้ไข:

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


11
ฉันรู้ว่าฉันไม่ควรที่จะแสดงความคิดเห็นความหมายเช่นนี้ แต่อยากจะบอกคุณว่าฉันขอขอบคุณคำตอบนี้อย่างมาก :)
Llamageddon

6

ชุดการตรวจสอบความถูกต้องไขว้ใช้สำหรับการเลือกโมเดลตัวอย่างเช่นเลือกโมเดลพหุนามที่มีจำนวนข้อผิดพลาดน้อยที่สุดสำหรับชุดพารามิเตอร์ที่กำหนด จากนั้นชุดทดสอบจะใช้เพื่อรายงานข้อผิดพลาดการวางนัยทั่วไปของรุ่นที่เลือก จากที่นี่: https://www.coursera.org/learn/machine-learning/lecture/QGKbr/model-selection-and-train-validation-test-sets


1
ฉันกำลังเรียนของ Andrew Ng ด้วยและฉันเห็นด้วยกับคุณ ชุดการตรวจสอบควรเป็นส่วนหนึ่งของการฝึกอบรม มันควรจะใช้เพื่อเปิดพารามิเตอร์
Jack Peng

4

เราสร้างชุดการตรวจสอบความถูกต้องเป็น

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

ทำไมชุดการตรวจสอบใช้ :

ทำไมชุดการตรวจสอบใช้


2

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

วิธีการแก้ปัญหาร่วมกันคือการแบ่งชุดการฝึกอบรมเพิ่มเติมเพื่อสร้างชุดการตรวจสอบ ตอนนี้คุณมี

  • ชุดฝึกอบรม
  • ชุดทดสอบ
  • ชุดการตรวจสอบความถูกต้อง

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

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

สุดท้ายคุณประเมินโมเดลสุดท้ายนี้ในชุดทดสอบเพื่อรับการประเมินข้อผิดพลาดการวางนัยทั่วไป


0

ชุดข้อมูลการฝึกอบรม : ตัวอย่างของข้อมูลที่ใช้เพื่อให้พอดีกับแบบจำลอง

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

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


-15

ในคำง่าย ๆ กำหนดชุดฝึกอบรมชุดทดสอบชุดตรวจสอบ

ชุดฝึกอบรม: ใช้สำหรับค้นหาเพื่อนบ้านที่ใกล้ที่สุด Validation set: สำหรับการค้นหา k ที่แตกต่างกันซึ่งใช้กับชุดรถไฟ ชุดทดสอบ: ใช้สำหรับค้นหาความแม่นยำสูงสุดและข้อมูลที่มองไม่เห็นในอนาคต

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