【西瓜书和南瓜书的吃瓜笔记】神经网络

104 阅读3分钟

1. M-P 神经元:

1.1. 定义:

一个用于模拟生物行为的数学模型:接收 n 个输入,输入通常来自其他神经元,并给各个输入赋予权重计算加权和,然后根据自身特有的阈值进行比较(作减法),最后通过激活函数(模拟抑制和激活)处理得到输出(输给下一个神经元)。

y=f(i=1nwixiθ)=f(wTx+b)y=f\left(\sum_{i=1}^nw_ix_i-\theta\right)=f\left(\boldsymbol{w}^\mathrm{T}\boldsymbol{x}+b\right)

一些激活函数:在单个 M-P 神经元中,一般使用 sigimoid(对数几率回归)或者阶跃函数(感知机)作为激活函数。 image.png image.png

2. 感知机模型:

2.1. 基本定义:

感知机模型是一个分类模型,由两层神经元组成,输入层接收外界输入信号后传递给输出层,输出层是 M - P 神经元。 image.png

2.2. 激活函数:

阶跃函数:y=f(wTx+b)=sgn(wTxθ)={1,wTxθ00,wTxθ<0\left.y=f\left(\boldsymbol{w}^\mathrm{T}\boldsymbol{x}+b\right)=\operatorname{sgn}(\boldsymbol{w}^\mathrm{T}\boldsymbol{x}-\theta)=\left\{\begin{array}{cc}1,&\boldsymbol{w}^\mathrm{T}\boldsymbol{x}-\theta\geqslant0\\0,&\boldsymbol{w}^\mathrm{T}\boldsymbol{x}-\theta<0\end{array}\right.\right. 其中,xRn\boldsymbol{x}\in\mathbb{R}^n 为样本的特征向量,是感知机模型的输入,w,θ\boldsymbol{w},\theta 是感知机模型的参数, wRn\boldsymbol{w}\in\mathbb{R}^n 为权重,θ\theta 为阈值。

2.3. 几何角度:

image.png

再从几何角度来说,给定一个线性可分的数据集 TT,感知机的学习目标是求得能对数据集 TT 中的正负样本完全正确划分的超平面,其中 wTxθw^\mathrm{T}\boldsymbol{x}-\theta 即为超平面方程。nn 维空间的超平面(wTx+b=0\boldsymbol{w}^\mathrm{T}\boldsymbol{x}+b=0,其中 w,xRn)\boldsymbol{w}, \boldsymbol{x}\in \mathbb{R} ^n) :

  • 超平面方程不唯一(系数缩放倍数,值的变化)
  • 法向量 ww 垂直于超平面
  • 法向量 w\boldsymbol{w} 和位移项 bb 确定一个唯一超平面
  • 法向量 ww 指向的那一半空间为正空间,另一半为负空间

2.4. 感知机学习策略:

2.4.1. 基本介绍:

感知机学习策略:随机初始化 w,b\boldsymbol{w},b,将全体训练样本代入模型找出误分类样本,假设此时误分类样本集合为 MTM\subseteq T,对任意一个误分类样本 (x,y)M(\boldsymbol{x},y)\in M 来说,当 wTx\boldsymbol{w}^\mathrm{T}\boldsymbol{x}- θ0\theta\geqslant0 时,模型输出值为 y^=1\hat{y}=1,样本真实标记为 y=0y=0;反之,当 wTxθ<0\boldsymbol w^\mathrm{T}\boldsymbol{x}-\theta<0 时,模型输出值为 y^=0\hat{y}=0,样本真实标记为 y=1y=1。综合两种情形可知,以下公式恒成立 (y^y)(wTxθ)0(\hat{y}-y)(\boldsymbol{w}^\mathrm{T}\boldsymbol{x}-\theta)\geq0 所以,给定数据集 TT,其损失函数可以定义为: L(w,θ)=xM(y^y)(wTxθ)L(\boldsymbol{w},\theta)=\sum_{\boldsymbol{x}\in M}(\hat{y}-y)(\boldsymbol{w}^\mathrm{T}\boldsymbol{x}-\theta) 显然,此损失函数是非负的。如果没有误分类点,损失函数值是0。而且,误分类点离超平面越近,损失函数值就越小。学习目的就是最小化该损失函数,找到对应的 w\boldsymbol{w}θ\theta

2.4.2. 具体操作:

具体地,给定总数据集

T={(x1,y1),(x2,y2),,(xN,yN)}T=\{(\boldsymbol{x}_1,y_1),(\boldsymbol{x}_2,y_2),\ldots,(\boldsymbol{x}_N,y_N)\}

其中 xiRn,yi{0,1}\boldsymbol{x}_i\in\mathbb{R}^n,y_i\in\{0,1\},求参数 w,θ\boldsymbol{w},\theta,使其为极小化损失函数的解:

minw,θL(w,θ)=minw,θxiM(y^iyi)(wTxiθ)\min_{\boldsymbol{w},\theta}L(\boldsymbol{w},\theta)=\min_{\boldsymbol{w},\theta}\sum_{\boldsymbol{x}_i\in M}(\hat{y}_i-y_i)(\boldsymbol{w}^\mathrm{T}\boldsymbol{x}_i-\theta)

其中 MTM\subseteq T 为误分类样本集合。若将阈值 θ\theta 看作一个固定输入为-1 的“哑节点”,即目前是 n 维的空间,那么将 n 维扩充到 n+1 维,然后此时的第 n+1 维的权重为 wn+1w_{n+1} 对应的 X 的向量为 xn+1=1x_{n+1} = -1 则有公式:

θ=1wn+1=xn+1wn+1-\theta=-1\cdot w_{n+1}=x_{n+1}\cdot w_{n+1}

根据该式,进行代入,可将要求解的极小化问题进一步简化,需要注意的是,此时的 wxw和x 是已经扩充了一个维度的向量,而并非是原来的向量:

minwL(w)=minwxiM(y^iyi)wTxi\min_wL(\boldsymbol{w})=\min_w\sum_{\boldsymbol{x}_i\in M}(\hat{y}_i-y_i)\boldsymbol{w}^\mathrm{T}\boldsymbol{x}_i

感知机学习算法:当误分类样本集合 MM 固定时,那么可以求得损失函数 L(w)L(\boldsymbol{w}) 的梯度为(关于 ww 泰勒展开得到)

wL(w)=xiM(y^iyi)xi\nabla_{{\boldsymbol{w}}}L(\boldsymbol{w})=\sum_{{\boldsymbol{x}_{i}\in M}}(\hat{y}_{i}-y_{i})\boldsymbol{x}_{{\boldsymbol{i}}}

感知机的学习算法具体采用的是随机梯度下降法(随机选取部分或单个样本计算梯度),也就是极小化过程中不是一次使 MM 中所有误分类点的梯度下降,而是一次随机选取一个误分类点使其梯度下降。所以权重 ww 的更新公式为,其中 η\eta 为学习率。

wiwi+Δwi\boldsymbol{w_i}\leftarrow\boldsymbol{w_i}+\Delta\boldsymbol{w_i}
Δwi=η(y^iyi)xi=η(yiy^i)xi\Delta\boldsymbol{w_i}=-\eta(\hat{y}_i-y_i)\boldsymbol{x}_i=\eta(y_i-\hat{y}_i)\boldsymbol{x}_i

相应地,w\boldsymbol{w} 中的某个分量 wiw_i 的更新公式即为西瓜书公式(5.2),最终解出来的 ww 通常不唯一(画个图即可解释)。

image.png

2.5. 感知机缺点:

神经元分类能力有限,只能分类线性可分的数据集,无法分类线性不可分的数据集,如西瓜书上的异或问题。

3. 神经网络:

3.1. 基本定义:

神经网络由多个神经元构成的网络结构。简化的两层感知机如图所示: image.png 每层神经元与下一层神经元全互连,神经元之间不存在同层连接,也不存在跨层连接.这样的神经网络结构通常称为“多层前馈神经网络" ,一般的神经网络包含输入层,隐含层和输出层,其基本结构如图所示: image.png 根据通用近似定理:只需要一个包含足够多神经元的隐层,多层前馈网络就能以任意精度逼近任意复杂度的连续函数。神经网络即能做回归,也能作分类。

3.2. 多层前馈网络:

每层神经元与下一层神经元全互连,神经元之间不存在同层连接,也不存在跨层连接。 (隐层阈值 γh\gamma_h,输出层阈值 θj)\theta_j) 多输出

