感知器学习算法的参数调整
Posted
技术标签:
【中文标题】感知器学习算法的参数调整【英文标题】:Parameter Tuning for Perceptron Learning Algorithm 【发布时间】:2011-02-15 06:35:04 【问题描述】:我在试图弄清楚如何调整我的感知器算法的参数以便它在看不见的数据上表现相对较好时遇到了一些问题。
我已经实现了一个经过验证的工作感知器算法,我想找出一种方法来调整迭代次数和感知器的学习率。这是我感兴趣的两个参数。
我知道感知器的学习率不影响算法是否收敛和完成。我试图掌握如何改变n。太快,它会摆动很多,太低,它会花费更长的时间。
至于迭代次数,我不完全确定如何确定一个理想的数字。
无论如何,我们将不胜感激。谢谢。
【问题讨论】:
【参考方案1】:从少量迭代开始(实际上更传统的方法是计算 'epochs' 而不是迭代——'epochs' 是指用于训练的整个数据集的迭代次数网络)。 “小”可以说是 50 个 epoch。这样做的原因是您想了解总误差如何随着每个额外的训练周期(epoch)而变化——希望它会下降(更多关于下面的“总误差”)。
显然,您对下一个附加 epoch 不会导致总误差进一步降低的点(epoch 数)感兴趣。所以从少量的时期开始,这样你就可以通过增加时期来接近那个点。
你开始的学习率不应该太细或太粗,(显然是主观的,但希望你对什么是大学习率和小学习率有一个粗略的认识)。
接下来,在您的感知器中插入几行测试代码——实际上只是一些放置良好的“打印”语句。对于每次迭代,计算并显示增量(训练数据中每个数据点的实际值减去预测值),然后将训练数据中所有点(数据行)的各个增量值相加(我通常取delta,或者你可以取平方差之和的平方根——没关系。称这个总和值为“总误差”——为了清楚起见,这是总误差(误差之和所有节点)每个时期。
然后,将总误差绘制为历元数的函数(即,x 轴上的历元数,y 轴上的总误差)。当然,最初,您会看到左上角的数据点呈向下和向右趋势,并且斜率减小
让算法根据训练数据训练网络。 增加 epochs(例如,每次运行增加 10 个)直到看到曲线(总误差与 epoch 数的关系)扁平化--即,增加迭代不会导致总误差减少。
所以曲线的斜率很重要,它的垂直位置也很重要——即,你有多少总误差,以及它是否会随着更多的训练周期(时期)继续呈下降趋势。如果在增加 epoch 之后,您最终注意到错误增加,请以较低的学习率重新开始。
学习率(通常介于 0.01 和 0.2 之间)肯定会影响网络的训练速度——即,它可以更快地将您移动到局部最小值。它也可能导致你跳过它。所以编写一个训练网络的循环,假设是五次不同的时间,每次使用固定数量的 epoch(和相同的起点),但将学习率从例如 0.05 更改为 0.2,每次将学习率提高0.05.
这里还有一个很重要的参数(虽然不是绝对必要的),'momentum'。顾名思义,使用动量项将帮助您更快地获得经过充分训练的网络。本质上,动量是学习率的乘数——只要错误率在下降,动量项就会加速进步。动量项背后的直觉是“只要你向目的地行驶,就增加你的速度”。动量项的典型值为 0.1 或 0.2。在上面的训练方案中,你应该在改变学习率的同时保持动量不变。
【讨论】:
这是正确的答案,但不要将您的学习率和动量限制在域的限制(缩放)。生成一个随机网络,以 0.05 步训练 0.01-0.99。如果您不能以这种方式摆脱全局最小值,请确保正确规范化输入。我是 Log 的忠实粉丝!【参考方案2】:关于学习率不影响感知器是否收敛 - 这不是真的。如果你选择的学习率太高,你可能会得到一个发散的网络。如果你在学习过程中改变学习率,并且它下降得太快(即大于 1/n),你也可以得到一个永远不会收敛的网络(这是因为 N(t) 在 t 从 1 到 inf 的总和是有限的。这意味着权重向量只能改变有限的量)。
理论上可以证明,对于简单的情况,根据 1/t(其中 t 是呈现示例的数量)改变 n(学习率)应该会很好,但我实际上发现在练习,最好的方法是找到好的高 n 值(不会让你的学习发散的最高值)和低 n 值(这个比较难计算。真的取决于数据和问题),然后让n随时间线性从高n变为低n。
【讨论】:
【参考方案3】:学习率取决于数据的典型值。一般没有经验法则。特征缩放是一种用于标准化自变量或数据特征范围的方法。在数据处理中,也称为数据归一化,一般在数据预处理阶段进行。
将数据标准化为零均值、单位方差或 0-1 之间或任何其他标准形式有助于选择学习率值。正如 doug 提到的,0.05 到 0.2 之间的学习率通常效果很好。
这也有助于使算法更快收敛。
来源:Juszczak, P.; D. M. J. Tax 和 R. P. W. Dui (2002)。 “支持向量数据描述中的特征缩放”。过程。 8 年。会议。进阶。学校计算机。成像:95–10。
【讨论】:
以上是关于感知器学习算法的参数调整的主要内容,如果未能解决你的问题,请参考以下文章