Sự khác biệt giữa đào tạo, xác nhận và bộ kiểm tra, trong các mạng thần kinh là gì?


155

Tôi đang sử dụng thư viện này để thực hiện một tác nhân học tập.

Tôi đã tạo ra các trường hợp đào tạo, nhưng tôi không biết chắc chắn các bộ kiểm tra và xác nhận là gì.
Giáo viên nói:

70% nên là trường hợp đào tạo, 10% sẽ là trường hợp thử nghiệm và 20% còn lại sẽ là trường hợp xác nhận.

biên tập

Tôi có mã này để đào tạo, nhưng tôi không biết khi nào nên ngừng đào tạo.

  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

biên tập

Tôi có thể nhận được một lỗi trung bình 0,2 với dữ liệu xác nhận, sau khi có thể 20 lần lặp đào tạo, tỷ lệ đó phải là 80%?

lỗi trung bình = tổng chênh lệch tuyệt đối giữa mục tiêu xác thực và đầu ra, với đầu vào / kích thước dữ liệu xác thực của dữ liệu xác nhận.

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
"... đó phải là 80%?" Không, lỗi trung bình và phần trăm đúng là hai điều khác nhau. Giả sử giá trị mục tiêu của bạn là 5.0 và nơ ron của bạn trả về 4,8 (tức là sai số 0,2). Tùy thuộc vào dữ liệu, sai số 0,2 có thể được chấp nhận, vì vậy nếu lỗi đủ nhỏ thì bạn có thể xem xét trường hợp đó được chỉ định chính xác. Vì vậy, nếu bạn có 10 mục tiêu và lỗi phân loại của bạn cho 7 trong số chúng nằm trong phạm vi chấp nhận được, thì bạn sẽ phân loại chính xác 70% dữ liệu.
Kiril

Các tiêu chí chấm dứt theo yêu cầu của giáo viên của bạn là gì?
Kiril

Câu trả lời:


292

Các bộ đào tạo và xác nhận được sử dụng trong quá trình đào tạo.

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

Khi bạn đã hoàn thành đào tạo, sau đó bạn chạy theo bộ thử nghiệm của mình và xác minh rằng độ chính xác là đủ.

Tập huấn luyện : tập dữ liệu này được sử dụng để điều chỉnh các trọng số trên mạng thần kinh.

Bộ xác nhận : bộ dữ liệu này được sử dụng để giảm thiểu quá mức. Bạn không điều chỉnh trọng số của mạng với tập dữ liệu này, bạn chỉ đang xác minh rằng bất kỳ sự tăng độ chính xác nào trên tập dữ liệu huấn luyện thực sự mang lại sự gia tăng độ chính xác so với tập dữ liệu chưa được hiển thị trước mạng, hoặc ít nhất là mạng chưa được đào tạo về nó (tức là tập dữ liệu xác nhận). Nếu độ chính xác của tập dữ liệu huấn luyện tăng, nhưng độ chính xác của tập dữ liệu xác nhận giữ nguyên hoặc giảm, thì bạn đang làm quá mức mạng lưới thần kinh của mình và bạn nên ngừng đào tạo.

Bộ kiểm tra : bộ dữ liệu này chỉ được sử dụng để kiểm tra giải pháp cuối cùng nhằm xác nhận khả năng dự đoán thực tế của mạng.


Con trăn của nó: xi chỉ không thể có được một tiêu chí dừng .. các giá trị hội tụ .. nhưng luôn luôn có một số thay đổi ..
Daniel

@Daniel, độ chính xác đào tạo dao động hay độ chính xác xác nhận dao động? Có thể độ chính xác xác thực của bạn dao động, nhưng ít có khả năng độ chính xác đào tạo sẽ dao động. Khi bạn nói "input, target = p" có nghĩa là bạn đang đặt cả hai thành p?
Kiril

Tôi không rành lắm về python, vì vậy mã có vẻ hơi khó hiểu với tôi ... nói chung bạn muốn ngừng đào tạo khi độ chính xác xác thực của bạn đạt đến một ngưỡng nhất định, giả sử 70% hoặc 90%, bất cứ điều gì có ý nghĩa đối với miền dữ liệu của bạn.
Kiril

5
Bộ xác nhận được sử dụng trong quá trình đào tạo. Bộ kiểm tra thì không. Bộ kiểm tra cho phép 1) xem liệu tập huấn luyện đã đủ chưa và 2) liệu bộ xác thực có thực hiện công việc ngăn chặn quá mức hay không. Nếu bạn sử dụng bộ kiểm tra trong quá trình đào tạo thì nó sẽ chỉ là một bộ xác thực khác và nó sẽ không hiển thị những gì xảy ra khi dữ liệu mới được cung cấp trong mạng.
Anton Andreev

