胡侃深度學習

2021-10-01 23:45:47 字數 2810 閱讀 9774

機器學習的套路

大部分機器學習演算法(包括深度學習),其實是在乙個理想空間裡(接下來我們會以三維空間為例子)尋找乙個最大/最小值。三維空間是無限大的,在某個實際場景,假設我們有了解決某個問題的資料的全集(或者說是無限的資料),基於這些資料我們得到的優化函式的所有解構成了一座山。我們並不知道這座山的最低點是**,所以為了找到它,我們隨機定位在乙個點,試圖沿著比較陡峭的方向下移動,並且希望能夠因此而找到最低點。現實情況是我們並不能看到這座山,因為它籠罩在一陣迷霧裡,我們只能根據已有的訓練資料撥開一小片雲霧,看到一小片地方,然後沿著比較陡峭的地方向下移動一點點,然後新進來的資料重複這個動作。大部分機器學習演算法都需要轉化成我描述的這個步驟來進行。

有了上面的解釋,很多專有名詞就很好解釋了。比如迭代,所謂迭代就是不斷移動的過程。比如收斂,為什麼一般而言演算法最終都會收斂,因為終究我們能夠走到山里的某乙個比較低的點的,之後就會在那徘徊,演算法就算收斂了。

同樣,我們也會遇到很多問題,比如區域性最優解問題(你跑到乙個小坑裡,但是步長比較小,出不來了,已經收斂了),搜尋空間太大(山的面積太大),不收斂(因為地形比較複雜)。

深度學習的容量足夠大,因為它可以有幾百萬上千萬的引數,這使得它理論上能夠擬合任何形式的資料。根據我的實際經驗是,它確實能很好的擬合訓練資料,並且不是簡單的記住他們。

端到端

nlp之前的文字分類工作,需要搞各種特徵工程,有用沒用各種神奇組合,搞個幾億維  然後餵給演算法,有了深度學習,我們只要把文字丟進去就行了。雖然如此,我們只是把特徵工程融合進了網路裡。比如卷積會捕捉詞與詞的關係,還能加強或者忽略某些詞的權重,這和我們手動把各種詞的組合搞成新特徵是一樣的。

再比如attention機制就是人們不斷的通過觀察和學習,在網路中加入我們認為重要的特徵:

調輸入的每個詞彙對輸出的每個詞彙影響力不一樣

深度學習將特徵工作變得更加套路,並且具有更一般的適用性,然而,這不是全部,他的最大意義在於:

深度學習完成了原來由人工將特徵準備好餵給演算法到我們把抽取特徵的方法告訴演算法,演算法自己完成特徵的實際抽取過程的轉變。

再回過頭來看比如cnn, rnn等深度網路的變體,利用這種結構,我們可以捕獲一些特殊的資訊,比如平移 旋轉,序列概率等  ,這本質上是人類總結出了幾種很不錯的特徵種類,深度學習利用特定的網路結構在訓練的時候自動抽取出這些特徵。

可解釋性

正如peter norvig說的,根據認知心理學,人類解釋為什麼做某個決策的理由,往往是事後編撰出來的,為了試圖說服自己和其他人,當時做決策的時候並不一定真的是那麼想的。這也解釋了為什麼成功不可複製(因為我解釋我為什麼做的時候其實不一定是真的,只是我們以為是真的)。 雖然我們在【機器學習的套路】的段落裡說了乙個數學上的大框架  但是很多東西確實解釋不清楚。我們只能從產出的結果再回去猜機器學習這麼做的原理或者原因。比如卷積你放在不同場景 可以有無數新的發現和解釋。資料即規律,機器學習資料其實就是學習規律,這種規律人不一定能想明白,解釋清楚。

乙個比較好的例子是,word embedding, 效果很好,人們從實驗認知到每乙個數字都應該是有語義特徵的,如果這種性質強烈的話,意味著cnn是可以使用寬度短於word embedding dimension 長度的 ,而不是像很多**那樣,filter的寬度等於embedding的長度。

