Lớp Softmax trong một mạng lưới thần kinh


43

Tôi đang cố gắng thêm một lớp softmax vào mạng lưới thần kinh được đào tạo với backpropagation, vì vậy tôi đang cố gắng tính toán độ dốc của nó.

Đầu ra softmax là trong đó là số nơ ron đầu ra. jhj=ezjezij

Nếu tôi lấy được nó thì tôi nhận được

hjzj=hj(1hj)

Tương tự như hồi quy logistic. Tuy nhiên điều này là sai vì kiểm tra độ dốc số của tôi không thành công.

Tôi đang làm gì sai? Tôi đã có suy nghĩ rằng tôi cũng cần phải tính toán các đạo hàm chéo (ví dụ: ) nhưng tôi không chắc làm thế nào để làm điều này và giữ nguyên kích thước của gradient tương tự như vậy nó sẽ phù hợp với quá trình lan truyền trở lại.hjzk


3
Bạn nên cải thiện tiêu đề của câu hỏi vì nó không nói về việc thêm một lớp softmax chung vào NN, vì câu hỏi của bạn là cụ thể về cách kiểm tra độ dốc thất bại. Tôi thực sự khuyên bạn nên thay đổi tiêu đề thành "Tại sao backpropagation ngừng hoạt động chính xác khi tôi thêm một lớp softmax vào Mạng thần kinh của mình".
Charlie Parker

Câu trả lời:


43

Tôi cảm thấy hơi tệ khi cung cấp câu trả lời của riêng mình cho điều này bởi vì nó được nắm bắt khá tốt bởi amip và juampa, ngoại trừ có thể là trực giác cuối cùng về cách Jacobian có thể được giảm trở lại thành một vectơ.

Bạn đã dẫn xuất chính xác độ dốc của đường chéo của ma trận Jacobian, nghĩa là

hizj=hi(1hj):i=j

và như amip đã nói, bạn cũng phải rút ra các mục chéo của Jacobian, mang lại

hizj=hihj:ij

Hai định nghĩa khái niệm này có thể được kết hợp thuận tiện bằng cách sử dụng một cấu trúc được gọi là Delta Kronecker , do đó định nghĩa của gradient trở thành

hizj=hi(δijhj)

Vì vậy, Jacobian là một ma trận vuông[J]ij=hi(δijhj)

Tất cả các thông tin cho đến thời điểm này đã được bao phủ bởi amip và juampa. Tất nhiên, vấn đề là chúng ta cần phải nhận được các lỗi đầu vào từ các lỗi đầu ra đã được tính toán. Vì độ dốc của lỗi đầu ra phụ thuộc vào tất cả các đầu vào, nên độ dốc của đầu vào làhixi

[x]k=i=1hi,k

Với ma trận Jacobian được định nghĩa ở trên, điều này được triển khai một cách tầm thường như là sản phẩm của ma trận và vectơ lỗi đầu ra:

σl=Jσl+1

Nếu lớp softmax là lớp đầu ra của bạn, thì việc kết hợp nó với mô hình chi phí entropy chéo sẽ đơn giản hóa việc tính toán thành đơn giản

σl=ht

trong đó là vectơ của nhãn và là đầu ra từ hàm softmax. Không chỉ là hình thức đơn giản hóa thuận tiện, nó còn cực kỳ hữu ích từ quan điểm ổn định số.th


với , là ? (chỉ cố gắng hiểu ý nghĩa của 'độ dốc' trong trường hợp này)σl=(σl,1,σl,2,...,σl,k)σl,j=Czj
Alexandre Holden Daly

Vâng, đó là chính xác.
Mranz

Ai đó có thể vui lòng giải thích các thuật ngữ delta chữ thường trong Delta Kronecker là gì và làm thế nào để tính toán chúng?
danijar

Tôi bị mắc kẹt trong vấn đề này một thời gian. Làm rõ. Bạn có một vectơ (pre softmax) và sau đó bạn tính toán softmax. Vì các giá trị của softmax phụ thuộc vào tất cả các giá trị đầu vào, nên ma trận jacobian thực tế là cần thiết. Sau đó, bạn lấy ma trận jacobian và tính tổng các hàng để có được một vectơ hàng duy nhất, mà bạn sử dụng để giảm độ dốc như bình thường. Là tất cả những điều này đúng 100%?
harveyslash

14

Đạo hàm là sai. Nó nên

