1. 程式人生 > >Elam的吳恩達深度學習課程筆記(一)

Elam的吳恩達深度學習課程筆記(一)

記憶力是真的差,看過的東西要是一直不用的話就會馬上忘記,於是乎有了寫部落格把學過的東西儲存下來,大概就是所謂的集鞏固,分享,後期查閱與一身的思想吧,下面開始正題

深度學習概論

什麼是神經網路

什麼是神經網路呢,我們就以房價預測為例子來描述一個最簡單的神經網路模型。
  假設有6間房屋的資料,已知房屋的面積,單位是平方英尺或者平方米,已知房屋的價格,想要找到一個函式,通過房屋的面積來預測房屋的價格。
如下圖所示

最簡單的神經網路模型

要通過這些點預測房屋價格,最直觀的方法就是線性擬合,於是我們得到:


在這裡插入圖片描述

同時我們加入約束,即房價並不為0(或者以非線性的形式最後與0,0點相交) 


在這裡插入圖片描述

這就是最簡單的神經網路了,我們把房屋的面積作為神經網路的輸入,x,通過一個節點,最後得到輸出房屋價格y。如下圖所示:


在這裡插入圖片描述

在神經網路中,我們把這個節點稱為神經元,在上述例子中,這個神經元做的事情就是輸入面積,完成線性運算取不小於0的值(或其他約束條件),最後得到輸出,預測的價格。


在這裡插入圖片描述

在神經網路中這個函式形式是非常常見的,我們把這種形式的函式稱之為ReLU函式ReLU中文解釋為“修正線性單元”,其中修正指的就是取不小於0的值,我們將在以後重點介紹ReLU函式。
  上述的預測模型就是最簡單的單神經元網路,多個單神經元堆疊的組合就形成了複雜的神經網路。
  現在我們嘗試把上述簡單的房價預測模型複雜化,使它更具現實意義。除了單純的房屋面積,我們還知道了其他資訊,如臥室的數量、郵政編碼和富裕程度。家庭的人員數量某種程度上決定了這個家庭的房屋面積和臥室數量,是三口之家(2個臥室)、四口之家(3個臥室)等等。此外,郵政編碼能夠作為特徵描述某區域的步行化程度,有些人喜歡高度步行化的區域。同時,郵政編碼還可以描述附近的學校質量。而這個區域的富裕程度也會影像附近的學校質量。這樣我們就根據房屋大小,臥室數量,郵政編碼和富裕程度四個已知條件通過各自對應的ReLU函式得到家庭人數,步行化程度,學校質量三個指標,而這3個指標可以幫助我們預測最後房屋的價格。如下圖所示:我們通過這些獨立神經元的疊加,就得到了一個相對較大的神經網路。


在這裡插入圖片描述

在這個過程中,我們實際做的事情就是輸入若干特徵比如房屋大小,臥室數量,郵政編碼,富裕程度,最後神經網路會給出房屋的預測價格,下圖中箭頭所指的圓圈在神經網路中被稱為隱藏單元,沒個隱藏單元的輸入都同時來自前面的四個特徵,比如在這個例子中,我們不會說第一個隱藏單元代表的是家庭人口,亦或是它只與X1,和X2有關係,神經網路會自己去決定這個單元是什麼,我們只會給它所有的輸入,它自己去根據資料的特點得到最後的輸出。


在這裡插入圖片描述

因此,我們給網路喂足夠多的資料樣本(X,Y),神經網路會自己根據這些訓練樣本學習出X與y精確的對映函式。從這點上看神經網路就是一種高階的,複雜的,智慧的,函式擬合過程。

神經網路的本質:監督學習

