神经网络与机器学习第2讲 神经网络模型基础
神经网络与机器学习
第2章 神经网络模型基础与感知机
这里介绍神经元的简化数学模型,描述基本的神经网络结构与基本计算,讨论单层感知机的优点和局限性。对于感知机的理解有助于学习更加复杂的神经网络,感知机是数学可解释的一类神经网络模型,现在的复杂网络模型有些可解释性还没有摸清楚,因此感知机是一个典型的例子。
数学符号规定:标量是(小写和大写)斜体非粗体字母 a,b,c A,B,
向量是小写黑斜体字母 a,b,c
矩阵是大写黑斜体字母 A,B,C
§2.1 神经元的简化数学模型
单个神经元模型

图2.1 多输入单输出神经元数学模型
设有R个输入组成输入列向量 ,输入的维数是研究问题决定的,比如飞机飞行条件包括大气温度、湿度、风速等等,而如果是图像处理的卷积神经网络,那么输入就是矩阵了。 称为权系数,是从输入连接第个神经元,注意一般下标在前。称为权系数组成权行向量(矩阵)。所以上面输出可以写为
是神经元激活函数,或者叫传输函数,比如硬限值、sigmoid、双曲正切、Relu、Maxout等等。
饱和型:硬限幅

\[y=\begin{cases} 1, & \text{ if } x \geq 0\\ 0, & \text{ if } x <0 \end{cases}\]
图2.2 MP或者硬限幅,阈值激活函数
饱和型:Sigmoid

$y=\frac{1}{1+e^{-x}}$
图2.3 sigmoid激活函数
饱和型:双曲正切函数
$y = \frac{e^{x}-e^{-x}}{e^{x}+e^{-x}}$
修正线性:Rectified Linear Unit, ReLu
\[y=\begin{cases} x, & \text{ if } x \geq 0\\ 0, & \text{ if } x <0 \end{cases}\]
为何需要ReLU:深度学习一个明确的目标是从数据变量中解离出关键因子,原始数据(以自然数据为主)中通常缠绕着高度密集的特征。ReLu能够解开特征间缠绕的复杂关系,转换为稀疏特征。对比大脑工作的95%稀疏性来看,现有的计算神经网络和生物神经网络还是有很大差距的。ReLu只有负值才会被稀疏掉,即引入的稀疏性是可以训练调节的,是动态变化的。只要进行梯度训练,网络可以向误差减少的方向,自动调控稀疏比率,保证激活链上存在着合理数量的非零值。
竞争型:Maxout
$f(x) = max(x)$
为何需要:Maxout的拟合能力非常强,可以拟合任意的凸函数。
单层神经网络

图2.2 单层神经网络模型
设有S个神经元并行运算,那么输入列向量$P=[p_1,p_2,...p_R]^{\top}$要连接每个神经元,因此其权系数按照上面规则组成了权矩阵,记住$w_{i,j}$称为权系数,是从输入$p_j$连接第$i$个神经元。
\[\bm{W}=\begin{bmatrix} \bm{w_1}\\ \bm{w_2}\\ .\\ .\\ \bm{w_s} \end{bmatrix} =\begin{bmatrix} w_{1,1} & w_{1,2} & \cdots & w_{1,R} \\ w_{2,1} & w_{2,2} & \cdots & w_{2,R} \\ . & . & . & .\\ . & . & . & .\\ w_{S,1} & w_{S,2} & \cdots & w_{S,R} \\ \end{bmatrix}\]
偏置系数组成偏置向量,那么单层神经网络的输出是
\[\bm{a}=\begin{bmatrix} a_1\\ a_2\\ .\\ .\\ a_s \end{bmatrix} = f(\bm{Wp}+\bm{b})=\left \{ \begin{bmatrix} w_{1,1} & w_{1,2} & \cdots & w_{1,R} \\ w_{2,1} & w_{2,2} & \cdots & w_{2,R} \\ \vdots & \vdots & & \vdots\\ w_{S,1} & w_{S,2} & \cdots & w_{S,R} \\ \end{bmatrix} \begin{bmatrix} p_1\\ p_2\\ \vdots\\ p_R \end{bmatrix}+\begin{bmatrix} b_1\\ b_2\\ \vdots\\ b_S \end{bmatrix}\right \}\\=\begin{bmatrix} f(\bm{w_1p}+b_1)\\ f(\bm{w_2p}+b_2)\\ \vdots\\ f(\bm{w_sp}+b_s) \end{bmatrix}\]
我们也可以画成图2.2的右边简单表示形式。
多层神经网络
考虑多层的神经网络模型如图2.3,这里使用上标(n)来标记层的顺序:
输入层:输入向量$\bm{p}$,
第一层:具有$S^{(1)}$个并行的神经元,激活函数标记为$f^{(1)}$、权矩阵$\bm{W}^{(1)}$,接收输入向量$\bm{p}$
第二层:具有$S^{(2)}$个并行的神经元,激活函数标记为$f^{(2)}$、权矩阵$\bm{W}^{(2)}$,接收第一层的输出向量$a^{(1)}$ …这样以此类推下去。
输入层 第一层 第二层 第三层

