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

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

3.3.3 感知器学习算法

 图3-3 带偏置的感知器网络现在,我们已经做好了编写第一个学习算法的准备。在阅读这个算法的时候,如果能够联想到图3-3,可能会对你的理解有所帮助,并且在此之后,我们会用一个具体的例子来演示这个算法。该算法分为两个部分:训练(training)阶段和再现(recall)阶段。再现阶段在训练完成之后,并且具有很高的速度要求,因为它比训练阶段使用的次数要多得多。你会发现在训练阶段也使用了再现阶段的方程,这是因为在计算误差和训练权重之前,我们必须计算出每个神经元的激活状态。感知器算法

 

●初始化

设置所有的权重wij为小的随机数(正或负都可)。

●训练

对T次循环

○对每一个输入向量:

●利用激活函数g计算每一个神经元j的激活状态: yj=g∑mi=0wijxi=f(x)=1,∑mi=0wijxi>0

0,∑mi=0wijxi≤0(3.4)●利用下式更新每一个权重:wij←wij-η(yj-tj)·xi(3.5)

●再现

利用下式计算每一个神经元j的激活状态:yj=g∑mi=0wijxi=f(x)=1,wijxi>0

0,wijxi≤0(3.6)

 

注意网站上的感知器代码会有些不同,这将在3.3.5节讨论。

计算该算法的计算复杂度非常容易。再现阶段循环了所有的神经元,并且对于每一个神经元,都要在所有输入上循环,因此它的复杂度为O(mn)。训练部分做了同样的工作,但是循环了T次,因此复杂度为O(Tmn)。

这也许是你第一次看到如此书写的算法,并且可能难以看出如何才能把它转换成代码的形式。同样,如此简单的算法竟然能够学习,可能也让人难以置信。想要确定这些事情,唯一的方法就是自己动手,用一两个例子去实现它,并且试着写出具体的代码,看看能否实现预期的功能。下面我们将做这两件事情,首先我们自己动手来计算一个简单的例子。


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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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