Sự khác biệt giữa trình khởi tạo tỷ lệ phương sai và trình khởi tạo xavier là gì?


20

Trong triển khai ResNet của Tensorflow , tôi thấy họ sử dụng trình khởi tạo tỷ lệ phương sai, tôi cũng thấy trình khởi tạo xavier là phổ biến. Tôi không có quá nhiều kinh nghiệm về điều này, cái nào tốt hơn trong thực tế?


Để được giải thích chi tiết hơn về khởi tạo của Xavier, bạn có thể truy cập liên kết này: prateekvjoshi.com/2016/03/29/. Nó bao gồm dẫn xuất thích hợp của khởi tạo Xavier và trực giác đằng sau nó.
Himanshu Singh

Câu trả lời:


31

Quan điểm lịch sử

Khởi tạo Xavier , ban đầu được đề xuất bởi Xavier Glorot và Yoshua Bengio trong "Tìm hiểu sự khó khăn của việc đào tạo mạng nơ ron thần kinh sâu" , là kỹ thuật khởi tạo trọng số cố gắng làm cho phương sai của đầu ra của một lớp bằng với phương sai của đầu vào của nó . Ý tưởng này hóa ra rất hữu ích trong thực tế. Đương nhiên, việc khởi tạo này phụ thuộc vào chức năng kích hoạt lớp. Và trong bài báo của họ, Glorot và Bengio đã xem xét chức năng kích hoạt sigmoid logistic , là lựa chọn mặc định tại thời điểm đó.

Sau đó, kích hoạt sigmoid đã bị ReLu vượt qua, bởi vì nó cho phép giải quyết vấn đề độ dốc biến mất / nổ. Do đó, đã xuất hiện một kỹ thuật khởi tạo mới, áp dụng cùng một ý tưởng (cân bằng phương sai của kích hoạt) cho chức năng kích hoạt mới này. Nó được đề xuất bởi Kaiming He at al trong "Delving Deep to Rectifier: Vượt qua hiệu suất cấp độ con người trên phân loại ImageNet" , và bây giờ nó thường được gọi là khởi tạo He .

Trong tenorflow, khởi tạo He được thực hiện theo variance_scaling_initializer()chức năng (trên thực tế, đó là một trình khởi tạo tổng quát hơn, nhưng theo mặc định thực hiện khởi tạo He), trong khi trình khởi tạo Xavier là hợp lý xavier_initializer().

Tóm lược

Tóm lại, sự khác biệt chính cho các học viên máy học là như sau:

  • Anh ta khởi tạo hoạt động tốt hơn cho các lớp với kích hoạt ReLu .
  • Khởi tạo Xavier hoạt động tốt hơn cho các lớp có kích hoạt sigmoid .

trong pytorch những gì initizaiton được sử dụng? Có phụ thuộc vào kích hoạt?
Charlie Parker

2
Xin chào, đối với tanh()chức năng kích hoạt, tôi nên sử dụng chức năng khởi tạo nào.
Đi MYWay

@GoingMyWay, theo pytorch.org/docs/ sóng / này , bạn có thể sử dụng khởi tạo He với mức tăng 5/3. Không chắc chắn nơi đó đến từ mặc dù.
Podgorskiy

3

Chia tỷ lệ phương sai chỉ là một khái quát của Xavier: http://tflearn.org/initializes/ . Cả hai đều hoạt động theo nguyên tắc tỷ lệ của độ dốc phải giống nhau trong tất cả các lớp. Xavier có thể an toàn hơn để sử dụng vì nó chịu được thử nghiệm thời gian thử nghiệm; cố gắng chọn các tham số của riêng bạn để nhân rộng phương sai có thể ức chế đào tạo hoặc khiến mạng của bạn không kiếm được tiền.


Cảm ơn. Bạn có ý nghĩa gì khi chọn tham số của riêng bạn cho phương sai?
Hanamichi

Trong triển khai TF, đây sẽ là tham số yếu tố (xác định tỷ lệ của phương sai đầu vào với phương sai đầu ra)
liangjy
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.