《机器学习:算法视角(原书第2版)》 —3.3.3 感知器学习算法
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)。
这也许是你第一次看到如此书写的算法,并且可能难以看出如何才能把它转换成代码的形式。同样,如此简单的算法竟然能够学习,可能也让人难以置信。想要确定这些事情,唯一的方法就是自己动手,用一两个例子去实现它,并且试着写出具体的代码,看看能否实现预期的功能。下面我们将做这两件事情,首先我们自己动手来计算一个简单的例子。
- 点赞
- 收藏
- 关注作者
评论(0)