【李宏毅老師2021系列】深度學習基本概念簡介
這個系列是在觀看李宏毅老師2021系列的筆記,希望能用更濃縮的方式將內容整理下來。
此篇筆記來自此課程:https://www.youtube.com/watch?v=bHcJCp2Fyxs&t=2699s
Linear Model are too simple
- 線性的模型可以調整weight去改變function的斜率,或者改變bias去改變function在y軸上的位置,但不管再怎麼改變,function終究是一條直線,這種來自model的限制稱作 model bias。
- 然而實際情況,應該會是更複雜的,以預測觀看人數來說,可能前一天的觀看人數小於某個值,隔天的觀看人數就會成長,但大於某個值,隔天觀看人數就會下降。(非線性的例子:紅線)
We Need a more flexible Function
- 紅色的曲線:常數 + 一堆藍色的function(小於某個門檻是某個固定數值,大於某個門檻是某個固定數值)。
- 這些藍色function 稱作piecewise linear curves。
- 就算今天想要找的function,是更平滑的 (beyond piecewise linear),我們也能先從平滑的曲線中取一些點出來,當作是piecewise linear curves,點取得越多,也就是藍色function越多,就會越貼近平滑的function。
藍色function (Hard Sigmoid)
- 這種S形的藍色function叫做sigmoid,公式如下
- y = c * sigmoid(b+w*x1)
- 只要改變w, b, c,就能夠製造出不同形狀的sigmoid function。
- 改變weight會改變斜率 (slopes),改變b會改變左右位置 (shift),改變c會改變高度 (height)。
- 回到圖2,要找出紅色的function,就是要把1、2、3加起來,因此公式如下 (圖5)
視覺化拆解公式
- 圖6在解釋sigmoid裡面在做的事情,也就是有 j 個feature,有 i 個 sigmoid function,把它們submension起來的結果以 r 表示,表示法就如下圖。
- r1, r2, r3都算出來之後,會再通過sigmoid function,得到a1, a2, a3,最後再各自乘上c1, c2, c3,submension後再加上 bias,就得到最終的y。
- 圖7的下半部是以線性代數、矩陣運算的方式所呈現的表示法。
小結
我們已經完成機器學習的第一步 (function with unknown),上面的例子x 是input feature,而unknown parameters,就是bias (數值)、c、b (矩陣)、w,這些是機器需要學習的參數,把它們全部都flatten後合併在一起稱作 θ。
Define a Loss Function
這邊計算loss的方式跟機器學習也是一樣的。
Loss function = L(θ),去計算 label_y 跟 predict_y 之間的差距。
Optimization
跟機器學習同樣使用gradient descent去找到一組 θ,可以讓loss的值最小,我們叫它 θ。
- 隨機選一個初始 θ。
- 計算gradient,必須去計算每一個 θ 和帶入loss function後數值的微分,就會算出一個g (矩陣)
- 計算完gradient後,讓原本的 θ0 減去 (learning rate乘上gradient),就完成了一次的更新,參數就會變成 θ1。
- 接著再計算一次 θ1的gredient,再將 θ1更新成 θ2。
- 直到不想做了,或者找到的gradient是零,或者理想上已經找到loss的最小值 (global minima)。
Batch
- 在實務上,我們會將training data拆分成batch (隨機拆分),然後先計算b1的gradient,將 $θ$0更新 $θ$1,再計算b2的gradient,將 $θ$1更新成 θ2,以次類推。
- 專有名詞:每一次的參數更新稱作update,所有batch都做過一次更新稱作1個epoch。
- Batch Size是個hyperparameter (需要人工設定的參數),另外補充learning rate跟sigmoid要設定多少個都是。
Other Activation Fucntion
ReLU (Rectified Linear Unit)
- 其實可以視為兩個sigmoid合併在一起 (圖10)。
- 公式:c*max(0, b+wx)
- 若 b+wx較大,則輸出 b+wx,若0較大,則輸出0。
- 圖11是在比較,在預測youtube觀看人數的這個任務上,線性的機器學習跟不同個neuron的深度學習,在training data跟testing data上的loss。
More variety of Model
- 除了把input通過一層activation function之外,還可以再多做同樣的事情幾次,也就是把神經網路的架構再架得深一些,又或者說是增加hidden layer。
- 圖13在比較當我們把hidden layer架設得多層一點,對於loss的影響。
Give it a fancy name
- 上面解釋的一顆一顆的sigmoid,就是neuron (神經元),而由neuron所架構起來的模型,稱為neural network (NN)。
- 這種模仿人腦的技術,在1980,90年代已經出現過,但當時的名聲被搞壞,老師這邊提到名聲臭到,只要paper上出現nerual network,paper就會被拒絕,因此需要一個新名稱。
- 每一排的neuron被稱作是hidden layer,當hidden layers很多的時候,就是很deep的nn,而整套技術就被稱作deep learning。
解說方式
老師最後提到,2021的解說方式跟之前不一樣,並且沒有提到反向傳播法,若有興趣可以看前幾年的影片。
這次的解說,從想要有一個更平滑的function作為開頭,開始解說activation function的作用與原理,並回扣到機器學習的三步驟,最後再以專有名詞跟深度學習名詞的由來收尾。
這種由從原因開始再帶到解答的解說方式,讓人看完覺得很踏實。
其他教材
之前看過覺得很生動又有趣的教學影片,很推 3Blue1Brown 的影片,它是以手寫辨識作為例子,用動畫呈現出nerual network的運作方式。
But what is a neural network? | Chapter 1, Deep learning — YouTube
Gradient descent, how neural networks learn | Chapter 2, Deep learning — YouTube
What is backpropagation really doing? | Chapter 3, Deep learning — YouTube
Backpropagation calculus | Chapter 4, Deep learning — YouTube
如果喜歡我的筆記,歡迎給個clap或留下留言!