前言
本文主要是学习BP神经网络的一个总结,其本身也是机器学习中比较基础、适合入门的模型。
目前本人对于机器学习也还只是入门状态,对于很多名词仍然是一知半解(感觉机器学习中的很多术语本身也是模棱两可的),对于很多公式也是不求甚解,因此这篇文章是尝试用自己的语言和理解来复述所学习到的知识,如果有错误之处还望大牛们不吝斧正。
霍金说过每多一个数学公式,就会少一半的读者,因此这里也会尽量少用公式,要用也只用简单易懂的公式。而且个人觉得神经网络中的很多公式是可以感性地去认识的,能完全明白推导过程自然最好,但在不求甚解的状态下能达到感性的认知也未必不是一个快速掌握的好方法。
另外本文中用到了不少矩阵相关的知识,忘记了的同学可以看附录中的整理。
神经元与激励函数
神经元
神经元是神经网络的基本组成,如果把它画出来,大概就长成下面这样:
图中神经元左边的x表示对神经元的多个输入,w表示每个输入对应的权重,神经元右边的箭头表示它仅有一个输出。
当然神经元也有很多种,下面介绍两种比较基础的。
神经元1:感知器
神经网络技术起源于上世纪五、六十年代,当时叫感知机(perceptron),其中的单个神经元我们可以叫作感知器。感知器的特点具有浓厚的时代气息:其输入输出都是二进制形式的(据说由于计算技术的落后,当时感知器传输函数是用线拉动变阻器改变电阻的方法机械实现的)。
如上图所示,感知器有多个二进制输入(值只能是0或1)X1、X2..Xn,每个输入有对应的权值W1、W2..Wn(图中没画出来),将每个输入值乘以对应的权值再求和( ∑XjWj ),然后与一个阈值(threshold) 比较,大于阈值则输出1、小于阈值则输出0。 写成公式的话如下:
如果把公式写成矩阵形式,再用b来表示负数的阈值(即b=-threshold),那就得到了如下公式:
举个栗子
例如你所在的城市将有一个你的偶像的演唱会,你正决定是否观看,你可能会通过以下三个方面来权衡你的决定:
- 天气好吗?
- 你的好基友是否愿意陪你去?
- 是否这个活动距离公共交通很近?(你自己没车)
我们将这三个因素用对应的二进制变量x1,x2和x3表示。比如,当天气还不错时,我们有x1=1,天气不好时x1=0;相似的,如果好基友愿意去,x2=1,否则x2=0;对于公共交通x3同理赋值。
然后根据你的意愿,比如让天气权重 w1=6,其他条件权重分别为w2=2,w3=2。权重w1值越大表示天气影响最大,比起好基友加入或者交通距离的影响都大。最后,假设你选择5做为感知器阈值(即b为-5),按照这种选择,这个感知器就能实现这个决策模型:当天气好时候输出1,天气不好时候输出0,无论你的好基友是否愿意去,或者交通是否比较近。
神经元2:Sigmoid神经元
先来认识一个函数:Sigmoid函数,这个单词在某些工具上直译是“乙状结肠”、也还真有某些资料把Sigmoid神经元叫作乙状结肠神经元的。 其实它是一个常用的“S”型函数,可以把变量映射到(0,1)区间内,其公式如下:
它的函数图像是如下图如示的“S”型:
那么Sigmoid神经元是什么呢?与感知器有什么区别?
首先,在Sigmoid神经元中,输入的值不再是二进制,而是0到1之间的任意值。即Xi取值是0到1之间的任意实数。
其次,而Sigmoid神经元的输出也不再是0或1,而是 σ(wx+b)。 注意"