吳恩達深度學習筆記(4)-為什麼深度學習會興起?

為什麼深度學習會興起?(Why is Deep Learning taking off?)

本節視頻主要講了推動深度學習變得如此熱門的主要因素。包括

數據規模計算量及算法的創新。(3個重點概念!請背書!)

深度學習和神經網絡之前的基礎技術理念已經存在大概幾十年了,為什麼它們現在才突然流行起來呢?對啊,為什麼?看過我之前文章:人工智能的冷落與興起,那麼你就會了解發展歷程了,但是這個深度學習為什麼會獨引爆全場呢?

本節課程主要講述一些使得深度學習變得如此熱門的主要驅動因素,這將會幫助你在你的組織機構內發現最好的時機來應用這些東西。

在過去的幾年裡,很多人都問為什麼深度學習能夠如此有效。當回答這個問題時,通常給他們畫個圖,在水平軸上畫一個形狀,在此繪製出所有任務的數據量,而在垂直軸上,畫出機器學習算法的性能。比如說準確率體現在垃圾郵件過濾或者廣告點擊預測,或者是神經網絡在自動駕駛汽車時判斷位置的準確性,根據圖像可以發現,如果你把一個傳統機器學習算法的性能畫出來,作為數據量的一個函數,你可能得到一個彎曲的線,就像圖中這樣,它的性能一開始在增加更多數據時會上升,但是一段變化後它的性能就會像一個高原一樣。假設你的水平軸拉的很長很長,它們不知道如何處理規模巨大的數據,而過去十年的社會里,遇到的很多問題只有相對較少的數據量。

吳恩達深度學習筆記(4)-為什麼深度學習會興起?

大量的數據

多虧數字化社會的來臨,現在的數據量都非常巨大,我們花了很多時間活動在這些數字的領域,比如在電腦網站上、在手機軟件上以及其它數字化的服務,它們都能創建數據,同時便宜的相機被配置到移動電話,還有加速儀及各類各樣的傳感器,同時在物聯網領域我們也收集到了越來越多的數據(對哎,什麼是物聯網?有興趣麼?去查下就清楚了)。僅僅在過去的20年裡對於很多應用,我們便收集到了大量的數據,遠超過機器學習算法能夠高效發揮它們優勢的規模。

神經網絡計算量

神經網絡展現出的是,如果你訓練一個小型的神經網絡,那麼這個性能可能會像下圖黃色曲線表示那樣;如果你訓練一個稍微大一點的神經網絡,比如說一箇中等規模的神經網絡(下圖藍色曲線),它在某些數據上面的性能也會更好一些;如果你訓練一個非常大的神經網絡,它就會變成下圖綠色曲線那樣,並且保持變得越來越好。

因此可以注意到兩點:如果你想要獲得較高的性能體現,那麼你有兩個條件要完成,

第一個是你需要訓練一個規模足夠大的神經網絡以發揮數據規模量巨大的優點

另外你需要能畫到軸的這個位置,所以你需要很多的數據

因此我們經常說規模一直在推動深度學習的進步,這裡的規模指的也同時是神經網絡的規模,我們需要一個帶有許多隱藏單元的神經網絡,也有許多的參數及關聯性,就如同需要大規模的數據一樣。事實上如今最可靠的方法來在神經網絡上獲得更好的性能,往往就是要麼訓練一個更大的神經網絡,要麼投入更多的數據,這隻能在一定程度上起作用,因為最終你耗盡了數據,或者最終你的網絡是如此大規模導致將要用太久的時間去訓練,但是僅僅提升規模的的確確地讓我們在深度學習的世界中摸索了很多時間。為了使這個圖更加從技術上講更精確一點,我在軸下面已經寫明的數據量,這兒加上一個標籤(label)量,通過添加這個標籤量,也就是指在訓練樣本時,我們同時輸入和標籤,接下來引入一點符號,使用小寫的字母表示訓練集的規模,或者說訓練樣本的數量,這個小寫字母就橫軸結合其他一些細節到這個圖像中。

吳恩達深度學習筆記(4)-為什麼深度學習會興起?

在這個小的訓練集中,各種算法的優先級事實上定義的也不是很明確,所以如果你沒有大量的訓練集,那效果會取決於你的特徵工程能力,那將決定最終的性能。假設有些人訓練出了一個SVM(支持向量機)表現的更接近正確特徵,然而有些人訓練的規模大一些,可能在這個小的訓練集中SVM算法可以做的更好。

