CÁCH: Khởi tạo trọng lượng mạng nơ-ron sâu


10

Với nhiệm vụ học tập khó khăn (ví dụ như tính đa chiều cao, độ phức tạp dữ liệu vốn có) Mạng lưới thần kinh sâu trở nên khó đào tạo. Để giảm bớt nhiều vấn đề người ta có thể:

  1. Chuẩn hóa && dữ liệu chất lượng thủ công
  2. chọn một thuật toán đào tạo khác (ví dụ RMSprop thay vì Gradient Descent)
  3. chọn một hàm chi phí dốc hơn (ví dụ: Cross Entropy thay vì MSE)
  4. Sử dụng cấu trúc mạng khác nhau (ví dụ: các lớp Convolution thay vì Feedforward)

Tôi đã nghe nói rằng có những cách thông minh để khởi tạo trọng lượng tốt hơn. Ví dụ: bạn có thể chọn cường độ tốt hơn: Glorot và Bengio (2010)

  • đối với các đơn vị sigmoid: lấy mẫu Đồng phục (-r, r) vớir=6Nin+Nout
  • hoặc đơn vị tiếp tuyến hyperbolic: lấy mẫu Đồng phục (-r, r) vớir=46Nin+Nout

Có cách nào nhất quán để khởi tạo trọng lượng tốt hơn không?

Câu trả lời:


7

Theo như tôi biết thì hai công thức bạn đưa ra gần như là khởi tạo tiêu chuẩn. Tôi đã thực hiện đánh giá tài liệu một thời gian trước đây, tôi đã sao chép nó dưới đây nếu quan tâm.


[1] giải quyết câu hỏi:

Đầu tiên, các trọng số không nên được đặt thành số không để phá vỡ tính đối xứng khi phản hồi lại:

Xu hướng nói chung có thể được khởi tạo về 0 nhưng trọng số cần phải được khởi tạo cẩn thận để phá vỡ tính đối xứng giữa các đơn vị ẩn của cùng một lớp. Do các đơn vị đầu ra khác nhau nhận được tín hiệu gradient khác nhau, vấn đề phá vỡ đối xứng này không liên quan đến các trọng số đầu ra (thành các đơn vị đầu ra), do đó cũng có thể được đặt thành không.

Một số chiến lược khởi tạo:

  • [2] và [3] khuyên bạn nên chia tỷ lệ theo nghịch đảo của căn bậc hai của quạt trong
  • Glorot và Bengio (2010) và Hướng dẫn học tập sâu sử dụng kết hợp giữa fan-in và fan-out:
    • r= =6fan-in+quạt ra
    • r= =46fan-in+quạt ra
  • trong trường hợp RBM, Gaussian trung bình bằng 0 với độ lệch chuẩn nhỏ khoảng 0,1 hoặc 0,01 hoạt động tốt (Hinton, 2010) để khởi tạo các trọng số.
  • Khởi tạo ma trận ngẫu nhiên trực giao, tức là W = np.random.randn(ndim, ndim); u, s, v = np.linalg.svd(W)sử dụng ulàm ma trận khởi tạo của bạn.

Ngoài ra, đào tạo trước không giám sát có thể giúp đỡ trong một số tình huống:

Một lựa chọn quan trọng là liệu người ta có nên sử dụng đào tạo trước không được giám sát (và sử dụng thuật toán học tính năng không giám sát nào) để khởi tạo các tham số. Trong hầu hết các cài đặt, chúng tôi đã tìm thấy đào tạo trước không được giám sát để giúp đỡ và rất hiếm khi bị tổn thương, nhưng tất nhiên điều đó bao hàm thời gian đào tạo bổ sung và các thông số siêu bổ sung.

Một số thư viện ANN cũng có một số danh sách thú vị, ví dụ Lasagne :

Constant([val]) Initialize weights with constant value.
Normal([std, mean]) Sample initial weights from the Gaussian distribution.
Uniform([range, std, mean]) Sample initial weights from the uniform distribution.
Glorot(initializer[, gain, c01b])   Glorot weight initialization.
GlorotNormal([gain, c01b])  Glorot with weights sampled from the Normal distribution.
GlorotUniform([gain, c01b]) Glorot with weights sampled from the Uniform distribution.
He(initializer[, gain, c01b])   He weight initialization.
HeNormal([gain, c01b])  He initializer with weights sampled from the Normal distribution.
HeUniform([gain, c01b]) He initializer with weights sampled from the Uniform distribution.
Orthogonal([gain])  Intialize weights as Orthogonal matrix.
Sparse([sparsity, std]) Initialize weights as sparse matrix.

[1] Bengio, Yoshua. " Các khuyến nghị thiết thực cho đào tạo dựa trên độ dốc của các kiến ​​trúc sâu. " Mạng lưới thần kinh: Thủ thuật của thương mại. Springer Berlin Heidelberg, 2012. 437-478.

[2] LeCun, Y., Bottou, L., Orr, GB và Muller, K. (1998a). Backprop hiệu quả. Trong mạng nơ-ron, thủ thuật của thương mại .

[3] Glorot, Xavier và Yoshua Bengio. " Hiểu được những khó khăn của việc đào tạo các mạng lưới thần kinh ăn sâu ." Hội nghị quốc tế về trí tuệ nhân tạo và thống kê. 2010.


2
Một cái gì đó mà bạn dường như đang thiếu là Batch bình thường hóa. Mô tả ở đây: arxiv.org/abs/1502.03167 Có thể hữu ích.
Joonatan Samuel

Kaiming He, Xiangyu Zhang, Shao Khánh Ren, Jian Sun đã xuất bản một bài viết mới hơn bao gồm một biến thể của khởi tạo trọng lượng Xavier từ Glorot và Bengio: "Delving Deep vào Rectifier: Vượt qua hiệu suất ở cấp độ con người trên phân loại ImageNet" .
mjul
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.