《机器学习:算法视角(原书第2版)》 —3.3.4 感知器学习示例

举报
华章计算机 发表于 2019/12/21 14:41:49 2019/12/21
【摘要】 本节书摘来自华章计算机《机器学习:算法视角(原书第2版)》 一书中第3章,第3.3.4节,作者是[新西兰] 史蒂芬·马斯兰(Stephen Marsland),高 阳 商 琳 等译。

3.3.4 感知器学习示例

我们将要使用的这个例子很简单,而且你已经有所了解,它是逻辑OR。很显然,这不是一个真正需要用神经网络去学习的东西,但是在这里它却是一个很好的例子。那么我们的神经网络看上去会是什么样的呢?它有两个输入节点(加上输入偏置)和一个输出节点。输入值和目标值在图3-4左边的表格中给出,右边显示了函数的图像,圆形代表值为真(true)的输出,十字形代表值为假(false)的输出。图3-5给出了相应的神经网络。

image.png

图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的原因。

现在我们继续运行该算法,可以通过手工计算或是编写代码(我们将在下文予以讨论)来检验结果,最终使权重趋于稳定,不再改变,此时感知器就正确地学习了样例。注意到我们可以给权重赋许多不同的值,并且这些值都将得到正确的输出,而该算法找到的一组值则取决于学习速率、输入以及初始设定的值。我们感兴趣的是找到一组能够起作用的值,而不必去关注真正的值是什么,只要网络能够泛化到其他的输入。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。