Bạn cần bao nhiêu dữ liệu cho một mạng nơ ron tích chập?


14

Nếu tôi có một mạng nơ ron tích chập (CNN), có khoảng 1.000.000 tham số, thì cần bao nhiêu dữ liệu đào tạo (giả sử tôi đang thực hiện giảm độ dốc ngẫu nhiên)? Có bất kỳ quy tắc của ngón tay cái?

Ghi chú bổ sung: Khi tôi thực hiện giảm độ dốc ngẫu nhiên (ví dụ: 64 bản vá cho 1 lần lặp), sau ~ 10000 lần lặp, độ chính xác của trình phân loại có thể đạt đến giá trị ổn định thô). Điều này có nghĩa là không cần nhiều dữ liệu? Thích dữ liệu 100k-1000k.

Câu trả lời:


11

Để biết liệu có nhiều dữ liệu sẽ hữu ích hay không, bạn nên so sánh hiệu suất của thuật toán của mình trên dữ liệu huấn luyện (tức là dữ liệu được sử dụng để huấn luyện mạng thần kinh) với hiệu suất của nó trên dữ liệu thử nghiệm (tức là dữ liệu mà mạng thần kinh đã làm không "thấy" trong đào tạo).

Một điều tốt để kiểm tra sẽ là lỗi (hoặc độ chính xác) trên mỗi bộ như là một hàm của số lần lặp. Có hai khả năng cho kết quả của việc này:

1) Lỗi đào tạo hội tụ đến một giá trị thấp hơn đáng kể so với lỗi kiểm tra. Nếu đây là trường hợp, hiệu suất của thuật toán của bạn gần như chắc chắn sẽ cải thiện với nhiều dữ liệu hơn.

2) Lỗi đào tạo và lỗi kiểm tra hội tụ về cùng một giá trị (với lỗi đào tạo có lẽ vẫn thấp hơn một chút so với lỗi kiểm tra). Trong trường hợp này, dữ liệu bổ sung sẽ không giúp ích cho thuật toán của bạn. Nếu bạn cần hiệu suất tốt hơn mức bạn nhận được tại thời điểm này, bạn nên thử thêm nhiều nơ-ron vào các lớp ẩn hoặc thêm nhiều lớp ẩn. Nếu đủ các đơn vị ẩn được thêm vào, bạn sẽ thấy lỗi kiểm tra của bạn sẽ trở nên cao hơn đáng kể so với lỗi đào tạo và nhiều dữ liệu sẽ giúp ích tại thời điểm đó.

Để có phần giới thiệu kỹ lưỡng và hữu ích hơn về cách đưa ra các quyết định này, tôi đánh giá cao khóa học Coursera của Andrew Ng , đặc biệt là các bài học "Đánh giá thuật toán học tập" và "Bias vs. Variance".


3

Câu trả lời ngây thơ là luôn cần thêm dữ liệu. Lặp lại cùng một tập dữ liệu nói rằng có nhiều kỷ nguyên hơn giúp bạn "tinh chỉnh" kết quả nhưng bạn không cải thiện kết quả nhiều như có nhiều dữ liệu hơn.

Như một ví dụ, tôi đang đào tạo một mạng lưới để làm mô hình câu và để kiểm tra xem tôi có cần thêm dữ liệu không, tôi đã cố gắng phân tách tập dữ liệu huấn luyện của mình trong tập hợp nhỏ hơn và cố gắng kiểm tra nó.

Sử dụng toàn bộ dữ liệu và đào tạo cho 10 lần lặp, tôi đã đạt được độ chính xác 93% trên điểm chuẩn của mình và nó tiếp tục được cải thiện. Thay vào đó, khi tôi lặp lại trên 10% bộ dữ liệu cho 100 lần lặp, tôi đã thu được 85%.

Vì vậy, luôn cố gắng có nhiều dữ liệu hơn nhưng nếu bạn không thể, thực hiện nhiều kỷ nguyên hơn có thể là một sự đánh đổi tốt đẹp nhưng cuối cùng mô hình của bạn sẽ hội tụ tốt hơn nếu bạn cung cấp cho mạng luôn có dữ liệu mới.


