深度學(xué)習(xí)思考
機(jī)器學(xué)習(xí)的套路
大部分機(jī)器學(xué)習(xí)算法(包括深度學(xué)習(xí)),其實(shí)是在一個(gè)理想空間里(接下來我們會(huì)以三維空間為例子)尋找一個(gè)最大/最小值。三維空間是無限大的,在某個(gè)實(shí)際場(chǎng)景,假設(shè)我們有了解決某個(gè)問題的數(shù)據(jù)的全集(或者說是無限的數(shù)據(jù)),基于這些數(shù)據(jù)我們得到的優(yōu)化函數(shù)的所有解構(gòu)成了一座山。我們并不知道這座山的最低點(diǎn)是哪里,所以為了找到它,我們隨機(jī)定位在一個(gè)點(diǎn),試圖沿著比較陡峭的方向下移動(dòng),并且希望能夠因此而找到最低點(diǎn)?,F(xiàn)實(shí)情況是我們并不能看到這座山,因?yàn)樗\罩在一陣迷霧里,我們只能根據(jù)已有的訓(xùn)練數(shù)據(jù)撥開一小片云霧,看到一小片地方,然后沿著比較陡峭的地方向下移動(dòng)一點(diǎn)點(diǎn),然后新進(jìn)來的數(shù)據(jù)重復(fù)這個(gè)動(dòng)作。大部分機(jī)器學(xué)習(xí)算法都需要轉(zhuǎn)化成我描述的這個(gè)步驟來進(jìn)行。
有了上面的解釋,很多專有名詞就很好解釋了。比如迭代,所謂迭代就是不斷移動(dòng)的過程。比如收斂,為什么一般而言算法最終都會(huì)收斂,因?yàn)榻K究我們能夠走到山里的某一個(gè)比較低的點(diǎn)的,之后就會(huì)在那徘徊,算法就算收斂了。
同樣,我們也會(huì)遇到很多問題,比如局部最優(yōu)解問題(你跑到一個(gè)小坑里,但是步長(zhǎng)比較小,出不來了,已經(jīng)收斂了),搜索空間太大(山的面積太大),不收斂(因?yàn)榈匦伪容^復(fù)雜)。
深度學(xué)習(xí)的容量足夠大,因?yàn)樗梢杂袔装偃f(wàn)上千萬(wàn)的參數(shù),這使得它理論上能夠擬合任何形式的數(shù)據(jù)。根據(jù)我的實(shí)際經(jīng)驗(yàn)是,它確實(shí)能很好的擬合訓(xùn)練數(shù)據(jù),并且不是簡(jiǎn)單的記住他們。
端到端
NLP之前的文本分類工作,需要搞各種特征工程,有用沒用各種神奇組合,搞個(gè)幾億維 然后喂給算法,有了深度學(xué)習(xí),我們只要把文本丟進(jìn)去就行了。雖然如此,我們只是把特征工程融合進(jìn)了網(wǎng)絡(luò)里。比如卷積會(huì)捕捉詞與詞的關(guān)系,還能加強(qiáng)或者忽略某些詞的權(quán)重,這和我們手動(dòng)把各種詞的組合搞成新特征是一樣的。
再比如Attention機(jī)制就是人們不斷的通過觀察和學(xué)習(xí),在網(wǎng)絡(luò)中加入我們認(rèn)為重要的特征:
Attention無非是強(qiáng)調(diào)輸入的每個(gè)詞匯對(duì)輸出的每個(gè)詞匯影響力不一樣的一個(gè)改進(jìn)模型
深度學(xué)習(xí)將特征工作變得更加套路,并且具有更一般的適用性,然而,這不是全部,他的最大意義在于:
深度學(xué)習(xí)完成了原來由人工將特征準(zhǔn)備好喂給算法到我們把抽取特征的方法告訴算法,算法自己完成特征的實(shí)際抽取過程的轉(zhuǎn)變。
再回過頭來看比如CNN, RNN等深度網(wǎng)絡(luò)的變體,利用這種結(jié)構(gòu),我們可以捕獲一些特殊的信息,比如平移 旋轉(zhuǎn),序列概率等 ,這本質(zhì)上是人類總結(jié)出了幾種很不錯(cuò)的特征種類,深度學(xué)習(xí)利用特定的網(wǎng)絡(luò)結(jié)構(gòu)在訓(xùn)練的時(shí)候自動(dòng)抽取出這些特征。
可解釋性
正如Peter Norvig說的,根據(jù)認(rèn)知心理學(xué),人類解釋為什么做某個(gè)決策的理由,往往是事后編撰出來的,為了試圖說服自己和其他人,當(dāng)時(shí)做決策的時(shí)候并不一定真的是那么想的。這也解釋了為什么成功不可復(fù)制(因?yàn)槲医忉屛覟槭裁醋龅臅r(shí)候其實(shí)不一定是真的,只是我們以為是真的)。 雖然我們?cè)凇緳C(jī)器學(xué)習(xí)的套路】的段落里說了一個(gè)數(shù)學(xué)上的大框架 但是很多東西確實(shí)解釋不清楚。我們只能從產(chǎn)出的結(jié)果再回去猜機(jī)器學(xué)習(xí)這么做的原理或者原因。比如卷積你放在不同場(chǎng)景 可以有無數(shù)新的發(fā)現(xiàn)和解釋。數(shù)據(jù)即規(guī)律,機(jī)器學(xué)習(xí)數(shù)據(jù)其實(shí)就是學(xué)習(xí)規(guī)律,這種規(guī)律人不一定能想明白,解釋清楚。
一個(gè)比較好的例子是,word embedding, 效果很好,人們從實(shí)驗(yàn)認(rèn)知到每一個(gè)數(shù)字都應(yīng)該是有語(yǔ)義特征的,如果這種性質(zhì)強(qiáng)烈的話,意味著CNN是可以使用寬度短于word embedding dimension 長(zhǎng)度的 ,而不是像很多論文那樣,filter的寬度等于embedding的長(zhǎng)度。
和統(tǒng)計(jì)學(xué)的關(guān)系
統(tǒng)計(jì)是我們清楚要啥,然后我們做分析。 但是深度學(xué)習(xí)確實(shí)能學(xué)出我們不知道的一些東西。這就是他們的區(qū)別。
模擬人們的思維
我發(fā)現(xiàn),人的很多東西也是可以反向通過機(jī)器學(xué)習(xí)的理論來解釋的。
人的大腦做training的時(shí)候(比如去掌握某個(gè)新技能),也是一件很蛋疼的事,需要不斷tuning(調(diào)整學(xué)習(xí)的方式,學(xué)習(xí)的來源,比如換本更好的教材)。
同樣的大腦,有的人學(xué)的好,有的學(xué)的不好,是因?yàn)?ldquo;很多人已經(jīng)有了相關(guān)知識(shí),這次學(xué)習(xí)只是fine-tune”。
對(duì)于為啥有的人智商就是高,有的人不高,只不過初始化參數(shù)有的人選擇的好罷了,這個(gè)看運(yùn)氣。
大部分人掌握技能掌握的都不會(huì)太好,因?yàn)榍窋M合是普遍情況??粗孟駥W(xué)會(huì)了,但只會(huì)紙上談兵,大體就是過擬合了,還需要更多經(jīng)驗(yàn)和數(shù)據(jù)。
很多人比較理性,有的人則感性,其實(shí)是正則化起的作用。
人腦是一個(gè)非常通用的模型,而機(jī)器現(xiàn)階段比人更專注,更單一(但是也有人證明了一個(gè)算法可以同時(shí)完成多個(gè)任務(wù))。機(jī)器可以在幾小時(shí)幾天學(xué)會(huì)新技能,而人則可能需要好多年。人類其實(shí)在能夠工作前,需要訓(xùn)練很多年(從0歲到3歲?),之后都是fine-tuning了。
人學(xué)這么久的原因,說實(shí)在的,還是因?yàn)閿?shù)據(jù)來的太慢,處理的太慢。人也是mini-batch輸入問題,然后執(zhí)行預(yù)測(cè),根據(jù)這次的結(jié)果調(diào)整下一次行為的,以期下次能做到更好(損失函數(shù))
機(jī)器學(xué)習(xí)什么時(shí)候可以真的“智能和進(jìn)化”
機(jī)器學(xué)習(xí)學(xué)習(xí)的過程不是一個(gè)持久持續(xù)的過程,訓(xùn)練完成后凍結(jié)模型,然后給預(yù)測(cè)模型使用,然后接著收集更多數(shù)據(jù),通常我們會(huì)重新從0開始訓(xùn)練。人腦顯然不是這樣的,訓(xùn)練應(yīng)該是online的,預(yù)測(cè)反倒是可以離線的,走snapshot就好。這個(gè)是目前機(jī)器學(xué)習(xí)算法和人比較大的差異。
第二個(gè)就是網(wǎng)絡(luò)的復(fù)雜度,人是一個(gè)通用的模型,可以處理很多不同類型的任務(wù),機(jī)器通常智能做一類問題,這原因是網(wǎng)絡(luò)結(jié)構(gòu)還不夠復(fù)雜,并且在一個(gè)大網(wǎng)絡(luò)里,進(jìn)化出不同的網(wǎng)絡(luò)子區(qū)域。
第三個(gè)是目前還沒有很好的否定模型,當(dāng)一個(gè)模型穩(wěn)定后,之后再進(jìn)行新數(shù)據(jù)進(jìn)來訓(xùn)練時(shí),模型應(yīng)該懂得堅(jiān)持自我。當(dāng)我對(duì)一個(gè)事物預(yù)測(cè)的概率是99%的時(shí)候,而外部的數(shù)據(jù)告訴模型,模型是錯(cuò)的,模型應(yīng)該簡(jiǎn)單忽略掉這條數(shù)據(jù),或者留下疑問,暫存下這個(gè)問題,以期獲得更多反例,而不是一個(gè)樣本就能需要模型進(jìn)行反省。
哪天真的能夠做到如上三點(diǎn),我覺得就真有可能會(huì)進(jìn)化了。