李巨集毅機器學習筆記-6 深度學習簡介(Brief Introduction of Deep Learning)
阿新 • • 發佈:2019-02-01
Brief Introduction of Deep Learning - 深度學習簡介
1. 前言
- deep learning 在近些年非常熱門,從2012年開始,深度學習的應用數目幾乎是呈指數增長的。
- 深度學習的發展史如下圖:
2. 深度學習的步驟
2.1 第一步: 定義一個神經網路
神經網路由神經元組成,每個神經元如上圖所示,每個神經元都有一個 bias 和一個 function ,每條輸入的邊都有一個 weight。
假設這個神經元的輸入是 ,則最後的輸出是
,輸入和輸出都是一個 向量(vector)。神經網路有許多神經元組合而成,神經元之間的連線一般為全連線(fully connect),第一層是輸入層(input layer),最後一層是輸出層(output layer),中間的叫做隱層(hidden layers),前一層的輸出作為後一層的輸入。
深度學習中的所謂深度就是指神經網路有很多 hidden layers。
神經網路的計算可以轉換成矩陣計算,這麼做的好處就是可以用 GPU 進行加速,可以大幅度提高計算效率。
例子: 手寫數字辨識
輸入: 一張 16*16 的圖片,即 256 維的向量
輸出: 一個 10 維的向量
- 如何決定神經網路的結構? 一般只能通過經驗加嘗試,還有你的直覺。真是玄學~
還有一些方法能讓機器自己去學習出神經網路的結構,但是還不成熟。也有一些其他的除全連線之外的結構,比如 卷積神經網路(Convolutional Neural Network)。
2.2 定義一個函式的好壞(Loss Function)
可以有很多種方法,其中有一種方法是計算 Cross Entropy,公式如下:
Total Loss:
2.3 找出最好的函式
- 沒有其他的,就是用 梯度下降法(Gradient Descent),但是因為深度學習的函式太複雜,要直接計算微分的話,計算量實在太大了,所以一般會用一個叫做 反向傳播(Backpropagation)
3 一些廢話
- 再說一句,雖然我們是用 Backpropagation 來幫我們算微分,但是其實就連這個我們都不會自己去算,基本都是用一些工具來幫我們,比如 TensorFlow。到此結束了嗎?沒有的,人這麼懶的生物,覺得 TensorFlow 也太複雜了,所以又寫了一堆 API 去直接呼叫 TensorFlow ,這就是之後會講到的 Keras,果然懶才能推動人類不斷進步。
- 由於上述原因,大部分搞機器學習就是調調包,跟疊積木一樣,不知道這是好還是不好。我也只是個初學者,希望能在這條路上走得遠一些。