Update 第二章_机器学习基础.md

This commit is contained in:
Quankai Gao 2020-07-20 20:06:21 +08:00 committed by GitHub
parent d6af513c9e
commit 38e56855d2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 63 additions and 0 deletions

View File

@ -900,6 +900,69 @@ BGD、SGD、Mini-batch GD前面均已讨论过这里介绍一下Online GD
Online GD在互联网领域用的较多比如搜索广告的点击率CTR预估模型网民的点击行为会随着时间改变。用普通的BGD算法每天更新一次一方面耗时较长需要对所有历史数据重新训练另一方面无法及时反馈用户的点击行为迁移。而Online GD算法可以实时的依据网民的点击行为进行迁移。 Online GD在互联网领域用的较多比如搜索广告的点击率CTR预估模型网民的点击行为会随着时间改变。用普通的BGD算法每天更新一次一方面耗时较长需要对所有历史数据重新训练另一方面无法及时反馈用户的点击行为迁移。而Online GD算法可以实时的依据网民的点击行为进行迁移。
## 2.13 自然梯度法
**(贡献者:郜泉凯-华南理工大学)**
### 2.13.1 为什么我们需要自然梯度
传统的梯度下降方法是在欧氏空间进行、并与时序过程结合的优化方法,但这样的更新过程无法度量由于参数变化引起的概率属性的变化(这一点也可以认为是传统梯度下降方法的缺点)。在如强化学习等很多应用领域关注模型输出的概率分布,优化过程常常需要在一定概率属性的约束下完成,这就需要自然梯度。
### 2.12.2 如何定义自然梯度
若度量模型参数变化引起的概率分布变化常用的“距离”度量是KL散度Kullback-Leibler divergence。设模型概率分布为$p(x;\theta)$其与参数变动后的概率分布间的KL散度为
$$
D_{KL}(p(x;\theta)||p(x;\theta+\delta\theta))=\int p(x;\theta)log\frac {p(x;\theta)}{p(x;\theta+\delta\theta)}dx
$$
我们令$f(\theta+\delta\theta)=log p(x;\theta+\delta\theta)$,做泰勒展开取二阶近似(忽略高阶余项)得到:
$$
f(\theta+\delta\theta)\approx f(\theta)+\delta\theta^T\frac{\partial f(\theta)}{\partial\theta}+\frac{1}{2}\delta\theta^T\frac{\partial f(\theta)}{\partial\theta}\frac{\partial f(\theta)^T}{\partial\theta}\delta\theta
$$
带入到$D_{KL}(p(x;\theta)||p(x;\theta+\delta\theta))$中可得到:
$$
\begin{eqnarray}
D_{KL}(p(x;\theta)||p(x;\theta+\delta\theta))&=&\int p(x;\theta)(f(\theta)-f(\theta+\delta\theta))dx\\
&=&-\int p(x;\theta)(\delta\theta^T\frac{\partial f(\theta)}{\partial\theta}+\frac{1}{2}\delta\theta^T\frac{\partial f(\theta)}{\partial\theta}\frac{\partial f(\theta)^T}{\partial\theta}\delta\theta)dx\\
&=&-\delta\theta^T\int p(x;\theta)\frac{\partial logp(x;\theta)}{\partial\theta}dx\\
&-&\frac{1}{2}\delta\theta^T\int p(x;\theta)\frac{\partial f(\theta)}{\partial\theta}\frac{\partial f(\theta)^T}{\partial\theta}dx\delta\theta\\
&=&-\delta\theta^T\int p(x;\theta)\frac{\frac{\partial p(x;\theta)}{\partial\theta}}{p(x;\theta)}dx-\frac{1}{2}\delta\theta^TG\delta\theta\\
&=&-\frac{1}{2}\delta\theta^TG\delta\theta
\end{eqnarray}
$$
我们记在KL散度意义下的参数增量为$\delta\theta_G$,接下来我们寻求在$||\delta\theta_G||^2=\epsilon$约束下$\delta\theta_G$的方向,使得目标函数$J(\theta)$下降最快,即$J(\theta+\delta\theta)-J(\theta)$最大。应用拉格朗日乘子法:
$$
\max_{\delta\theta}J(\theta+\delta\theta)-J(\theta)-\lambda(||\delta\theta_G||^2-\epsilon)
$$
应用一阶泰勒展开等价于:
$$
\max_{\delta\theta}\nabla \delta\theta^T J(\theta)-\frac{1}{2}\lambda\delta\theta^TG\delta\theta
$$
对$\delta\theta$求导得$\nabla J(\theta)-\lambda G\delta\theta=0$,即$\delta\theta=\frac{1}{\lambda}G^{-1}\nabla J(\theta)$,其中$G^{-1}\nabla J(\theta)$称为自然梯度,相应的自然梯度下降公式为$\theta_{k+1}=\theta_k-\alpha_kG^{-1}(\theta_k)\nabla J(\theta_K)$。
### 2.12.3 Fisher信息矩阵的意义
首先我们对一个模型进行建模,成为以$\theta$为参数的概率分布$p(x;\theta)$。为求出一个合理的$\theta$我们需要一个评分函数score function$s(\theta)=\nabla_{\theta}logp(x;\theta)$意为对数似然的梯度当分数为0时对数似然梯度为0对数似然达到极值。对评分函数求关于$p(x;\theta)$数学期望$p_E$不难发现期望为0。接下来求估计误差的界我们用评分函数的方差来确定即$E_{p(x;\theta)}[(s(\theta)-p_E)(s(\theta-p_E)^T)]$。带入评分函数的数学表达形式则等价于Fisher信息矩阵$G(\theta)=\int p(x;\theta)\frac{\partial f(\theta)}{\partial\theta}\frac{\partial f(\theta)^T}{\partial\theta}dx$。特别地Fisher信息矩阵与评分函数$\nabla_{\theta}logp(x;\theta)$的Hessian似然的负数等价。
证明首先求出评分函数的Hessian矩阵由梯度的Jacobian决定
$$
\begin{eqnarray}
H_{logp(x;\theta)}&=&J(\frac{\nabla p(x;\theta)}{p(x;\theta)})\\
&=&\frac{\frac{\partial\nabla p(x;\theta)}{\partial\theta}p(x;\theta)-\nabla p(x;\theta)\nabla p(x;\theta)^T}{p(x;\theta)p(x;\theta)}\\
&=&\frac{H_{p(x;\theta)}p(x;\theta)}{p(x;\theta)p(x;\theta)}-\frac{\nabla p(x;\theta)\nabla p(x;\theta)^T}{p(x;\theta)p(x;\theta)}\\
\end{eqnarray}
$$
等式两边同时求关于$p(x;\theta)$的数学期望:
$$
\begin{eqnarray}
E_{p(x;\theta)}[H_{logp(x;\theta)}] &=& E_{p(x;\theta)}(\frac{H_{p(x;\theta)}p(x;\theta)}{p(x;\theta)p(x;\theta)})-G\\
&=&\int\frac{H_{p(x;\theta)}}{p(x;\theta)}p(x;\theta)dx-G\\
&=&\nabla^2\int p(x;\theta)dx-G\\
&=&-G
\end{eqnarray}
$$
而Hessian矩阵刻画着对数似然函数的曲率所以本质上自然梯度下降法是在一个消除了不同概率分布的曲率后在同一个“平坦”曲面上进行迭代更新步长等于原概率分布空间的步长按照曲率折合到新的“平坦曲面”的大小。
值得注意的一点是一般来说似然函数获取很难在实际问题中我们可以用采样的方法从数据集中采样数据将Fisher信息矩阵原始表达式的积分变为求和来近似估计这样的方式得到的Fisher信息矩阵称为经验Fisher。
## 2.14 线性判别分析LDA ## 2.14 线性判别分析LDA