Vector hóa của mất Entropy chéo


9

Tôi đang xử lý một vấn đề liên quan đến việc tìm độ dốc của hàm mất entropy chéo, ghi tham số trong đó:θ

CE(θ)=−∑iyi∗log(y^i)

Trong đó, và là một đầu vào vector.y^i=softmax(θi)θi

Ngoài ra, là một vectơ nóng của lớp đúng và là dự đoán cho mỗi lớp sử dụng hàm softmax.yyy^

Do đó, ví dụ: hãy để vày i = ( 0,10 0,20 0,10 0,40 0,20 )yi=(00010)y^i=(0.100.200.100.400.20)

Để tìm đạo hàm riêng∂CE(θ)∂θik=−yik−y^ik

Lấy từ đó cho mỗi , độ dốc từng phần riêng lẻ sẽ là i∂CE(θ)∂θi=(yi1−y^i1yi2−y^i2yi3−y^i3yi4−y^i4yi5−y^i5)

Nhưng điều này không đúng vì độ dốc thực sự phải là 0 cho tất cả các hàng khác ngoại trừ hàng thứ 4 vì chúng ta đã sử dụng thuộc tính của một vectơ nóng. Vì vậy, độ dốc thực tế phải là ∂CE(θ)∂θi=(000yi4−y^i40)

Và do đó, độ dốc cho tất cả phải là ∂ C E ( θ )i∂CE(θ)∂θ=(000yi4−y^i4000yi3−y^i300...0yi2−y^i2000)

Nhưng điều này không bằng . Vì vậy, chúng ta không nên gọi độ dốc của hàm entropy chéo là sự khác biệt vectơ giữa dự đoán và bản gốc.y^−y

Ai đó có thể làm rõ về điều này?

CẬP NHẬT: Đã sửa lỗi phái sinh của tôi

θ=(θ1θ2θ3θ4θ5)

CE(θ)=−∑iyi∗log(y^i)

Trong đó, và là một đầu vào vector.θiy^i=softmax(θi)θi

Ngoài ra, là một vectơ nóng của lớp đúng và là dự đoán cho mỗi lớp sử dụng hàm softmax.yyy^

∂CE(θ)∂θi=−(log(y^k))

CẬP NHẬT: Đã xóa chỉ mục khỏi vàyyy^ Do đó, ví dụ: hãy để vày = ( 0,10 0,20 0,10 0,40 0,20 )y=(00010)y^=(0.100.200.100.400.20)

CẬP NHẬT: Đã sửa lỗi Tôi đang dùng wrt phái sinh nó chỉ nên là wrt . θ iθikθi Để tìm đạo hàm riêng∂CE(θ)∂θi=−yk−y^k

Lấy từ đó cho mỗi , độ dốc từng phần riêng lẻ sẽ là ∂ C E ( θ )i∂CE(θ)∂θ=(y1−y^1y2−y^2y3−y^3y4−y^4y5−y^5)

Điều trên xảy ra vì Và, Lấy đạo hàm riêng của wrt chúng tôi nhận được:CE(θ)=−(yk∗log(y^k))CE(y^k=log(softmax(θk))=θk−log(∑jexp(θj))θ iCE(θ)θi

∂CE(θ)∂θi=−(∂θk∂θi−softmax(θi))

BƯỚC CHÍNH: Thực tế là và làm cho vectơ hoàn thành bằng chứng.∂ q k∂θk∂θi=0,i≠k∂CE(θ)∂θk∂θi=1,i=k∂CE(θ)∂θ=y^−y

Câu trả lời:


2

Không, độ dốc không nên bằng 0 đối với các thành phần khác. Nếu dự đoán của bạn là đối với một số và quan sát của bạn , thì bạn đã dự đoán quá nhiều bởi .i,jyij=0 yy^iji,jyij=0y^ij


Nhưng sẽ luôn là giá trị softmax và quan sát thực tế. Và bởi vì chúng tôi sử dụng thực tế là một vectơ nóng, do đó, đạo hàm riêng , đã cho Tôi có đang mắc lỗi trong phân biệt không? yijyi∂CE(θ)y^ijyijyiyik∂CE(θ)∂θij=0,∀j≠kyik=1
— Shubhanshu Mishra

1
Cảm ơn bạn đã nhập @ neil-g Tôi đã có thể sửa lỗi dẫn xuất của tôi.
— Shubhanshu Mishra

15

Dưới đây là nội dung tương tự như chỉnh sửa, nhưng ở định dạng từng bước rõ ràng hơn (đối với tôi):

Chúng tôi đang cố gắng chứng minh rằng:

∂CE∂θ=y^−y

được

CE(θ)=−∑iyi∗log(y^i)

và

y^i=exp(θi)∑jexp(θj)

Chúng tôi biết rằng cho và , vì vậy:yj=0j≠kyk=1

CE(θ)=− log(y^k)

=− log(exp(θk)∑jexp(θj))

=− θk+log(∑jexp(θj))

∂CE∂θ=−∂θk∂θ+∂∂θlog(∑jexp(θj))

Sử dụng thực tế là và cho , để cho thấy rằng.∂θk∂θk=1∂θk∂θq=0q≠k

∂θk∂θ=y

Đối với phần thứ hai, chúng tôi viết ra đạo hàm cho từng phần tử riêng lẻ của và sử dụng quy tắc chuỗi để nhận:θ

∂∂θilog(∑jexp(θj))=exp(θi)∑jexp(θj)=y^i

Vì thế,

∂CE∂θ=∂∂θlog(∑jexp(θj))−∂θk∂θ=y^ - y

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 cookie và Chính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.