900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 机器学习西瓜书笔记:神经网络:BP算法公式推导

机器学习西瓜书笔记:神经网络:BP算法公式推导

时间:2020-07-12 09:53:57

相关推荐

机器学习西瓜书笔记:神经网络:BP算法公式推导

1、变量符号含义

1、训练集D={(x⃗1,y⃗1),(x⃗2,y⃗2),...,(x⃗m,y⃗m)}D = \{(\vec{x}_1, \vec{y}_1), (\vec{x}_2, \vec{y}_2),..., (\vec{x}_m, \vec{y}_m)\}D={(x1​,y​1​),(x2​,y​2​),...,(xm​,y​m​)},共m个样例

2、x⃗i∈Rd,y⃗i∈Rd\vec{x}_i \in \mathbb{R}^d, \vec{y}_i \in \mathbb{R}^dxi​∈Rd,y​i​∈Rd:输入样本由ddd个属性描述,输出lll维(lll个属性描述)实值向量y⃗i\vec{y}_iy​i​

3、对应图中的神经网络

d个输入神经元:输入特征向量由d个属性描述l个输出神经元:输出特征向量由y个属性描述q个隐层神经元:拟合数据集线性不可分时的模型

4、连接权都如图所示

5、激活函数:sigmoid

6、阈值:每个神经元都有自己的阈值

输出层第jjj个神经元yiy_iyi​的阈值:θi\theta_iθi​隐层第hhh个神经元bhb_hbh​的阈值:γh\gamma_hγh​

7、第x个神经元的输入:FNN都是全连接,因此要求和

输出层第j个神经元的输入:βj\beta_jβj​隐层第h个神经元的输入:αh\alpha_hαh​

2、损失函数:均方误差推导

1、训练样例(x⃗k,y⃗k)(\vec{x}_k, \vec{y}_k)(xk​,y​k​)

2、其经过神经网络的lll个输出记为y⃗^k=(y1^k,y2^k,...,yl^k)\hat{\vec{y}}_k = (\hat{y_1}^k,\hat{y_2}^k, ...,\hat{y_l}^k )y​^​k​=(y1​^​k,y2​^​k,...,yl​^​k),其中每个输出:

3、则对于这一个训练样例(x⃗k,y⃗k)(\vec{x}_k, \vec{y}_k)(xk​,y​k​),网络的均方误差为:

3、算法:求参数w和θ,BP算法,基于随机梯度下降

3.1 随机梯度下降的理解

参考

梯度是有方向的:曲面上方向导数的最大值的方向就代表了梯度的方向

因此每次规定的步长η\etaη固定,我们的参数就要朝着该参数对应函数梯度的方向(变化最快,如山最陡峭的方向)变化,才能让损失函数值最快地往极小值收敛。

理解:假设你初始在山顶,步长5m,朝着梯度最大(最陡峭的)方向,走5m(也就是当前点的梯度值*步长),能垂直距离下降4m,非最陡峭方向一次则垂直距离下降更少。

批量梯度下降:

对于权值θ⃗\vec{\theta}θ中的每个分量θj\theta_jθj​(个数对应样本属性个数),每次所有m个样本的第j个属性值都要参与更新Δ值\Delta值Δ值。更新完所有分量,算作一次批量梯度下降结束。一般我们会重复梯度下降多次

如图代码就是使用批量梯度下降,重复了iters次数,每一次所有样本参与对权值θ⃗\vec{\theta}θ中的每个分量θj\theta_jθj​进行更新。那个np.sum

随机梯度下降:

用样本中的一个随机选取的样本x⃗i\vec{x}_ixi​来近似我所有的样本,来调整θ

对于权值θ⃗\vec{\theta}θ中的每个分量θj\theta_jθj​(个数对应样本属性个数),每次只有样本x⃗i\vec{x}_ixi​的第j个属性值参与更新Δ值\Delta值Δ值。更新完所有属性分量,算作一次随机梯度下降结束。一般我们会重复梯度下降多次

3.2 公式推导

求偏导什么时候结果要求和:看连线

单独一条隐含层到输出层的连接权w只影响一个y,因此对其求偏导,无需求和。

但是输入层到隐含层的连接权v,即使是一条,也会影响所有的y。

看图中的连线即可知道。则其实从隐含层的神经元b开始,之后所有的参数,一个都会影响所有的y。故链式法则求偏导时要加上求和符号。

3.3 BP算法

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。