2012-05-12 48 views
86

Nếu chúng ta có 10 eigenvectors thì chúng ta có thể có 10 nút thần kinh trong lớp đầu vào. Nếu chúng ta có 5 lớp đầu ra thì chúng ta có thể có 5 nút trong lớp đầu ra.Nhưng tiêu chí lựa chọn số lớp ẩn trong MLP là gì nhiều nút thần kinh trong 1 lớp ẩn?kiến ​​trúc perceptron nhiều lớp (MLP): tiêu chí lựa chọn số lớp ẩn và kích thước của lớp ẩn?

+0

liên quan: http: // stackoverflow.com/questions/3345079/estimating-the-number-of-neurons-and-number-of-lớp-of-an-giả-neural-ne –

+0

có thể trùng lặp của [Cách chọn số lớp và nút ẩn trong mạng nơron ?] (http://stackoverflow.com/questions/9436209/how-to-choose-number-of-hidden-layers-and-nodes-in-neural-network) –

Trả lời

182

có bao nhiêu lớp ẩn?

một mô hình với zero lớp ẩn sẽ giải quyết tuyến tính tách dữ liệu. Vì vậy, trừ khi bạn đã biết dữ liệu của bạn không tách rời tuyến tính, nó không làm tổn thương để xác minh điều này - tại sao sử dụng một mô hình phức tạp hơn nhiệm vụ yêu cầu? Nếu nó có thể phân tách tuyến tính thì một kỹ thuật đơn giản hơn sẽ hoạt động, nhưng Perceptron cũng sẽ thực hiện công việc đó.

Giả sử dữ liệu của bạn không yêu cầu tách bởi một kỹ thuật phi tuyến tính, sau đó luôn bắt đầu với một lớp ẩn. Hầu như chắc chắn đó là tất cả những gì bạn cần. Nếu dữ liệu của bạn được phân tách bằng MLP, thì MLP đó có lẽ chỉ cần một lớp ẩn duy nhất. Có lý do lý giải cho điều này, nhưng lý do của tôi hoàn toàn là thực nghiệm: Nhiều vấn đề phân loại/hồi quy khó được giải quyết bằng cách sử dụng MLP đơn lớp ẩn, nhưng tôi không nhớ gặp phải bất kỳ MLP nhiều lớp ẩn nào được sử dụng để mô hình thành công dữ liệu- - trên bảng thông báo ML, Sách giáo khoa ML, tài liệu học tập, vv Họ tồn tại, chắc chắn, nhưng hoàn cảnh biện minh cho việc sử dụng của họ là khá hiếm.


Có bao nhiêu nút trong lớp ẩn?

Từ tài liệu học thuật MLP. kinh nghiệm của riêng tôi, v.v., tôi đã thu thập và thường dựa vào một số quy tắc chung (RoT) và tôi cũng đã tìm thấy hướng dẫn đáng tin cậy (ví dụ: hướng dẫn chính xác và ngay cả khi không phải là , đó là thường rõ ràng phải làm gì tiếp theo):

RoT dựa trên việc cải thiện hội tụ:

Khi bạn bắt đầu xây dựng mô hình, sai lầm về phía của hơn nút trong lớp ẩn.

Tại sao? Đầu tiên, một vài nút phụ trong lớp ẩn không có khả năng gây hại gì - MLP của bạn sẽ vẫn hội tụ. Mặt khác, quá ít nút trong lớp ẩn có thể ngăn chặn sự hội tụ.Hãy suy nghĩ về nó theo cách này, các nút bổ sung cung cấp một số dung lượng dư thừa - trọng số bổ sung để lưu trữ/phát hành tín hiệu vào mạng trong khi lặp lại (đào tạo, hoặc xây dựng mô hình). Thứ hai, nếu bạn bắt đầu với các nút bổ sung trong lớp ẩn của bạn, sau đó nó dễ dàng để prune chúng sau này (trong quá trình lặp lại). Điều này là phổ biến và có các kỹ thuật chẩn đoán để hỗ trợ bạn (ví dụ: Sơ đồ Hinton, đây chỉ là mô tả trực quan về ma trận trọng lượng, 'bản đồ nhiệt' của các giá trị trọng số).

RoTs dựa trên kích thước của lớp đầu vào và kích thước của lớp ra:

Một nguyên tắc của ngón tay cái là cho kích thước của này [ẩn] lớp để được ở đâu đó giữa kích thước lớp đầu vào ... và kích thước lớp ra ....

Để tính số nút ẩn chúng tôi sử dụng một quy tắc chung của: (số đầu vào + đầu ra) x 2/3

RoT dựa trên thành phần chủ yếu:

Thông thường, chúng ta chỉ định bao nhiêu nút ẩn như kích thước [chính thành phần] cần thiết để nắm bắt 70-90% phương sai của dữ liệu đầu vào thiết.

Tuy nhiên tác giả NN FAQ gọi các Quy tắc này "vô nghĩa" (theo nghĩa đen) bởi vì họ: bỏ qua số lượng các trường đào tạo, tiếng ồn trong các mục tiêu (các giá trị của các biến phản ứng), và sự phức tạp của không gian đặc trưng .

Theo quan điểm của anh ấy (và dường như tôi biết anh ấy đang nói về cái gì), chọn số lượng nơron trong lớp ẩn dựa trên việc MLP của bạn có bao gồm một số hình thức chuẩn hóa hay ngừng sớm.

Các chỉ kỹ thuật có giá trị để tối ưu hóa số lượng tế bào thần kinh trong lớp ẩn:

Trong xây dựng mô hình của bạn, kiểm tra một cách ám ảnh; thử nghiệm sẽ tiết lộ chữ ký của kiến ​​trúc mạng "không chính xác". Ví dụ, nếu bạn bắt đầu với một MLP có một lớp ẩn bao gồm một số lượng nhỏ các nút (mà bạn sẽ dần dần tăng khi cần thiết, dựa trên kết quả kiểm tra) lỗi đào tạo và lỗi tổng quát của bạn sẽ cao do thiên vị và underfitting.

Sau đó tăng số lượng nút trong lớp ẩn, mỗi lần một lần, cho đến khi lỗi tổng quát bắt đầu tăng lên, lần này là do chênh lệch quá mức và chênh lệch cao.


Trong thực tế, tôi làm điều đó theo cách này:

đầu vào lớp: kích thước của vactor tôi dữ liệu (số tính năng trong mô hình của tôi) + 1 cho nút thiên vị và không bao gồm biến phản ứng, tất nhiên

đầu ra lớp: Chỉ duy nhất xác định bởi mô hình của tôi: hồi quy (một nút) so với phân loại (số nút tương ứng với số lớp, giả sử softmax)

lớp ẩn: để bắt đầu, một lớp ẩn với một số nút bằng kích thước của lớp đầu vào. Kích thước "lý tưởng" có nhiều khả năng nhỏ hơn (ví dụ, một số nút giữa số trong lớp đầu vào và số trong lớp đầu ra) thay vì lớn hơn - một lần nữa, đây chỉ là quan sát thực nghiệm và số lượng lớn của quan sát này là kinh nghiệm của riêng tôi. Nếu dự án biện minh cho thời gian bổ sung cần thiết, thì tôi bắt đầu với một lớp ẩn duy nhất bao gồm một số lượng nhỏ các nút, sau đó (như tôi đã giải thích ở trên), tôi thêm các nút vào lớp ẩn, mỗi lần, trong khi tính toán tổng quát lỗi, lỗi đào tạo, sai lệch và phương sai. Khi lỗi tổng quát đã giảm xuống và ngay trước khi nó bắt đầu tăng trở lại, số lượng nút tại điểm đó là sự lựa chọn của tôi. Xem hình bên dưới.

enter image description here

+16

Tôi muốn upvote điều này nhiều hơn một lần . :) Một câu trả lời rất chi tiết, hữu ích. – alfa

