Tôi đã cố gắng thực hiện mạng lưới thần kinh từ đầu để hiểu các toán học đằng sau nó. Vấn đề của tôi hoàn toàn liên quan đến backpropagation khi chúng tôi lấy đạo hàm liên quan đến sai lệch) và tôi đã rút ra tất cả các phương trình được sử dụng trong backpropagation. Bây giờ mọi phương trình đều khớp với mã cho mạng nơ ron ngoại trừ đạo hàm đó liên quan đến các sai lệch.
z1=x.dot(theta1)+b1
h1=1/(1+np.exp(-z1))
z2=h1.dot(theta2)+b2
h2=1/(1+np.exp(-z2))
dh2=h2-y
#back prop
dz2=dh2*(1-dh2)
H1=np.transpose(h1)
dw2=np.dot(H1,dz2)
db2=np.sum(dz2,axis=0,keepdims=True)
Tôi đã tra cứu trực tuyến mã và tôi muốn biết tại sao chúng ta cộng ma trận và sau đó vô hướng db2=np.sum(dz2,axis=0,keepdims=True)
bị trừ khỏi sai lệch ban đầu, tại sao toàn bộ ma trận không bị trừ. Bất cứ ai có thể giúp tôi đưa ra một số trực giác đằng sau nó. Nếu tôi lấy đạo hàm một phần của sai lệch đối với sai lệch, nó sẽ chỉ cho tôi độ dốc trên là dz2 vì z2=h1.dot(theta2)+b2
h1 và theta sẽ là 0 và b2 sẽ là 1. Vì vậy, thuật ngữ trên sẽ bị bỏ lại.
b2+=-alpha*db2