深度學習思考
機器學習的套路
大部分機器學習演算法(包括深度學習),其實是在一個理想空間里(接下來我們會以三維空間為例子)尋找一個最大/最小值。三維空間是無限大的,在某個實際場景,假設我們有了解決某個問題的數據的全集(或者說是無限的數據),基於這些數據我們得到的優化函數的所有解構成了一座山。我們並不知道這座山的最低點是哪裡,所以為了找到它,我們隨機定位在一個點,試圖沿著比較陡峭的方向下移動,並且希望能夠因此而找到最低點。現實情況是我們並不能看到這座山,因為它籠罩在一陣迷霧裡,我們只能根據已有的訓練數據撥開一小片雲霧,看到一小片地方,然後沿著比較陡峭的地方向下移動一點點,然後新進來的數據重複這個動作。大部分機器學習演算法都需要轉化成我描述的這個步驟來進行。
有了上面的解釋,很多專有名詞就很好解釋了。比如迭代,所謂迭代就是不斷移動的過程。比如收斂,為什麼一般而言演算法最終都會收斂,因為終究我們能夠走到山裡的某一個比較低的點的,之後就會在那徘徊,演算法就算收斂了。
同樣,我們也會遇到很多問題,比如局部最優解問題(你跑到一個小坑裡,但是步長比較小,出不來了,已經收斂了),搜索空間太大(山的面積太大),不收斂(因為地形比較複雜)。
深度學習的容量足夠大,因為它可以有幾百萬上千萬的參數,這使得它理論上能夠擬合任何形式的數據。根據我的實際經驗是,它確實能很好的擬合訓練數據,並且不是簡單的記住他們。
端到端
NLP之前的文本分類工作,需要搞各種特徵工程,有用沒用各種神奇組合,搞個幾億維 然後餵給演算法,有了深度學習,我們只要把文本丟進去就行了。雖然如此,我們只是把特徵工程融合進了網路里。比如卷積會捕捉詞與詞的關係,還能加強或者忽略某些詞的權重,這和我們手動把各種詞的組合搞成新特徵是一樣的。
再比如Attention機制就是人們不斷的通過觀察和學習,在網路中加入我們認為重要的特徵:
Attention無非是強調輸入的每個辭彙對輸出的每個辭彙影響力不一樣的一個改進模型
深度學習將特徵工作變得更加套路,並且具有更一般的適用性,然而,這不是全部,他的最大意義在於:
深度學習完成了原來由人工將特徵準備好餵給演算法到我們把抽取特徵的方法告訴演算法,演算法自己完成特徵的實際抽取過程的轉變。
再回過頭來看比如CNN, RNN等深度網路的變體,利用這種結構,我們可以捕獲一些特殊的信息,比如平移 旋轉,序列概率等 ,這本質上是人類總結出了幾種很不錯的特徵種類,深度學習利用特定的網路結構在訓練的時候自動抽取出這些特徵。
可解釋性
正如Peter Norvig說的,根據認知心理學,人類解釋為什麼做某個決策的理由,往往是事後編撰出來的,為了試圖說服自己和其他人,當時做決策的時候並不一定真的是那麼想的。這也解釋了為什麼成功不可複製(因為我解釋我為什麼做的時候其實不一定是真的,只是我們以為是真的)。 雖然我們在【機器學習的套路】的段落里說了一個數學上的大框架 但是很多東西確實解釋不清楚。我們只能從產出的結果再回去猜機器學習這麼做的原理或者原因。比如卷積你放在不同場景 可以有無數新的發現和解釋。數據即規律,機器學習數據其實就是學習規律,這種規律人不一定能想明白,解釋清楚。
一個比較好的例子是,word embedding, 效果很好,人們從實驗認知到每一個數字都應該是有語義特徵的,如果這種性質強烈的話,意味著CNN是可以使用寬度短於word embedding dimension 長度的 ,而不是像很多論文那樣,filter的寬度等於embedding的長度。
和統計學的關係
統計是我們清楚要啥,然後我們做分析。 但是深度學習確實能學出我們不知道的一些東西。這就是他們的區別。
模擬人們的思維
我發現,人的很多東西也是可以反向通過機器學習的理論來解釋的。
人的大腦做training的時候(比如去掌握某個新技能),也是一件很蛋疼的事,需要不斷tuning(調整學習的方式,學習的來源,比如換本更好的教材)。
同樣的大腦,有的人學的好,有的學的不好,是因為「很多人已經有了相關知識,這次學習只是fine-tune」。
對於為啥有的人智商就是高,有的人不高,只不過初始化參數有的人選擇的好罷了,這個看運氣。
大部分人掌握技能掌握的都不會太好,因為欠擬合是普遍情況。看著好像學會了,但只會紙上談兵,大體就是過擬合了,還需要更多經驗和數據。
很多人比較理性,有的人則感性,其實是正則化起的作用。
人腦是一個非常通用的模型,而機器現階段比人更專註,更單一(但是也有人證明了一個演算法可以同時完成多個任務)。機器可以在幾小時幾天學會新技能,而人則可能需要好多年。人類其實在能夠工作前,需要訓練很多年(從0歲到3歲?),之後都是fine-tuning了。
人學這麼久的原因,說實在的,還是因為數據來的太慢,處理的太慢。人也是mini-batch輸入問題,然後執行預測,根據這次的結果調整下一次行為的,以期下次能做到更好(損失函數)
機器學習什麼時候可以真的「智能和進化」
機器學習學習的過程不是一個持久持續的過程,訓練完成後凍結模型,然後給預測模型使用,然後接著收集更多數據,通常我們會重新從0開始訓練。人腦顯然不是這樣的,訓練應該是online的,預測反倒是可以離線的,走snapshot就好。這個是目前機器學習演算法和人比較大的差異。
第二個就是網路的複雜度,人是一個通用的模型,可以處理很多不同類型的任務,機器通常智能做一類問題,這原因是網路結構還不夠複雜,並且在一個大網路里,進化出不同的網路子區域。
第三個是目前還沒有很好的否定模型,當一個模型穩定後,之後再進行新數據進來訓練時,模型應該懂得堅持自我。當我對一個事物預測的概率是99%的時候,而外部的數據告訴模型,模型是錯的,模型應該簡單忽略掉這條數據,或者留下疑問,暫存下這個問題,以期獲得更多反例,而不是一個樣本就能需要模型進行反省。
哪天真的能夠做到如上三點,我覺得就真有可能會進化了。


※This 帶來的困惑
※親手教的AI總是放心些
※淺析Node與Element
※重回中國市場的挪威三文魚,想要這樣拉攏吃貨們
※讀Zepto源碼之屬性操作
TAG:推酷 |
※邂逅深度學習
※深度學習很難?一文讀懂深度學習!
※深度學習詳解
※不思考體系結構的深度學習研究者不是好工程師
※用淺度學習訓練深度網路:避開端到端深度學習難題
※深度學習與數據中心
※深度學習第8期:深度學習的常見框架
※深度學習卡住了
※深度學習中常見概念
※乾貨 | 深度學習應用中需要思考的問題
※人工智慧深度學習探討
※【深度學習並非萬能】全方位對比深度學習和經典機器學習
※什麼是深度學習?
※什麼是深度強化學習:人工智慧和深度學習的下一步
※人工智慧–深度學習
※深度學習並非萬能:全方位對比深度學習和經典機器學習
※人工智慧與深度學習
※人工智慧與深度學習
※怎樣做到深度思考
※請停止無效努力,學會深度思考吧!