+1

Tôi muốn thêm một số kết quả liên quan đến RoT # 1: Trong SVM thành công, bạn thực sự ánh xạ đầu vào của mình đến một không gian chiều cao hơn (nhiều nút ẩn hơn các nút trong lớp đầu vào trong giao diện NN). Công việc của lớp đầu ra là lấy quyết định từ biểu diễn quá mức này. Cũng có thể có kết nối với Dự đoán ngẫu nhiên. Các giấy tuyệt vời của Adam Coates & Andrew Y. Ng (2011) thảo luận về các chủ đề liên quan. –

+0

Giải thích hay. Bất kỳ ý tưởng về cách tôi có thể vẽ một con số như trên khi sử dụng sklearn và MLPClassifier? – sera

2

Rất khó để chọn số lượng tế bào thần kinh trong một lớp ẩn và chọn số lượng lớp ẩn trong mạng thần kinh của bạn.

Thông thường, đối với hầu hết các ứng dụng, một lớp ẩn là đủ. Ngoài ra, số lượng tế bào thần kinh trong lớp ẩn đó phải nằm giữa số lượng đầu vào (10 trong ví dụ của bạn) và số lượng kết quả đầu ra (5 trong ví dụ của bạn).

Nhưng cách tốt nhất để chọn số lượng tế bào thần kinh và lớp ẩn là thử nghiệm. Đào tạo một số mạng thần kinh với số lượng lớp ẩn khác nhau và các tế bào thần kinh ẩn và đo hiệu suất của các mạng đó bằng cách sử dụng cross-validation. Bạn có thể gắn bó với số lượng tạo ra mạng hoạt động tốt nhất.

1

Để tự động lựa chọn số tốt nhất của lớp và số tốt nhất của tế bào thần kinh cho mỗi lớp, bạn có thể sử dụng genetic optimization.

Các phần quan trọng sẽ là:

  1. Nhiễm sắc thể: Vector xác định có bao nhiêu đơn vị trong mỗi lớp ẩn (ví dụ [20,5,1,0,0] nghĩa là 20 đơn vị trong lớp đầu tiên ẩn , 5 giây, ..., với lớp 4 và 5 mất tích). Bạn có thể đặt giới hạn về số lượng lớp tối đa để thử và số lượng đơn vị tối đa trong mỗi lớp. Bạn cũng nên đặt những hạn chế về cách thức các nhiễm sắc thể được tạo ra. Ví dụ. [10, 0, 3, ...] không nên được tạo ra, bởi vì bất kỳ đơn vị nào sau một lớp bị thiếu ('3, ...') sẽ không liên quan và sẽ lãng phí các chu kỳ đánh giá.
  2. Chức năng thể dục: Hàm trả về nghịch đảo của lỗi đào tạo thấp nhất trong tập hợp xác thực chéo của mạng được xác định bởi một nhiễm sắc thể đã cho. Bạn cũng có thể bao gồm số lượng tổng số đơn vị hoặc thời gian tính toán nếu bạn muốn tìm "mạng nhỏ nhất/nhanh nhất nhưng chính xác nhất".

Bạn cũng có thể xem xét:

  • Tỉa: Bắt đầu với một mạng lưới rộng lớn, sau đó giảm các lớp và các đơn vị ẩn, trong khi theo dõi hiệu suất bộ cross-validation.
  • Trồng: Bắt đầu với một mạng rất nhỏ, sau đó thêm đơn vị và lớp và một lần nữa theo dõi hiệu suất của tập hợp CV.
Các vấn đề liên quan