吳恩達深度學習課程之第一門課 神經網絡和深度學習 第一週課程筆記

本文參考黃海廣主編針對吳恩達深度學習課程DeepLearning.ai 《深度學習課程 筆記 (V5.1 )》

一、 第一週 : 深度學習引言

1.1 歡迎(Welcome)

什麼是深度學習,深度學習能做些什麼事情?

1. 深度學習改變了傳統互聯網業務,例如如網絡搜索和廣告。

2. 深度學習同時也使得許多新產品和企業以很多方式幫助人們,從獲得更好的健康關注。

應用:

一個方面就是讀取 X 光圖像,到生活中的個性化教育,到精準化農業,甚至到駕駛汽車以及其它一些方面。如果你想要學習深度學習的這些工具,並應用它們來做這些令人窒息的操作
 AI 是最新的電力,大約在一百年前,我們社會的電氣化改變了每個主要行業,從交通運輸行業到製造業、醫療保健、通訊等方面,我認爲如今我們見到了 AI 明顯的令人驚訝的能量,帶來了同樣巨大的轉變。顯然,AI 的各個分支中,發展的最爲迅速的就是深度學習。因此現在,深度學習是在科技世界中廣受歡迎的一種技巧。

 1.2 什麼是神經網絡?(What is a Neural Network)

我們常常用深度學習這個術語來指訓練神經網絡的過程。有時它指的是特別大規模的神
經網絡訓練。

神經網絡究竟是什麼呢?

