深度學習史上最全總結

2021-09-20 17:57:09 字數 4102 閱讀 8089

1、概述

深度學習(deep learning),這是乙個在近幾年火遍各個領域的詞彙,似乎所有的演算法只要跟它扯上關係,瞬間就顯得高大上起來。但其實,從2023年hinton在science上的**算起,深度學習發展至今才不到十年。

在這短短幾年時間裡,深度學習顛覆了語音識別、影象分類、文字理解等眾多領域的演算法設計思路,漸漸形成了一種從訓練資料出發,經過乙個端到端(end-to-end)的模型,然後直接輸出得到最終結果的一種新模式。這不僅讓一切變得更加簡單,而且由於深度學習中的每一層都可以為了最終的任務來調整自己,最終實現各層之間的通力合作,因而可以大大提高任務的準確度。隨著大資料時代的到來以及gpu等各種更加強大的計算裝置的發展,深度學習如虎添翼,可以充分利用各種海量資料(標註資料、弱標註資料或者僅僅資料本身),完全自動地學習到抽象的知識表達,即把原始資料濃縮成某種知識。

當然,深度學習不見得是最完美的框架,離最終所謂的智慧型也還差得很遠,而且目前還基本沒有理論上的有效性解釋。但是,無論如何,深度學習之風已經勢不可擋!

深度學習本質上其實就是多層神經網路,而神經網路這個東西幾十年前大家就開始研究了。我們知道,神經網路的一層,其實就是乙個線性變換加上乙個簡單的非線性操作,而多層神經網路其實就是多個簡單的非線性函式的復合。一層、兩層的網路用途比較有限,往往很難刻畫輸入與輸出之間的複雜關係。但是深層的網路,歷史上又一直無法進行有效訓練。這大概是因為有以下三個難點難以突破:

優化方面:

(1)優化策略的核心就是梯度下降法,但對於乙個深層的網路,它的函式的梯度也非常複雜。於是,誤差反向傳播演算法就經常在引數初始值選擇不當的時候產生梯度消失或者梯度**現象,導致優化無法正常進行。

(2)深層網路由於是高度非線性的,有著太多的區域性極值,很難保證能夠得到乙個可以接受的好的解。

資料方面:

早期,各種資料集往往都非常小,經常是幾百幾千的規模。人們都側重於解決如何在小資料情形下的演算法過擬合問題,典型的就是svm。這時候,複雜的多層神經網路根本用不上,他們在資料量不足的情況下會過擬合的非常嚴重。

計算能力方面:

深度學習的經典模型卷積神經網路(cnn)其實在上世紀**十年代就出現了,而且其中lenet-5模型在簡單的手寫體識別問題上已經取得了很大的成功。但是當時的計算能力無法支援更大規模的網路,而lenet-5在複雜物體識別上的表現也並不好,所以影響了人們對這一系列演算法的進一步研究。

由於以上種種原因,神經網路一度曾經非常低調。直到2023年,著名的學者geoffrey hinton在science上發表了一篇**,給出了訓練深層網路的新思路。大概想法是先分層進行預訓練,然後把預訓練的結果當成模型引數的初始值,再從頭進行正常的訓練過程。這個想法現在看起來很簡單,但對於全連型的深層網路來說卻是非常有效的。

2、關於語音識別

2023年,hinton把深層神經網路介紹給做語音識別的學者們。然後2023年,語音識別就產生了巨大突破。本質上是把傳統的混合高斯模型(gmm)替換成了深度神經網路(dnn)模型,但相對識別錯誤率一下降低20%多,這個改進幅度超過了過去很多年的總和。這裡的關鍵是把原來模型中通過gmm建模的手工特徵換成了通過dnn進行更加複雜的特徵學習。在此之後,在深度學習框架下,人們還在不斷利用更好的模型和更多的訓練資料進一步改進結果。現在語音識別已經真正變得比較成熟,並且被廣泛商用,且目前所有的商用語音識別演算法沒有乙個不是基於深度學習的。

關於視覺問題:

(1)人們初步看到了深度網路的優勢,但還是有很多人質疑它。語音識別是成功了,那麼影象分類呢?2023年之前,深度學習好像還是只能處理像mnist手寫體分類這樣的簡單任務。說來也巧,這時候正舉行了兩屆imagenet比賽。這是乙個比手寫體分類複雜得多的影象分類任務,總共有100萬張,解析度300x300左右,1000個類別。前兩屆的冠軍採用的都是傳統人工設計特徵然後學習分類器的思路。第一屆是2023年,當時冠軍的準確率(top 5精度)是71.8%,而2023年是74.3%。由於hinton經常被其它研究人員「嘲諷」說深度學習在影象領域沒有用,於是2023年,hinton和他的學生alex等人參賽,把準確率一下提高到84.7%。

(2)當然,他們的成功借助了imagenet這個足夠大的資料集,借助了gpu的強大計算能力,借助了比較深層的cnn網路,借助了隨機梯度下降(sgd)和dropout等優化技巧,借助了訓練資料擴充策略(data augmentation)。但無論如何,他們靠著深度學習震驚了機器學習領域,從此大量的研究人員開始進入這個領域,一發不可收拾。2023年是89%,2023年是93.4%,截止到現在(2023年5月份),imagenet資料集的精度已經達到了95%以上,某種程度上跟人的分辨能力相當了。