和統計學的關係

統計是我們清楚要啥,然後我們做分析。  但是深度學習確實能學出我們不知道的一些東西。這就是他們的區別。

模擬人們的思維

我發現,人的很多東西也是可以反向通過機器學習的理論來解釋的。

人的大腦做training的時候(比如去掌握某個新技能),也是一件很蛋疼的事,需要不斷tuning(調整學習的方式,學習的**,比如換本更好的教材)。

同樣的大腦,有的人學的好,有的學的不好,是因為「很多人已經有了相關知識,這次學習只是fine-tune」。

對於為啥有的人智商就是高,有的人不高,只不過初始化引數有的人選擇的好罷了,這個看運氣。

大部分人掌握技能掌握的都不會太好,因為欠擬合是普遍情況。看著好像學會了,但只會紙上談兵,大體就是過擬合了,還需要更多經驗和資料。

很多人比較理性,有的人則感性,其實是正則化起的作用。

人腦是乙個非常通用的模型,而機器現階段比人更專注,更單一(但是也有人證明了乙個演算法可以同時完成多個任務)。機器可以在幾小時幾天學會新技能,而人則可能需要好多年。人類其實在能夠工作前,需要訓練很多年(從0歲到23歲?),之後都是fine-tuning了。

人學這麼久的原因,說實在的,還是因為資料來的太慢,處理的太慢。人也是mini-batch輸入問題,然後執行**,根據這次的結果調整下一次行為的,以期下次能做到更好(損失函式)

機器學習什麼時候可以真的「智慧型和進化」

機器學習學習的過程不是乙個持久持續的過程,訓練完成後凍結模型,然後給**模型使用,然後接著收集更多資料,通常我們會重新從0開始訓練。人腦顯然不是這樣的,訓練應該是online的,**反倒是可以離線的,走snapshot就好。這個是目前機器學習演算法和人比較大的差異。

第二個就是網路的複雜度,人是乙個通用的模型,可以處理很多不同型別的任務,機器通常智慧型做一類問題,這原因是網路結構還不夠複雜,並且在乙個大網路裡,進化出不同的網路子區域。

第三個是目前還沒有很好的否定模型,當乙個模型穩定後,之後再進行新資料進來訓練時,模型應該懂得堅持自我。當我對乙個事物**的概率是99%的時候,而外部的資料告訴模型,模型是錯的,模型應該簡單忽略掉這條資料,或者留下疑問,暫存下這個問題,以期獲得更多反例,而不是乙個樣本就能需要模型進行反省。

哪天真的能夠做到如上三點,我覺得就真有可能會進化了。

胡侃學習 理論 計算機

胡侃學習計算機 理論之外 理論電腦科學漫談 早就答應russel的,今天有點時間,把欠債還上。電腦科學和數學的關係有點奇怪。二三十年以前,電腦科學基本上還是數學的乙個分支。而現在,電腦科學擁有廣泛的研究領域和眾多的研究人員,在很多方面反過來推動數學發展,從某種意義上可以說是孩子長得比媽媽還高了。但不...

胡侃Java Java抽象類

抽象類是指不允許被例項化的類 抽象方法是沒有方法體的方法。1 抽象類可以不包括抽象方法,它反正不會去例項化,裡面的方法是不是抽象的沒有本質影響。2 但是含有抽象方法的類絕不能被例項化,否則執行這個方法的時候,怎麼辦?3 如果子類是非抽象的,那麼它就必須實現父類中的抽象方法 否則,它繼承來的抽象方法仍...

胡侃EXCEL伺服器設計需要的因素

開篇之前,我首先要感謝那些看了我前面幾篇文章並與我進行 的,更要感謝那些委託我代為進行軟體設計的,謝謝你們的信任!你需要什麼樣的軟體?幾年下來,與形形色色使用excel伺服器的朋友交流甚多,之所以大家願意研究這個軟體,很大一部分原因就是因為這個軟體的靈活 易用。之中還有相當大一部分人是因為在市面上找...