反向传播算法,简称BP算法,适合于多层神经元网络的一种学习算法,它建立在梯度下降法的基础上。BP网络的输入输出关系实质上是一种映射关系:一个n输入m输出的BP神经网络所完成的功能是从n维欧氏空间向m维欧氏空间中一有限域的连续映射,这一映射具有高度非线性。它的信息处理能力来源于简单非线性函数的多次复合,因此具有很强的函数复现能力。这是BP算法得以应用的基础。
反向传播算法主要由两个环节(激励传播、权重更新)反复循环迭代,直到网络的对输入的响应达到预定的目标范围为止。
BP算法的学习过程由正向传播过程和反向传播过程组成。在正向传播过程中,输入信息通过输入层经隐含层,逐层处理并传向输出层。如果在输出层得不到期望的输出值,则取输出与期望的误差的平方和作为目标函数,转入反向传播,逐层求出目标函数对各神经元权值的偏导数,构成目标函数对权值向量的梯量,作为修改权值的依据,网络的学习在权值修改过程中完成。误差达到所期望值时,网络学习结束。
反向传播是神经网络学习的核心算法。
相关符号
梯度向量每一项的大小实在告诉大家,代价函数对于每个参数有多敏感
每一个训练样本会对权重偏置的调整造成怎样的影响?
因为代价函数牵扯到,对成千万个训练样本的代价取平均值,所以我们调整每一步梯度下降用的权重偏置,也会基于所有的训练样本,原理上是这么说,但为了计算效率,从而不必每一步都非得要计算所有的训练样本,还要说明一点,
这个训练样本会对调整权重和偏置造成怎样的影响呢?
假设网络还没有完全训练好,那么输出层的激活值看起来就很随机,也许就会出现0.5等,并不能直接改动这些激活值,只能改变权重和偏置值,但记住想要输出层出现怎样的变动,还是很有用的,因为得到最终的分类结果是2,希望第三个输出值变大,其他数值变小
增加激活值,有三种方法:1.增加偏置2.增加权重3.改变上一层的激活值
如何调整权重:
各个权重的影响力各不相同,连接前一层最亮的神经元的权重,影响力也最大,因为这些权重会与大的激活值相乘,所以至少对于这一个训练样本而言,增大权重值,对最终代价函数造成的影响,就比增大连接暗淡神经元的权重所造成的影响,要大很多倍
反向传播算法算的是, 单个训练样本想怎样修改权重与偏置,不仅是说每个参数应该变大还是变小,还包括了这些变化的比例是多大,才能最快地降低代价,真正的梯度下降,得对好几万个训练范例都这么操作,然后对变化值取平均,这样算会很慢。
可以先把所有的样本分到各个的minibatch中去,计算一个minibatch来作为梯度下降的一步,计算每个minibatch的梯度,调整参数,不断循环,最终会收敛到代价函数的一个局部最小值上。
例子:
每层只有一个神经元,由3个权重和3个偏置决定的
目标是理解代价函数对于这些变量有多敏感,这样就知道怎么调整这些变量,才可以使得代价降低的最快
相关视频:
https://www.bilibili.com/video/BV16x411V7Qg/?spm_id_from=pageDriver
https://www.bilibili.com/video/BV16x411V7Qg/?spm_id_from=pageDriver