首頁>科技>

簡介

其實大部分人都是這樣的,即便是我們這些技術宅,第一次聽到深度學習的時候也是一臉懵逼,覺得很高大上,然而並不知道它到底是幹啥的。關於什麼是深度學習,深度學習能做些什麼事情?在 deeplearning.ai 的神經網路和深度學習課程中做過介紹。

以下是吳恩達老師的原話:

深度學習改變了傳統網際網路業務,例如如網路搜尋和廣告,但是深度學習同時也使得許多新產品和企業以很多方式幫助人們,從獲得更好的健康關注。

深度學習做的非常好的一個方面就是讀取X光影象,除此之外還有生活中的個性化教育,到精準化農業,甚至到駕駛汽車以及其它一些方面。

在接下來的十年中,我認為我們所有人都有機會創造一個驚人的世界和社會,這就是 AI (人工智慧)的力量。我希望你們能在建立 AI (人工智慧)社會的過程中發揮重要作用。

我認為AI是最新的電力,大約在一百年前,我們社會的電氣化改變了每個主要行業,從交通運輸行業到製造業、醫療保健、通訊等方面,我認為現在我們見到了 AI 明顯的令人驚訝的能量,帶來了同樣巨大的轉變。顯然,AI 的各個分支中,發展的最為迅速的就是深度學習。因此現在,深度學習是在科技世界中廣受歡迎的一種技巧。

其實只要你一搜深度學習就是各種鋪天蓋地的新聞和資料,

關於深度學習的用途,現在最熟知的莫過於,用一個深度神經網路進行貓咪辨認,如下圖,可以看到兩隻小貓咪,那麼以電腦為首的機器,能不能識別出有幾隻貓咪,什麼品種的貓咪(我太喜歡小貓小狗了 )。

神經網路

大概了解了深度學習之後,下一個就應該是神經網路了。

我們常常用深度學習這個術語來指訓練神經網路的過程。有時它指的是特別大規模的神經網路訓練。那麼神經網路究竟是什麼呢?

讓我們從一個房價預測的例子開始講起。假設你有一個數據集,它包含了六棟房子的資訊。所以也就是說,你知道房屋的具體資訊,比如面積是多少平方英尺或者平方米,並且知道房屋價格,目標函式是預測房價。

這時,就需要擬合一個根據房屋面積預測房價的函式。如果對線性迴歸很熟悉,你應該很容易就用這些資料擬合一條直線。

但奇怪的是,你可能也發現了,價格永遠不會是負數,也就是等於或者大於0。因此,直線需要彎曲一點並最終在零結束。這條藍色的手劃線就是最終的函式,用於根據房屋面積預測價格。雖然這條直線擬合的不錯,但是因為價格永不負數的緣故,你也許會認為這個函式只擬合房屋價格,沒啥普適性,偶然性反而更大一些。

把房屋的面積(size)作為神經網路的輸入,用x xx表示,通過一個小圓圈,其實這個小圓圈就是一個單獨的神經元(neuron),最終輸出了價格(price),用y yy表示。到這裡網路就實現了左邊的功能。

劇透一下,在有關神經網路的文獻中,你會經常看到這個函式。從趨於零開始,然後變成一條直線,幾乎可以說是完全擬合了房屋價格和房屋面積的關係。這個函式被稱作 ReLU 啟用函式,它的全稱是 線性整流函式(Rectified Linear Unit, ReLU),又稱 修正線性單元。修正可以理解成 max(0,x) max(0,x)max(0,x),這也是函式這個形狀的原因。

至於很多同學擔心的數學問題,這裡提出了Relu函式,你現在不用擔心,之後我們會詳細地講到它。

可以看到我們已經簡單地搭建了一個單神經元網路,如果可以的話也可以叫它 神經網路,不管規模的大小,即便只有一個神經元,它也是通過把這些單個神經元疊加在一起來形成一個大的網路。比較經典的類比就是,把這些神經元想象成單獨的樂高積木,你就通過搭積木來完成一個更大的神經網路。

下圖是神經網路:

下圖是樂高積木:

有沒有一種相似的感覺???

