12/08/2018, 16:54

Neural Network Fundamental 5: Back Propagation Proof

Bài trước tôi đã trình bày các công thức của back propagation trong bài này tôi sẽ chứng minh các công thức đó Trước hết ta chứng minh cho trường hợp chỉ 1 training example. Ta sẽ tính đạo hàm riêng đối với zc[L]z^{[L]}_c z c [ L ] ​ (phần từ thứ ...

Bài trước tôi đã trình bày các công thức của back propagation trong bài này tôi sẽ chứng minh các công thức đó

Trước hết ta chứng minh cho trường hợp chỉ 1 training example. Ta sẽ tính đạo hàm riêng đối với zc[L]z^{[L]}_czc[L] (phần từ thứ c của output z, sau khi áp dụng hàm softmax) của hàm loss là −logf(x)y-logf(x)_ylogf(x)y (đọc thêm ở bài 3, phân biệt y viết thường và ymathbf{y}y viết đậm: y là số thứ tự của phần tử mà vector ymathbf{y}y có giá trị là 1). Trông các bước có vẻ phức tạp nhưng nếu theo dõi từng bước một bạn sẽ thấy cũng khá dễ hiểu và đẹp.

∂−logf(x)y∂zc[L]=∂−log(softmax(z[L])y)∂zc[L]dfrac{partial-logf(x)_y}{partial z^{[L]}_c} = dfrac{partial -log(softmax(z^{[L]})_y)}{partial z^{[L]}_c}zc[L]logf(x)y=zc[L]log(softmax(z[L])y)

=∂−log(ezy[L]∑iezi[L])∂zc[L]qquadqquad qquad=dfrac{partial -log(dfrac{e^{z^{[L]}_y}}{sum_i{e^{z^{[L]}_i}}})}{partial z^{[L]}_c}=zc[L]log(iezi[L]ezy[L])

=−∑iezi[L]ezy[L]∂ezy[L]∑iezi[L]∂zc[L]qquadqquad qquad= -dfrac{sum_i{e^{z^{[L]}_i}}}{e^{z^{[L]}_y}} dfrac{partial dfrac{e^{z^{[L]}_y}}{sum_i{e^{z^{[L]}_i}}}}{partial z^{[L]}_c}=ezy[L]iezi[L]zc[L]iezi[L]ezy[L]

Đến đây để tính đạo hàm riêng của ∂ezy[L]∑iezi[L]∂zc[L]dfrac{partial dfrac{e^{z^{[L]}_y}}{sum_i{e^{z^{[L]}_i}}}}{partial z^{[L]}_c}zc[L]iezi[L]ezy[L] ta áp dụng quy tắc tìm đạo hàm riêng của g(x)h(x)dfrac{g(x)}{h(x)}h(x)g(x)

∂g(x)h(x)∂x=∂g(x)∂x1h(x)−g(x)h2(x)∂h(x)∂xqquadqquadqquadqquaddfrac{partialdfrac{g(x)}{h(x)}}{partial x}=dfrac{partial g(x)}{partial x} dfrac{1}{h(x)} - dfrac{g(x)}{h^2(x)}dfrac{partial h(x)}{partial x}xh(x)g(x)=xg(x)h(x)1h2(x)g(x)xh(x)

Nên ta có

∂−logf(x)y∂zc[L]=−∑iezi[L]ezy[L](∂ezy[L]∂zc[L]1∑iezi[L]−ezy[L]∑iezi[L]∑iezi[L]∂∑iezi[L]∂zc[L])dfrac{partial-logf(x)_y}{partial z^{[L]}_c} = -dfrac{sum_i{e^{z^{[L]}_i}}}{e^{z^{[L]}_y}} (dfrac{partial e^{z^{[L]}_y}}{partial z^{[L]}_c }dfrac{1}{sum_i{e^{z^{[L]}_i}}} - dfrac{e^{z^{[L]}_y}}{sum_i{e^{z^{[L]}_i}} sum_i{e^{z^{[L]}_i}}} dfrac{partial sum_i{e^{z^{[L]}_i}}}{partial z^{[L]}_c})zc[L]logf(x)y=ezy[L]iezi[L](zc[L]ezy[L]iezi[L]1iezi[L]iezi[L]e

0