trainbr
贝叶斯正则化反向传播
说明
net.trainFcn = 'trainbr' 设置网络 trainFcn 属性。
[ 使用 trainedNet,tr] = train(net,...)trainbr 训练网络。
trainbr 是根据莱文贝格-马夸特优化更新权重和偏置值的网络训练函数。它最小化平方误差、权重和偏置的组合,然后确定正确的组合以产生泛化能力强的网络。该过程称为贝叶斯正则化。
系统根据 trainbr 训练参数进行训练,下表显示了这些参数的默认值:
net.trainParam.epochs- 要训练的最大轮数。默认值为 1000。net.trainParam.goal- 性能目标。默认值为 0。net.trainParam.mu- 马夸特调整参数。默认值为 0.005。net.trainParam.mu_dec- 减小mu的因子。默认值为 0.1。net.trainParam.mu_inc- 增大mu的因子。默认值为 10。net.trainParam.mu_max- mu 的最大值。默认值为1e10。net.trainParam.max_fail- 最大验证失败次数。默认值为0。net.trainParam.min_grad- 最小性能梯度。默认值为1e-7。net.trainParam.show- 各次显示之间的训练轮数(无显示时为NaN)。默认值为 25。net.trainParam.showCommandLine- 生成命令行输出。默认值为false。net.trainParam.showWindow- 显示训练 GUI。默认值为true。net.trainParam.time- 以秒为单位的最大训练时间。默认值为inf。
默认情况下,验证停止处于禁用状态 (max_fail = 0),以便训练可以继续进行,直到找到误差和权重的最佳组合。但是,如果通过将 max_fail 设置为 6 或其他一些严格正值来启用验证,则仍然可以在较短的训练时间内实现一些权重/偏置最小化。
示例
输入参数
输出参量
限制
此函数使用雅可比矩阵执行计算,假设性能是误差的均值或平方和。因此,用此函数训练的网络必须使用 mse 或 sse 性能函数。
详细信息
算法
trainbr 可以训练任何网络,只要其权重、净输入和传递函数具有导函数。
贝叶斯正则化最小化了平方误差和权重的线性组合。它还修改了该线性组合,以便在训练结束时,得到的网络具有良好的泛化质量。请参阅 MacKay (Neural Computation, Vol. 4, No. 3, 1992, pp. 415 to 447) 和 Foresee and Hagan (Proceedings of the International Joint Conference on Neural Networks, June, 1997),了解有关贝叶斯正则化的更详细讨论。
这种贝叶斯正则化发生在 Levenberg-Marquardt 算法中。反向传播用于计算性能 perf 关于权重和偏置变量 X 的雅可比矩阵 jX。每个变量根据莱文贝格-马夸特进行调整,
jj = jX * jX je = jX * E dX = -(jj+I*mu) \ je
其中 E 是所有误差,I 是单位矩阵。
自适应值 mu 按 mu_inc 递增,直到上述变化导致性能值降低。然后对网络进行更改,将 mu 按 mu_dec 递减。
出现以下任一情况时,训练停止:
达到
epochs(重复)的最大数量。超出
time的最大数量。性能最小化到
goal。性能梯度低于
min_grad。mu超过mu_max。
参考
[1] MacKay, David J. C. "Bayesian interpolation." Neural computation. Vol. 4, No. 3, 1992, pp. 415–447.
[2] Foresee, F. Dan, and Martin T. Hagan. "Gauss-Newton approximation to Bayesian learning." Proceedings of the International Joint Conference on Neural Networks, June, 1997.
版本历史记录
在 R2006a 之前推出