還是來看剛才的例子,不僅僅用房屋的面積來預測它的價格,還有其他相關房屋特徵,比如臥室的數量,家人的數量等等。

在kaggle上有一個經典的競賽題目就是房價預測,具體說明如下:

可以看到影響最終價格的因素可以很多,甚至高達79個。這些都可以在圖上用小圓圈代替,也就是說都可以是 ReLU 的一部分,再或者其它非線性函式的一部分。對於一個房子來說,這些都是與它息息相關的事情。在這個情景裡,除了房屋面積之外,還有比如臥室的數量,郵政編碼(交通便利程度),富裕程度等。

神經網路的神奇之處在於,當你實現它之後,你要做的只是輸入x xx,就能得到輸出y yy,這就成為了一個端到端的系統以實現功能。不過神經網路需要大量的資料,從而精準地從x xx到y yy實現對映函式。這些資料是需要有 label 標註的,也就是監督學習,可能你不知道什麼是監督學習,彆著急,下一節會講到的。你會發現神經網路在監督學習的環境下是如此的有效和強大,也就是說你只要嘗試輸入一個x xx,即可把它對映成y yy,就好像剛才在房價預測中看到的效果,轉換成了一個簡單數學問題,是不是很棒!

監督學習

神經網路有很多種類,根據不同的場景,考慮到使用的效果,會產生不一樣的化學反應,事實證明,目前幾乎所有神經網路創造的經濟價值,本質上都離不開 監督學習。

監督學習是指:利用一組已知類別的樣本調整分類器的引數,使其達到所要求效能的過程,也稱為監督訓練或有教師學習。

現在深度學習比較熱門的領域,就是線上廣告。這也許不是最鼓舞人心的,但真的很賺錢(尼瑪,還真是真實=-=)。具體就是通過在網站上輸入一個廣告的相關資訊,因為也輸入了使用者的相關資訊,於是網站就會考慮是否向你展示廣告,你的點選的行為會直接影響到一些大型線上廣告公司的收入。再舉一個某寶的例子,你在挑選自己想要的產品時,系統會推薦一些類似的或者相關的產品給你,而這有可能會導致你的連帶消費,這個點選行為可能會直接影響到一些產品公司的收入。

除此之外,計算機視覺在過去的幾年裡也依靠深度學習取得了長足的進步。最經典的例子是手寫數字識別,輸入你的手寫數字,計算機就可以輸出相應的真實數字。

還有在語音識別方面的進步也是非常令人興奮的。比如語音輸入轉換為文字,像訊飛之類的輸入法公司。還有得益於深度學習,機器翻譯也有很大的發展,比如百度。

而這些都是監督學習,因為都是利用一組已知類別的樣本調整分類器的引數。

結構化和非結構化

你可能也聽說過機器學習對於結構化資料和非結構化資料的應用,結構化資料意味著資料的基本資料庫。例如在房價預測中,你可能有一個數據庫,有專門的幾列資料告訴你臥室的大小和數量,這就是結構化資料。或預測使用者是否會點選廣告,你可能會得到關於使用者的資訊,比如年齡以及關於廣告的一些資訊,然後對你的預測分類標註,這就是結構化資料,意思是每個特徵,比如說房屋大小臥室數量,或者是一個使用者的年齡,都有一個很好的定義。

相反非結構化資料是指比如音訊,原始音訊或者你想要識別的影象或文字中的內容。這裡的特徵可能是影象中的畫素值或文字中的單個單詞。

從歷史經驗上看,處理非結構化資料是很難的,與結構化資料比較,讓計算機理解非結構化資料很難,而人類進化得非常善於理解音訊訊號和影象,文字是一個更近代的發明,但是人們真的很擅長解讀非結構化資料。

神經網路的興起就是這樣最令人興奮的事情之一,多虧了深度學習和神經網路,計算機現在能更好地解釋非結構化資料,這是與幾年前相比的結果。許多新的令人興奮的應用被使用,語音識別、影象識別、自然語言文書處理,甚至可能比兩三年前的還要多!!!

為什麼深度學習會興起?

推動深度學習變得如此熱門的主要因素有三個:資料規模、計算量及演算法的創新。

