Làm thế nào để chống lại sự thiếu hụt trong một mạng lưới thần kinh sâu


50

Khi tôi bắt đầu với mạng lưới thần kinh nhân tạo (NN), tôi nghĩ rằng tôi phải chiến đấu với tình trạng quá mức là vấn đề chính. Nhưng trong thực tế, tôi thậm chí không thể khiến NN của mình vượt qua rào cản tỷ lệ lỗi 20%. Tôi thậm chí không thể đánh bại số điểm của mình trên rừng ngẫu nhiên!

Tôi đang tìm kiếm một số lời khuyên rất chung chung hoặc không chung chung về những gì nên làm để làm cho NN bắt đầu nắm bắt xu hướng trong dữ liệu.

Để thực hiện NN, tôi sử dụng Bộ mã hóa tự động xếp chồng Theano với mã từ hướng dẫn hoạt động tuyệt vời (tỷ lệ lỗi dưới 5%) để phân loại bộ dữ liệu MNIST. Nó là một perceptionron đa lớp, với lớp softmax ở trên cùng với mỗi ẩn sau đó được đào tạo trước như là bộ mã hóa tự động (mô tả đầy đủ tại hướng dẫn , chương 8). Có ~ 50 tính năng đầu vào và ~ 10 lớp đầu ra. NN có tế bào thần kinh sigmoid và tất cả dữ liệu được chuẩn hóa thành [0,1]. Tôi đã thử rất nhiều cấu hình khác nhau: số lớp ẩn và tế bào thần kinh trong đó (100-> 100-> 100, 60-> 60-> 60, 60-> 30-> 15, v.v.), học tập và đào tạo trước khác nhau tỷ lệ, vv

Và điều tốt nhất tôi có thể nhận được là tỷ lệ lỗi 20% trên bộ xác nhận và tỷ lệ lỗi 40% trên bộ kiểm tra.

Mặt khác, khi tôi cố gắng sử dụng Rừng ngẫu nhiên (từ scikit-learn), tôi dễ dàng nhận được tỷ lệ lỗi 12% trên bộ xác thực và 25% (!) Trên bộ kiểm tra.

Làm thế nào có thể là NN sâu sắc của tôi với đào tạo trước hành xử rất tệ? Tôi nên thử cái gì?

Câu trả lời:


34

Vấn đề với các mạng sâu là chúng có rất nhiều siêu âm để điều chỉnh và không gian giải pháp rất nhỏ. Vì vậy, tìm kiếm những thứ tốt giống như một nghệ thuật hơn là nhiệm vụ kỹ thuật. Tôi sẽ bắt đầu với ví dụ làm việc từ hướng dẫn và chơi xung quanh với các tham số của nó để xem kết quả thay đổi như thế nào - điều này mang lại một trực giác tốt (mặc dù không phải là giải thích chính thức) về sự phụ thuộc giữa các tham số và kết quả (cả - cuối cùng và trung gian).

Ngoài ra tôi thấy các giấy tờ sau đây rất hữu ích:

Cả hai đều mô tả RBM, nhưng chứa một số hiểu biết về các mạng sâu nói chung. Ví dụ, một trong những điểm chính là các mạng cần được gỡ lỗi theo tầng - nếu lớp trước không cung cấp tính năng thể hiện tốt, các lớp tiếp theo gần như không có cơ hội sửa nó.


14

Mặc dù câu trả lời của ffriend đưa ra một số gợi ý tuyệt vời để tìm hiểu thêm về cách các mạng thần kinh có thể (cực kỳ) khó điều chỉnh đúng cách, tôi nghĩ có thể hữu ích khi liệt kê một vài kỹ thuật cụ thể hiện đang được sử dụng trong các kiến ​​trúc phân loại hiệu quả hàng đầu trong mạng lưới thần kinh văn chương.

Kích hoạt tuyến tính chỉnh lưu

Điều đầu tiên có thể giúp ích trong trường hợp của bạn là chuyển chức năng kích hoạt mô hình của bạn từ sigmoid logistic - - sang a tuyến tính chỉnh lưu (aka relu) - .f(z)=(1+ez)1f(z)=max(0,z)

