1基本概念
(1)前馈神经网络就是数据是一层层向前传播的
(2)BP网络是最常见的一种前馈网络,数据输入后,一层层向前传播,然后计算损失函数,得到损失函数的残差,然后把残差向后一层层传播。
2数值优化的BP网络训练算法
2.1拟牛顿法
拟牛顿法克服了梯度下降算法收敛慢以及牛顿法计算复杂的缺点。(以matlab2016a为例)
(1)BFGS你牛顿法
- BFGS拟牛顿法在每次迭代中都要存储近似的海森阵,海森阵是一个n*n的矩阵,n是网络中所有的权值和偏置的总数。因此,当网络参数很多时,要求极大的存储量,计算也较为复杂。
- 在matlab中对应的训练算法为‘trainbfg’
(2)正割拟牛顿算法 - 不需要存储完整的海森阵,除第一次迭代外
- 相比于BFGS,其减少了存储和计算量。
- 它是近似计算海森阵的拟牛顿法与共轭梯度法的一种折中。
- 在matlab中对应的是‘trainoss’
2.2共轭梯度法
共轭梯度法力图克服梯度下降法收敛慢和拟牛顿法计算复杂的问题。
(1)Flectcher-Reeves共轭梯度法和Polak-Ribiere共轭梯度法
- 其比绝大多数常规的梯度下降算法收敛的都要快,而且增加很少的存储量和计算量。
- 分别是‘traincgf’和‘traincgp’
2.3Levenberg-Marquardt法
其实际是梯度下降算法和牛顿法的结合。
- LM需要的存储量很大,雅可比矩阵使用Q*n矩阵,Q为训练样本数,n为网络中的权值和偏差的总数。
- 在网络权值数目较少时收敛非常迅速。
- ‘trainlm’
2.4小结
LM法 | 拟牛顿法 | 共轭梯度法 | |
---|---|---|---|
存储量 | 较大 | 较大 | 较小 |
收敛速度 | 较快 | 较快 | 较慢 |
适用范围 | 网络参数很少 | 网络参数很少或网络参数适中 | 网络参数很多,需要考虑存储容量问题时 |
3 具体matlab中的训练函数
(1)train
[NET,TR] = train(NET,X,T) takes a network NET, input data X
and target data T and returns the network after training it, and a
a training record TR.
对于无监督训练如下,只有输入X,没有目标T:
[NET,TR] = train(NET,X) takes only input data, in cases where
the network’s training function is unsupervised (i.e. does not require target data).
(2)compet
compet 竞争传递函数.
A=compet(M),转换后的矩阵A中只保留M矩阵中每一列中的最大值,并置为1,即使相等也只保留第一个,每一列中的其他值,均为0;即每一种分类只对应一个结果。