1958年Rosenblatt發明的感知演算法可對輸入的多維資料進行二分類,且能夠使用梯度下降法從訓練樣本中自動學習更新權值。

1986年Hiton發明的MLP的BP演算法,並採用Sigmoid進行非線性對映,有效解決了非線性公類和學習的問題。該方法引發了神經網路的第二次熱潮。

2006年,深度學習元年。Hiton提出了深層網路訓練中梯度消失問題的解決方案:“無監督訓練對權值進行初始化+有監督訓練微調”。其主要思想是先通過自學習的方法學習到訓練資料的結構,然後在該結構上進行有監督訓練微調。

2012年Hiton課題組首次參加ImageNet影象識別比賽,AlexNet奪得冠軍,並碾壓了第二名(SVM)的分類效能。

這麼看來其實深度學習和神經網路之前的基礎技術理念已經存在大概幾十年了,為什麼它們現在才突然流行起來呢?先來看一下時間線中最重要的2012年,為什麼深度學習在這一年火了?先來看一下為什麼深度學習能夠如此有效?

來畫個圖,在水平軸上畫一個形狀,在此繪製出所有任務的資料量,而在垂直軸上,畫出機器學習演算法的效能。根據影象可以發現,如果把一個傳統機器學習演算法的效能畫出來,作為資料量的一個函式,你可能得到一個彎曲的線,就像圖中這樣,它的效能一開始在增加更多資料時會上升,但是一段變化後它的效能就會像一個高原一樣。

而數字化社會來臨了,資料量變得非常巨大,比如在電腦網

站上、在手機軟體上以及其它數字化的服務,它們都能建立資料,同時便宜的相機被配置到行動電話,還有加速儀及各類各樣的感測器,同時在物聯網領域也收集到了越來越多的資料。僅僅在過去的20年裡對於很多應用,我們便收集到了大量的資料,遠超過機器學習演算法能夠高效發揮它們優勢的規模。

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

因此你會發現,如果想要獲得較高的效能體現,那麼有兩個條件要達到,第一個是一個規模足夠大的神經網路,以發揮資料規模量巨大的優點,另外一個是需要能畫到x xx軸的這個位置,也就是需要大量資料。所以事實上現在最可靠的方法來在神經網路上獲得更好的效能,往往就是要麼訓練一個更大的神經網路,要麼投入更多的資料,這隻能在一定程度上起作用,因為最終你耗盡了資料,或者最終你的網路是如此大規模導致將要用太久的時間去訓練,但是僅僅提升規模的的確確地讓我們在深度學習的世界中摸索了很多時間。

然而真的只有這兩個因素嘛?只有資料和演算法?

答案當然是No,還有一個重要的原因就是不斷增長的計算力(CPU和GPU的發展)。 過去的幾年裡有很多巨大的演算法創新,其中很多演算法創新都只是為了讓神經網路執行得更快(相當於提升計算力)。例如,一個巨大的突破就是用relu函式代替了sigmoid函式。這些新演算法大大縮短了神經網路的訓練週期,讓我們可以訓練更大的神經網路、利用上更多的訓練資料。

除此之外,強大計算力的另一個很重要的原因是,它可以讓你更快的驗證自己的想法,以便不斷試錯,以得到更好的想法。例如,你有一個神經網路架構的想法,你用程式碼實現了你的想法,然後執行它,進行訓練,然後通過觀察它,分析執行結果,然後你再修改自己的想法細節,然後再執行再觀察再修改…。就這樣不停地來回試錯,所以執行這個試錯的週期就很關鍵了。這也是為什麼很多傳統方向的人會有一些鄙視我們方向,因為他們把深度學習理解為調參…好氣啊我。

總結

綜合以上,深度學習火起來的三大要素就是,資料,計算力,演算法。而演算法在不斷地被創新,訓練資料不斷地在被收集,計算力CPU、GPU也在不斷地增強,所以你我要充滿信心,深度學習會越來越強大,越來越厲害,做更多的事!!!

————————————————

原文連結:/file/2019/10/05/20191005182214_1624.jpg

  • 整治雙十一購物亂象,國家再次出手!該跟這些套路說再見了
  • 美團、餓了麼不斷壯大的背後是中國人最真實的寫照