14_神经网络_感知器介绍

经过上一节的内容我们了解到,神经网络是如何做出决定的:获取输入信息,对输入信息进行加工,输出最终结果。本节将更进一步了解这个数据加工的过程。数据,例如上一节的test和grades会被输入到神经网络的互相连接的节点中。这些单个节点被称为感知器或人工神经节点。每一个节点观察它的输入数据并决定该作何分类。

image

例如上面这个例子中,第二层节点对test和grades进行分类,每个节点输出YES或者NO信息,第三层节点接收第二层节点的信息,做出分类YES或NO,就是最终结果。
或许上一节我们会有一个疑问:这个神经网络怎么知道是Test分数更重要还是Grades分数更重要?其实在神经网络建立之初,它并不知道哪个输入参数更重要,而是通过“学习”才逐渐了解并适应。这个重要性可以成为“权重(weights)”

权重Weights

上一节输入的两个值tests和Grades进入到感知器时会各自乘以各自的权重。这个权重值初期是个随机值,随着不断将历史数据输入到神经网络,神经网络根据错误值不断调整这个权重,这个过程称之为“训练”。
一个更高的权重代表着神经网络认为这个输入参数更重要。

汇总输入数据

每个进入感知器的输入数据都被赋予权重,这些权重值在神经网络学习过程中逐渐调整。下一步,权重值乘以输入值并最终汇总成一个输出,这个输出有助于产生一个最终结果。

image

w_test和w_grades分别是test和grades的权重值。假设这两个值分别为-0.2和-1,其实他们各自真实绝对值并不重要,重要的是他们之间的相对值。这代表着grades的重要性是test重要性的5倍。

最终结果

w_gradesX_grades+w_testX_tests=-1X_grades-0.2X_tests

把输入数据简化成X1,X2,X3…,对应权重值W1,W2,W3…这个等式就变成了

W1X1+W2X2

由于我们是要这些权重值*输入值之和,可以表现为:

使用激活函数计算输出

最后,感知器求和的结果变成一个输出信号!这是通过将线性组合输入激活函数来完成的。激活函数是决定输入节点的输入的函数,它应该是节点的输出。因为激活函数决定了实际的输出,所以我们通常将层的输出称为它的“激活”。

最简单的激活函数之一是阶跃函数。如果线性组合小于0,则该函数返回0。如果线性组合为正或等于零,则返回1。阶跃函数如下所示,其中H是计算的线性组合:

image

image

在上一个录取问题中,假设我们取Wgrades=-1,Wtest=-0.2,因为这两个值都是负值,计算线性之和后还是负值,代入这个函数后只有在test和grades分数都为0的时候阶跃函数才会输出1。

想象一下下图中蓝色线条及其下方区域是我们的所有可能的输入值乘以权重值后得到的线性之和。我们把这个线性之后带入到阶跃函数,只有在(0,0)时才会输出1.

image

现在我们想输入更多的Grade/test组合,通过“偏移”bias使得更多的点的组合结果返回1.例如下方是加了偏移3之后,蓝色区域为大于0的部分,意味着阶跃函数都会输出1。

image

然后神经网络开始进行学习。最初始状态下wi和b都是随机的,然后通过例如梯度下降算法对它们进行更新。wi和b都会变化,使得所有结果能够得到更好的分类,这就是学习的过程。

0 回复

发表评论

Want to join the discussion?
Feel free to contribute!

发表评论

邮箱地址不会被公开。 必填项已用*标注