Việc kích hoạt relu có hai ưu điểm lớn:

  • đầu ra của nó là một số 0 thực (không chỉ là một giá trị nhỏ gần bằng 0) cho vàz0
  • đạo hàm của nó là hằng số, 0 cho hoặc 1 cho .z0z>0

Một mạng các đơn vị relu về cơ bản hoạt động giống như một nhóm gồm nhiều mạng tuyến tính theo cấp số nhân, bởi vì các đơn vị nhận đầu vào về cơ bản là "tắt" (đầu ra của chúng là 0), trong khi các đơn vị nhận đầu vào gọn thành một tuyến tính mô hình cho đầu vào đó. Ngoài ra, các dẫn xuất không đổi rất quan trọng bởi vì một mạng lưới sâu với các kích hoạt relu có xu hướng tránh vấn đề độ dốc biến mất và có thể được đào tạo mà không cần sơ bộ từng lớp.z0z>0

Xem "Mạng lưới thần kinh chỉnh lưu thưa thớt" của Glorot, Bordes, & Bengio ( http://jmlr.csail.mit.edu/proceedings/ con / v15 / glorot11a / glorot11a.pdf ) để biết một bài viết hay về các chủ đề này.

Rơi ra ngoài

Nhiều nhóm nghiên cứu trong vài năm qua đã ủng hộ việc sử dụng "bỏ học" trong các mạng phân loại để tránh tập trung quá mức. (Xem ví dụ "Bỏ học: Một cách đơn giản để ngăn chặn các mạng thần kinh bị quá tải" của Srivastava, Hinton, Krizhevsky, Sutskever, & Salakhutdinov http://www.cs.toronto.edu/~hinton/absps/JMLRdropout.pdf ) bỏ học, trong quá trình đào tạo, một số tỷ lệ không đổi của các đơn vị trong một lớp nhất định được đặt ngẫu nhiên thành 0 cho mỗi đầu vào mà mạng xử lý. Điều này buộc các đơn vị không được đặt thành 0 thành "bù" cho các đơn vị "mất tích". Dropout dường như là một công cụ thường xuyên cực kỳ hiệu quả cho các mô hình mạng thần kinh trong các nhiệm vụ phân loại. Xem một bài viết trên blog về điều này tại http: // fastml.


7
Nhưng câu hỏi là về thiếu, không thừa.
Valentas

8

Bạn có thể thích đọc bài báo sau của các nhà nghiên cứu của Microsoft Research:

Kaiming He, Xiangyu Zhang, Shao Khánh Ren, Jian Sun: Học tập sâu để nhận dạng hình ảnh trên arxiv, 2015.

Họ có vấn đề tương tự như bạn đã có:

Khi các mạng sâu hơn có thể bắt đầu hội tụ, một vấn đề xuống cấp đã được phơi bày: với độ sâu của mạng tăng lên, độ chính xác sẽ bão hòa (có thể không gây ngạc nhiên) và sau đó xuống cấp nhanh chóng. Thật bất ngờ, sự xuống cấp như vậy không phải do quá nhiều và thêm nhiều lớp vào mô hình sâu phù hợp dẫn đến lỗi đào tạo cao hơn , như đã báo cáo trong [11, 42] và được xác minh kỹ lưỡng bởi các thí nghiệm của chúng tôi.

Để giải quyết vấn đề, họ đã sử dụng kiến ​​trúc bỏ qua. Cùng với đó, họ đã đào tạo các mạng rất sâu (1202 lớp) và đạt được kết quả tốt nhất trong thử thách ILSVRC 2015.


Cảm ơn bạn đã ans của bạn, bạn đang xử lý vấn đề độ dốc biến mất, nếu trong trường hợp acc xác thực cao hơn acc đào tạo thì shoud làm gì ?? Nó có thể xảy ra với số lượng nhỏ dữ liệu trong bộ val Nhưng đôi khi nó không phụ thuộc vào bộ val. Tôi hỏi rằng có lý do nào khác mà acc acc cao hơn acc acc không ??
Sudip Das
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.