舉例一:房價預測的例子(單神經元網絡一:一個X房屋的面積   預測一個Y房屋價格

假設你有一個數據集,它包含了六棟房子的信息。

所以,你知道房屋的面積是多少平方英尺或者平方米,並且知道房屋價格。這時,你想要擬合一個根據房屋面積預測房價的函數。如果你對線性迴歸很熟悉,你可能會說:“好吧,讓我們用這些數據擬合一條直線。”於
是你可能會得到這樣一條直線。

價格永遠不會是負數的。因此,爲了替代一條可能會讓價格爲負的直線,我們把直線彎曲一點,讓它最終在零結束。這條粗的藍線最終就是你的函數,用於根據房屋面積預測價格。有部分是零,而直線的部分擬合的很好。你也許認爲這個函數只擬合房屋價格。
作爲一個神經網絡,這幾乎可能是最簡單的神經網絡

我們把房屋的面積作爲神經網絡的輸入(我們稱之爲x),通過一個節點(一個小圓圈),最終輸出了價格(我們用𝑧表示)。其實這個小圓圈就是一個單獨的神經元。
在有關神經網絡的文獻中,你經常看得到這個函數。從趨近於零開始,然後變成一條直線。這個函數被稱作 ReLU 激活函數,它的全稱是 Rectified Linear Unit。rectify(修正)可以理解成max(0,x),這也是你得到一個這種形狀的函數的原因。

舉例二:

我們不僅僅用房屋的面積來預測它的價格,現在有了一些有關房屋的其它特徵,比如臥室的數量,或許有一個很重要的因素,一家人的數量也會影響房屋價格,而這確實是基於房屋大小,以及真正決定一棟房子是否能適合你們家庭人數的臥室數。換個話題,你可能知道郵政編碼或許能作爲一個特徵,告訴你步行化程度。比如這附近是不是高度步行化,你是否能步行去雜貨店或者是學校,以及你是否需要駕駛汽車。有些人喜歡居住在以步行爲主的區域,另外根據郵政編碼還和富裕程度相關(在美國是這樣的)。
但在其它國家也可能體現出附近學校的水平有多好。

在圖上每一個畫的小圓圈都可以是 ReLU 的一部分,也就是指修正線性單元,或者其它稍微非線性的函數。基於房屋面積和臥室數量,可以估算家庭人口,基於郵編,可以估測步行化程度或者學校的質量。最後你可能會這樣想,這些決定人們樂意花費多少錢。
對於一個房子來說,這些都是與它息息相關的事情。在這個情景裏,家庭人口、步行化程度以及學校的質量都能幫助你預測房屋的價格。以此爲例,x 是所有的這四個輸入,y是你嘗試預測的價格,把這些單個的神經元疊加在一起,我們就有了一個稍微大一點的神經網絡。這顯示了神經網絡的神奇之處,雖然我已經描述了一個神經網絡,它可以需要你得到房
屋面積、步行化程度和學校的質量,或者其它影響價格的因素。

 神經網絡的一部分神奇之處在於,當你實現它之後,你要做的只是輸入x,就能得到輸出y。

值得注意的是神經網絡給予了足夠多的關於𝑦和𝑧的數據,給予了足夠的訓練樣本有關x和y。神經網絡非常擅長計算從x到y的精準映射函數。這就是一個基礎的神經網絡。

 

1.3 神經網絡的監督學習(Supervised Learning with Neural Networks)

如今應用深度學習獲利最多的一個領域,就是在線廣告。這也許不是最鼓舞人心的,但真的很賺錢。
計算機視覺在過去的幾年裏也取得了長足的進步,這也多虧了深度學習。你可以輸入一個圖像,然後想輸出一個索引,範圍從 1 到 1000 來試着告訴你這張照片,它可能是,比方說,1000 個不同的圖像中的任何一個,所以你可能會選擇用它來給照片打標籤。

深度學習最近在語音識別方面的進步也是非常令人興奮的,你現在可以將音頻片段輸入神經網絡,然後讓它輸出文本記錄。得益於深度學習,機器翻譯也有很大的發展。你可以利用神經網絡輸入英語句子,接着輸出一箇中文句子。
自動駕駛技術中,你可以輸入一幅圖像,就好像一個信息雷達展示汽車前方有什麼,據此,你可以訓練一個神經網絡,來告訴汽車在馬路上面具體的位置,這就是神經網絡在自動駕駛系統中的一個關鍵成分。

網絡應用

對於圖像應用,我們經常在神經網絡上使用卷積(Convolutional Neural Network),通常縮寫爲 CNN

對於序列數據,例如音頻,有一個時間組件,隨着時間的推移,音頻被播放出來,所以音頻是最自然的表現。作爲一維時間序列(兩種英文說法 one-dimensional timeseries / temporal sequence).對於序列數據,經常使用 RNN一種遞歸神經網絡(RecurrentNeural Network),語言,英語和漢語字母表或單詞都是逐個出現的,所以語言也是最自然的序列數據,因此更復雜的 RNNs 版本經常用於這些應用。
對於更復雜的應用比如自動駕駛,你有一張圖片,可能會顯示更多的 CNN 卷積神經網絡結構,其中的雷達信息是完全不同的,你可能會有一個更定製的,或者一些更復雜的混合的神經網絡結構。所以爲了更具體地說明什麼是標準的 CNN 和 RNN 結構,在文獻中你可能見過這樣的圖片,這是一個標準的神經網絡。

這是一個卷積神經網絡的例子,CNN通常用於圖像數據。

遞歸神經網絡(RNN)非常適合這種一維序列,數據可能是一個時間組成部分。

你可能也聽說過機器學習對於結構化數據非結構化數據的應用。

結構化數據意味着數據的基本數據庫。例如在房價預測中,你可能有一個數據庫,有專門的幾列數據告訴你臥室的大小和數量,這就是結構化數據。或預測用戶是否會點擊廣告,你可能會得到關於用戶的信息,比如年齡以及關於廣告的一些信息,然後對你的預測分類標註,這就是結構化數據,意思是每個特徵,比如說房屋大小臥室數量,或者是一個用戶的年齡,都有一個很好的定義。

相反非結構化數據是指比如音頻,原始音頻或者你想要識別的圖像或文本中的內容。這裏的特徵可能是圖像中的像素值或文本中的單個單詞。

 從歷史經驗上看,處理非結構化數據是很難的,與結構化數據比較,讓計算機理解非結構化數據很難,而人類進化得非常善於理解音頻信號和圖像,文本是一個更近代的發明,但是人們真的很擅長解讀非結構化數據

多虧了深度學習和神經網絡,計算機現在能更好地解釋非結構化數據,這是與幾年前相比的結果,這爲我們創造了機會。許多新的令人興奮的應用被使用,語音識別、圖像識別、自然語言文字處理,甚至可能比兩三年前的還要多。

因爲人們天生就有本領去理解非結構化數據,你可能聽說了神經網絡更多在媒體非結構化數據的成功。但結果也表明,神經網絡在許多短期經濟價值的創造,也是基於結構化數據的。比如更好的廣告系統、更好的利潤建議,還有更好的處理大數據的能力。許多公司不得不根據神經網絡做出準確的預測。
神經網絡已經改變了監督學習,正創造着巨大的經濟價值,事實證明,基本的神經網絡背後的技術理念大部分都離我們不遙遠。

1.4 爲什麼深度學習會興起?(Why is Deep Learning takingoff?)

推動深度學習變得如此熱門的主要因素:包括數據規模、計算量及算法的創新

多虧數字化社會的來臨,現在的數據量都非常巨大,我們花了很多時間活動在這些數字的領域,比如在電腦網站上、在手機軟件上以及其它數字化的服務,它們都能創建數據,同時便宜的相機被配置到移動電話,還有加速儀及各類各樣的傳感器,同時在物聯網領域我們也收集到了越來越多的數據。僅僅在過去的 20 年裏對於很多應用,我們便收集到了大量的數據,遠超過機器學習算法能夠高效發揮它們優勢的規模。
神經網絡展現出的是,如果你訓練一個小型的神經網絡,那麼這個性能可能會像下圖黃色曲線表示那樣;如果你訓練一個稍微大一點的神經網絡,比如說一個中等規模的神經網絡(下圖藍色曲線),它在某些數據上面的性能也會更好一些;如果你訓練一個非常大的神經網絡,它就會變成下圖綠色曲線那樣,並且保持變得越來越好。

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

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

2. 很多的數據。

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

在深度學習萌芽的初期,數據的規模以及計算量,侷限在我們對於訓練一個特別大的神經網絡的能力,無論是在 CPU 還是 GPU 上面,那都使得我們取得了巨大的進步。但是漸漸地,尤其是在最近這幾年,我們也見證了算法方面的極大創新。許多算法方面的創新,一直是在嘗試着使得神經網絡運行的更快。
作爲一個具體的例子,神經網絡方面的一個巨大突破是從 sigmoid 函數轉換到一個 ReLU函數,這個函數我們在之前的課程裏提到過。

可以知道的一個使用 sigmoid 函數和機器學習問題是,在這個區域,也就是這個 sigmoid 函數的梯度會接近零,所以學習的速度會變得非常緩慢,因爲當你實現梯度下降以及梯度接近零的時候,參數會更新的很慢,所以學習的速率也會變的很慢,而通過改變這個被叫做激活函數的東西,神經網絡換用這一個函數,叫做 ReLU 的函數(修正線性單元),ReLU 它的梯度對於所有輸入的負值都是零,因此梯度更加不會趨向逐漸減少到零

而這裏的梯度,這條線的斜率在這左邊是零,僅僅通過將 Sigmod 函數轉換成 ReLU 函數,便能夠使得一個叫做梯度下降(gradient descent)的算法運行的更快,這就是一個或許相對比較簡單的算法創新的例子。但是根本上算法創新所帶來的影響,實際上是對計算帶來的優化。

 研究表明我們的社會仍然正在拋出越來越多的數字化數據,或者用一些特殊的硬件來進行計算,比如說 GPU,以及更快的網絡連接各種硬件。

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章