神经网络原理
转载请注明出处:http://blog.****.net/tyhj_sf/article/details/54134210
声明:
(1)该博文为个人学习总结,部分内容(包括数学公式)是来自书籍及网上的资料。具体引用的资料请看参考文献。具体的版本声明也参考原文献。
(2)本文仅供学术交流,非商用。所以每一部分具体的参考资料并没有详细对应,更有些部分本来就是直接从其他博客复制过来的。如果某部分不小心侵犯了大家的版权,还望海涵,并联系本人删除或修改。
引言
最近谷歌升级版AlphaGo打败众多国内外围棋高手,那狗又火了一把,再次引起大家的关注。作为一个对技术有追求的人,嗯,是时候好好学习当前最火的人工智能与机器学习的相关技术了。学习一项技术,仅仅了解其技术原理是远远不够的,从技术实践中建立感性认识,才能对技术原理有深入的理解。因此,本文先介绍神经网络基本原理,后面系列文章将详细介绍神经网络的成熟算法及网络结构(比如:BP神经网络、RBF、CNN等)并编程实现之。
神经元模型
以监督学习为例,假设我们有训练样本集 (x(i),y(i)(x(i),y(i),可以以此参数来拟合我们的数据。
为了描述神经网络,我们先从最简单的神经网络讲起,这个神经网络仅由一个“神经元”构成,以下即是这个“神经元”的图示
后文我们会介绍有多个神经元的神经网络,因此单个神经元模型我们后面会简化成如下图:
这个“神经元”是一个以 x1,x2,x3x1,x2,x3
sigmoid函数:
注意,这里我们不再令 x0=1x0=1 来表示截距。
最后要说明的是,有一个等式我们以后会经常用到:如果选择 f(z)=1/(1+exp(−z))f(z)=1/(1+exp(−z)) ,你可以根据sigmoid(或tanh)函数的定义自行推导这个等式。
神经网络模型
所谓神经网络就是将许多个单一“神经元”联结在一起,这样,一个“神经元”的输出就可以是另一个“神经元”的输入。例如,下图就是一个简单的神经网络:
我们使用蓝色圆圈来表示神经网络的输入,标上“+1+1”的圆圈被称为”’偏置节点”’,也就是截距项。神经网络最左边的一层叫做”’输入层”’,最右的一层叫做”’输出层”’(本例中,输出层只有一个节点)。中间所有节点组成的一层叫做”’隐藏层”’,因为我们不能在训练样本集中观测到它们的值。同时可以看到,以上神经网络的例子中有3个”’输入单元”’(偏置单元不计在内),3个”’隐藏单元”’及一个”’输出单元”’。
本例约定:
(1)我们用 nlnl 来计算输出结果。本例神经网络的计算步骤如下:
(5)我们用 z(l)izi(l) 。
这样我们就可以得到一种更简洁的表示法。这里我们将**函数 f(⋅)f(⋅) ,那么,上面的等式可以更简洁地表示为:
我们将上面的计算步骤叫作”前向传播(forward propagation)”。回想一下,之前我们用 a(1)=xa(1)=x 层的**值a(l+1)
转载请注明出处:http://blog.****.net/tyhj_sf/article/details/54134210
声明:
(1)该博文为个人学习总结,部分内容(包括数学公式)是来自书籍及网上的资料。具体引用的资料请看参考文献。具体的版本声明也参考原文献。
(2)本文仅供学术交流,非商用。所以每一部分具体的参考资料并没有详细对应,更有些部分本来就是直接从其他博客复制过来的。如果某部分不小心侵犯了大家的版权,还望海涵,并联系本人删除或修改。