Sar*_*rah 2 algorithm artificial-intelligence machine-learning perceptron neural-network
我刚刚开始了一个机器学习课,我们去了Perceptrons.对于家庭作业,我们应该:"选择适当的训练和测试两个维度的数据集(平面).使用10个数据点进行训练,5个进行测试."然后我们应该编写一个程序,使用感知器算法和输出:
我已经多次阅读了本书的第一章,但我仍然无法完全理解感知器.
我知道你改变了权重,如果一个点被错误分类,直到没有错误分类,我想我无法理解的是
如果没有我的书提供好的例子,我真的很难知道如何构成其中的一个.你可以告诉我,我很失落,任何帮助都会非常感激.
run*_*run 11
我如何使用测试数据以及它与训练数据的关系如何?
把Perceptron当作年幼的孩子.你想教孩子如何区分苹果和橘子.你会告诉它每个转弯处看到的东西("这是一个苹果.这是一个橙色).你假设孩子有完美的记忆,你会看到5个不同的苹果(全红色/黄色)和5个橙色(不同形状).如果你向他展示足够多的例子,它将学习如何理解苹果是苹果和桔子橙的原因.他最终会开始使用元特征(如形状),而不是实际告诉他.这就是Perceptron的作用.你向他展示了所有的例子,你从头开始,这被称为一个新的时代.
当你想测试孩子的知识时会发生什么?你展示了一些新东西.青苹果(不仅是黄色/红色),葡萄柚,也许是西瓜.为什么不在训练期间向孩子展示与以前完全相同的数据?因为孩子有完美的记忆,它只会告诉你你告诉他的是什么.除非您在培训期间从未向他展示过不同的培训数据,否则您不会看到它从已知数据到未见数据的概括性.如果孩子在测试数据上表现糟糕,但在训练数据上有100%的表现,你就会知道他什么也没学到 - 只是重复他在训练中被告知的事情 - 你训练他的时间太长,他只记得你的例子没有理解是什么让苹果变成了苹果,因为你给了他太多的细节 - 这被称为过度拟合.为防止Perceptron仅(!)识别训练数据,您必须在合理的时间停止训练,并在训练和测试组的大小之间找到一个良好的平衡.
我怎么知道一个点是否被错误分类?
如果它与应有的不同.假设一个苹果有0级,橙色有1个(这里你应该开始阅读Single/MultiLayer Perceptrons以及多个Perceptrons的神经网络是如何工作的).网络将接受您的输入.如何编码与此无关,让我们说输入是一个字符串"apple".那么你的训练集是{(apple1,0),(apple2,0),(apple3,0),(orange1,1),(orange2,1).....}.由于您事先知道了该类,因此网络将输出1或0作为输入"apple1".如果输出1,则执行(targetValue-actualValue)=(1-0)= 1.1在这种情况下意味着网络输出错误.将此与delta规则进行比较,您将理解这个小方程是较大更新方程的一部分.如果你得到1,你将进行重量更新.
如何选择测试点,训练点,阈值或偏差?
实际上,偏差和阈值本身并未"选择".使用简单的"技巧"就像任何其他单位一样训练偏差,即使用偏差作为值为1的附加输入单位 - 这意味着实际偏差值以此附加单位的权重编码,我们使用的算法将确保它自动了解我们的偏见.
根据您的激活功能,阈值是预先确定的.对于简单的感知器,分类将如下进行:
由于我们使用二进制输出(在0和1之间),因此将阈值设置为0.5是一个很好的开始,因为它恰好是范围[0,1]的中间值.
关于选择培训和测试点的最后一个问题:这非常困难,你可以通过经验来做到这一点.你在哪里,你开始实现简单的逻辑函数,如AND,OR,XOR等.这是微不足道的.您将训练集中的所有内容都放入训练集并使用与训练集相同的值进行测试(因为对于x XOR y等,只有4个可能的输入00,10,01,11).对于像图像,音频等复杂数据,您必须尝试调整数据和功能,直到您觉得网络能够像您希望的那样使用它.