hjzk=hjδkjhjhk

kiểm tra tính toán của bạn một lần nữa. Ngoài ra, biểu thức được đưa ra bởi amip cho entropy chéo là không hoàn toàn chính xác. Đối với một tập hợp các mẫu dữ liệu được rút ra từ các lớp khác nhau, nó đọc,C

nk=1Ctknlnyk(xn)

trong đó superindex chạy trên tập mẫu, là giá trị của thành phần thứ k của mục tiêu cho mẫu thứ n. Ở đây, giả sử rằng bạn đang sử dụng sơ đồ mã hóa 1 of C, nghĩa là, . Trong trường hợp như vậy, tất cả các t đều bằng 0 ngoại trừ thành phần đại diện cho lớp tương ứng của nó, là một.tkntkn

Lưu ý rằng các t là không đổi. Do đó giảm thiểu chức năng này tương đương với giảm thiểu,

nk=1Ctknlnyk(xn)+nk=1Ctknlntkn=nk=1Ctknlnyk(xn)tkn

có lợi thế là Jacobian có hình thức rất thuận tiện, cụ thể là,

Ezj=hjtj

Tôi muốn giới thiệu bạn để có được một bản sao Mạng lưới thần kinh của Giám mục để nhận dạng mẫu . IMHO vẫn là cuốn sách tốt nhất trên các mạng thần kinh.


14

Mỗi đầu ra của softmax phụ thuộc vào tất cả các đầu vào, do đó, gradient thực sự là một ma trận Jacobian. Bạn đã tính đúng , nhưng bạn cũng cần nếu . Tôi đoán nếu bạn có thể rút ra biểu thức thứ nhất, bạn cũng sẽ dễ dàng có thể rút ra biểu thức thứ hai.jhj=hjzj=hj(1hj)khj=hjhkjk

Tôi không chắc vấn đề gì bạn gặp phải khi truyền ngược: trong lớp softmax bạn có đầu ra và đầu vào , do đó, một lỗi từ mỗi đầu ra nên được truyền đến từng đầu vào, và đó chính xác là lý do tại sao bạn cần toàn bộ Jacobian. Mặt khác, thông thường bạn sẽ có hàm chi phí được liên kết với đầu ra softmax, ví dụ: trong đó là đầu ra mong muốn của bạn (khi bạn thực hiện phân loại, thì thường một trong số chúng bằng 1 và những người khác về 0). Sau đó, trên thực tế, bạn quan tâm đến , có thể được tính toán với quy tắc chuỗi dẫn đến biểu thức gọn gàng và thực sự là một vectơ (không phải là ma trận).jj

C=jtjloghj,
tjCzj

1
Tôi sẽ cố gắng mô tả vấn đề của mình tốt hơn, ví dụ như trong hướng dẫn này ufldl.stanford.edu/wiki/index.php/Backpropagation_Alacticm , tôi cần nhân các phần tử và delta với đạo hàm (bước số 3). Vì vậy, nếu tôi có ma trận jacobian đầy đủ, kích thước không phù hợp. Cảm ơn.
Ran

Bạn có biết làm thế nào để tiến hành nếu nó không phải là một softmax, mà là một lớp ẩn thông thường? Hãy tưởng tượng rằng mỗi đơn vị trên lớp này nhận đầu vào từ tất cả các đơn vị của lớp trước đó (tức là lớp này được "kết nối đầy đủ"), điều này thường xảy ra. Sau đó, bạn cũng cần truyền lại các lỗi qua lớp này và các đạo hàm cũng tạo thành một ma trận Jacobian. Nếu bạn bối rối về cách thực hiện, thì sự nhầm lẫn của bạn không liên quan đến softmax.
amip nói rằng Phục hồi lại

1
Tôi đã triển khai nó thành công cho các lớp tuyến tính và sigmoid vì đạo hàm là một vectơ nên tôi không gặp vấn đề gì với kích thước.
Ran

Xin lỗi, Ran, có lẽ tôi chỉ là kẻ ngốc, nhưng nếu bạn có một lớp sigmoid được kết nối đầy đủ với lớp trước đó, thì đầu ra (hoặc đầu vào) cho mỗi đơn vị sẽ có đạo hàm liên quan đến kết nối đến từ mỗi đơn vị trên lớp trước, tức là tất cả các dẫn xuất tạo thành ma trận 2D, n'est-ce pas? iji
amip nói phục hồi Monica
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.