机器学习指导书:卷1——翻译

A Cookbook for Machine Learning: Vol 1

原文地址:http://www.inference.vc/design-patterns/

繁忙的一周,以致于没有时间阅读新的领域进展,在这里分享我的笔记,只为了更好的了解一些知识和概念。这里介绍一些机器学习中的基本变换,将机器学习的问题转换成现阶段能解决的问题的方法:转换成可解决的领域。

初始的典型设置是:你有一些模型参数θ,根据目标函数,想优化这些θ参数,但是由于下面的几个原因优化问题不好解决,你就可以使用下面的几种变换方法转换成可以解决的方法。如果你的问题本来就可以很好的解决那就再棒不过了,如果还是不行,你可以进行递归的变换直到可以解决为止。

说明:尽管我称这篇文章为cookbook,就像读者所说,作为一个指导书来说,内容讲得太简单了。将他看做机器学习领域的证明方法,就像编辑这将机器学习的目标函数转换成传统的可求解矩阵形式。

在第一阶段,我写了以下问题的变换方法:

  • 变化边界
  • 对抗游戏
  • 进化策略
  • 凸松弛

还有许多变化没有包含在里面,比如对偶原则,半正定分解,拉格朗日乘子。
备注:可以留下评论我接下来该介绍哪些变换。


变化边界

典型问题:

损失函数f(θ)无法直接求解,无法求偏导。无法求损失函数最小时的参数值。

解决方法:

构造一个可微的上界:

f(θ)infψg(θ,ψ),

然后求解最优化问题:
θ,ψargminθ,ψg(θ,ψ)

从技术上来说,一旦优化问题得到解,你就可以去掉辅助的参数ψ,尽管这个参数具有一些有用的意义。比如在识别模型VAEs中,他代表近似估计。

解题技巧:

Jensen’s inequality简森不等式:
机器学习指导书:卷1——翻译
即如图所示:

λf(x1)+(1λ)f(x2)f(λx1+(1λ)x2)

更一般的式子是
φ(E(X))E(φ(X))

用中国话表示为:函数(凸函数)的期望大于或等于期望的函数。
简森介绍链接:[http://blog.****.net/lanchunhui/article/details/50482842?locationNum=1]

我们使用简森不等式构造上界:

logp(x)==logp(x,y)dylogq(y|x)p(y,x)q(y|x)dy=q(y|x)logp(y,x)q(y|x)dy

再参量化:将梯度写成如下形式:
θiExqθ[f(x,qθ(x))],

变量的pdf出现在被积函数中。如果我们找到一个函数可以求微h:(ε,Θ)χ。关于二阶可导,他的概率pϵ对于ε容易采样:
x=h(ϵ,θ),ϵpϵxqθ

我们可以用下面的公式去估计函数的上界:
θiExqθ[f(x,qθ(x))]=Eϵpϵ[θif(h(ϵ,θ),qϵ(h(ϵ,θ)))]

在相同的质量下,使用蒙特卡罗估计通常比reinforce估计具有更少的变量。

对抗游戏

典型问题:

无法从样本中直接估计损失函数,一般是由于损失函数依赖于数据分布或者创建的模型,或者两者原因都有。

解决方法:

我们可以构建一个估计:

f(θ)h(θ,argminψg(θ,ψ)),

我们可以解决这个问题,通过发现两个对手游戏中希望通过变量ψθ最小化损失gh形成的稳定状态。
h=g时,有时候,估计的函数会是下界:
f(θ)supψg(θ,ψ),

在这种情况下,我们可以通过最小化下面的问题解决;
θargminθmaxψg(θ,ψ)

解题技巧:

辅助任务贝叶斯优化:当你的损失函数依赖于可以容易采样的概率密度函数,你可以创建一个辅助任务,这个任务的最优化依赖于密度的值。例如:二分类的期望值估计,去噪或估计分数函数的分数匹配。
凸联合:由于你的损失函数关于凸的功能密度,你可以将你的问题重表述为凸联合的形式。表达式f转换成凸联合的形式为:

f(u)==supvdom(f){u,vf(v)}supψ{u,vψf(vψ)},

如果u是密度函数,在内积u,vψvψ,的期望,可以有蒙特卡罗采用估计。

进化策略

典型问题:

损失函数f(θ难以优化,也许由于包含离散操作,或者函数是分段函数,不可以使用后向传播。

解决方法:

对于任何的关于θ的概率分布pψ都有:

minθf(θ)Eθpψf(θ)

转换为如下的优化函数:
ψargminψEθpψf(θ)

关于函数f和分布pψ,局部最小值f以由局部最小值ψ得到。

解题技巧:

加强梯度算子可以使用如下式子:

ψiEθpψ[f(θ)]=Eθpψ[ψilogpψ(θ)f(θ)],

RHS可以有蒙特卡罗估计,蒙特卡罗加强算子的变量会相当高。

凸松弛

典型问题:

f(θ)目标函数很难优化,由于不可导或者非凸,比如在稀疏矢量中的l0范数,或者分类中的海维赛德步骤函数。

解决方法:

替换非凸部分,成为凸优化将你的目标变换:

f(θ)g(θ)

解题技巧:

l1损失:在许多稀疏学习的情况下,我们希望最小化非零量的矢量,就是l0损失,你可以使用这种方法转换为l1范式的矢量。

铰链损失或者大边际方法:在0-1损失的二分类错误率中,目标函数通常是分段常数函数,难以优化,可以将0-1损失换成铰链损失,可以看做函数的上界,变成凸函数,优化函数可以最大化分类器的边缘。