(3)不僅僅是影象分類,在更廣泛的視覺問題上,深度學習都產生了重大影響。簡要列舉幾個如下:

(a)人臉識別——lfw資料庫上的結果,從最早的90%左右的正確率,一路被研究人員刷到了99.5%以上。人臉相關的應用受此影響,也越來越多。

(b)通用物體檢測——imagenet上的檢測任務結果,map從最早的0.3左右,一路提高到0.66,感覺提高空間還有不少。

(c)影象分割——現在深度學習已經可以做到輸入是一張,輸出就是逐個畫素分割後的結果,中間也不需要任何預處理,並且精度遠超非深度學習的結果。

(d)光學字元識別——這裡指一般意義的字串行識別。這個問題的傳統做法也是非常複雜的,需要進行字元分割,各種預處理,然後單個字元**完成後如何拼成完整輸出等等。深度學習的做法也是端到端的,輸入是形式的文字,輸出直接就是識別結果了,簡單、方便還更準確。所以,現在很多簡單點的驗證碼,想作為圖靈測試,分辨人還是robot的話,已經沒太大用處了。

(e)玩遊戲——deepmind團隊的傑作。基於深度學習和強化學習(reinforcement learning),計算機已經可以自己學習玩一些簡單遊戲了,整個過程不需要任何人的干預。對於打磚塊這樣的簡單遊戲,甚至已經超過了普通玩家的水平。

簡單總結一下視覺的部分。我們經常在**上看到深度學習在某領域又超過人的水平了。還有些樂觀的人說,深度學習可以處理所有人的視覺在0.1秒內可以解決的問題。這些或許言過其實,不過毫無疑問體現了深度學習帶給人們的強烈震撼!

3、關於文字理解

除了語音和影象之外,另乙個機器學習的重要前沿陣地就是文字理解了,深度學習的大量研究人員都集中於此。這裡簡單介紹三點。

(1)關於文字,乙個很重要的工作是詞向量(word2vec)。詞向量是指通過對大量文字的學習(不需要標註),根據前後文自動學習到每個詞的語義,然後把每個詞對映為乙個緊湊的實數向量形式的表達,而且具有很多好的性質,比如vec(中國)減去vec(北京)約等於vec(英國)減去vec(倫敦)。這裡強調一句,這種向量化的緊湊表達形式在深度學習中是非常重要和普適的。任何抽象的知識都可以建模成這種緊湊的向量形式。類似的還有很多擴充套件性工作,比如,人們研究如何把一句話對映為乙個向量,甚至把一段文字對映為乙個向量。

(2)文字的各個詞之間是有順序的,而傳統做法總是採用詞袋模型忽略掉這些順序。為了更好的挖掘和利用這個性質,人們漸漸傾向於採用遞迴神經網路(rnn)來描述它。rnn也不是什麼新鮮事物,其實就是允許節點之間的連線有環的存在。不過就像我們之前說的,大資料、gpu、優化、深度學習在其它領域的突破等等又給它帶來了新的活力。rnn做文字理解的大概思路是,按順序處理一段話的每個單詞,在它看到後面內容的時候,它的某些引數裡還保留著對前面看到過的資訊的「整合和抽象」。沒錯,它是有一定的記憶功能的,而且不需要人為告訴它應該記住什麼,它會從訓練資料中自然的進行學習,然後記憶在「環」裡。可以想像,rnn的結構比普通神經網路複雜,而且優化過程更加困難,但目前已經有了bptt、lstm等很多解決方案,在這方面有著很多的相關工作,總體來看,結果讓人覺得很有希望。

(3)最近產生了深度圖靈機(deepturing machine)。它簡單來說就是rnn加上一塊專門用於記憶的部分。這是個更加一般化的計算模式,和圖靈機計算能力等價。它的記憶體其實就是乙個實數矩陣。呵呵,我們又一次見到了這種連續的緊湊向量或者矩陣的表達形式。它可以記錄資訊而且方便梯度傳遞,經常被研究人員拿來各種建模,是構建端到端的模型,進行統一優化的利器。

C STL容器總結(史上最全!)

size 返回元素個數 empty 返回是否為空 clear 清空 front back push back pop back begin end 支援比較運算,按字典序first,第乙個元素 second,第二個元素 支援比較運算,以first為第一關鍵字,以second為第二關鍵字 字典序 si...

盒子垂直水平居中問題,最全總結

那麼不知道兩個盒子各自寬高的情況下,怎麼實現子盒子的垂直居中呢 parent child 注意 此方法子盒子必須要有具體寬高值。parent child 此方法本身實際上是控制文字垂直水平居中,而給盒子設定 display inline block 就使得盒子具備了文字的特點,以此實現盒子垂直水平居...

CSS選擇器最全總結與講解

css選擇符總結 本文簡單全面地介紹css中的各種型別的選擇符。包括 上下文選擇符 id和類選擇符 屬性選擇符 偽類 偽元素等。自 一般上下文選擇符 article h1 em 選中的em 必須有乙個祖先是h1,後者進而還要有乙個祖先是article 子選擇符 label1 lalel2。label...