主要内容

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 或其他一些严格正值来启用验证,则仍然可以在较短的训练时间内实现一些权重/偏置最小化。

示例

示例

全部折叠

此示例说明如何使用网络求解由输入 p 和目标 t 组成的问题。它涉及拟合一个含噪正弦波。

p = [-1:.05:1];
t = sin(2*pi*p)+0.1*randn(size(p));

使用包含 2 个神经元的隐藏层创建一个前馈网络。

net = feedforwardnet(2,'trainbr');

在此处,网络已经过训练和测试。

net = train(net,p,t);
a = net(p)

输入参数

全部折叠

输入网络,指定为网络对象。要创建网络对象,请使用 feedforwardnetnarxnet 等函数。

输出参量

全部折叠

经过训练的网络,以 network 对象形式返回。

训练记录(epochperf),以结构体形式返回,其字段取决于网络训练函数 (net.NET.trainFcn)。它可以包括如下字段:

  • 训练、数据划分以及性能函数和参数

  • 训练、验证和测试集的数据划分索引

  • 训练、验证和测试集的数据划分掩码

  • 轮数 (num_epochs) 和最佳轮次 (best_epoch)。

  • 训练状态名称列表 (states)。

  • 每个状态名称的字段(在整个训练过程中记录其值)

  • 最佳网络的性能(best_perfbest_vperfbest_tperf

限制

此函数使用雅可比矩阵执行计算,假设性能是误差的均值或平方和。因此,用此函数训练的网络必须使用 msesse 性能函数。

详细信息

全部折叠

算法

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 是单位矩阵。

自适应值 mumu_inc 递增,直到上述变化导致性能值降低。然后对网络进行更改,将 mumu_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 之前推出