断断续续零零碎碎地学机器学习半年了,不会实践,不会运用,只是粗略地学了理论基础,因为涉及很多数学公式,markdown的数学公式语法又挺麻烦的,所以一直没有写过机器学习算法的文章。最近恰逢创新班、双特生面试,因为我是以机器学习为特点介绍我自己的,所以看了些算法的具体理论和优缺点。今天下午看了2个小时的BP算法,心想不如在近纲课上写一篇BP算法的文章。
一般思想
首先,依然是梯度下降法,为了更新$W$和$b$,就要计算出代价函数$J$对两者的偏导数,即
$\frac{\partial}{\partial W_{ij}^{(l)}} J(W,b; x, y) = a^{(l)}_j \delta_i^{(l+1)}$
$\frac{\partial}{\partial b_{i}^{(l)}} J(W,b; x, y) = \delta_i^{(l+1)}$
其中,
$\delta^{(l)}_i=\frac{\partial J(W,b;x,y)}{\partial z_i^{(l)}}=\frac{\partial }{\partial z^{(l)}i}\frac{1}{2} \left|y - h{W,b}(x)\right|^2 = - (y_i - a^{(l)}_i)\cdot f’(z^{(l)}_i)$
more >>