2
@AntonAndreev Tôi không hiểu. Theo câu trả lời của bạn, không phải validation setcũng không test setđược sử dụng để điều chỉnh trọng số của mạng lưới thần kinh. Tại sao bạn không thể sử dụng cùng một bộ dữ liệu, không được sử dụng để huấn luyện các trọng số, như validation settest set? Những gì đạt được bằng cách giữ chúng riêng biệt?
Gili

77

Tập huấn luyện : Một tập hợp các ví dụ được sử dụng cho việc học, nghĩa là phù hợp với các tham số [tức là trọng số] của trình phân loại.

Tập xác thực : Một tập hợp các ví dụ được sử dụng để điều chỉnh các tham số [nghĩa là kiến ​​trúc, không phải trọng số] của một bộ phân loại, ví dụ để chọn số lượng đơn vị ẩn trong mạng thần kinh.

Tập kiểm tra : Một tập hợp các ví dụ chỉ được sử dụng để đánh giá hiệu suất [tổng quát hóa] của một bộ phân loại được chỉ định đầy đủ.

Từ phần ftp://ftp.sas.com/pub/neural/FAQ1.txt " Dân số, mẫu, tập huấn luyện, bộ thiết kế, xác nhận " là gì

Bề mặt lỗi sẽ khác nhau đối với các bộ dữ liệu khác nhau từ tập dữ liệu của bạn (học theo đợt). Do đó, nếu bạn tìm thấy một cực tiểu cục bộ rất tốt cho dữ liệu của bộ kiểm tra của mình, đó có thể không phải là một điểm rất tốt và có thể là một điểm rất xấu trên bề mặt được tạo bởi một số bộ dữ liệu khác cho cùng một vấn đề. Do đó, bạn cần tính toán một mô hình như vậy không chỉ tìm thấy cấu hình trọng lượng tốt cho tập huấn luyện mà còn có thể dự đoán dữ liệu mới (không có trong tập huấn luyện) với lỗi tốt. Nói cách khác, mạng sẽ có thể khái quát các ví dụ để nó học dữ liệu và không chỉ đơn giản là nhớ hoặc tải tập huấn luyện bằng cách ghi đè dữ liệu huấn luyện.

Tập dữ liệu xác nhận là một tập hợp dữ liệu cho chức năng bạn muốn tìm hiểu, mà bạn không trực tiếp sử dụng để đào tạo mạng. Bạn đang đào tạo mạng với một tập hợp dữ liệu mà bạn gọi là tập dữ liệu huấn luyện. Nếu bạn đang sử dụng thuật toán dựa trên độ dốc để huấn luyện mạng thì bề mặt lỗi và độ dốc tại một số điểm sẽ hoàn toàn phụ thuộc vào tập dữ liệu huấn luyện, do đó tập dữ liệu huấn luyện đang được sử dụng trực tiếp để điều chỉnh trọng số. Để đảm bảo bạn không quá phù hợp với mạng, bạn cần nhập dữ liệu xác thực vào mạng và kiểm tra xem lỗi có nằm trong phạm vi nào đó không. Bởi vì bộ xác thực không được sử dụng trực tiếp để điều chỉnh trọng số của netowork, do đó, một lỗi tốt cho xác thực và bộ kiểm tra chỉ ra rằng mạng dự đoán tốt cho các ví dụ về bộ tàu,

Dừng lại sớm là một cách để ngừng đào tạo. Có các biến thể khác nhau có sẵn, phác thảo chính là, cả lỗi tàu và lỗi xác thực được theo dõi, lỗi tàu giảm ở mỗi lần lặp (backprop và anh em) và lúc đầu, lỗi xác thực giảm. Việc đào tạo được dừng lại tại thời điểm lỗi xác nhận bắt đầu tăng lên. Cấu hình trọng lượng tại thời điểm này cho biết một mô hình, dự đoán tốt dữ liệu huấn luyện, cũng như dữ liệu mà mạng không nhìn thấy . Nhưng vì dữ liệu xác nhận thực sựảnh hưởng đến cấu hình trọng lượng gián tiếp để chọn cấu hình trọng lượng. Đây là nơi tập hợp Kiểm tra xuất hiện. Tập dữ liệu này không bao giờ được sử dụng trong quá trình đào tạo. Khi một mô hình được chọn dựa trên bộ xác thực, dữ liệu của bộ kiểm tra được áp dụng trên mô hình mạng và tìm thấy lỗi cho bộ này. Lỗi này là một đại diện của lỗi mà chúng ta có thể mong đợi từ dữ liệu hoàn toàn mới cho cùng một vấn đề.

BIÊN TẬP:

