文章目录
1. 线性分类与感知机模型
1.1线性回归
问题:回归函数:
y
=
θ
T
x
y=\pmb{\theta}^{T}\pmb{x}
y=θTx
假设给定样本
(
x
(
i
)
,
y
(
i
)
)
(\pmb{x}^{(i)},y^{(i)})
(x(i),y(i))
构造损失函数
J
(
θ
)
=
1
2
∑
i
=
1
m
(
y
(
i
)
−
h
θ
(
x
)
)
2
J(\pmb{\theta})=\frac{1}{2}\sum_{i=1}^{m}(y^{(i)}-h_{\pmb{\theta}}(\pmb{x}))^{2}
J(θ)=21∑i=1m(y(i)−hθ(x))2
求解
min
θ
J
(
θ
)
\min\limits_{\pmb{\theta}}J(\pmb{\theta})
θminJ(θ)
求解方法:
∂
J
(
θ
)
∂
θ
=
0
\frac{\partial{J(\pmb{\theta})}}{\partial{\pmb{\theta}}}=0
∂θ∂J(θ)=0
可得:
θ
=
(
X
T
X
)
−
1
X
T
y
\pmb{\theta}=(\pmb{X^T}\pmb{X})^{-1}\pmb{X^T}\pmb{y}
θ=(XTX)−1XTy
1.2线性二分类
问题:二分类函数:
h
θ
(
x
(
i
)
)
=
1
1
+
e
−
θ
T
x
(
i
)
h_{\theta}(x^{(i)})=\frac{1}{1+e^{-\theta^{T}x(i)}}
hθ(x(i))=1+e−θTx(i)1
假设给定样本
(
x
(
i
)
,
y
(
i
)
)
(\pmb{x}^{(i)},y^{(i)})
(x(i),y(i)),
y
(
i
)
y(i)
y(i)为0或1
损失函数:
J
(
θ
)
=
1
2
∑
i
=
1
m
(
y
(
i
)
−
h
θ
(
x
)
)
2
J(\pmb{\theta})=\frac{1}{2}\sum_{i=1}^{m}(y^{(i)}-h_{\pmb{\theta}}(\pmb{x}))^{2}
J(θ)=21∑i=1m(y(i)−hθ(x))2
求解
min
θ
J
(
θ
)
\min\limits_{\pmb{\theta}}J(\pmb{\theta})
θminJ(θ)
求解方法:迭代法让
θ
\theta
θ迭代趋向使得损失函数最小的
θ
\theta
θ,迭代格式:
θ
k
+
1
=
θ
k
+
Δ
θ
k
Δ
θ
k
=
−
α
∇
θ
J
\theta_{k+1}=\theta_{k}+\Delta{\theta_{k}} \\ \Delta{\theta_{k}}=-\alpha{\nabla_{\theta}J}
θk+1=θk+ΔθkΔθk=−α∇θJ
1.3对数回归与多分类
对于二分类问题,根据条件概率,依据要让所有样本事件产生的机率最大,修改损失函数为:
对应梯度:
对于k分类问题,取代价函数:
可简写为:
称为交叉熵损失。
对应梯度:
1.4神经元模型
Spiking模型:
Integrate-and-fire模型:
M-P模型:
人工神经元:
激活函数
f
(
x
)
f(x)
f(x)包含非对称型Sigmoid,对称型Sigmoid,对称型阶跃函数等。
科学家提出的模型认为动物神经元连接权值的调整量与输入输出的乘积成正比,即:
Δ
w
=
α
⋅
x
⋅
y
\Delta{w}=\alpha·x·y
Δw=α⋅x⋅y(Hebb规则)
1.4 感知机模型
对于二分类问题,感知机从输入到输出的模型为:
y
=
f
(
x
)
=
s
i
g
n
(
w
T
x
)
y=f(x)=sign(\pmb w^T\pmb x)
y=f(x)=sign(wTx)
定义损失函数为:
L
(
w
∗
)
=
−
1
∥
w
∥
∑
y
(
i
)
w
T
x
(
i
)
L(\pmb w^*)=-\frac{1}{\Vert{w}\Vert}\sum y^{(i)}\pmb w^T\pmb x^{(i)}
L(w∗)=−∥w∥1∑y(i)wTx(i)
需要找到能使损失函数最小的超平面参数
w
∗
\pmb w^*
w∗
超平面参数更新算法:
2.多层前馈网络与误差反传算法
2.1 多层感知机
用于解决无法进行线性分类的问题,对于多层感知机有如下定理:
2.2 多层前馈网络及BP(反向传播)算法
多层前馈神经网络训练的目的是对于每一个输入样本调整网络参数使得输出均方误差最小化,损失函数选取为:
J
(
x
(
i
)
;
w
)
=
1
2
(
y
(
i
)
−
y
^
(
i
)
(
x
;
w
)
)
2
=
1
2
(
a
(
i
)
−
y
(
i
)
(
x
;
w
)
)
2
J(x^{(i)};w)=\frac{1}{2}(y^{(i)}-\hat{y}^{(i)}(x;w))^2=\frac{1}{2}(a^{(i)}-y^{(i)}(x;w))^2
J(x(i);w)=21(y(i)−y^(i)(x;w))2=21(a(i)−y(i)(x;w))2
迭代求更新网络权值的算法:梯度下降
BP神经网络更新权值的基本步骤:
前向传播:无需多言,就是从输入x计算输出y的过程。
误差反传:误差反串的步骤如下:
对于二分类问题,BP算法的损失函数可以设为交叉熵函数:
对应的:
BP神经网络可以通过在损失函数加入正则项防止过拟合:
对应的:
3.性能优化
3.1动量法
由于在梯度下降过程中中存在病态曲率的问题。如下图:
考虑在脊的表面上的一个点梯度。该点的梯度可以分解为两个分量,一个沿着方向w1,另一个沿着w2。梯度在w1方向上的分量要大得多,因此梯度的方向更靠近w1,而不是朝向w2(最小值位于其上)。通常情况下,我们使用低学习率来应对这样的反复振荡,但在病态曲率区域使用低学习率,可能要花很多时间才能达到最小值处。
动态曲率的其中一种解决方法为动量法,动量法的参数更新公式为:
v
t
=
α
v
t
−
1
−
ϵ
g
t
Δ
θ
←
v
t
θ
t
+
1
←
θ
t
+
Δ
θ
v_t=\alpha v_{t-1}-\epsilon g_t\\ \Delta\theta\gets v_t\\ \theta_{t+1} \gets\theta_{t}+\Delta\theta
vt=αvt−1−ϵgtΔθ←vtθt+1←θt+Δθ
3.2自适应梯度算法
AdaGrad算法:
RMSProp算法:
Adam算法:
3.3 性能优化问题描述
权值
w
\pmb w
w取何值,指标函数
J
(
w
)
J(w)
J(w)最小?恰恰是最优化方法中的基本问题:函数最小化。进一步,我们希望建立迭代形式,并且形式尽量简单,类似基本BP算法(最速梯度法):
w
k
+
1
=
w
k
+
α
k
p
k
w_{k+1}=w_{k}+\alpha_kp_k
wk+1=wk+αkpk如何选取
w
k
,
α
k
p
k
w_{k},\alpha_kp_k
wk,αkpk构成优化核心内容。
基本思想:
考虑函数
f
(
x
)
f(\pmb{x})
f(x)在某点
x
∗
\pmb{x}^*
x∗上的Taylar展开:
对于全局极小值点,局部极小值点,有如下两条特征:
1.一阶条件:必要条件
∇
f
(
x
∗
)
=
0
\nabla{f(x^*)=0}
∇f(x∗)=0驻点
2.二阶条件:充分条件H半正定
鞍点指的式沿某方向是极大值点,沿另一方向是极小值点的点。
3.4二阶算法
1.牛顿法:
2.高斯-牛顿法
3.Levenberg-Marquardt算法
3.5常用技巧
-
训练数据与测试数据
训练数据,验证数据,测试数据,通常三者比例为70%, 15%, 15%或60, 20, 20当数据很多时,训练和验证数据可适当减少。 -
𝐾折交叉验证
原始训练数据被分成 K 个不重叠的子集。 然后执行 K 次模型训练和验证,每次在 K-1 个子集上进行训练, 并在剩余的一个子集(在该轮中没有用于训练的子集)上进行验证。 最后,通过对 K 次实验的结果取平均来估计训练和验证误差。 -
权重衰减
欠拟合:误差一直比较大
过拟合:在训练数据集上误差小而在测试数据集上误差大
为防止过拟合和权值震荡,加入新的指标函数项:
第二项约束了权值不能过大。在梯度下降时,导数容易计算:
-
Dropout
在整个训练过程的每一次迭代中,标准暂退法包括在计算下一层之前将当前层中的一些节点置零。 -
模型初始化
简单的考虑,把所有权值在[-1,1]区间内按均值或高斯分布进行初始化。Xavier初始化:为了使得网络中信息更好的流动,每一层输出的方差应该尽量相等。因此需要实现下面的均匀分布: