机器学习基础---神经网络---全连接网络及BP算法
BP神经网络方法描述方法思想:使用复合函数f(x)=fm(f(m−1)(...f1(x)))f(x)=f^m(f^{(m-1)}(...f^1(x)))f(x)=fm(f(m−1)(...f1(x)))拟合输入样本集XXX到标签集YYY之间的映射针对一个样本xix_ixi进行计算的过程是正向的,从f1(x)f^1(x)f1(x)到fm(x)f^m(x)fm(x)一步步计算,称作正向传播优化复合函
BP神经网络
方法描述
方法思想:
- 使用复合函数f(x)=fm(f(m−1)(...f1(x)))f(x)=f^m(f^{(m-1)}(...f^1(x)))f(x)=fm(f(m−1)(...f1(x)))拟合输入样本集XXX到标签集YYY之间的映射
- 针对一个样本xix_ixi进行计算的过程是正向的,从f1(x)f^1(x)f1(x)到fm(x)f^m(x)fm(x)一步步计算,称作正向传播
- 优化复合函数,即调整每一层函数参数以使得预测结果偏差最小的过程中,需要从结果的误差出发,向前传递误差,进而修改参数,此为反向传播(BP)
相关概念
- 感知机
如上图所示,每个圆代表一个神经元,对来自其他神经元的信号输入x=[x1,x2,...,xk]x=[x_1,x_2,...,x_k]x=[x1,x2,...,xk]
经过神经元处理f=∑i=1kwixi+biasf=\sum_{i=1}^kw_ix_i+biasf=∑i=1kwixi+bias得到fff,类似于神经元细胞对来自其他神经元细胞的传递的刺激脉冲的累加
再对使用阶跃函数处理fff,即根据累加脉冲是否达到阈值判断神经元是否有输出
事实上,感知机是一个线性二分类模型,也可以表示为f(x)=sign(wTx+b)f(x)=sign(w^Tx+b)f(x)=sign(wTx+b),与寻找超平面将线性可分样本分开等价
-
多层感知机(全连接神经网络)
全连接神经网络,可以视作是由多个感知机构成的
中间层称作隐藏层,可以有多个
-
激活函数
-
神经元累加脉冲的步骤可以用矩阵乘W⋅xW·xW⋅x表示,将多层直接联系起来有f(x)=WmWm−1...W1xf(x)=W_mW_{m-1}...W_1xf(x)=WmWm−1...W1x,其仍然是一个仿射变换
-
因此为了实现对非线性映射的拟合,可以选择在每一层输出处引入一个非线性变换,即激活函数
-
常用的激活函数有:
-
Relu
Relu(x)={0 x≤0x x>0 Relu(x)=\begin{cases} 0 \ \ \ \ \ \ \ x\leq0\\ x \ \ \ \ \ \ \ x>0 \end{cases} Relu(x)={0 x≤0x x>0 -
sigmoid函数
sigmoid(x)=11+e−x sigmoid(x)=\frac1{1+e^{-x}} sigmoid(x)=1+e−x1 -
tanh函数
tanh(x)=1−e−2x1+e−2x tanh(x)=\frac{1-e^{-2x}}{1+e^{-2x}} tanh(x)=1+e−2x1−e−2x
-
-
方法推导
-
反向传播
-
如图,是lll层全连接网络
令:第l−1l-1l−1层与第lll层之间的权重向量为wlw^lwl,偏置向量为blb^lbl,第lll层未激活的累加信号向量ZlZ^lZl,第lll层激活后的累加信号向量αl\alpha^lαl
前向传播的过程可以用迭代的方式表示为:
αl=σ(Zl)=σ(Wlαl−1+bl) (l=2,3,...,L)α1=x \alpha^l=\sigma(Z^l)=\sigma(W^l\alpha^{l-1}+b^l) \ \ \ \ \ \ (l=2,3,...,L)\\ \alpha^1=x αl=σ(Zl)=σ(Wlαl−1+bl) (l=2,3,...,L)α1=x
-
定义损失函数为平方损失函数:
J(W,b,x,y)=12∣∣αL−y∣∣22=12∣∣σ(WLαL−1+bL)−y∣∣2 J(W,b,x,y)=\frac12||\alpha^L-y||_2^2=\frac12||\sigma(W^L\alpha^{L-1}+b^L)-y||^2 J(W,b,x,y)=21∣∣αL−y∣∣22=21∣∣σ(WLαL−1+bL)−y∣∣2 -
求解损失函数梯度:
∂J(W,b,x,y)∂WL=[(αL−y)⋅σ′(ZL)](αL−1)T∂J(W,b,x,y)∂bL=(αL−y)⋅σ′(ZL)∂J(W,b,x,y)∂ZL=(αL−y)⋅σ′(ZL)此处(αL−y)⋅σ′(ZL)为相应位置元素相乘 \begin{aligned} &\frac{\partial J(W,b,x,y)}{\partial{W^L}}=[(\alpha^L-y)·\sigma'(Z^L)](\alpha^{L-1})^T\\ &\frac{\partial J(W,b,x,y)}{\partial{b^L}}=(\alpha^L-y)·\sigma'(Z^L)\\ &\frac{\partial J(W,b,x,y)}{\partial{Z^L}}=(\alpha^L-y)·\sigma'(Z^L)\\ \end{aligned} 此处(\alpha^L-y)·\sigma'(Z^L)为相应位置元素相乘 ∂WL∂J(W,b,x,y)=[(αL−y)⋅σ′(ZL)](αL−1)T∂bL∂J(W,b,x,y)=(αL−y)⋅σ′(ZL)∂ZL∂J(W,b,x,y)=(αL−y)⋅σ′(ZL)此处(αL−y)⋅σ′(ZL)为相应位置元素相乘记:δL=∂J(W,b,x,y)∂ZL=(αL−y)⋅σ′(ZL) 记:\delta^L=\frac{\partial J(W,b,x,y)}{\partial{Z^L}}=(\alpha^L-y)·\sigma'(Z^L) 记:δL=∂ZL∂J(W,b,x,y)=(αL−y)⋅σ′(ZL)
-
由Zl=Wlαl−1+blZ^l=W^l\alpha^{l-1}+b^lZl=Wlαl−1+bl
∂J(W,b,x,y)∂Wl=∂J(W,b,x,y)∂Zl∂Zl∂Wl=δl(αl−1)T∂J(W,b,x,y)∂bl=∂J(W,b,x,y)∂Zl∂Zl∂bl=δl \begin{aligned} &\frac{\partial{J(W,b,x,y)}}{\partial{W^l}}=\frac{\partial J(W,b,x,y)}{\partial{Z^l}}\frac{\partial Z^l}{\partial{W^l}}=\delta^l(\alpha^{l-1})^T\\ &\frac{\partial{J(W,b,x,y)}}{\partial{b^l}}=\frac{\partial J(W,b,x,y)}{\partial{Z^l}}\frac{\partial Z^l} {\partial{b^l}}=\delta^l \end{aligned} ∂Wl∂J(W,b,x,y)=∂Zl∂J(W,b,x,y)∂Wl∂Zl=δl(αl−1)T∂bl∂J(W,b,x,y)=∂Zl∂J(W,b,x,y)∂bl∂Zl=δl -
由
δl=∂J(W,b,x,y)∂Zl=(∂Zl+1∂Zl)Tδl+1 \delta^l=\frac{\partial J(W,b,x,y)}{\partial{Z^l}}=(\frac{\partial Z^{l+1}}{\partial{Z^l}})^T\delta^{l+1} δl=∂Zl∂J(W,b,x,y)=(∂Zl∂Zl+1)Tδl+1Zl+1=Wl+1αl+bl+1=Wl+1σ(Zl)+bl+1∂Zl+1∂Zl=Wl+1σ′(Zl) Z^{l+1}=W^{l+1}\alpha^l+b^{l+1}=W^{l+1}\sigma(Z^l)+b^{l+1}\\ \frac{\partial Z^{l+1}}{\partial{Z^l}}=W^{l+1}\sigma'(Z^l) Zl+1=Wl+1αl+bl+1=Wl+1σ(Zl)+bl+1∂Zl∂Zl+1=Wl+1σ′(Zl)
-
即可以从第L层开始,计算δL\delta^LδL,一层层向前计算δl\delta^lδl,进而求得损失函数对第l层WlW^lWl与blb^lbl的偏导
方法流程
-
初始化每一层W,bW,bW,b
-
输入α1=x\alpha^1=xα1=x
-
前向传播
αi,l=σ(Wlαi,l−1+bl) \alpha^{i,l}=\sigma(W^{l}\alpha^{i,l-1}+b^{l}) αi,l=σ(Wlαi,l−1+bl) -
计算:
δL=(αL−y)⋅σ′(ZL) \delta^L=(\alpha^L-y)·\sigma'(Z^L) δL=(αL−y)⋅σ′(ZL) -
从l=L−1l=L-1l=L−1到l=2l=2l=2,反向逐层计算:
δi,l=Wl+1δi,l+1⋅σ′(zi,l) \delta^{i,l}=W^{l+1}\delta^{i,l+1}·\sigma'(z^{i,l}) δi,l=Wl+1δi,l+1⋅σ′(zi,l)
更新:
Wl=Wl−η∑i=1mδi,l(αi,l−1)Tbl=bl−η∑i=1mδi,l W^l=W^l-\eta\sum_{i=1}^m\delta^{i,l}(\alpha^{i,l-1})^T\\ b^l=b^l-\eta\sum_{i=1}^m\delta^{i,l} Wl=Wl−ηi=1∑mδi,l(αi,l−1)Tbl=bl−ηi=1∑mδi,l -
满足误差条件后结束,否则返回第三步
-
得到所有的W,bW,bW,b,对新样本前向传播求解
参考资料
【1】[神经网络反向传播矩阵求导][https://zhuanlan.zhihu.com/p/83859554?from_voters_page=true]
【2】[矩阵求导术(上)][https://zhuanlan.zhihu.com/p/24709748]
【3】[BP算法的矩阵推导][https://blog.csdn.net/qq_35269774/article/details/88585053]
更多推荐
所有评论(0)