Ngoài ra, trong trường hợp bạn không có đủ dữ liệu cho một bộ xác thực, bạn có thể sử dụng xác thực chéo để điều chỉnh các tham số cũng như ước tính lỗi kiểm tra.


11
Tôi biết tôi không nên đăng những bình luận vô nghĩa như thế này, nhưng muốn nói với bạn rằng tôi đánh giá cao câu trả lời này rất nhiều :)
Llamageddon

6

Bộ xác thực chéo được sử dụng để chọn mô hình, ví dụ: chọn mô hình đa thức có ít lỗi nhất cho một bộ tham số đã cho. Bộ kiểm tra sau đó được sử dụng để báo cáo lỗi tổng quát hóa trên mô hình đã chọn. Từ đây: https://www.coursera.org/learn/machine-learning/lecture/QGKbr/model-selection-and-train-validation-test-sets


1
Tôi cũng đang tham gia lớp học của Andrew Ng và tôi đồng ý với bạn. Bộ xác nhận nên là một phần của đào tạo. Nó chỉ nên được sử dụng để biến siêu âm.
Jack Peng

4

Chúng tôi tạo một xác thực được đặt thành

  • Đo lường mức độ tốt của một mô hình, trong quá trình đào tạo
  • Hãy cho chúng tôi biết khi nào nên ngừng đào tạo một mô hình; Khi mất xác thực dừng giảm (và đặc biệt là khi mất xác thực bắt đầu tăng và tổn thất đào tạo vẫn giảm)

Tại sao bộ xác thực được sử dụng :

Tại sao bộ xác thực được sử dụng


2

Giả sử bạn huấn luyện một mô hình trên tập huấn luyện và sau đó đo hiệu suất của nó trên tập kiểm tra. Bạn nghĩ rằng vẫn còn chỗ để cải thiện và bạn thử điều chỉnh các tham số siêu (Nếu mô hình là Mạng thần kinh - siêu tham số là số lớp hoặc nút trong các lớp). Bây giờ bạn có được một hiệu suất tốt hơn một chút. Tuy nhiên, khi mô hình phải chịu một dữ liệu khác (không phải trong tập kiểm tra và huấn luyện), bạn có thể không có cùng mức độ chính xác. Điều này là do bạn đã giới thiệu một số sai lệch trong khi điều chỉnh các tham số siêu để có độ chính xác cao hơn trên bộ thử nghiệm. Về cơ bản, bạn đã điều chỉnh mô hình và siêu tham số để tạo ra mô hình tốt nhất cho tập huấn luyện cụ thể đó.

Một giải pháp phổ biến là phân chia tập huấn luyện thêm để tạo tập xác thực . Bây giờ bạn có

  • tập huấn luyện
  • bộ kiểm tra
  • bộ xác nhận

Bạn tiếp tục như trước nhưng lần này bạn sử dụng bộ xác thực để kiểm tra hiệu suất và điều chỉnh các tham số siêu. Cụ thể hơn, bạn huấn luyện nhiều mô hình với các tham số siêu khác nhau trên tập huấn luyện giảm (nghĩa là tập huấn luyện đầy đủ trừ tập xác thực) và bạn chọn mô hình hoạt động tốt nhất trên tập xác thực.

Khi bạn đã chọn mô hình hoạt động tốt nhất trên bộ xác thực, bạn sẽ đào tạo mô hình tốt nhất trên bộ đào tạo đầy đủ (bao gồm cả bộ valida) và điều này mang đến cho bạn mô hình cuối cùng.

Cuối cùng, bạn đánh giá mô hình cuối cùng này trên tập kiểm tra để có ước tính về lỗi tổng quát hóa.


0

Tập dữ liệu đào tạo : Mẫu dữ liệu được sử dụng để phù hợp với mô hình.

Bộ dữ liệu xác nhận : Mẫu dữ liệu được sử dụng để cung cấp đánh giá không thiên vị về mô hình phù hợp với tập dữ liệu huấn luyện trong khi điều chỉnh siêu đường kính mô hình. Việc đánh giá trở nên thiên vị hơn khi kỹ năng về bộ dữ liệu xác nhận được kết hợp vào cấu hình mô hình.

Bộ dữ liệu thử nghiệm : Mẫu dữ liệu được sử dụng để cung cấp đánh giá khách quan về mô hình cuối cùng phù hợp với tập dữ liệu huấn luyện.


-15

Nói một cách đơn giản, xác định Tập huấn luyện, Tập kiểm tra, Tập xác thực

Tập huấn luyện: Được sử dụng để tìm hàng xóm gần nhất. Bộ xác nhận: Dành cho việc tìm k khác nhau đang áp dụng cho tập huấn luyện. Bộ kiểm tra: Được sử dụng để tìm độ chính xác tối đa và dữ liệu chưa xem trong tương lai.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.