将神经网络(记为 NN)看作一个特征加工函数:xx 是一个 d 维的特征向量,经由神经网络进行处理和加工输出 yy,并且由 d 维转为了 l 维 xRdNN(x)y=xRl\boldsymbol{x}\in\mathbb{R}^d\to\mathrm{NN}(\boldsymbol{x})\to\boldsymbol{y}=\boldsymbol{x}^*\in\mathbb{R}^l 单输出:输出的 yy 只有一个值

  1. 回归:后面接一个 RlR\mathbb{R}^l\to\mathbb{R} (l 维)的神经元,例如:没有激活函数的神经元,损失函数一般使用均方误差来训练。
ynew=wTx+by_{new}=\boldsymbol{w}^\mathrm{T}\boldsymbol{x}^*+b

image.png

  1. 分类:后面接一个 Rl[0,1]\mathbb{R}^l\to[0,1] 的神经元,例如:激活函数为 sigmoid 函数的神经元,损失函数一般使用交叉熵进行训练。
y=11+e(wTx+b)y=\frac1{1+e^{-(\boldsymbol{w}^\mathrm{T}\boldsymbol{x}^*+b)}}

image.png

在模型训练过程中,神经网络(NN)自动学习提取有用的特征,因此,机器学习向“全自动数据分析”又前进了一步。

