task04
M-P神经元
-
M-P神经元(用来模拟生物行为的数学模型),最后通过激活函数(“抑制“:j减 θ \theta θ大于0,”激活”:减 θ \theta θ小于0)
y = f ( ∑ i − 1 n w i x i − θ ) = f ( w T x + b ) y=f(\sum_{i-1}^nw_ix_i-\theta)=f(w^Tx+b) y=f(i−1∑nwixi−θ)=f(wTx+b) -
单个M-P神经元:感知机(sgn激活函数),对数几率回归(sigmoid激活函数)
-
多个M-P神经元:神经网络
感知机
-
激活函数sgn(阶跃函数)的神经元 θ \theta θ是感知模型的参数,阈值, w w w是权重
y = s g n ( w T x − θ ) = { 1 , w T x − θ ⩾ 0 0 , w T x − θ < 0 y=sgn(w^Tx-\theta)= \left\{\begin{matrix} 1 ,w^Tx-\theta\geqslant 0 \\ 0 ,w^Tx-\theta\lt0 \end{matrix}\right. y=sgn(wTx−θ)={1,wTx−θ⩾00,wTx−θ<0 -
从集合角度,给定一个线性可分的数据集T,感知机的学习目标是求得能对数据集T的正负样本完全正确划分的超平面,其中 w T x − θ = 0 w^Tx-\theta=0 wTx−θ=0即为超平面方程
-
n维超平面:
- 方程不唯一
- 法向量 w w w垂直于超平面
- 法向量 w w w和位移b确定一个唯一超平面
- 法向量 w w w指向的那一半空间为征空间,另一半为负空间
-
学习策略: 随机初始化 w , b \boldsymbol{w},b w,b,将全体训练样本带入模型找出误分类样本,假设误分类样本集合为 M ⊆ T M\subseteq T M⊆T,两种情况:
-
w T x − θ ⩾ 0 w^Tx-\theta\geqslant 0 wTx−θ⩾0,样本模型输出值为 y ^ = 1 \hat{y}=1 y^=1,样本真实标记为y=0
-
w T x − θ < 0 w^Tx-\theta\lt 0 wTx−θ<0,样本模型输出值为 y ^ = 0 \hat{y}=0 y^=0,样本真实标记为y=1
-
综合两种情形,以下公式恒成立
( y ^ − y ) ( w T − θ ) ⩾ 0 所以,给定数据集 T ,其损失函数可以定义为: L ( w , θ ) = ∑ x ∈ M ( y ^ − y ) ( w T x − θ ) 显然此损失函数是非负,如果没有误分类点,损失函数值是 0 ,而且,误分类点越少,误分类点离超平面越近,损失函数值越小 (\hat{y}-y)(\boldsymbol{w}^T-\theta)\geqslant0\\ 所以,给定数据集T,其损失函数可以定义为:\\ L(\boldsymbol{w},\theta)=\sum_{x\in M}(\hat{y}-y)(\boldsymbol{w}^Tx-\theta)\\ 显然此损失函数是非负,如果没有误分类点,损失函数值是0,而且,误分类点越少,误分类点离超平面越近,损失函数值越小 (y^−y)(wT−θ)⩾0所以,给定数据集T,其损失函数可以定义为:L(w,θ)=x∈M∑(y^−y)(wTx−θ)显然此损失函数是非负,如果没有误分类点,损失函数值是0,而且,误分类点越少,误分类点离超平面越近,损失函数值越小
-
-
怎么让损失函数变小
- 给定数据集
T
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
.
.
.
,
(
x
N
,
y
N
)
}
T=\{(\boldsymbol{x_1},y_1),(\boldsymbol{x_2},y_2),......,(\boldsymbol{x_N},y_N)\}
T={(x1,y1),(x2,y2),......,(xN,yN)}其中
x
i
∈
R
n
,
y
i
∈
{
0
,
1
}
\boldsymbol{x_i}\in R^n,y_i\in \{0,1\}
xi∈Rn,yi∈{0,1},求参数
w
,
θ
\boldsymbol{w},\theta
w,θ,使其为极小化损失函数的解:
min w , θ L ( w , θ ) = min w , θ ∑ x i ∈ M ( y ^ i − y i ) ( w T x i − θ ) \min\limits_{\boldsymbol{w},\theta} {L(\boldsymbol{w},\theta})=\min\limits_{\boldsymbol{w},\theta} \sum_{\boldsymbol{x_i}\in M}(\hat{y}_i-y_i)(\boldsymbol{w}^T \boldsymbol{x_i}-\theta) w,θminL(w,θ)=w,θminxi∈M∑(y^i−yi)(wTxi−θ)
其中 M ⊆ T M\subseteq T M⊆T为误分类样本集合,若将阈值 θ \theta θ看作固定输出为-1的哑节点,即 − θ = − 1. w n + 1 = x n + 1 . w n + 1 -\theta=-1.w_{n+1}=x_{n+1}.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\limits_{\boldsymbol{w}} {L(\boldsymbol{w}})=\min\limits_{\boldsymbol{w}} \sum_{\boldsymbol{x_i}\in M}(\hat{y}_i-y_i)(\boldsymbol{w}^T \boldsymbol{x_i}) wminL(w)=wminxi∈M∑(y^i−yi)(wTxi)
- 给定数据集
T
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
.
.
.
,
(
x
N
,
y
N
)
}
T=\{(\boldsymbol{x_1},y_1),(\boldsymbol{x_2},y_2),......,(\boldsymbol{x_N},y_N)\}
T={(x1,y1),(x2,y2),......,(xN,yN)}其中
x
i
∈
R
n
,
y
i
∈
{
0
,
1
}
\boldsymbol{x_i}\in R^n,y_i\in \{0,1\}
xi∈Rn,yi∈{0,1},求参数
w
,
θ
\boldsymbol{w},\theta
w,θ,使其为极小化损失函数的解:
-
感知学习算法:当误分类样本集合M固定时,那么可以求得损失函数L(w)的梯度为
▽ w L ( w ) = ∑ x i ∈ M ( y i ^ − y i ) x i \bigtriangledown_wL(\boldsymbol{w})=\sum_{x_i\in M}(\hat{y_i}-y_i)\boldsymbol{x_i} ▽wL(w)=xi∈M∑(yi^−yi)xi
感知机学习算法采用梯度下降,就是极小化过程中不是一次使M中所有的误分类点的梯度下降,而是一次随机选取一个误分类点使其梯度下降。所以权重 w的更新公式为
w ← w + Δ w Δ w = − η ( y ^ − y i ) x i = η ( y i − y ^ i ) x i η : 学习率 \boldsymbol{w}\gets \boldsymbol{w} +\Delta \boldsymbol{w}\\ \Delta \boldsymbol{w}=-\eta(\hat{y}-y_i)\boldsymbol{x_i}=\eta(y_i-\hat{y}_i)\boldsymbol{x_i}\\ \eta :学习率 w←w+ΔwΔw=−η(y^−yi)xi=η(yi−y^i)xiη:学习率
相应的, w \boldsymbol{w} w中的某个分量 w i w_i wi的更新公式为西瓜书公式(5.2),最终解出来的 w \boldsymbol{w} w通常不唯一
神经网络
-
单个神经元分类能力有限,只能分类线性可分的数据集,对于线性不可分的数据集无法,多神经元诞生,神经网络机能做回归,也能做分类,而且不需要复杂的特征工程
-
只要有包含足够多的神经元隐层,神经网络是以任意精度逼近任意复杂度的一个连续函数,决定模型上限的就是数据
-
CNN:卷积神经网络:处理图像优越
-
RNN:循环神经网络,文本处理优越
-
多层前馈网络:同层不连接,跨层连接
-
与下一层神经元全互连(隐层阈值 γ h \gamma_h γh,输出层阈值 θ j \theta_j θj),x是d维的特征向量( x ∈ R d ) x\in R^d) x∈Rd)
-
-
神经网络NN看作一个特征加工函数
x ∈ R d → N N ( x ) → y = x ∗ ∈ R l 单输出线性回归:后面接一个 R l → R 的神经元,例如没有激活函数的神经元 y = w T x ∗ + b 分类:后面接一个 R l → [ 0 , 1 ] 的神经元,例如:激活函数为 s i g m o i d 函数的神经元 y = 1 1 + e − ( w T x ∗ + b ) 在模型训练过程中,神经网络 N N 自动学习提取有用的特征,因此,机器学习项“全自动数据分析又进了一步 x\in R^d \to NN(\boldsymbol{x}) \to \boldsymbol{y=x^* \in R^l}\\ 单输出线性回归:后面接一个R^l \to R的神经元,例如没有激活函数的神经元\\ y=\boldsymbol{w^Tx^*}+b\\ 分类:后面接一个R^l \to [0,1]的神经元,例如:激活函数为sigmoid函数的神经元\\ y=\frac{1}{1+e^{-(\boldsymbol{w^Tx^*}+b)}}\\ 在模型训练过程中,神经网络NN自动学习提取有用的特征,因此,机器学习项“全自动数据分析又进了一步 x∈Rd→NN(x)→y=x∗∈Rl单输出线性回归:后面接一个Rl→R的神经元,例如没有激活函数的神经元y=wTx∗+b分类:后面接一个Rl→[0,1]的神经元,例如:激活函数为sigmoid函数的神经元y=1+e−(wTx∗+b)1在模型训练过程中,神经网络NN自动学习提取有用的特征,因此,机器学习项“全自动数据分析又进了一步 -
假设多层前馈网络中的激活函数全是sigmoid函数,且当前要完成的任务为一个(多输出)回归任务,因此损失函数可以采用均方差(分类任务则用交叉熵)。对于某个训练样本 x k , y k \boldsymbol{x_k,y_k} xk,yk,则单个样本的均方误差(损失)为
E k = 1 2 ∑ j = 1 l ( y ^ j k − y j k ) 2 E_k=\frac{1}{2}\sum_{j=1}^l(\hat{y}_j^k-y_j^k)^2 Ek=21j=1∑l(y^jk−yjk)2 -
误差逆传播算法(BP):基于随机梯度下降的参数更新算法
w ← w + Δ w Δ w = − η ▽ w E η : 超参数,自己设置 其中只需要推导出 ▽ w E 这个损失函数 E 关于参数 w 的一阶偏导数(梯度)即可(链式求导)。 由于 N N ( x ) 通常是及其复杂的非凸函数,不具备像凸函数这种良好的数学性质 因此随机梯度下降不能保证一定能走到全局最小值点,更多情况走到的都是局部极小值点 \boldsymbol{w}\gets \boldsymbol{w} +\Delta \boldsymbol{w}\\ \Delta \boldsymbol{w}=-\eta \bigtriangledown_wE\\ \eta :超参数,自己设置\\其中只需要推导出\bigtriangledown_wE这个损失函数E关于参数w的一阶偏导数(梯度)即可(链式求导)。\\ 由于NN(x)通常是及其复杂的非凸函数,不具备像凸函数这种良好的数学性质\\因此随机梯度下降不能保证一定能走到全局最小值点,更多情况走到的都是局部极小值点 w←w+ΔwΔw=−η▽wEη:超参数,自己设置其中只需要推导出▽wE这个损失函数E关于参数w的一阶偏导数(梯度)即可(链式求导)。由于NN(x)通常是及其复杂的非凸函数,不具备像凸函数这种良好的数学性质因此随机梯度下降不能保证一定能走到全局最小值点,更多情况走到的都是局部极小值点