Độ dốc của một mạng nơ ron đơn lớp ghi các đầu vào của nó, toán tử trong quy tắc chuỗi là gì?


9

Vấn đề là:

Lấy độ dốc liên quan đến lớp đầu vào cho mạng thần kinh một lớp ẩn đơn bằng cách sử dụng sigmoid cho đầu vào -> hidden, softmax cho hidden -> đầu ra, với mất entropy chéo.

Tôi có thể vượt qua hầu hết các công cụ phái sinh bằng cách sử dụng quy tắc chuỗi nhưng tôi không chắc chắn về cách thực sự "xâu chuỗi" chúng lại với nhau.

Xác định một số ký hiệu

r=xW1+b1

h=σ(r) , là hàm sigmoidσ

θ=hW2+b2 ,

Sy^=S(θ) , là hàm softmaxS

yJ(y^)=iylogy^i , là vector thực một nhãny

Sau đó, theo quy tắc chuỗi,

Jx=Jθθhhrrx

Độ dốc cá nhân là:

q

Jθ=(y^y)
h
θh=h[hW2+b2]=W2T
r
hr=h(1h)
rx=x[xW1+b1]=W1T

Bây giờ chúng ta phải xâu chuỗi các định nghĩa lại với nhau. Trong một biến đơn giản, điều này thật dễ dàng, chúng ta chỉ cần nhân mọi thứ lại với nhau. Trong các vectơ, tôi không chắc nên sử dụng phép nhân phần tử hay phép nhân ma trận.

Jx=(y^y)W2T[h(1h)]W1T

Trong đó là phép nhân các phần tử của vectơ và là một ma trận nhân. Sự kết hợp các hoạt động này là cách duy nhất mà tôi dường như có thể xâu chuỗi chúng lại với nhau để có được một vectơ kích thước , mà tôi biết phải có.1 D x J1DxJx

Câu hỏi của tôi là: cách nguyên tắc để tôi tìm ra toán tử nào sẽ sử dụng? Tôi đặc biệt bối rối bởi sự cần thiết của yếu tố khôn ngoan giữa và . hW2Th

Cảm ơn!


Tôi nhận thấy việc tìm gradient wrt cho các đầu vào thường không được thực hiện. Tôi tin rằng đây là một hướng dẫn trong việc tính toán các từ nhúng, trong đó bạn có tùy chọn để tối ưu hóa các vectơ từ "đầu vào".
amatsukawa

Làm thế nào bạn đã dervie dJ / dTheta
raaj

Câu trả lời:


4

Tôi tin rằng chìa khóa để trả lời câu hỏi này là chỉ ra rằng phép nhân phần tử thực sự là tốc và do đó khi bạn rút ra các phương trình bạn không bao giờ thực sự sử dụng nó.

Hoạt động thực tế không phải là phép nhân phần tử mà thay vào đó là phép nhân ma trận chuẩn của một gradient với Jacobian , luôn luôn .

Trong trường hợp phi tuyến tính, Jacobian của đầu ra vectơ của phi tuyến tính đối với đầu vào vectơ của phi tuyến tính xảy ra là một ma trận đường chéo. Do đó, đúng là độ dốc nhân với ma trận này tương đương với độ dốc của đầu ra của phi tuyến đối với phần tử mất thông số nhân với một vectơ chứa tất cả các đạo hàm riêng của phi tuyến đối với đầu vào của phi tuyến, nhưng điều này theo sau Jacobian là đường chéo. Bạn phải vượt qua bước Jacobian để có được phép nhân phần tử, điều này có thể giải thích cho sự nhầm lẫn của bạn.

Trong toán học, chúng tôi có một số phi tuyến , một sự mất mát , và một đầu vào cho các phi tuyến (điều này có thể là bất kỳ tensor). Đầu ra của phi tuyến có cùng kích thước --- như @Logan nói, hàm kích hoạt được định nghĩa là phần tử khôn ngoan.L x R n × 1sLxRn×1s(x)Rn×1

Chúng tôi muốn

xL=(s(x)x)Ts(x)L

Trong đó là Jacobian của . Mở rộng Jacobian này, chúng tôi nhận được ss(x)xs

[s(x1)x1s(x1)xns(xn)x1s(xn)xn]

Chúng tôi thấy rằng nó ở khắp mọi nơi bằng không, ngoại trừ đường chéo. Chúng ta có thể tạo một vectơ của tất cả các phần tử đường chéo của nó

Diag(s(x)x)

Và sau đó sử dụng toán tử phần tử khôn ngoan.

xL=(s(x)x)Ts(x)L=Diag(s(x)x)s(x)L

0

Bất cứ khi nào cân bằng lại cho một chức năng kích hoạt, các hoạt động trở thành yếu tố khôn ngoan. Cụ thể, sử dụng ví dụ của bạn, là một dẫn xuất backpropagation và là một dẫn xuất kích hoạt và sản phẩm của họ là sản phẩm nguyên tố, . Điều này là do các hàm kích hoạt được định nghĩa là các hoạt động của phần tử trong mạng nơ ron. một ' = h ( 1 - h ) δ 2một 'δ2=(y^y)W2Ta=h(1h)δ2a

Xem các slide bài giảng cs224d trang 30, nó cũng có thể hữu ích.

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.