3.3. BP 推导:

假设多层前馈网络中的激活函数全为sigmoid函数,且当前要完成的任务为一个 (多输出)回归任务,因此损失函数可以采用均方误差(分类任务则用交叉熵)。对于某个训练样本 (xk,yk)(\boldsymbol{x}_k,\boldsymbol{y}_k),其中 yk=(y1k,y2k,,ylk)\boldsymbol{y}_k=\left(y_1^k,y_2^k,\ldots,y_l^k\right),假定其多层前馈网络的输出为 y^k=\hat{\boldsymbol{y}}_k= (y^1k,y^2k,,y^lk)\left(\hat{y}_1^k,\hat{y}_2^k,\ldots,\hat{y}_l^k\right),则该单个样本的均方误差(损失)为

Ek=12j=1l(y^jkyjk)2E_k=\frac12\sum_{j=1}^l\left(\hat{y}_j^k-y_j^k\right)^2

误差逆传播算法 (BP 算法):基于 [[#2.4. 感知机学习策略:|随机梯度下降法]] 的参数更新算法

ww+Δww\leftarrow w+\Delta w
Δw=ηwE\Delta w=-\eta\nabla_wE

其中 η\eta 为学习率。只需推导出 wE\nabla_wE 这个损失函数 EE 关于参数 ww 的一阶偏导数(梯度)即可(链式求导,补充矩阵向量求导)。值得一提的是,由于NN (x)(\boldsymbol{x}) 通常是极其复杂的非凸函数,不具备像凸函数这种良好的数学性质,因此随机梯度下降不能保证一定能走到全局最小值点,更多情况下走到的都是局部极小值点。

下面以输入层第 ii 个神经元与隐层第 hh 个神经元之间的连接权为例推导一下:(隐层阈值 γh\gamma_h,输出层阈值 θj)\theta_j)image.png

Ek=12j=1l(y^jkyjk)2,Δvih=ηEkvihEkvih=j=1lEky^jky^jkβjβjbhbhαhαhvih\begin{gathered} E_k=\frac12\sum_{j=1}^l\left(\hat{y}_j^k-y_j^k\right)^2, \Delta v_{ih}=-\eta\frac{\partial E_k}{\partial v_{ih}} \\ \frac{\partial E_k}{\partial v_{ih}}=\sum_{j=1}^l\frac{\partial E_k}{\partial\hat{y}_j^k}\cdot\frac{\partial\hat{y}_j^k}{\partial\beta_j}\cdot\frac{\partial\beta_j}{\partial b_h}\cdot\frac{\partial b_h}{\partial\alpha_h}\cdot\frac{\partial\alpha_h}{\partial v_{ih}} \end{gathered}

由图和公式即可推导其梯度变化量,由于是全连接的,因此需要求该输出的所有的相关的神经元的输入输出和。 链式求导推理公式(南瓜书第五章相应部分),其中每一个分量的取值,从图中的公式以及神经元的公式即可推出: 注意,后三步与 sigmoid 函数的性质 处处可导,且导数计算公式有关系

Ekvih=j=1lEky^jky^jkβjβjbhbhαhαhvih=j=1lEky^jky^jkβjβjbhbhαhxi=j=1lEky^jky^jkβjβjbhf(αhγh)xigj=Eky^jky^jkβj=(y^jkyjk)f(βjθj)=j=1lEky^jky^jkβjwhjf(αhγh)xi=y^jk(1y^jk)(yjky^jk)=j=1l(gj)whjf(αhγh)xi=f(αhγh)j=1lgjwhjxi=bh(1bh)j=1lgjwhjxi=ehxi\begin{aligned} &&\frac{\partial E_k}{\partial v_{ih}}& =\sum_{j=1}^l\frac{\partial E_k}{\partial\hat{y}_j^k}\cdot\frac{\partial\hat{y}_j^k}{\partial\beta_j}\cdot\frac{\partial\beta_j}{\partial b_h}\cdot\frac{\partial b_h}{\partial\alpha_h}\cdot\frac{\partial\alpha_h}{\partial v_{ih}} \\ &&&=\sum_{j=1}^l\frac{\partial E_k}{\partial\hat{y}_j^k}\cdot\frac{\partial\hat{y}_j^k}{\partial\beta_j}\cdot\frac{\partial\beta_j}{\partial b_h}\cdot\frac{\partial b_h}{\partial\alpha_h}\cdot x_i \\ &&&=\sum_{j=1}^l\frac{\partial E_k}{\partial\hat{y}_j^k}\cdot\frac{\partial\hat{y}_j^k}{\partial\beta_j}\cdot\frac{\partial\beta_j}{\partial b_h}\cdot f^{\prime}(\alpha_h-\gamma_h)\cdot x_i \\ g_{j}& =-\frac{\partial E_k}{\partial\hat{y}_j^k}\cdot\frac{\partial\hat{y}_j^k}{\partial\beta_j} =-\left(\hat{y}_j^k-y_j^k\right)f'\left(\beta_j-\theta_j\right) && =\sum_{j=1}^l\frac{\partial E_k}{\partial\hat{y}_j^k}\cdot\frac{\partial\hat{y}_j^k}{\partial\beta_j}\cdot w_{hj}\cdot f'(\alpha_h-\gamma_h)\cdot x_i \\ &=\hat{y}_j^k\left(1-\hat{y}_j^k\right)\left(y_j^k-\hat{y}_j^k\right)&& =\sum_{j=1}^l(-g_j)\cdot w_{hj}\cdot f'(\alpha_h-\gamma_h)\cdot x_i \\ &&&=-f'(\alpha_h-\gamma_h)\cdot\sum_{j=1}^lg_j\cdot w_{hj}\cdot x_i \\ &&&=-b_h(1-b_h)\cdot\sum_{j=1}^lg_j\cdot w_{hj}\cdot x_i \\ &&&=-e_h\cdot x_i \end{aligned}
eh=bh(1bh)j=1lgjwhje_h = b_h(1-b_h)\cdot\sum_{j=1}^lg_j\cdot w_{hj}