1. 程式人生 > >李巨集毅機器學習筆記-6 深度學習簡介(Brief Introduction of Deep Learning)

李巨集毅機器學習筆記-6 深度學習簡介(Brief Introduction of Deep Learning)

Brief Introduction of Deep Learning - 深度學習簡介

1. 前言

  • deep learning 在近些年非常熱門,從2012年開始,深度學習的應用數目幾乎是呈指數增長的。
  • 深度學習的發展史如下圖:
    深度學習發展史

2. 深度學習的步驟

1526262040728

2.1 第一步: 定義一個神經網路

Neural

  • 神經網路由神經元組成,每個神經元如上圖所示,每個神經元都有一個 bias 和一個 function ,每條輸入的邊都有一個 weight

  • 假設這個神經元的輸入是 (a1,a2,a3),則最後的輸出是

    sigma(a1w1+a1w2+a3w3+bias),輸入和輸出都是一個 向量(vector)1526263126157
  • 神經網路有許多神經元組合而成,神經元之間的連線一般為全連線(fully connect),第一層是輸入層(input layer),最後一層是輸出層(output layer),中間的叫做隱層(hidden layers)前一層的輸出作為後一層的輸入。

    1526263459082

  • 深度學習中的所謂深度就是指神經網路有很多 hidden layers
    1526263658862

  • 神經網路的計算可以轉換成矩陣計算,這麼做的好處就是可以用 GPU 進行加速,可以大幅度提高計算效率。
    1526264304894

1526264321724

  • 例子: 手寫數字辨識

    • 輸入: 一張 16*16 的圖片,即 256 維的向量

    • 輸出: 一個 10 維的向量

    1526265120042

    • 如何決定神經網路的結構? 一般只能通過經驗加嘗試,還有你的直覺。真是玄學~

    還有一些方法能讓機器自己去學習出神經網路的結構,但是還不成熟。也有一些其他的除全連線之外的結構,比如 卷積神經網路(Convolutional Neural Network)

2.2 定義一個函式的好壞(Loss Function)

  • 可以有很多種方法,其中有一種方法是計算 Cross Entropy,公式如下:

    1526266634744

    Total Loss:1526266704856

2.3 找出最好的函式

  • 沒有其他的,就是用 梯度下降法(Gradient Descent),但是因為深度學習的函式太複雜,要直接計算微分的話,計算量實在太大了,所以一般會用一個叫做 反向傳播(Backpropagation)
    的演算法來做,這個演算法會在之後詳細介紹。

3 一些廢話

  • 再說一句,雖然我們是用 Backpropagation 來幫我們算微分,但是其實就連這個我們都不會自己去算,基本都是用一些工具來幫我們,比如 TensorFlow。到此結束了嗎?沒有的,人這麼懶的生物,覺得 TensorFlow 也太複雜了,所以又寫了一堆 API 去直接呼叫 TensorFlow ,這就是之後會講到的 Keras,果然懶才能推動人類不斷進步。
  • 由於上述原因,大部分搞機器學習就是調調包,跟疊積木一樣,不知道這是好還是不好。我也只是個初學者,希望能在這條路上走得遠一些。