5.1 M-P神经元
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神经元:神经网络
5.2 感知机
- 从代数角度
感知机模型(二分类判断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−θ 即为超平面方程。
5.2.1感知机学习策略
将全体训练样本代入模型找出误分类样本,误分类样本集合为 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
5.2.2感知机学习算法
损失函数的梯度为
∇
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 也不唯一
5.3 神经网络
由于像感知机这种单个神经元分类能力有限,只能分类线性可分的数据集,对于线性不可分的数据集则无能为力,但是多个神经元构成的神经网络能够分类线性不可分的数据集。
通用近似定理:只需一个包含足够多神经元的隐层,多层前馈网络(最经典的神经网络之一)就能以任意精度逼近任意复杂度的连续函数。因此,神经网络既能做回归,也能做分类,而且不需要复杂的特征工程。
5.3.1 多层前馈网络
多层前馈网络:每层神经元与下一层神经元全互连,神经元之间不存在同层连接,也不存在跨层连接。(隐层阈值 γ 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
- (单输出)线性回归: N N \mathrm{NN} NN 后面接一个 R l → R \mathbb{R}^{l} \rightarrow \mathbb{R} Rl→R 的神经元,例如:没有激活函数的神经元
y = w T x ∗ + b y=\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}^{*}+b y=wTx∗+b
- 分类:后面接一个 R l → [ 0 , 1 ] \mathbb{R}^{l} \rightarrow[0,1] Rl→[0,1] 的神经元,例如:激活函数为 sigmoid \operatorname{sigmoid} sigmoid 函数的神经元
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 关于参数的一阶偏导数(梯度)即可(链式求
导)