Backprop thông qua các lớp tổng hợp tối đa?


62

Đây là một câu hỏi nhỏ về khái niệm đã làm tôi khó chịu trong một thời gian: Làm thế nào chúng ta có thể truyền bá lại qua một lớp tổng hợp tối đa trong một mạng lưới thần kinh?

Tôi đã xem qua các lớp tổng hợp tối đa trong khi xem hướng dẫn này cho thư viện nn của Torch 7. Thư viện tóm tắt tính toán độ dốc và chuyển tiếp cho mỗi lớp của một mạng sâu. Tôi không hiểu cách tính toán độ dốc được thực hiện cho lớp gộp tối đa.

Tôi biết rằng nếu bạn có đầu vào đi vào nơ ron của lớp , thì (được định nghĩa là ) được đưa ra bởi: zililδilδil=Ezil

δil=θ(zil)jδjl+1wi,jl,l+1

Vì vậy, một lớp gộp tối đa sẽ nhận được của lớp tiếp theo như bình thường; nhưng vì hàm kích hoạt cho các nơ-ron tổng hợp tối đa sẽ lấy một vectơ các giá trị (trên đó tối đa hóa) làm đầu vào, không phải là một số duy nhất nữa, mà là một vectơ ( sẽ phải được thay thế bằng ). Hơn nữa, , là chức năng tối đa, không khác biệt đối với các đầu vào của nó.δjl+1δilθ(zjl)θ({zjl})θ

Vì vậy, .... làm thế nào nó nên làm việc chính xác?

Câu trả lời:


58

Không có độ dốc đối với các giá trị không tối đa, vì thay đổi chúng một chút không ảnh hưởng đến đầu ra. Hơn nữa max là tuyến tính cục bộ với độ dốc 1, liên quan đến đầu vào thực sự đạt được max. Do đó, độ dốc từ lớp kế tiếp được truyền lại cho chỉ tế bào thần kinh đạt được mức tối đa. Tất cả các tế bào thần kinh khác nhận được độ dốc bằng không.

Vì vậy, trong ví dụ của bạn, sẽ là một vectơ của tất cả các số 0, ngoại trừ vị trí thứ sẽ nhận được các giá trị trong đóδili{δjl+1}i=argmaxi(zil)


7
Ồ đúng rồi, không có điểm nào lan truyền trở lại thông qua các tế bào thần kinh không tối đa - đó là một cái nhìn sâu sắc quan trọng. Vì vậy, nếu bây giờ tôi hiểu chính xác điều này, việc truyền ngược lại qua lớp tổng hợp tối đa chỉ cần chọn max. tế bào thần kinh từ lớp trước (trên đó đã thực hiện tổng hợp tối đa) và tiếp tục truyền ngược lại thông qua đó.
shinvu

Nhưng bạn không cần phải nhân với đạo hàm của hàm kích hoạt?
Jason

1
@Jason: Hàm max là tuyến tính cục bộ để kích hoạt có max, do đó đạo hàm của nó là hằng số 1. Đối với các kích hoạt không thực hiện được, nó 0. Về mặt khái niệm rất giống với phân biệt ReLU (x ) = hàm kích hoạt max (0, x).
Chrigi

Sải chân nhỏ hơn chiều rộng nhân để gộp tối đa là bao nhiêu?
Vatsal

1
Câu trả lời chính xác! Điều gì về trường hợp cạnh có nhiều mục có cùng giá trị tối đa (ví dụ 2 giá trị có 0 từ ReLU và hai mục còn lại là âm)?
DankMasterDan

6

Tối đa

Vì vậy, giả sử bạn có một lớp P xuất hiện trên cùng của một lớp PR. Sau đó, vượt qua sẽ là một cái gì đó như thế này:

Pi=f(jWijPRj) ,

Trong đó là kích hoạt nơron thứ i của lớp P, f là hàm kích hoạt và W là các trọng số. Vì vậy, nếu bạn lấy được điều đó, theo quy tắc chuỗi, bạn sẽ nhận được rằng các gradient chuyển tiếp như sau:Pi

grad(PRj)=igrad(Pi)fWij .

Nhưng bây giờ, nếu bạn có nhóm tối đa, cho nơ ron tối đa và cho tất cả các nơ ron khác, vì vậy cho nơ ron tối đa ở lớp trước và cho tất cả các nơ ron khác tế bào thần kinh. Vì thế:f=idf=0f=1f=0

grad(PRmax neuron)=igrad(Pi)Wi max neuron ,

grad(PRothers)=0.


2

Câu trả lời của @ Shinvu được viết tốt, tôi muốn chỉ ra một video giải thích về độ dốc của hoạt động Max ()điều này trong một biểu đồ tính toán rất nhanh để nắm bắt.!

trong khi thực hiện thao tác maxpool (nút tính toán trong đồ thị tính toán - Kiến trúc NN của bạn), chúng ta cần một hàm tạo ma trận "mặt nạ" để theo dõi vị trí tối đa của ma trận. Đúng (1) cho biết vị trí của mức tối đa trong X, các mục nhập khác là Sai (0). Chúng tôi theo dõi vị trí của max vì đây là giá trị đầu vào cuối cùng ảnh hưởng đến đầu ra, và do đó chi phí. Backprop là tính toán độ dốc liên quan đến chi phí, vì vậy bất cứ điều gì ảnh hưởng đến chi phí cuối cùng nên có độ dốc khác không. Vì vậy, backprop sẽ "truyền" gradient trở lại giá trị đầu vào cụ thể này đã ảnh hưởng đến chi phí.

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.