Keras: Sự khác biệt giữa bộ điều chỉnh Kernel và Activity


86

Tôi đã nhận thấy rằng weight_regularizer không còn khả dụng trong Keras nữa và thay vào đó là bộ điều chỉnh hoạt độnghạt nhân . Tôi muốn biết:

  • Sự khác biệt chính giữa kernel và các bộ điều chỉnh hoạt động là gì?
  • Tôi có thể sử dụng activity_regularizer thay cho weight_regularizer không?

Câu trả lời:


85

Bộ điều chỉnh hoạt động hoạt động như một chức năng của đầu ra của mạng và chủ yếu được sử dụng để điều chỉnh các đơn vị ẩn, trong khi bộ điều chỉnh hoạt động, như tên đã nói, hoạt động trên các trọng số, làm cho chúng phân rã. Về cơ bản, bạn có thể biểu thị sự mất chính quy như một hàm của đầu ra ( activity_regularizer) hoặc của trọng số ( weight_regularizer).

Cái mới kernel_regularizerthay thế weight_regularizer- mặc dù nó không rõ ràng lắm từ tài liệu.

Từ định nghĩa của kernel_regularizer:

kernel_regularizer: Hàm điều chỉnh được áp dụng cho kernelma trận trọng số (xem bộ điều chỉnh).

activity_regularizer:

Activity_regularizer: Hàm điều chỉnh được áp dụng cho đầu ra của lớp ("kích hoạt" của nó). (xem bộ quy định).

Chỉnh sửa quan trọng : Lưu ý rằng có một lỗi trong activity_regularizer chỉ được sửa trong phiên bản 2.1.4 của Keras (ít nhất là với phần phụ trợ Tensorflow). Thật vậy, trong các phiên bản cũ hơn, hàm điều chỉnh hoạt động được áp dụng cho đầu vào của lớp, thay vì được áp dụng cho đầu ra (các kích hoạt thực tế của lớp, như dự định). Vì vậy, hãy cẩn thận nếu bạn đang sử dụng phiên bản Keras cũ hơn (trước 2.1.4), quy trình hóa hoạt động có thể không hoạt động như dự định.

Bạn có thể xem cam kết trên GitHub

Năm tháng trước François Chollet đã cung cấp một bản sửa lỗi cho bộ điều chỉnh hoạt động, sau đó được đưa vào Keras 2.1.4


Bạn có hoàn toàn chắc chắn về sự kernel_regularizerthay thế đó weight_regularizerkhông?
Simone

3
Tôi tìm thấy nhiều ví dụ sử dụng kernel_regularizer, nhưng không dùng cho activity_regularizer. Bạn có thể nhận xét về các trường hợp sử dụng cho activity_regularizer?
Milad M

1
Tại sao bạn muốn điều chỉnh đầu ra của các lớp ẩn? Có phải vì lý do tương tự mà chúng tôi chuẩn hóa các đầu vào thành dải (-1, 1) hoặc (0, 1). Đó là để giữ các đầu vào cho các lớp tiếp theo nhỏ hơn để hỗ trợ quá trình SGD?
Nagabhushan Baddi

1
@NagabhushanBaddi xem câu trả lời này: datascience.stackexchange.com/a/15195/32811
Michele Tonutti

1
@FinncentPrice Tôi chỉ có thể giả định nó được sử dụng để có mặt ở đó và bây giờ nó không còn là
Michele Tonutti

34

Câu trả lời này hơi muộn, nhưng rất hữu ích cho những độc giả sau này. Vì vậy, cần thiết là mẹ đẻ của phát minh như họ nói. Tôi chỉ hiểu nó khi tôi cần.
Câu trả lời trên không thực sự nêu rõ sự khác biệt khiến cả hai đều ảnh hưởng đến trọng lượng, vì vậy sự khác biệt giữa việc trừng phạt đối với chính trọng lượng hoặc sản lượng của lớp là gì?
Đây là câu trả lời: Tôi đã gặp trường hợp trọng lượng của lưới nhỏ và đẹp, nằm trong khoảng từ [-0,3] đến [+0,3].
Vì vậy, tôi thực sự không thể trừng phạt họ, không có gì sai với họ. Một bộ điều chỉnh hạt nhân là vô dụng. Tuy nhiên, đầu ra của lớp là LỚN, trong 100 giây.
Hãy nhớ rằng đầu vào cho lớp cũng nhỏ, luôn ít hơn một. Nhưng những giá trị nhỏ đó tương tác với trọng số theo cách tạo ra những đầu ra khổng lồ đó. Ở đây tôi nhận ra rằng những gì tôi cần là một bộ điều chỉnh hoạt động, thay vì bộ điều chỉnh hạt nhân. Với điều này, tôi đang trừng phạt lớp đối với những đầu ra lớn đó, tôi không quan tâm đến trọng lượng của bản thân nó có nhỏ hay không, tôi chỉ muốn ngăn nó đạt đến trạng thái như vậy vì điều này làm bão hòa sự kích hoạt sigmoid của tôi và gây ra vô số rắc rối khác như biến mất gradient và sự trì trệ.


Thực sự trực quan.
Sarang Manjrekar
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.