Làm thế nào để quyết định kiến ​​trúc mạng thần kinh?


18

Tôi đã tự hỏi làm thế nào để chúng ta phải quyết định có bao nhiêu nút trong các lớp ẩn và bao nhiêu lớp ẩn để đặt khi chúng ta xây dựng một kiến ​​trúc mạng thần kinh.

Tôi hiểu lớp đầu vào và đầu ra phụ thuộc vào tập huấn luyện mà chúng ta có nhưng làm thế nào để chúng ta quyết định lớp ẩn và kiến ​​trúc tổng thể nói chung?


Thông thường chúng tôi thử nghiệm, sử dụng ý định của chúng tôi; coi đó là một siêu tham số . Có nhiều cách học kiến ​​trúc nhưng tôi không biết chúng thực tế đến mức nào: blog.acolyer.org/2017/05/10/ mẹo
Emre

2
Tôi đã tìm kiếm một bản sao cho điều này, bởi vì tôi chắc chắn rằng nó đã được cắt lên nhiều lần trước đây trên trang web này. Tuy nhiên, không thể tìm thấy phiên bản thuần túy không được đính kèm với một số dữ liệu hoặc vấn đề. Có lẽ đây có thể là câu hỏi chung chung mà chúng tôi chỉ cho người khác? Đáng buồn thay, nói chung không có câu trả lời "làm thế nào" tuyệt vời, nhưng đó là một câu hỏi phổ biến khi phải đối mặt với quá nhiều sự lựa chọn.
Neil Slater


Đây là một câu hỏi rất thú vị để trả lời (Nhà nghiên cứu bắt đầu làm việc với câu hỏi của bạn). Điều gì sẽ là kiến ​​trúc tối ưu cho tập dữ liệu A và tập dữ liệu B. Vui lòng đọc phần dưới đây đã cố gắng trả lời câu hỏi của bạn. Chào mừng bạn đến với thế giới của Tìm kiếm kiến ​​trúc thần kinh (NAS). arxiv.org/abs/1611.01578
iDeepVision

Câu trả lời:


16

Đáng buồn thay, không có cách chung nào để xác định một tiên nghiệm số lượng tế bào thần kinh và số lớp tốt nhất cho mạng lưới thần kinh, chỉ đưa ra một mô tả vấn đề. Thậm chí không có nhiều hướng dẫn để xác định các giá trị tốt để thử làm điểm khởi đầu.

Cách tiếp cận phổ biến nhất dường như là bắt đầu với một phỏng đoán sơ bộ dựa trên kinh nghiệm trước đó về các mạng được sử dụng cho các vấn đề tương tự. Đây có thể là kinh nghiệm của riêng bạn, hoặc kinh nghiệm thứ hai / thứ ba bạn đã chọn từ một khóa đào tạo, blog hoặc nghiên cứu. Sau đó thử một số biến thể và kiểm tra hiệu suất cẩn thận trước khi chọn một biến thể tốt nhất.

Kích thước và độ sâu của các mạng thần kinh cũng tương tác với các siêu tham số khác , do đó việc thay đổi một thứ ở nơi khác có thể ảnh hưởng đến nơi có các giá trị tốt nhất. Vì vậy, không thể cách ly kích thước và độ sâu "tốt nhất" cho mạng sau đó tiếp tục điều chỉnh các tham số khác trong sự cô lập. Chẳng hạn, nếu bạn có một mạng rất sâu, nó có thể hoạt động hiệu quả với chức năng kích hoạt ReLU, nhưng không tốt lắm với sigmoid - nếu bạn tìm thấy kích thước / hình dạng tốt nhất của mạng và sau đó thử một thử nghiệm với các chức năng kích hoạt khác nhau, bạn có thể đến để kết luận sai về những gì làm việc tốt nhất.

