M‑P神经元(一个用来模拟生物行为的数学模型):接收n个输入(通常是来自其他神经元),并给各个输入赋予权重计算加权和,然后和自身特有的阈值 进行比较(作减法),最后经过激活函数(模拟“抑制”和“激活”)处理得到输出(通常是给下一个神经元)
y = f ( ∑ i = 1 n w i x i − θ ) = f ( w T x + b ) y=f\left(\sum_{i=1}^{n} w_{i} x_{i}-\theta\right)=f\left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}+b\right) y=f(i=1∑nwixi−θ)=f(wTx+b)
单个M‑P神经元:感知机( sgn \operatorname{sgn} sgn 作激活函数,阶跃函数小于0取0,大于零取1)、对数几率回归( sigmoid \operatorname{sigmoid} sigmoid作激活函数)多个M‑P神经元:神经网络
感知机模型(二分类判断0,1样本):激活函数为 sgn \operatorname{sgn} sgn (阶跃函数)的神经元
y = sgn ( w T x − θ ) = { 1 , w T x − θ ⩾ 0 0 , w T x − θ < 0 y=\operatorname{sgn}\left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}-\theta\right)= \begin{cases}1, & \boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}-\theta \geqslant 0 \\ 0, & \boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}-\theta<0\end{cases} y=sgn(wTx−θ)={1,0,wTx−θ⩾0wTx−θ<0
其中, x ∈ R n \boldsymbol{x} \in \mathbb{R}^{n} x∈Rn 为样本的特征向量,是感知机模型的输入, w , θ \boldsymbol{w}, \theta w,θ 是感知机模型的参数, w \boldsymbol{w} w 为权重, θ \theta θ 为阈值。
超平面:对于一维空间超平面就是点,二维空间是一条线,三维空间是一个面
给定一个线性可分(就是在二维空间可以找到一条线把正负样本分开)的数据集 T T T ,感知机的学习目标是求得能对数据集 T T T 中的正负样本完全正确划分的超平面,其中 w T x − θ \boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}-\theta wTx−θ 即为超平面方程。
将全体训练样本代入模型找出误分类样本,误分类样本集合为 M M M ,对任意一个误分类样本 ( x , y ) (x, y) (x,y) 来说
当 w T x − θ ⩾ 0 \boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}-\theta\geqslant0 wTx−θ⩾0 时,模型输出值为 y ^ = 1 \hat{y}=1 y^=1 ,样本真实标记为 y = 0 y=0 y=0
当 w T x − θ < 0 \boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}-\theta<0 wTx−θ<0 时,模型输出值为 y ^ = 0 \hat{y}=0 y^=0 ,样本真实标记为 y = 1 y=1 y=1
综合两种情形可知,以下公式恒成立
( y ^ − y ) ( w T x − θ ) ≥ 0 (\hat{y}-y)\left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}-\theta\right) \geq 0 (y^−y)(wTx−θ)≥0
损失函数为
L ( w , θ ) = ∑ x ∈ M ( y ^ − y ) ( w T x − θ ) L(\boldsymbol{w}, \theta)=\sum_{\boldsymbol{x} \in M}(\hat{y}-y)\left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}-\theta\right) L(w,θ)=x∈M∑(y^−y)(wTx−θ)
显然,此损失函数是非负的。如果没有误分类点,损失函数值是0。而且,误分类点越少,误分类点离超平面越近,损失函数值就越小。
具体地,给定数据集
T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x N , y N ) } T=\left\{\left(\boldsymbol{x}_{1}, y_{1}\right),\left(\boldsymbol{x}_{2}, y_{2}\right), \ldots,\left(\boldsymbol{x}_{N}, y_{N}\right)\right\} T={(x1,y1),(x2,y2),…,(xN,yN)}
求参数 w , θ \boldsymbol{w}, \theta w,θ ,使其为极小化损失函数的解:
min w , θ L ( w , θ ) = min w , θ ∑ x i ∈ M ( y ^ i − y i ) ( w T x i − θ ) \min _{\boldsymbol{w}, \theta} L(\boldsymbol{w}, \theta)=\min _{\boldsymbol{w}, \theta} \sum_{\boldsymbol{x}_{i} \in M}\left(\hat{y}_{i}-y_{i}\right)\left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}-\theta\right) w,θminL(w,θ)=w,θminxi∈M∑(y^i−yi)(wTxi−θ)
若将阈值 看作一个固定输入为 -1 \operatorname{-1} -1 的“哑节点”,即
− θ = − 1 ⋅ w n + 1 = x n + 1 ⋅ w n + 1 -\theta=-1 \cdot w_{n+1}=x_{n+1} \cdot w_{n+1} −θ=−1⋅wn+1=xn+1⋅wn+1
根据该式,可将要求解的极小化问题进一步简化为
min w L ( w ) = min w ∑ x i ∈ M ( y ^ i − y i ) w T x i \min _{\boldsymbol{w}} L(\boldsymbol{w})=\min _{\boldsymbol{w}} \sum_{\boldsymbol{x}_{i} \in M}\left(\hat{y}_{i}-y_{i}\right) \boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i} wminL(w)=wminxi∈M∑(y^i−yi)wTxi
损失函数的梯度为
∇ w L ( w ) = ∑ x i ∈ M ( y ^ i − y i ) x i \nabla_{\boldsymbol{w}} L(\boldsymbol{w})=\sum_{\boldsymbol{x}_{i} \in M}\left(\hat{y}_{i}-y_{i}\right) \boldsymbol{x}_{i} ∇wL(w)=xi∈M∑(y^i−yi)xi
感知机的学习算法采用的是随机梯度下降法,随机从 M M M 选取一个误分类点使其梯度下降
权重 w w w 的更新公式为
w ← w + Δ w Δ w = − η ( y ^ i − y i ) x i = η ( y i − y ^ i ) x i \begin{gathered} \boldsymbol{w} \leftarrow \boldsymbol{w}+\Delta \boldsymbol{w} \\ \Delta \boldsymbol{w}=-\eta\left(\hat{y}_{i}-y_{i}\right) \boldsymbol{x}_{i}=\eta\left(y_{i}-\hat{y}_{i}\right) \boldsymbol{x}_{i} \end{gathered} w←w+ΔwΔw=−η(y^i−yi)xi=η(yi−y^i)xi
通常解出来的最小值不唯一, w w w 也不唯一
由于像感知机这种单个神经元分类能力有限,只能分类线性可分的数据集,对于线性不可分的数据集则无能为力,但是多个神经元构成的神经网络能够分类线性不可分的数据集。
通用近似定理:只需一个包含足够多神经元的隐层,多层前馈网络(最经典的神经网络之一)就能以任意精度逼近任意复杂度的连续函数。因此,神经网络既能做回归,也能做分类,而且不需要复杂的特征工程。
多层前馈网络:每层神经元与下一层神经元全互连,神经元之间不存在同层连接,也不存在跨层连接。(隐层阈值 γ h \gamma_{h} γh ,输出层阈值 θ j \theta_j θj)
将神经网络(记为 N N \mathrm{NN} NN)看作一个特征加工函数,将 x \boldsymbol{x} x 由 n n n 维转化为 l l l 维
x ∈ R d → N N ( x ) → y = x ∗ ∈ R l \boldsymbol{x} \in \mathbb{R}^{d} \rightarrow \mathrm{NN}(\boldsymbol{x}) \rightarrow \boldsymbol{y}=\boldsymbol{x}^{*} \in \mathbb{R}^{l} x∈Rd→NN(x)→y=x∗∈Rl
y = w T x ∗ + b y=\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}^{*}+b y=wTx∗+b
y = 1 1 + e − ( w T x ∗ + b ) y=\frac{1}{1+e^{-\left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}^{*}+b\right)}} y=1+e−(wTx∗+b)1
假设多层前馈网络中的激活函数全为 sigmoid \operatorname{sigmoid} sigmoid 函数,且当前要完成的任务为一个(多输出)回归任务,因此损失函数可以采用均方误差(分类任务则用交叉熵)。对于某个训练样本 ( x k , y k ) \left(\boldsymbol{x}_{k}, \boldsymbol{y}_{k}\right) (xk,yk) ,其中 y k = ( y 1 k , y 2 k , … , y l k ) \boldsymbol{y}_{k}=\left(y_{1}^{k}, y_{2}^{k}, \ldots, y_{l}^{k}\right) yk=(y1k,y2k,…,ylk) ,假定其多层前馈网络的输出为 y ^ k = ( y 1 k , y 2 k , … , y l k ) \boldsymbol{\hat{y}_{k}}=\left(y_{1}^{k}, y_{2}^{k}, \ldots, y_{l}^{k}\right) y^k=(y1k,y2k,…,ylk) ,则该单个样本的均方误差(损失)为
E k = 1 2 ∑ j = 1 l ( y ^ j k − y j k ) 2 E_{k}=\frac{1}{2} \sum_{j=1}^{l}\left(\hat{y}_{j}^{k}-y_{j}^{k}\right)^{2} Ek=21j=1∑l(y^jk−yjk)2
误差逆传播算法(BP算法):基于随机梯度下降的参数更新算法
w ← w + Δ w Δ w = − η ∇ w E \begin{gathered} w \leftarrow w+\Delta w \\ \Delta w=-\eta \nabla_{w} E \end{gathered} w←w+ΔwΔw=−η∇wE
其中只需推导出 ∇ w E \nabla_{w} E ∇wE 这个损失函数 E E E 关于参数的一阶偏导数(梯度)即可(链式求
导)