如何确定神经网络中的权重?

时间:2012-09-10 13:48:52

标签: machine-learning neural-network

如果我有一个三层神经网络,如果我有3个输入样本及其相应的预期输出值,我如何确定所有边缘的权重值?

2 个答案:

答案 0 :(得分:4)

传统上使用反向传播。就个人而言,我使用Levenberg-Marquardt算法得到了更好更快的结果。

您也可能想要测试进化算法(例如,遗传算法,粒子群优化(易于实现!))。这些不太容易陷入局部最优,因为它们不是基于渐变。

答案 1 :(得分:4)

估算人工神经网络(ANN)的权重只不过是参数优化问题。通常,需要非线性优化器才能完成工作。在该过程中优化的大多数成本函数是惩罚网络输出和期望输出之间的不匹配的那些。

Backpropagation方法是一种应用基于梯度的优化的优雅方法,因为它使人们能够估计隐藏层神经元输出的误差。因此,使用误差梯度启用隐藏层中权重的更新。

为了在基于梯度的方法中处理局部最小值的问题,通常的做法是使用多启动方法,其基本上等于从一堆不同的初始猜测重复估计过程。

请注意,当人口失去多样性时,遗传算法等进化方法也会遭受早熟收敛。

还要注意overfitting网络中的训练数据。您将无法对看不见的数据进行良好的推广,这毕竟是函数逼近 预测性学习的重点

除此之外,令人不安的是,训练样本的数量太少,无法提供有关您尝试近似的函数的大量信息。松散地说,如果ANN具有大量自由参数,则训练数据必须提供足够的信息以允许对参数进行有意义的估计。对于任何实际函数逼近任务,3个样本太低了。