输入层 第一层隐藏层 第二层隐藏层 输出层

图2.2 多层神经网络模型
多层神经网络比单层神经网络功能更加强大,比如万能函数逼近定理:一个前馈神经⽹络如果具有线性层和至少一层具有 "挤压" 性质的激活函数(如 sigmoid 等),给定网络足够数量的隐藏单元,它可以以任意精度来近似任何从一个有限维空间到另一个有限维空间的 Borel 可测函数(它包括一切阶梯函数、一切连续函数和分段连续函数。波莱尔函数经过有限次的加、减、乘、除运算以及函数的复合,仍然是波莱尔函数)。两层的神经网络,输入层+隐层+输出层,隐层选sigmoid函数,输出层选线性函数,可以训练后,使得神经网络的输出逼近任意一个函数。
这个定理在Michael Nielsen《Neural Network and Deep Learning》的第四章 http://neuralnetworksanddeeplearning.com/chap4.html有着形象的解释,我们可以把两个sigmoid函数进行挤压形成一个tower!我们知道任意函数可以离散化近似表示,那么任意一个波莱尔函数都可以如下这样构造多个这样的 tower 近似。


图2.3 两个sigmoid和二者的差形成的Tower
严格证明参考如下文献:
-
Hornik, K., Stinchcombe, M., and White, H. (1989). Multilayer feedforward networks are uni-versal approximators. Neural Networks, 2, 359–366. 171
-
Hornik, K., Stinchcombe, M., and White, H. (1990). Universal approximation of an unknown mapping and its derivatives using multilayer feedforward networks. Neural networks, 3(5), 551–560. 171
-
Leshno, M., Lin, V. Y., Pinkus, A., and Schocken, S. (1993). Multilayer feedforward networks with a nonpolynomial activation function can approximate any function. Neural Networks, 6, 861––867. 171, 172
注意的是:定理说的是,可以设计个神经网络尽可能好地去"近似"某个特定函数,而不是说"准确"计算这个函数。我们通过增加隐含层神元的个数来提升近似的精度。被近似的函数,必须连续函数如果函数是非连续的,也就是说有极陡跳跃的函数,那神经网络就"爱莫能助"了。
即使函数是连续的,有关神经网络能不能解决所有问题。比如,深度学习中生成对抗网络(GAN)的提出者伊恩·古德费洛(Ian Goodfellow)就曾说过:"仅含有一层的前馈网络的确足以有效地表示任何函数,但是,这样的网络结构可能会格外庞大,进而无法正确地学习和泛化。Goodfellow言外之意是说,"广而浅薄"的神经网络在理论上是万能的,但在实践中却不是那么回事儿。因此,网络往"深"的方向去做才是正途。事实上,"通用近似定理"1989年就被提出了,到2006年深度学习开始厚积薄发,这期间神经网络并没有因为这个理论而得到蓬勃发展。因此,从某种程度上验证了Goodfellow的判断。
循环神经网络 前面都是信息流一直向前,称为前馈神经网络,也有带反馈的,比如循环神经网络。

图2.4 循环神经网络(D-Delay延迟器)
§2.2 三种典型的神经网络
感知机(前馈),Hamming网(竞争型),Hopfield网络(联想记忆)