因此你知道在這個圖形區域的左邊,各種算法之間的優先級並不是定義的很明確,最終的性能更多的是取決於你在用工程選擇特徵方面的能力以及算法處理方面的一些細節,只是在某些大數據規模非常龐大的訓練集,也就是在右邊這個會非常的大時,我們能更加持續地看到更大的由神經網絡控制的其它方法,因此如果你的任何某個朋友問你為什麼神經網絡這麼流行,我會鼓勵你也替他們畫這樣一個圖形。

所以可以這麼說,(劃重點)在深度學習萌芽的初期,數據的規模以及計算量,侷限在我們對於訓練一個特別大的神經網絡的能力,無論是在

CPU還是GPU上面,那都使得我們取得了巨大的進步。但是漸漸地,尤其是在最近這幾年,我們也見證了算法方面的極大創新。許多算法方面的創新,一直是在嘗試著使得神經網絡運行的更快。

算法的創新

作為一個具體的例子,神經網絡方面的一個巨大突破是從sigmoid函數轉換到一個ReLU函數,這個函數我們在之前的課程裡提到過。

吳恩達深度學習筆記(4)-為什麼深度學習會興起?

Sigmoid函數

如果你無法理解剛才我說的某個細節,也不需要擔心,可以知道的一個使用sigmoid函數和機器學習問題是,在這個區域(左右兩側靠近邊緣),也就是這個sigmoid函數的梯度會接近零,所以學習的速度會變得非常緩慢,因為當你實現梯度下降以及梯度接近零的時候,參數會更新的很慢,所以學習的速率也會變的很慢,

吳恩達深度學習筆記(4)-為什麼深度學習會興起?

Relu函數

而通過改變這個被叫做激活函數的東西,神經網絡換用這一個函數,叫做ReLU的函數(修正線性單元),ReLU它的梯度對於所有輸入的負值都是零,因此梯度更加不會趨向逐漸減少到零。而這裡的梯度,這條線的斜率在這左邊是零,僅僅通過將Sigmod函數轉換成ReLU函數,便能夠使得一個叫做梯度下降(gradient descent)的算法運行的更快,這就是一個或許相對比較簡單的算法創新的例子。

但是根本上算法創新所帶來的影響,實際上是對計算帶來的優化,所以有很多像這樣的例子,我們通過改變算法,使得代碼運行的更快,這也使得我們能夠訓練規模更大的神經網絡,或者是多端口的網絡。即使我們從所有的數據中擁有了大規模的神經網絡,快速計算顯得更加重要的另一個原因是,訓練你的神經網絡的過程,很多時候是憑藉直覺的,往往你對神經網絡架構有了一個想法,於是你嘗試寫代碼實現你的想法,然後讓你運行一個試驗環境來告訴你,你的神經網絡效果有多好,通過參考這個結果再返回去修改你的神經網絡裡面的一些細節,然後你不斷的重複上面的操作,當你的神經網絡需要很長時間去訓練,需要很長時間重複這一循環,在這裡就有很大的區別,根據你的生產效率去構建更高效的神經網絡。當你能夠有一個想法,試一試,看效果如何。

在10分鐘內,或者也許要花上一整天,如果你訓練你的神經網絡用了一個月的時間,有時候發生這樣的事情,也是值得的,因為你很快得到了一個結果。在10分鐘內或者一天內,你應該嘗試更多的想法,那極有可能使得你的神經網絡在你的應用方面工作的更好、更快的計算,在提高速度方面真的有幫助,那樣你就能更快地得到你的實驗結果。這也同時幫助了神經網絡的實驗人員和有關項目的研究人員在深度學習的工作中迭代的更快,也能夠更快的改進你的想法,所有這些都使得整個深度學習的研究社群變的如此繁榮,包括令人難以置信地發明新的算法和取得不間斷的進步,這些都是開拓者在做的事情,這些力量使得深度學習不斷壯大。

下圖也就是一般的實現思路,有想法 到 寫代碼實現實驗驗證,得到結果,然後改進想法,循環往復。。。(運氣好的話,可以很快實現的)

吳恩達深度學習筆記(4)-為什麼深度學習會興起?

好消息是這些力量目前也正常不斷的奏效,使得深度學習越來越好。研究表明我們的社會仍然正在拋出越來越多的數字化數據,或者用一些特殊的硬件來進行計算,比如說GPU,以及更快的網絡連接各種硬件。我非常有信心,我們可以做一個超級大規模的神經網絡,而計算的能力也會進一步的得到改善,還有算法相對的學習研究社區連續不斷的在算法前沿產生非凡的創新。根據這些我們可以樂觀地回答,同時對深度學習保持樂觀態度,在接下來的這些年它都會變的越來越好。


分享到:


相關文章: