首页 > 代码库 > 连“霍金”都想学习的“人工智能”---【自己动手写神经网络】小白入门连载开始了(4)
连“霍金”都想学习的“人工智能”---【自己动手写神经网络】小白入门连载开始了(4)
主页:http://t.cn/RPjZvzs。
上一章中,给出了感知机的一个实现。在该实现中设置了感知机网络的学习算法为LMS。LMS(Least mean square)最小均方差,它是在1960年,由Widrow和他的研究生Marcian Hoff提出的,因此也叫做Widrow-Hoff学习算法。该算法是基于Adaline网络推导出来的,Adaline网络和感知机的区别就是将感知机的Step函数换为Linear线性函数。LMS学习算法的权值和偏置跟新公式为:
iw(k+1)= iw(k)+?e(k)p(k)
ib(k+1)= ib(k)+?e(k)
其中w为权值,e为误差,p为神经元输入,b为偏置,?为学习率,通常取0到1之间的小数。该算法的更新与感知机的学习规则非常类似,新的权值都等于旧的权值加上误差和输入的乘积,网络经过若干次迭代后,就可能趋于稳定,达到可用。
以下是LMS学习算法的实现:
protected void updateNeuronWeights(Neuron neuron) { // 取得神经元误差 doubleneuronError = neuron.getError(); // 根据所有的神经元输入迭代学习 for(Connection connection : neuron.getInputConnections()) { // 神经元的一个输入 double input = connection.getInput(); // 计算权值的变更 double weightChange = this.learningRate * neuronError * input; // 更新权值 Weight weight = connection.getWeight(); weight.weightChange = weightChange; weight.value += weightChange; } }
可以看到,在权值的更新中,此代码严格按照LMS的更新公式,其中learningRate对应学习率?,neuronError为误差e,input为神经元的输入p。若将learningRate设置1,则此更新算法效果等同于感知机学习规则。
至此,一个感知机网络已经完全建立了。现在,可以让这个网络进行学习和记忆了。
购买《自己动手写神经网络》电子书你将会获得:
1. QQ群96980352跟【葛一鸣老师】面对面交流!
2. 一本改变你命运的《自己动手写神经网络》全本电子书!
3. 随书源代码,帮你构建属于自己的神经网络!!
4. http://bbs.uucode.net/论坛交流,看见看不见的技术!
5. “神经网络”公众号shenjingwangluo11,学习更多人工智能、机器学习的相关内容!
扫描公众号二维码!