图2.5 物品分类与神经网络
问题:如上图的生产线,由于仓库里混杂了两种水果:苹果和橘子,利用传感器数字表示水果的三个特征
\[\mathbf{p}=\begin{bmatrix} \text{形状}\\ \text{纹理}\\ \text{重量} \end{bmatrix}\]
形状:圆形表示为+1,椭圆形-1
纹理:光滑表示为+1,粗糙-1
重量:大于900克+1,小于-1
那么橘子表示为$\bm{p_o}=\begin{bmatrix} 1\\ -1\\ -1 \end{bmatrix}$和苹果表示为$\bm{p_a}=\begin{bmatrix} 1\\ 1\\ -1 \end{bmatrix}$,神经网络需要通过这三个量辨别是什么,实际是一个模式识别问题。我们用三种网络分别完成上述任务。
第一种考虑单层前馈神经网络(感知机),这里实际上只需要一个神经元即可,橘子和苹果的主要区别是纹理,所以选择一个神经元就可以
\[a=f\left \{ \begin{bmatrix} w_{1,1} & w_{1,2} & w_{1,3} \end{bmatrix} \begin{bmatrix} p_1\\ p_2\\ \vdots\\ p_R \end{bmatrix}+b\right \} =f\left \{ \begin{bmatrix} 0 & 1 & 0 \end{bmatrix}\begin{bmatrix} p_1\\ p_2\\ \vdots\\ p_R \end{bmatrix} + 0\right \}\]
$f$取中心硬限幅
\[f(x)=\begin{cases} 1, & x \geq 0\\ -1, & x <0 \end{cases}\]
橘子$\bm{p_o}=\begin{bmatrix} 1\\ -1\\ -1 \end{bmatrix}$,$a=-1$
苹果$\bm{p_a}=\begin{bmatrix} 1\\ 1\\ -1 \end{bmatrix}$,$a=+1$
注意即使形状和重量改变也无所谓,因为权系数都是0,不改变输出结果,但是如何自动地选择权系数,而不是人为地给出,这个需要下一节的感知机学习算法,我们说$\bm{wp}+b=0$是一个决策边界,根据输入$\bm{p}$的维数,2维-直线,3维-平面,高维-超平面。

苹果 橘子
图2.6 物品分类的决策边界
这里思考:决策边界$\bm{wp}+b=0$画法,找到垂直w向量的超平面,然后位移为-b(向量)。
第二种:Hamming网

图2.7 Hamming神经网络
第一层是前馈层2个神经元,激活函数为线性函数,我们设定其权矩阵为
$\bm{W}^{(1)}=\begin{bmatrix} \bm{p}_o^{\mathrm{T}}\\ \bm{p}_a^{\mathrm{T}} \end{bmatrix}=\begin{bmatrix} 1 & -1 & -1\\ 1 & 1 & -1 \end{bmatrix},\bm{b}^{(1)}\begin{bmatrix} 3\\ 3 \end{bmatrix}$
激活函数为线性函数,所以第一层的输出为
$\bm{a}^{(1)}=\bm{W}^{(1)}\bm{p}+\bm{b}^{(1)}=\begin{bmatrix} \bm{p}_o^{\mathrm{T}}\\ \bm{p}_a^{\mathrm{T}} \end{bmatrix}\bm{p}+\bm{b}^{(1)}=\begin{bmatrix} \bm{p}_o^{\mathrm{T}}\bm{p}\\ \bm{p}_a^{\mathrm{T}}\bm{p} \end{bmatrix}+\bm{b}^{(1)}$
橘子$\mathbf{p}_o$代入得到
$\bm{a}^{(1)}=\begin{bmatrix} 6\\ 2 \end{bmatrix}$

