《机器学习:算法视角(原书第2版)》 —3.3.4 感知器学习示例
3.3.4 感知器学习示例
我们将要使用的这个例子很简单,而且你已经有所了解,它是逻辑OR。很显然,这不是一个真正需要用神经网络去学习的东西,但是在这里它却是一个很好的例子。那么我们的神经网络看上去会是什么样的呢?它有两个输入节点(加上输入偏置)和一个输出节点。输入值和目标值在图3-4左边的表格中给出,右边显示了函数的图像,圆形代表值为真(true)的输出,十字形代表值为假(false)的输出。图3-5给出了相应的神经网络。
图3-4 OR逻辑数据表和四点数据图 图3-5 3.3.4节所描述的感知器网络
如同在图3-5中看到的,有三个权重。根据算法,应该用小的随机数来初始化这些权重,所以我们设w0=-0.05,w1=-0.02,w2=0.02。现在我们提供第一个输入,它的两个元素都是0:(0,0)。回想一下,对应于偏置权重的输入永远为-1,因此该神经元得到的值为(-0.05)×(-1)+(-0.02)×0+(-0.02)×0=0.05。这个值大于0,所以神经元激活,输出为1,这与目标不相符。根据权重更新的法则,我们需要将式(3.3)运用在每一个权重上(对于这个例子,我们设η=0.25):w0: -0.05-0.25×(1-0)×(-1)=0.2(3.7)
w1: -0.02-0.25×(1-0)×0=-0.02(3.8)
w2: 0.02-0.25×(1-0)×0=0.02(3.9)
现在提供下一个输入(0,1),根据计算得到的输出,该神经元将不会激活,但该神经元应该激活,我们再一次使用学习法则:
w0: 0.2-0.25×(0-1)×(-1)=-0.05(3.10)
w1: -0.02-0.25×(0-1)×0=-0.02(3.11)
w2: 0.02-0.25×(0-1)×1=0.27(3.12)
对输入(1,0)来说,结果已经是正确的了(你应该检验一下,确保结果与之相符),所以我们完全不必去调整权重。对输入(1,1)来说,情况也是一样。至此,我们已经对所有的输入都进行了一次处理。遗憾的是,这并不意味着工作已经完成,因为并不是所有的输入都已经得到了正确的结果。现在我们需要再一次检查所有的输入,直到权重趋于稳定,不再发生变化,这才意味着算法已经结束。对实际生活中的应用来说,权重有可能永远都不会停止变化,这就是我们预先设置好算法的循环次数T的原因。
现在我们继续运行该算法,可以通过手工计算或是编写代码(我们将在下文予以讨论)来检验结果,最终使权重趋于稳定,不再改变,此时感知器就正确地学习了样例。注意到我们可以给权重赋许多不同的值,并且这些值都将得到正确的输出,而该算法找到的一组值则取决于学习速率、输入以及初始设定的值。我们感兴趣的是找到一组能够起作用的值,而不必去关注真正的值是什么,只要网络能够泛化到其他的输入。
- 点赞
- 收藏
- 关注作者
评论(0)