Đôi khi bạn có thể đọc về "quy tắc ngón tay cái" mà các nhà nghiên cứu sử dụng khi bắt đầu thiết kế mạng thần kinh từ đầu. Những điều này có thể làm việc cho các vấn đề của bạn hoặc không, nhưng ít nhất chúng có lợi thế là bắt đầu vấn đề. Các biến thể tôi đã thấy là:

  • Tạo một mạng với các lớp ẩn có thứ tự kích thước tương tự với đầu vào và tất cả cùng kích thước, với lý do không có lý do cụ thể nào để thay đổi kích thước (trừ khi bạn có thể tạo bộ mã hóa tự động).

  • Bắt đầu đơn giản và xây dựng sự phức tạp để xem những gì cải thiện một mạng đơn giản.

  • Hãy thử các độ sâu khác nhau của mạng nếu bạn muốn đầu ra được giải thích tốt bằng dữ liệu đầu vào, nhưng với một mối quan hệ phức tạp (trái ngược với việc chỉ gây ồn ào vốn có).

  • Hãy thử thêm một số lần bỏ học, đó là mạng lưới thần kinh gần nhất phải có phép thuật thần tiên giúp mọi thứ trở nên tốt hơn (báo trước: thêm bỏ học có thể cải thiện việc khái quát hóa, nhưng cũng có thể tăng kích thước lớp và thời gian đào tạo cần thiết).

Nếu bạn đọc những thứ này hoặc bất cứ thứ gì giống như chúng trong bất kỳ văn bản nào, thì hãy dùng chúng với một nhúm muối. Tuy nhiên, tệ nhất là chúng giúp bạn vượt qua hiệu ứng trang trống và viết một số loại mạng và giúp bạn bắt đầu quá trình thử nghiệm và sàng lọc.


Bên cạnh đó, cố gắng đừng quá lạc lõng trong việc điều chỉnh mạng lưới thần kinh khi một số phương pháp khác có thể tốt hơn và giúp bạn tiết kiệm rất nhiều thời gian. Hãy xem xét và sử dụng các phương pháp tiếp cận khoa học dữ liệu và học máy khác. Khám phá dữ liệu, có thể thực hiện một số lô. Trước tiên, hãy thử một số cách tiếp cận tuyến tính đơn giản để có điểm chuẩn để đánh bại, hồi quy tuyến tính, hồi quy logistic hoặc hồi quy softmax tùy thuộc vào vấn đề của bạn. Cân nhắc sử dụng thuật toán ML khác nhau cho NN - các cách tiếp cận dựa trên cây quyết định như XGBoost có thể nhanh hơn và hiệu quả hơn so với học sâu về nhiều vấn đề.


Đó là một lời giải thích tuyệt vời. Cảm ơn. Tôi cũng tự hỏi liệu có cách nào tốt để quyết định sử dụng phương pháp ML nào không? Bạn đã đề cập rằng có thể có một cách tốt hơn so với một mạng lưới thần kinh, nhưng làm thế nào để chúng ta xác định điều đó một cách dễ dàng?
dùng7677413

@ user7677413: Điều tương tự cũng được áp dụng. Bạn phải thử và xem, mặc dù kinh nghiệm có thể cung cấp cho bạn một hướng dẫn về các vấn đề quen thuộc.
Neil Slater

1
Khi nào cần mạng lưới thần kinh?
dùng7677413

1
Mạng lưới thần kinh hiếm khi cần thiết . Tuy nhiên, họ tốt hơn ở một số vấn đề. Chúng vượt trội trong các nhiệm vụ xử lý tín hiệu như nhận dạng âm thanh và hình ảnh, đồng thời có khả năng tìm hiểu sự khác biệt tinh tế từ một lượng lớn dữ liệu trong đó các thuật toán đơn giản hơn có thể đạt đến giới hạn. Tuy nhiên, liệu NN có phải là công cụ phù hợp với bạn hay không và bất kỳ vấn đề nào bạn gặp phải vào một ngày cụ thể, không ai có thể dự đoán được.
Neil Slater

1
@ user7677413 Tôi nghĩ rằng bạn đang đưa ra giả định rằng không có 40 năm nghiên cứu về máy học sâu sắc và sâu sắc. Có vẻ như bạn chỉ đang gãi trên bề mặt. Tôi khuyên bạn nên tìm một cuốn sách giáo khoa và xem làm thế nào nó liên kết với nhau, điều đó sẽ giúp xây dựng trực giác của bạn cho nhiều thuật toán học máy.
Alex L
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.