1
Cảm ơn câu trả lời của bạn! Vâng, tôi biết bạn càng có nhiều dữ liệu, bạn sẽ càng tốt hơn, nhưng sau đó chính xác có bao nhiêu dữ liệu bạn cần là điều tôi không chắc chắn. Bởi vì không phải lúc nào bạn cũng có thể có nhiều dữ liệu hơn. Ví dụ: tôi cần thuê một người nào đó để chú thích và dán nhãn, tôi muốn tìm ra khi nào tôi nên dừng lại ...
RockTheStar

điều đó có nghĩa là nếu tôi có một tập dữ liệu nhỏ, mô hình của tôi sẽ không hội tụ?
samsamara

3

Tôi đoán điều quan trọng nhất là các mẫu trong dữ liệu của bạn được trải đều, bởi vì cho dù bạn có bao nhiêu dữ liệu, nhiều dữ liệu sẽ luôn tốt hơn. Rốt cuộc, nếu bạn cố gắng học cách phân biệt giữa ảnh mèo và chó, bạn không thể mong đợi mô hình của mình hoạt động tốt nếu bạn chỉ cho nó ăn ảnh mèo.

Như được đề xuất trong câu trả lời của Kevin L , sẽ rất hợp lý khi xem xét sự khác biệt giữa lỗi đào tạo và lỗi kiểm tra. Nếu dữ liệu thử nghiệm của bạn độc lập với dữ liệu đào tạo của bạn, điều này đưa ra một dấu hiệu cho thấy mức độ tổng quát của mô hình của bạn đối với dữ liệu không có sẵn. Một cái gì đó tôi muốn thêm vào đó là một sự khác biệt lớn giữa lỗi đào tạo và kiểm tra chỉ cho bạn biết rằng mô hình của bạn không khái quát tốt, tức là bạn đang sử dụng quá nhiều dữ liệu đào tạo. Nhiều dữ liệu hơn có thể sẽ giúp ích, bởi vì bây giờ mạng cũng cần mô hình hóa các điểm dữ liệu bổ sung, do đó không thể vượt quá mức đó nữa. Tuy nhiên, có thể đáng để thay đổi mô hình của bạn sao cho nó khái quát hơn. Chương này từ một cuốn sách tuyệt vời giải thích những loại hình chính quy tồn tại và cách chúng có thể được áp dụng trong các mạng để có được sự khái quát hóa tốt hơn.

Nếu bạn đang tìm kiếm một biện pháp định lượng hơn, gần đây tôi đã tìm thấy câu hỏi này trên quora. Đó là về một bộ mã hóa tự động, nhưng tôi đoán nó cũng nên được áp dụng cho ví dụ của bạn. Tôi không biết liệu điều này có đúng không (xin vui lòng cho tôi biết), nhưng tôi sẽ lý do rằng ví dụ cho MNIST, người ta có thể lập luận rằng bạn cố gắng giảm hình ảnh với tối đa 28 * 28 * 8 * 10 000 = 62 720 000 bit entropy đến mười lớp trong mã hóa một nóng với 10 * 10 * 10 000 = 1 000 000 bit entropy. Bởi vì chúng ta chỉ quan tâm đến 1 000 000 bit của entropy ở đầu ra, nên chúng ta có thể nói rằng với 1 000 000 tham số, mỗi tham số đại diện cho một bit, là 1e-4 bit cho mỗi mẫu. Điều này có nghĩa là bạn sẽ cần nhiều dữ liệu hơn. Hoặc bạn có quá nhiều tham số, vì ví dụ với 100 tham số, bạn có 10 000 bit cho mỗi tham số và do đó 1 bit cho mỗi mẫu. Tuy nhiên,


Cảm ơn lời đề nghị của bạn. Tôi nghĩ rằng ngày nay mọi người nghĩ ra chiến lược khác nhau để giảm số lượng dữ liệu cho một nhiệm vụ cụ thể.
RockTheStar

0

Một phương pháp khác thường được sử dụng để tìm hiểu xem mạng của bạn đã học đủ các tính năng hay chưa là trực quan hóa các bộ lọc ban đầu. Nếu mạng được đào tạo tốt, nó sẽ hiển thị một bộ lọc trơn tru. Một bộ lọc nhiễu thường chỉ ra rằng mạng chưa được đào tạo đủ hoặc nó đã quá phù hợp. Để biết thêm thông tin đọc trang này .

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.