感知机(perceptron)--最基本的神经网络算法模型
人工神经网络(ANN's)是人脑的一个模型
人工神经网络受到人类中枢神经系统的启发。就像是人脑生物结构的对应物一样,ANN's的是建立在简单的信号处理元件上,这些元件连接在一起形成一个大的网格。
神经网络可以做什么?
识别面孔,
识别语音,
读你的笔迹(我的也许不是),
翻译文本,
玩游戏(通常是棋盘游戏或纸牌游戏)
控制自动车辆和机器人。
当然还有更多的事情!
神经网络的拓扑结构
将神经网络的节点编织在一起的方法有很多种,每一种方式都会产生一种或多或少的复杂行为。可能最简单的拓扑结构是前馈网络。信号只向一个方向流动;信号路径中没有任何循环。
通常,ANN's的结构是分层的。输入层接收输入信号并将其传递到下一层,即所谓的“隐藏层”。(实际上,在神经网络中可能有多个隐藏层。)最后是传递结果的输出层。
神经网络必须学习
与传统的算法不同,神经网络不能被“编程”或“配置”以达到预期的效果。就像人类的大脑一样,他们必须学会如何完成一项任务。大致说来,有三种学习策略:
监督学习
最简单的方法。如果存在已知结果的(足够大)的测试数据集,则可以使用。然后学习就像这样:处理一个数据集。将输出与已知结果进行比较。调整网络并重复。这就是我们要用到的学习策略。
无监督学习
如果没有现成的测试数据,并且有可能从所需的行为中得出某种成本函数,有用的话。成本函数就会告诉神经网络它离目标有多远。在实际数据处理过程中,网络可以动态调整其参数。
强化学习
“胡萝卜加大棒”的方法。如果神经网络产生连续动作,就可以使用。跟着胡萝卜在你的鼻子前面!如果你走错路——哎哟。随着时间的推移,网络学习更喜欢正确的行动,避免错误的行动。
神经元:神经网络的构建块
任何人工神经网络的基本成分都是人造神经元。它们不仅以它们的生物副本命名,而且还以我们大脑中的神经元的行为为模型。
就像一个生物神经元有树突接收信号,一个细胞体处理它们,一个轴突向其他神经元发送信号,这个人工神经元有许多输入通道,一个处理站,一个可以发散给多个其他的人工神经元的输出。
一个人工神经元
让我们进一步放大。神经元如何处理它的输入?你可能会惊讶地发现神经元内部的计算是多么简单。我们可以确定三个处理步骤:
1。每个输入都按比例放大或缩小。
当一个信号输入时,它会乘上分配给特定输入的权重值。也就是说,如果一个神经元有三个输入,那么它就会分别分配三个可以调整的权重。在学习阶段,神经网络可以根据最后一个测试结果的误差来调整权重。
2。所有的信号都可以加起来。
在下一步中,修改的输入信号可以归结为一个单一的值。在此步骤中,还添加了一个偏移量。这种偏移被称为偏差。在学习阶段,神经网络也会调整偏差。
这就是奇迹发生的地方!一开始,所有的神经元都有随机的权重和偏差。但在每次学习迭代之后,权重和偏差都会逐渐调节,这样下一个结果就会更接近期望的输出。通过这种方式,神经网络逐渐达到学习模式。
3所示。**
最后,神经元的计算结果转化为输出信号。这是通过将结果反馈到**函数(也称为传递函数)来完成的。
感知机
**函数最基本的形式是一个简单的二元函数,它只有两个可能的结果。尽管看起来很简单,函数有一个相当复杂的名称:亥维赛阶跃函数。如果输入为正或零,则该函数返回1,而对于任何负输入,则返回0。一个神经元的**函数是像这样简单二元函数就叫做一个感知器。
我们能用一个感知器做一些有用的事情吗?
如果你仔细想想,就会发现,感知器消耗了大量的信息,而输出很少,只有0或1。这怎么可能有用呢?
有一类问题是单个感知器可以解决的。将输入向量视为一个点的坐标。对于一个有n个元素的向量,这个点会在n维空间中存在。为了使生命(和下面的代码)更容易,让我们假设一个二维平面。像一张纸。
进一步考虑,我们在这个平面上画了一些随机点,我们把它们分成两组,在纸上画一条直线:这条线把点分成两组,一个在上面,一个在直线下面。(这两组被称为线性可分。)
一个感知器,就像它可能出现的那样简单而简单,它能够学习这条线的位置,当它完成学习时,它可以判断一个给定的点是在这条线的上面还是下面。
想象一下:一个感知器已经可以学习如何对点进行分类!
代码:用于分类坐标点的感知器。
感知机
1.随机的权重和偏差
2.根据权重和偏差得出结果
3.将结果放入**函数中输出最终结果
训练
1.随机的坐标
2.放入感知机中得出结果和实际结果比较
3.将结果的差值回馈给感知机修改权重和偏差