李弘毅老師機器學習2021心得-2
在第一章,我們對於model的定義是線性的,但很明顯,y = ax + b沒辦法表示現實生活中大多數的問題(這叫做model bias,也就是這個模型的限制),現實的問題實在是太複雜了,function的形狀會非常的扭曲,但當我們對這個扭曲function上採樣,他就會變成piecewise的圖,piecewise functino的好處就是,他可以用無數的特定function(專有名詞叫做 activation function)加上一個常數向得出,常用的特定function包刮。
- hard sigmoid
- soft sigmoid
- relu
- …
想更深入了解為什麼會有這些function可以參考這篇文章。剖析深度學習 (4):Sigmoid, Softmax怎麼來?為什麼要用MSE和Cross Entropy?談廣義線性模型
所以如上圖,這是其中一個sigmoid的公式,我們的model就由很多個sigmoid function組成,並且每個sigmoid都有它自己的參數(c b w)。所以當用到10個sigmoid,那麼c b w都各自有10個值(之後可以轉換成vector)。
並且,當我們x input不只是一維,而是多個的時候,那麼公式就會變成上面那樣,可以看到對應的w也較增加數量,假如x input長度為10,那麼w的數量也變成10個,又因為我們用10個sigmoid,所以w的數量變成10 x 10個,每個都是獨立的參數。
實際上,當我們的x input從 1 變成 2 就滿複雜的了,這樣我們的sigmoid有兩個input,output為一個value,我們的sigmoid就變成二維的,所以在二維上,二維的sigmoid竟然還是可以表示任意的二維model? 這就是數學上的證明了。
當x是二維的是那可能就是一張圖片了。
向量表示
c要轉至是因為,c是每個sigmoid的一個參數,他要跟每個sigmoid function對應,相乘,只能透過轉置,從column變成row。然後我們這邊統計一下個個參數的數量。
- c,我們用n個sigmoid,就有長度為n的c vector。
- 綠色b,我們用n個sigmoid,就有長度為n的b vector。
- w,我們用n個sigmoid,加上x input的維度維 j,我們就有n 乘上 j個 w參數。
- 灰色b,一個數字,bias。
Gradient descent
當我們把所有的參數都合成同一個column,好方便我們計算,不過我們現在就可以想到,因為每一個參數都是獨一無二的,我們在用gradient descent就要計算這麼多個參數的gradient,,並且還要帶入這麼多data的inpuit,藉此計算每個參數的下降方向數值,可想而知非常的花時間。
但根據上一篇,我們在算gradient descent都是把所有的data帶進去,事實上我們可以分割資料,來一個一個batch的更新參數。如下,因此我們看完一整筆資料就是一個epoch,所以之前我們一次就看過所有資料,我們的一epoch只update一次,當我們有了batch的概念,我們其實就不知道一epoch update的幾次,除非你知道他的batch數量。
使用batch的其中一個優點是,可以加快訓練速度,因為GPU在做gradient descent時不用一次讀入所有資料。WHEN and WHY are batches used in machine learning ?
ML 變成Deep Learning !?
然後我把做一次上面我們講的計算叫做hidden layer(很多個Neuron,也就是Activation function),我們可以多做幾次,這樣就有很多的layer(Neuron Network)。很多層就變deep了,叫做deep learning。
問題: 我們目的只是想要合成一個函數,為什麼要把它變deep呢,為什麼不一層,然後變胖呢? 這又是另外一個問題了,老師之後會解釋。