第二层是循环反馈层,动态"竞争层"
选择权矩阵$\bm{W}^{(2)}=\begin{bmatrix} 1 & -\alpha\\ -\alpha & 1 \end{bmatrix}$,偏置$\mathbf{b}^{(2)}$选为0向量,激活函数为ReLu:$f(x)=\begin{cases} x, & x \geq 0\\ 0, & x <0 \end{cases}$,那么根据这个网络运算橘子和苹果的各自输出都是收敛的,条件是$\alpha<1$,$\bm{a}^{(2)}(t+1)=Relu\left \{ \bm{W}^{(2)}\bm{a}^{(1)}(t) \right \}$的作用就是挑选出数值最大的元素,而其他元素逐渐衰减为0,比如
$\bm{a}^{(1)}(t)=\begin{bmatrix} a_1^{(1)}(t)\\ a_2^{(1)}(t) \end{bmatrix},a_1^{(1)}(t)>a_2^{(1)}(t)$
$\bm{a}^{(2)}(t+1)=Relu\left \{ \bm{W}^{(2)}\bm{a}^{(1)}(t) \right \}=Relu\begin{bmatrix} a_1^{(1)}(t)-\alpha a_2^{(1)}(t)\\ a_2^{(1)}(t)-\alpha a_1^{(1)}(t) \end{bmatrix}$
第二项减少的多!,再次迭代继续减小,直到小于0,则输出0。
取$\alpha = 0.5$,橘子收敛为
$\bm{a}^{(2)}(t+1)=Relu\left \{ \bm{W}^{(2)}\bm{a}^{(1)}(t) \right \}=\begin{bmatrix} 5\\ 0\end{bmatrix}$
苹果收敛为
$\bm{a}^{(2)}(t+1)=Relu\left \{ \bm{W}^{(2)}\bm{a}^{(1)}(t) \right \}=\begin{bmatrix} 0\\ 5\end{bmatrix}$
假如一个椭圆形的橘子
$\bm{p}_o=\begin{bmatrix} -1\\ -1\\ -1 \end{bmatrix}$
代入得到
$\bm{a}^{(1)}=\begin{bmatrix}4\\ 2 \end{bmatrix}$
$\begin{bmatrix} 3\\ 0\end{bmatrix}$与橘子$\begin{bmatrix} 5\\ 0\end{bmatrix}$的非零元素,hamming 距离d(3,5)=11异或101,为1,故选择橘子。
$\begin{bmatrix} 3\\ 0\end{bmatrix}$与苹果$\begin{bmatrix} 0\\ 5\end{bmatrix}$的非零元素,hamming距离 d(3,0)=11异或0,为2。
Hopfield网络(联想记忆网络)

图2.8 Hopfield神经网络
Hopfield神经网络是一类循环回归网络,Hamming网络输出非零值来判别分类,而Hopfield网络是输出一个标准向量来表示类别,网络运算规则是
$\begin{cases} \bm{a}(0)=p \\ \mathbf{a}(t+1)=f\left \{ \bm{Wa}(t+1)+b \right \} \end{cases}$
这里神经元激活函数是饱和线性函数(saturating linear satlins)
\[f(x)=\begin{cases} +1,&x>1\\ x,&-1\leq x\leq 1\\ -1,&x\leq -1 \end{cases}\]
权矩阵和偏置向量分别为
$\bm{W}=\begin{bmatrix} 0.2 & 0 & 0\\ 0 & 1.2 & 0\\ 0 & 0 & 0.2 \end{bmatrix},\bm{b}=\begin{bmatrix} 0.9\\ 0\\ -0.9 \end{bmatrix}$
实际运行
$\bm{a}(t+1) =\begin{bmatrix} a_1(t+1)\\ a_2(t+1)\\ a_3(t+1) \end{bmatrix}=f\begin{bmatrix} 0.2a_1(t)+0.9\\ 1.2a_2(t)\\ 0.2a_3(t)10.9 \end{bmatrix}$
第二项$a_2$会不断沿着自己的正负增长,直到饱和为+1或者-1,$a_1$一直增加肯定到1,$a_3$一直减小直到-1,所以输出肯定收敛到
橘子$\bm{p}_o=\begin{bmatrix} 1\\ -1\\ -1 \end{bmatrix}$,
苹果$\bm{p}_a=\begin{bmatrix} 1\\ 1\\ -1 \end{bmatrix}$
注意这里仅仅是举例子来说明神经网络的如何完成模式识别问题,但是网络如何设计的,为何收敛,怎样不断学习的,这些我们以后再讲。第一种前馈网络在函数逼近、自动控制、信号滤波等方面应用比较广泛,第二种Hamming网在聚类分析,第三种Hopfield网络在存储数据(设计权矩阵)、各种优化问题、路径优化等等应用非常成功。后续继续深入讲解。

浙公网安备 33010602011771号