年薪十万?对于程序员来说,这仅仅是温饱水平。
根据国家统计局今年上半年发布的消息,2016 年信息传输、软件和信息技术服务业的平均工资为 122478 元,首次打败金融业成为新霸主,是全国城镇单位就业人员平均水平 57394 元的两倍以上。
然后 AI 浪潮来临,已经率先脱贫的程序员群体又迎来了升职加薪好时机:转型AI工程师。
AI科技大本营发现,目前互联网企业招聘的名单里面 41% 是和 AI 跟算法相关的,并且由于人才奇缺,公司开出的薪资也非常的高。在 2018 年高校校招开出的薪资中,Google 是最高的,有 56 万。另外,我们统计社招平均的月薪中可以看到跟 AI 相关的,基本都四万以上了。
小康变中产,只差临门一脚了。
为此,营长特意为转型过程中的AI工程师们准备了一道大餐——机器学习进阶手册,它是Reddit机器学习论坛上周周榜的第一。
这篇文章是Twitter机器学习专家Ferenc Huszár关于转换算法的一系列经验之谈,他在Twitter Cortex机器学习团队专门研究视觉数据的非监督学习。文章内容不是面向机器学习新手的入门介绍,而是关于VAE、GAN、强化学习等话题的一系列研究技巧。
下面是他所写的具体内容,只要你读懂了,你肯定就会比营长更加接近西二旗码农程们那月薪5万的高端生活。(营长正在默默地求高中老师能重新教一回那些最简单的概率、统计。)
▽
以下内容由AI科技大本营翻译自A Cookbook for Machine Learning: Vol 1
参与 | 杨婷
本周忙得要死,没读任何新东西,所以只能分享一些我为自己所写的机器学习技巧,内容是关于机器学习的各种变换算法。通过这些变换,你就能把眼前的机器学习问题转化成我们已知的、能够解决的问题——即找出易处理的向量场量内的稳定“吸引子”(译注:“吸引子”,Attractors,是指一个系统行为的归宿或被吸引到的地方)。
典型的情况是这样的:你有一些模型参数,比如θ。你想优化其中的某些客观标准,可使用下列方法来优化问题又相当棘手。所以你要将问题进行转换,如果转化之后的问题能被有效优化,你就能解决问题;如果不能优化,你可以在此基础上继续转换,直到问题可以被有效优化为止。
更新:虽说我写的时候称此为参考手册,但正如眼尖的Reddit读者所评论的,本文在内容上并未做到面面俱到,作为参考手册太勉强了。这里不妨视之为机器学习研究的某种示范操作,就像编译器一样,将抽象的机器学习问题编译成寻找易处理向量场中稳定吸引子的优化问题。
作为首批示范,我先介绍下列问题的转换:
变分不等式
对抗博弈
进化策略
凸松弛
其他转换还包括对偶原理、半二次分裂、拉格朗日乘子,等等。对于你希望谈论的话题,欢迎在评论区写出来,下次我会补上这些内容。
变化不等式
典型问题:
我的损失函数 f(θ) 很难计算,主要是它涉及到难以解决的边缘化问题。我无法评估它,只能将其最小化。
解决方法:
让我们构建一组典型的可微分的上边界:
以解决最优化问题:
严格来讲,一旦优化完成,你就可以丢弃辅助参数ψ∗——尽管事实通常表明,参数本身还是很有意义的,如在VAE的识别模型里面用作近似推断。
转换技巧:
Jensen不等式:凸函数的平均值绝不会低于用来拟合平均值的凸函数取值。
通常以标准ELBO(evidence lower bound)变体的形式出现,求导如下:
再参数化窍门:在变分推断中,我们往往会遇到如下形式的梯度:
其中,变量的概率分布函数( probability distribution function)以积的形式呈现。如果我们能找到一个函数
,
并且该函数处处可微。它的第二个参数,以及参数参数pε对ε的概率分布,则易于通过采样所获,如下所示:
然后我们就能使用下面这个在变分上界常常都会用到的积分重构:
相比于强化估计(REINFORCE estimators),使用蒙特卡洛估计来计算期望,往往能得出更小的方差。
对抗博弈
典型问题:
我无法从样本中直接估计损失函数f(θ),通常因为损失函数取决于模型或数据分布的概率分布函数( probability distribution function),或两者皆有。
解决方法:
我们可以构造出某种近似,令
而后,我们就能解决双人博弈问题中的稳定均衡,令双方分别最小化有关于ψ的损失函数g和有关θ的损失函数h。
在h=-g的情况下,该近似表达式则表现为变分下界的形式:
此时,我们可以转而用以下的极大极小值问题来代替:
变换窍门:
辅助任务中的贝叶斯优化:当损失函数取决于易采样样本的概率分布密度时,可以构造一个辅助任务,而辅助任务的贝叶斯优化解决方案取决于密度的值。这类辅助任务的例子有极大似然估计的二进制分类、估计分数函数的去噪或分数匹配。
凸共轭:在损失函数包含密度凸函数(如f-divergences中)的情况下,你能够通过依照凸共轭的形式来重新表述,以转换问题。f的凸共轭f*则可表达成:
其中,如果u是一个密度函数,那么内积⟨u,v_ψ⟩就是v_ψ的期望,这就能用蒙特卡罗近似采样。
进化策略
典型问题:
我的损失函数f(θ)易于评估,但却难以优化,可能是因为它包含了离散运算,或是该函数为分段型常量函数,无法进行反向传播。
解决方法:
对于任意概率分布pψ,它在θ上的函数值都满足于:
因而,使用进化策略,我们可专注于下列问题来做优化:
通常,由于依赖于函数f和概率分布pψ的类型,f的局部最小值能够从ψ的局部最小值中恢复。
转换窍门:
强化梯度估计:依赖于下述技巧:
其中,RHS可以用蒙特卡洛轻松近似。蒙特卡洛强化估计的方差往往相对较高。
凸松弛
典型问题:
我的损失函数f(θ)难以优化,因为它不可微,且有非凸部分。如稀疏方法向量的ℓ0范数,或分类问题中的单位阶跃函数。
解决方法:
用凸近似来代替非凸的部分,将你的目标转化为一个典型的凸函数g
转换窍门:
ℓ1损失函数:在一些稀疏的学习情景中,我们希望能最小化某个向量中的非零项,这就是ℓ0损失函数,通常可以用该向量的ℓ1范数来替代其损失函数。
Hinge损失函数与大间隔方法:在0-1损失下,二值分类器的错误率目标通常是其参数的分段常值函数,因此难以优化。我们可以用hinge损失函数来代替0-1损失函数,它可被理解为一个凸上界。结果,优化问题将最大化分类器的间隔。
▵
不过,想要真正实现年薪 50 万,只看营长的文章还远远不够,坚持学习才是真正的利器,望各位读者共勉。