《机器学习》——第五章 神经网络
引言
在进入本章节之前,先声明一点,本章节中所提及的神经网络不是生物学上的神经网络,当然啦其实是通过数学定理上的证明,来构建一个神经网络的模型出来,模拟生物神经网络上的一些行为(有点小小的严肃哈哈哈哈),扯了这么多该进入咱们今天的话题了
一、神经元模型
1.1 定义
周志华老师在书中讲到神经网络的定义时候,引入众多学科中所采用的定义
神经网络是由具有适应性的简简单单组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所作出交互反应
神经网络中最基本的成分是神经元模型即定义中的那个简单单元
在生物学中,神经元与其他神经元相连接,当一个神经元兴奋起来的时候,就会向其他神经元发送化学物质,导致电位差发生变化,于是想要这个神经元兴奋起来就必须要使其电位超过一个阈值,那么这个神经元就会"被激活"起来,就会"兴奋"起来
有人将这样的情景抽象出以下的模型,他便是沿用至今的"M—P神经元模型",模型如下图所示
解释:这个神经元模型中,通过收到来自其他n个神经元传递过来的信息,然后通过带权连接进行传递,然后将收到的总输入值和这个神经元的阈值进行对比,若超过阈值,那么就会输出,若没有超过阈值就不会输出值,若超过阈值后,就会通过激活函数来处理这个神经元的输出
1.2 激活函数
在书中提及到两种经典的激活函数
一种是阶跃函数
s g n ( x ) = { 1 , x ⩾ 0 0 , x < 0 sgn(x) =\left\{ \begin{array}{c} 1,x\geqslant 0\\ 0,x<0\\\end{array} \right. sgn(x)={
1,x⩾00,x<0
第二种是我们一般都会叫他激活函数的——sigmoid函数,定义如下
s i g m o i d ( x ) = 1 1 + e − x sigmoid(x)=\frac{1}{1+e^{-x}} sigmoid(x)=1+e−x1
两种激活函数的对比,第一种比较的单调,它代表着若神经元兴奋则是1,反之则为0,但是由于其阶跃函数在数学上不光滑,不连续,光滑的通俗理解是不可导,因此通过改进,变成第二种sigmoid函数,将其值变为在区间[0,1]上的连续值,该函数光滑,连续,可导
神经网络的组成就是由这些许许多多个神经元按照一定的层次结构连接起来的,在后续的研究中,我们可以将神经网络看成是一个包含了很多参数的数学模型,同时由许许多多个函数嵌套在一起
二、感知机与多层网络
感知机(Perceptron)由两层神经元组成,如下图所示
感知机能够很容易的实现逻辑与、或、非运算,这里使用的是阶跃函数表示
- “与” ( x 1 ∩ x 2 ) (x_1 \cap x_2) (x1∩x2):令 w 1 = w 2 = 1 , θ = 2 w_1=w_2=1,\theta=2 w1=w2=1,θ=2则 y = f ( 1 ⋅ x 1 + 1 ⋅ x 2 − 2 ) y=f(1\cdot x_1+1\cdot x_2-2) y=f(1⋅x1+1⋅x2−2),仅在 x 1 = x 2 = 1 x_1=x_2=1 x1=x2=1时, y = 1 y=1 y=1
- “或” ( x 1 ∪ x 2 ) (x_1 \cup x_2) (x1∪x2):令 w 1 = w 2 = 1 , θ = 0.5 w_1=w_2=1,\theta=0.5 w1=w2=1,θ=0.5则 y = f ( 1 ⋅ x 1 + 1 ⋅ x 2 − 0.5 ) y=f(1\cdot x_1+1\cdot x_2-0.5) y=f(1⋅x1+1⋅x2−0.5),当 x 1 = 1 x_1=1 x1=1或 x 2 = 1 x_2=1 x2=1时, y = 1 y=1 y=1
- “非” ( ¬ x 1 ) (\lnot x_1) (¬x1):令 w 1 = − 0.6 , w 2 = 0 , θ = − 0.5 w_1=-0.6,w_2=0,\theta=-0.5 w1=−0.6,w2=0,θ=−0.5,则 y = f ( − 0.6 ⋅ x 1 + 0 ⋅ x 2 + 0.5 y=f(-0.6\cdot x_1+0\cdot x_2+0.5 y=f(−0.6⋅x1+0⋅x2+0.5,当 x 1 = 1 x_1=1 x1=1时, y = 0 y=0 y<