【DeepLearning學習筆記】Coursera課程《Neural Networks and Deep Learning》——Week1 Introduction to deep learning課堂筆記
Coursera課程《Neural Networks and Deep Learning》 deeplearning.ai
Week1 Introduction to deep learning
What is a Neural Network?
讓我們從一個房價預測的例子開始講起。
假設你有一個數據集,它包含了六棟房子的信息。所以,你知道房屋的面積是多少平方英尺或者平方米,並且知道房屋價格。這時,你想要擬合一個根據房屋面積預測房價的函數。
如果使用線性回歸進行擬合,那麽可以擬合出一條直線。但是我們知道,價格永遠不會是負數的。因此,為了替代一條可能會讓價格為負的直線,我們把直線折一下,讓它在這裏歸零。所以這條粗的藍線最終就是我們的函數。
我們可以把這個方程當做一個很簡單的神經網絡。
我們把房屋的面積作為神經網絡的輸入(我們稱之為\(x\)),通過一個節點(一個小圓圈),最終輸出了價格(我們用\(y\)表示)。其實這個小圓圈就是一個單獨的神經元。接著你的網絡實現了左邊這個函數的功能。
在有關神經網絡的文獻中,經常看得到這個函數。從趨近於零開始,然後變成一條直線。這個函數被稱作ReLU激活函數,它的全稱是修正線性單元Rectified Linear Unit。可以理解成\(max(0,x)\),這也是得到一個這種形狀的函數的原因。
如果這是一個單神經元網絡,不管規模大小,它正是通過把這些單個神經元疊加在一起來形成。如果你把這些神經元想象成單獨的樂高積木,你就通過搭積木來完成一個更大的神經網絡。
假設我們不僅僅用房屋的面積來預測它的價格,現在你有了一些有關房屋的其它特征,比如臥室的數量,或許有一個很重要的因素,一家人的數量也會影響房屋價格,這個房屋能住下一家人或者是四五個人的家庭嗎?而這確實是基於房屋大小,以及真正決定一棟房子是否能適合你們家庭人數的臥室數。
你可能知道郵政編碼或許能作為一個特征,告訴你步行化程度。比如這附近是不是高度步行化,你是否能步行去雜貨店或者是學校,以及你是否需要駕駛汽車。有些人喜歡居住在以步行為主的區域,另外根據郵政編碼還和富裕程度相關(在美國是這樣的)。但在其它國家也可能體現出附近學校的水平有多好。
在圖上每一個畫的小圓圈都可以是ReLU的一部分,也就是指修正線性單元,或者其它稍微非線性的函數。基於房屋面積和臥室數量,可以估算家庭人口,基於郵編,可以估測步行化程度或者學校的質量。最後這些決定人們樂意花費多少錢。
以此為例,\(x\) 是所有的這四個輸入,\(y\) 是你嘗試預測的價格,把這些單個的神經元疊加在一起,我們就有了一個稍微大一點的神經網絡。
神經網絡的一部分神奇之處在於,當你實現它之後,你要做的只是輸入\(x\),就能得到輸出\(y\)。因為它可以自己計算你訓練集中樣本的數目以及所有的中間過程。中間的這些圓圈被叫做隱藏單元圓圈,在一個神經網絡中,它們每個都從輸入的四個特征獲得自身輸入。
值得註意的是神經網絡給予了足夠多的關於\(x\)和\(y\)的數據,給予了足夠的訓練樣本有關\(x\)和\(y\)。神經網絡非常擅長計算從\(x\)到\(y\)的精準映射函數。
Supervised Learning with Neural Networks
監督學習的一些應用舉例,以及它們常用的神經網絡。
神經網絡類型
下圖是一種標準神經網絡。
而下圖是卷積神經網絡(CNN)。它通常用於圖像數據。
下圖是遞歸神經網絡(RNN)。它非常適合處理一維序列,一維序列化數據也許就是時序數據。
結構化數據與非結構化數據
結構化數據(Structured Data)意味著數據的基本數據庫。例如在房價預測中,你可能有一個數據庫,有專門的幾列數據告訴你臥室的大小和數量,這就是結構化數據。
非結構化數據(Unstructured Data)是指比如音頻,原始音頻或者你想要識別的圖像或文本中的內容。這裏的特征可能是圖像中的像素值或文本中的單個單詞。
Why is Deep Learning taking off?
如果你把一個傳統機器學習算法的性能畫出來,作為數據量的一個函數,你可能得到一個彎曲的線,就像圖中這樣,它的性能一開始在增加更多數據時會上升,但是一段變化後它的性能就會像一個高原一樣。假設你的水平軸拉的很長很長,它們不知道如何處理規模巨大的數據。
神經網絡展現出的是,如果你訓練一個小型的神經網絡,那麽這個性能可能會像下圖黃色曲線表示那樣;如果你訓練一個稍微大一點的神經網絡,比如說一個中等規模的神經網絡(下圖藍色曲線),它在某些數據上面的性能也會更好一些;如果你訓練一個非常大的神經網絡,它就會變成下圖綠色曲線那樣,並且保持變得越來越好。因此可以註意到兩點:如果你想要獲得較高的性能體現,那麽你有兩個條件要完成,第一個是你需要訓練一個規模足夠大的神經網絡,以發揮數據規模量巨大的優點,另外你需要能畫到\(x\)軸的這個位置,所以你需要很多的數據。因此我們經常說規模一直在推動深度學習的進步,這裏的規模指的也同時是神經網絡的規模,我們需要一個帶有許多隱藏單元的神經網絡,也有許多的參數及關聯性,就如同需要大規模的數據一樣。事實上如今最可靠的方法來在神經網絡上獲得更好的性能,往往就是要麽訓練一個更大的神經網絡,要麽投入更多的數據,這只能在一定程度上起作用,因為最終你耗盡了數據,或者最終你的網絡是如此大規模導致將要用太久的時間去訓練,但是僅僅提升規模的的確確地讓我們在深度學習的世界中摸索了很多時間。
【參考】
[1]Coursera深度學習教程中文筆記
【DeepLearning學習筆記】Coursera課程《Neural Networks and Deep Learning》——Week1 Introduction to deep learning課堂筆記