剛畢業(yè)就能拿到56萬年薪?對!看看Twitter機(jī)器學(xué)習(xí)大牛寫給你的進(jìn)階手冊吧
年薪十萬?對于程序員來說,這僅僅是溫飽水平。
根據(jù)國家統(tǒng)計局今年上半年發(fā)布的消息,2016 年信息傳輸、軟件和信息技術(shù)服務(wù)業(yè)的平均工資為 122478 元,首次打敗金融業(yè)成為新霸主,是全國城鎮(zhèn)單位就業(yè)人員平均水平 57394 元的兩倍以上。
然后 AI 浪潮來臨,已經(jīng)率先脫貧的程序員群體又迎來了升職加薪好時機(jī):轉(zhuǎn)型AI工程師。
AI科技大本營發(fā)現(xiàn),目前互聯(lián)網(wǎng)企業(yè)招聘的名單里面 41% 是和 AI 跟算法相關(guān)的,并且由于人才奇缺,公司開出的薪資也非常的高。在 2018 年高校校招開出的薪資中,Google 是最高的,有 56 萬。另外,我們統(tǒng)計社招平均的月薪中可以看到跟 AI 相關(guān)的,基本都四萬以上了。
小康變中產(chǎn),只差臨門一腳了。
為此,營長特意為轉(zhuǎn)型過程中的AI工程師們準(zhǔn)備了一道大餐——機(jī)器學(xué)習(xí)進(jìn)階手冊,它是Reddit機(jī)器學(xué)習(xí)論壇上周周榜的第一。
這篇文章是Twitter機(jī)器學(xué)習(xí)專家Ferenc Huszár關(guān)于轉(zhuǎn)換算法的一系列經(jīng)驗之談,他在Twitter Cortex機(jī)器學(xué)習(xí)團(tuán)隊專門研究視覺數(shù)據(jù)的非監(jiān)督學(xué)習(xí)。文章內(nèi)容不是面向機(jī)器學(xué)習(xí)新手的入門介紹,而是關(guān)于VAE、GAN、強(qiáng)化學(xué)習(xí)等話題的一系列研究技巧。
下面是他所寫的具體內(nèi)容,只要你讀懂了,你肯定就會比營長更加接近西二旗碼農(nóng)程們那月薪5萬的高端生活。(營長正在默默地求高中老師能重新教一回那些最簡單的概率、統(tǒng)計。)
本周忙得要死,沒讀任何新東西,所以只能分享一些我為自己所寫的機(jī)器學(xué)習(xí)技巧,內(nèi)容是關(guān)于機(jī)器學(xué)習(xí)的各種變換算法。通過這些變換,你就能把眼前的機(jī)器學(xué)習(xí)問題轉(zhuǎn)化成我們已知的、能夠解決的問題——即找出易處理的向量場量內(nèi)的穩(wěn)定“吸引子”(譯注:“吸引子”,Attractors,是指一個系統(tǒng)行為的歸宿或被吸引到的地方)。
典型的情況是這樣的:你有一些模型參數(shù),比如θ。你想優(yōu)化其中的某些客觀標(biāo)準(zhǔn),可使用下列方法來優(yōu)化問題又相當(dāng)棘手。所以你要將問題進(jìn)行轉(zhuǎn)換,如果轉(zhuǎn)化之后的問題能被有效優(yōu)化,你就能解決問題;如果不能優(yōu)化,你可以在此基礎(chǔ)上繼續(xù)轉(zhuǎn)換,直到問題可以被有效優(yōu)化為止。
更新:雖說我寫的時候稱此為參考手冊,但正如眼尖的Reddit讀者所評論的,本文在內(nèi)容上并未做到面面俱到,作為參考手冊太勉強(qiáng)了。這里不妨視之為機(jī)器學(xué)習(xí)研究的某種示范操作,就像編譯器一樣,將抽象的機(jī)器學(xué)習(xí)問題編譯成尋找易處理向量場中穩(wěn)定吸引子的優(yōu)化問題。
作為首批示范,我先介紹下列問題的轉(zhuǎn)換:
- 變分不等式
- 對抗博弈
- 進(jìn)化策略
- 凸松弛
其他轉(zhuǎn)換還包括對偶原理、半二次分裂、拉格朗日乘子,等等。對于你希望談?wù)摰脑掝},歡迎在評論區(qū)寫出來,下次我會補(bǔ)上這些內(nèi)容。
變化不等式
典型問題:
我的損失函數(shù) f(θ) 很難計算,主要是它涉及到難以解決的邊緣化問題。我無法評估它,只能將其最小化。
解決方法:
讓我們構(gòu)建一組典型的可微分的上邊界:
以解決最優(yōu)化問題:
嚴(yán)格來講,一旦優(yōu)化完成,你就可以丟棄輔助參數(shù)ψ∗——盡管事實(shí)通常表明,參數(shù)本身還是很有意義的,如在VAE的識別模型里面用作近似推斷。
轉(zhuǎn)換技巧:
Jensen不等式:凸函數(shù)的平均值絕不會低于用來擬合平均值的凸函數(shù)取值。
通常以標(biāo)準(zhǔn)ELBO(evidence lower bound)變體的形式出現(xiàn),求導(dǎo)如下:
再參數(shù)化竅門:在變分推斷中,我們往往會遇到如下形式的梯度:
其中,變量的概率分布函數(shù)( probability distribution function)以積的形式呈現(xiàn)。如果我們能找到一個函數(shù)
并且該函數(shù)處處可微。它的第二個參數(shù),以及參數(shù)參數(shù)pε對ε的概率分布,則易于通過采樣所獲,如下所示:
然后我們就能使用下面這個在變分上界常常都會用到的積分重構(gòu):
相比于強(qiáng)化估計(REINFORCE estimators),使用蒙特卡洛估計來計算期望,往往能得出更小的方差。
對抗博弈
典型問題:
我無法從樣本中直接估計損失函數(shù)f(θ),通常因為損失函數(shù)取決于模型或數(shù)據(jù)分布的概率分布函數(shù)( probability distribution function),或兩者皆有。
解決方法:
我們可以構(gòu)造出某種近似,令
而后,我們就能解決雙人博弈問題中的穩(wěn)定均衡,令雙方分別最小化有關(guān)于ψ的損失函數(shù)g和有關(guān)θ的損失函數(shù)h。
在h=-g的情況下,該近似表達(dá)式則表現(xiàn)為變分下界的形式:
此時,我們可以轉(zhuǎn)而用以下的極大極小值問題來代替:
變換竅門:
輔助任務(wù)中的貝葉斯優(yōu)化:當(dāng)損失函數(shù)取決于易采樣樣本的概率分布密度時,可以構(gòu)造一個輔助任務(wù),而輔助任務(wù)的貝葉斯優(yōu)化解決方案取決于密度的值。這類輔助任務(wù)的例子有極大似然估計的二進(jìn)制分類、估計分?jǐn)?shù)函數(shù)的去噪或分?jǐn)?shù)匹配。
凸共軛:在損失函數(shù)包含密度凸函數(shù)(如f-divergences中)的情況下,你能夠通過依照凸共軛的形式來重新表述,以轉(zhuǎn)換問題。f的凸共軛f*則可表達(dá)成:
其中,如果u是一個密度函數(shù),那么內(nèi)積⟨u,v_ψ⟩就是v_ψ的期望,這就能用蒙特卡羅近似采樣。
進(jìn)化策略
典型問題:
我的損失函數(shù)f(θ)易于評估,但卻難以優(yōu)化,可能是因為它包含了離散運(yùn)算,或是該函數(shù)為分段型常量函數(shù),無法進(jìn)行反向傳播。
解決方法:
對于任意概率分布pψ,它在θ上的函數(shù)值都滿足于:
因而,使用進(jìn)化策略,我們可專注于下列問題來做優(yōu)化:
通常,由于依賴于函數(shù)f和概率分布pψ的類型,f的局部最小值能夠從ψ的局部最小值中恢復(fù)。
轉(zhuǎn)換竅門:
強(qiáng)化梯度估計:依賴于下述技巧:
其中,RHS可以用蒙特卡洛輕松近似。蒙特卡洛強(qiáng)化估計的方差往往相對較高。
凸松弛
典型問題:
我的損失函數(shù)f(θ)難以優(yōu)化,因為它不可微,且有非凸部分。如稀疏方法向量的ℓ0范數(shù),或分類問題中的單位階躍函數(shù)。
解決方法:
用凸近似來代替非凸的部分,將你的目標(biāo)轉(zhuǎn)化為一個典型的凸函數(shù)g
轉(zhuǎn)換竅門:
ℓ1損失函數(shù):在一些稀疏的學(xué)習(xí)情景中,我們希望能最小化某個向量中的非零項,這就是ℓ0損失函數(shù),通??梢杂迷撓蛄康?#8467;1范數(shù)來替代其損失函數(shù)。
Hinge損失函數(shù)與大間隔方法:在0-1損失下,二值分類器的錯誤率目標(biāo)通常是其參數(shù)的分段常值函數(shù),因此難以優(yōu)化。我們可以用hinge損失函數(shù)來代替0-1損失函數(shù),它可被理解為一個凸上界。結(jié)果,優(yōu)化問題將最大化分類器的間隔。
不過,想要真正實(shí)現(xiàn)年薪 50 萬,只看營長的文章還遠(yuǎn)遠(yuǎn)不夠,堅持學(xué)習(xí)才是真正的利器,望各位讀者共勉。