現在神經網路被媒體吹的神乎其神,雖然有誇大其詞的成分,但是其中有一部分還是實實在在創造了不少經濟價值的。神經網路是包含於機器學習這門大學科中的,而它的大部分的實際應用,其實本質都是基於機器學習的其中一種方式:監督學習(Supervised Learning)。
  在監督學習中,我們輸入一個x,學習得到一個函式,對映得到最後的輸出y,在房價預測中,我們輸入房屋特徵,最後輸出房屋的預測價格。 下面是神經網路效果拔群的一些應用。比如在線上廣告領域,我們輸入廣告以及一定的使用者資訊,比如,歷史記錄中哪些人會點選哪些廣告,最終,網站就會考慮是否給你看這個廣告,或者給你推送你最有可能點開的廣告。隨著深度學習的發展,計算機視覺也有進展,我們可以輸入一幅影象,最後輸出一個指數(比如0-1000中的某個值),表示這幅影象是區別於其他1000種類型的影象,可以對照片打標籤。在語音識別領域,我們輸入一段語音,最後輸出一個文字。機器翻譯領域發展也相當迅速,我們可以輸入一段英語,最後輸出得到相同意思的中文。最近非常熱的自動駕駛領域中,我們輸入車頭拍攝的實時影像以及相應的車載雷達資訊,系統就能告訴你路上其他汽車的位置,以便於無人駕駛。從上面我們可以看到略微不同的神經網路可以應用到不同的領域,且效果很好。比如房價預測和線上廣告領域,使用的都是相對標準的神經網路(standard neural network),在影象識別領域,用到的大部分都是卷積神經網路(CNN)。語音識別,機器翻譯等領域,使用的資料都是序列資料(語音,句子等等),因此使用的都是迴圈神經網路(RNN)。對於更加複雜的無人駕駛領域,則需要多種網路同時使用。


在這裡插入圖片描述

下面是三種相對常用的神經網路,適用於各自擅長的領域


在這裡插入圖片描述

除了演算法,我們在監督學習中輸入的資料一般被分為結構化資料和非結構化資料,如下圖所示:

在這裡插入圖片描述

不難看出來,結構化資料就是屬性相對明確的,代表的含義非常確定的資料,更像一個數據的資料庫,譬如在房價預測當中的輸入如房間大小,臥室數量等等。而非結構化資料主要指的就是屬性不是相對明確的,比如影象,音訊,文字等等,這些資料當中的特徵可能是畫素,文字等等,在計算機處理的過程中,非結構化資料相比結構化資料更難理解。但是深度學習和神經網路的發展,使得我們處理這類資料能力有了非常大的提高。

深度學習的興起

其實深度學習的理論已經發展了很久了,為什麼深度學習近幾年才開始興起呢?


在這裡插入圖片描述

上圖是傳統的機器學習演算法在資料量變化時,演算法表現(準確率)相對應的變化圖,我們可以看到,在資料量相對較小的時候增加資料量可以提高傳統機器學習演算法的表現,但是當資料量大到一定程度時,傳統機器學習演算法的效能會進入平臺期,即不管你資料量怎麼增大,最終效能達到瓶頸,不再提升。因此,在過去資料匱乏的年代,傳統機器學習的演算法是主流。但是隨著科技的發展,我們能獲取到的資料越來越多。我們發現神經網路在處理大資料量的過程中表現出來的效能要遠遠超過傳統機器學習。如下圖所示


在這裡插入圖片描述

我們可以看到,當資料量不斷增大時,越複雜的神經網路的效能越晚進入平臺期,且都遠遠超過了傳統機器學習演算法。除此之外,我們可以看到當資料量較小時,神經網路面對傳統機器學習演算法並沒有特別的優勢,甚至通過演算法的優化,傳統機器學習演算法的效能還會超越神經網路。雖然神經網路不是萬能的,但是它的流行是不可避免的,因為它更符合當下資料爆炸的時代。
  除了資料之外,越複雜的神經網路意味著更加多的計算量,龐大的計算量和計算能力需要硬體的支援,近幾年如GPU,CPU等硬體的發展,也為深度學習的流行奠定了基礎。同時深度學習本身演算法的創新更是極大加快了在利用海量資料擬合最後的模型過程所耗的時間(將sigmod函式替換為ReLU單元),使得深度學習工作者可以加快自己的創新性研究,從而推動整個領域的發展。
  學無止境,共勉。