Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 理解感知器_Algorithm_Machine Learning_Artificial Intelligence_Neural Network_Perceptron - Fatal编程技术网

Algorithm 理解感知器

Algorithm 理解感知器,algorithm,machine-learning,artificial-intelligence,neural-network,perceptron,Algorithm,Machine Learning,Artificial Intelligence,Neural Network,Perceptron,我刚开始上机器学习课,我们学习了感知机。对于家庭作业,我们应该: “选择合适的二维(平面)训练和测试数据集。使用10个数据点进行训练,使用5个数据点进行测试。”然后我们应该编写一个程序,使用感知器算法并输出: 关于训练数据点是否线性的评论 可分离 关于测试点是否线性可分的一点注记 您对权重和常量的初始选择 最终解方程(决策边界) 算法进行的权重更新总数 在训练集上进行的迭代总数 训练数据上的最终错误分类错误(如有),以及 也在测试数据上 我已经读了我的书的第一章好几次了,但我仍然无法完全理解

我刚开始上机器学习课,我们学习了感知机。对于家庭作业,我们应该: “选择合适的二维(平面)训练和测试数据集。使用10个数据点进行训练,使用5个数据点进行测试。”然后我们应该编写一个程序,使用感知器算法并输出:

  • 关于训练数据点是否线性的评论 可分离
  • 关于测试点是否线性可分的一点注记
  • 您对权重和常量的初始选择
  • 最终解方程(决策边界)
  • 算法进行的权重更新总数
  • 在训练集上进行的迭代总数
  • 训练数据上的最终错误分类错误(如有),以及 也在测试数据上
我已经读了我的书的第一章好几次了,但我仍然无法完全理解感知机

我知道如果一个点被错误分类,你会改变权重,直到没有一个点被错误分类,我想我在理解上遇到的困难是

  • 我使用测试数据的目的是什么?它与 训练数据
  • 我如何知道一个点是否被错误分类
  • 如何选择测试点、训练点、阈值或偏差
  • 如果我的书没有提供好的例子,我真的很难知道如何编写其中的一个。如你所知,我很迷路,任何帮助都将不胜感激

    我使用测试数据做什么?它与培训数据有什么关系

    通常,为了评估某个特定算法的性能,首先要对其进行训练,然后使用不同的数据来测试它在以前从未见过的数据上的性能

    我如何知道一个点是否被错误分类

    您的训练数据具有标签,这意味着对于训练集中的每个点,您都知道它属于哪个类

    如何选择测试点、训练点、阈值或偏差

    对于简单的问题,您通常会获取所有训练数据,并将其拆分为80/20左右。你在80%的基础上进行训练,在剩下的20%基础上进行测试

    我使用测试数据的目的是什么?它与 训练数据

    把感知器想象成小孩子。你想教孩子如何区分苹果和桔子。你给它看5个不同的苹果(全红/黄)和5个橙子(不同形状),同时告诉它在每个转弯处看到的东西(“这是一个苹果,这是一个橙子”)。假设孩子有完美的记忆力,如果你给他展示足够的例子,他将学会理解是什么让苹果变成苹果,让桔子变成橘子。他最终将开始使用meta-功能(如形状)你没有告诉他。这就是感知机所做的。在你向他展示了所有的例子之后,你从一开始就开始,这被称为一个新的时代

    当你想测试孩子的知识时会发生什么?你向孩子展示一些新的东西。一个绿色的苹果(不仅仅是黄色/红色的),一个葡萄柚,或者一个西瓜。为什么不在训练期间向孩子展示与以前完全相同的数据呢?因为孩子的记忆力很好,它只会告诉你你告诉他的内容。除非你有不同的训练数据,否则你看不到它从已知数据到不可见的数据有多好在训练过程中从未向他展示过。如果孩子在测试数据上表现糟糕,但在训练数据上表现100%,你就会知道他什么也没学到-只是重复训练中告诉他的内容-你训练他太久了,他只记住了你的例子而不理解因为你给了苹果太多的细节,你就知道是什么让苹果变成了苹果——这叫做“过度拟合”。为了防止你的感知机只(!)识别训练数据,你必须在合理的时间停止训练,并在训练集和测试集的大小之间找到一个良好的平衡

    我如何知道一个点是否被错误分类

    如果它不同于它应该是什么。假设一个苹果有0类,一个橙色有1类(在这里你应该开始阅读单/多层感知器以及多感知器的神经网络如何工作)。网络将接受你的输入。它的编码方式与此无关,假设输入是一个字符串“苹果”你的训练集是{(apple1,0),(apple2,0),(apple3,0),(orange1,1),(orange2,1)…}。由于您事先知道该类,网络将为输入“apple1”输出1或0。如果输出1,则执行(targetValue actualValue)=(1-0)=1。1在这种情况下,表示网络输出错误。将其与delta规则进行比较,您将了解这个小等式是较大更新等式的一部分。如果您得到1,您将执行权重更新。如果目标值和实际值相同,您将始终得到0,并且您知道网络没有错误分类

    如何选择测试点、训练点、阈值或 偏见

    实际上,偏差和阈值本身并不是“选择”的。偏差像任何其他单位一样使用简单的“技巧”进行训练,即使用偏差作为值为1的附加输入单位-这意味着实际偏差值编码在该附加单位的权重中,我们使用的算法将确保它自动为我们学习偏差

    根据您的激活功能,阈值是预先确定的。对于简单感知器,分类如下:

    由于我们使用二进制输出(0和1之间),因此将阈值设置为0.5是一个良好的开端,因为这正好是范围[0,1]的中间值

    现在是关于选择培训和测试点的最后一个问题:这与