1. 前言
    1. 1950年代電腦發明以來
      1. 科學家便希冀著利用電腦創造出人工智慧
      2. 然而
        1. 當時的硬體效能低落
          1. 數據量不足
          2. 隨著通用問題解決機
          3. 日本第五代電腦等研究計畫的失敗
          4. 人工智慧陷入了第一次的寒冬。
    2. 人工智慧「現代鍊金術」的惡名
      1. 一直到1980年代開始才又復興。
        1. 此時科學家不再使用傳統的邏輯推理方法
        2. 取而代之的是結合機率學
          1. 、統計學等大量統計理論
          2. ,讓電腦能透過資料自行學會一套技能,
          3. 稱為「機器學習」。
    3. 機器學習方法有許多種不同的模型
      1. 此間爆發了兩次浪潮
        1. 第一波興盛的模型為「類神經網路」、
          1. 又稱人工神經網路
          2. 類神經網路在剛出現時大為火紅
        2. 然而,
          1. 在不久後卻遇到了運算瓶頸
          2. 一下又沒落了下去
    4. 1980年代中期
      1. 由其他機器學習模型
        1. 如支持向量機(SVM)模型作為主流
    5. 一直到2006年
      1. 多倫多大學的Geoffrey Hinton教授
        1. 成功解決了類神經網路所遇到的問題
          1. 讓類神經網路重新換上「深度學習」的名字捲土重來
        2. 如今深度學習技術對各大產業領域都將產生深遠的影響
          1. 堪稱第四次工業革命
    6. 今天就讓我們來談談
      1. 機器學習模型的第一波浪潮「類神經網路」、
        1. 其原理和瓶頸
      2. 與第二波浪潮「淺層機器學習」如支持向量機
        1. 之所以一時間取代類神經網路
          1. 作為機器學習的主流熱門技術的原因。
    7. (備註: 文中會有簡單的數學公式,但讀者不用害怕,只要大概理解基本原理即可。)
  2. 第一次浪潮:類神經網路 (Neural Network)
    1. 1950年代的人工智慧走入了漫長的寒冬期
      1. 直到1980間
        1. 機器學習方迎來了第一個春天
          1. 這個春天叫做「類神經網路」
        2. 為電腦科學家
          1. 由生物大腦的神經元
          2. 運作方式所啟發
          3. 因而建立出來的
          4. 數學模型。
    2. 1981年
      1. 美國神經生物學家
        1. David Hubel和Torsten Wiesel
          1. 對於動物視覺系統
          2. 的處理信息方式有了進一步的發現
          3. 因而獲得了諾貝爾醫學獎
          4. 他們把貓的頭骨開了一個小洞
          5. 向內插入微電擊
          6. 埋入視皮質細胞中
          7. 然後在小貓眼前放置一個
          8. 會投射出光影的布幕
          9. 並不時改變光影的角度
          10. 亮度與大小
          11. 經過數次實驗與無數隻小貓的犧牲
          12. Hubel和Wiesel發現
          13. 不同的視覺神經元
          14. 對於不同光影的反應不盡相同
          15. 在不同情況下的視覺神經元
          16. 有著不同的活躍程度
          17. 甚至只對圖像的某些特定細節有反應
    3. 生物學上的神經元研究
      1. 啟發了AI領域關於
        1. 「類神經網路」
          1. (或稱人工神經網路)
          2. 的概念
      2. 神經系統
        1. 由神經元構成
          1. 彼此間透過突觸
          2. 以電流傳遞訊號。
      3. 是否傳遞訊號
        1. 取決於神經細胞
          1. 接收到的訊號量
          2. 當訊號量超過了某個閾值(Threshold)時
          3. 細胞體就會產生電流
          4. 通過突觸傳到其他神經元。
      4. 為了模擬神經細胞行為
        1. 為了模擬神經細胞行為
          1. 科學家設定
          2. 每一個神經元
          3. 都是一個「激發函數」,
          4. 其實就是一個公式
      5. 當對神經元輸入
        1. 一個輸入值(input)後
          1. 經過激發函數的運算
          2. 輸出輸出值(output),
          3. 這個輸出值會再傳入下一個神經元
          4. 成為該神經元的輸出值
      6. 如此這般
        1. 從第一層的「特徵向量」作為輸入值
          1. 一層層傳下去
          2. 直到最後一層輸出預測結果
    4. 至於神經元裡面的
      1. 激發函數公式是什麼呢?
        1. 1957年
          1. Rosenblatt
          2. 提出了感知機(Perceptron)模型
          3. 將特徵向量X1, X2, X3輸入進感知機後
          4. 感知機會分別給予一個對應的權重
          5. 分別為W1, W2, W3
          6. 若特徵向量和權重的內積結果
          7. 大於某個閾值(Threshold)時
          8. 輸出結果為1 (代表電流會傳遞)、
          9. 若小於閾值則輸出0 (代表電流不傳遞)。
          10. 利用感知機模型
          11. 可以解決機器學習的基本二分法問題
          12. 將類別僅分為0和1
          13. (圖片中有貓/沒貓; 有得病/沒得病; 會下雨/不會下雨…)
          14. 然而輸出結果只有0和1
          15. 顯得不太精確
          16. 感知機對線性分類有效
          17. 無法處理線性不可分的問題
          18. 什麼是線性可分?
          19. 線性不可分的問題呢?
          20. 比如說切開西瓜
          21. 可以發現裡面有白色的籽和黑色的籽
          22. 如果白籽和黑籽的分佈
          23. 能讓我們用一刀切分開
          24. 就是線性可分
          25. 如果是要用橢圓或曲線才能切開
          26. 就是線性不可分
          27. 因此
          28. 線性可分的意義在於
          29. 我們能不能單純用一條直線
          30. 把兩團資料點切分開。
    5. 由於感知機只能解決線性可分的問題
      1. 但現實中的分類問題通常是非線性的
        1. 因此針對線性不可分問題
          1. 類神經網路領域又發展出了不同的激發函數
          2. 比如使用Sigmoid函數
    6. 將「圖片中有貓/沒貓」的0和1標籤
      1. 進一步細化成可能的機率
        1. 「圖片中有貓/沒貓」
          1. 的機率是在0到1之間的任意實數
          2. 比如0.8807…(x=2)、0.2689…(x=-1)。
    7. 因此「Sigmoid神經元」進一步被提了出來
      1. 使用Sigmoid函數
        1. 作為神經元的激發函數。
      2. Sigmoid函數
        1. 即統計學上的
          1. 邏輯回歸
          2. 因為圖形長得像一個S故有此稱
    8. 機器學習的核心概念
      1. 是從資料中
        1. 自行學會
          1. 一套技能
      2. 並根據新給的數據
        1. 自行更正
          1. 預測錯誤的地方
          2. 不斷地優化技能
    9. 那麼
      1. 類神經網路
        1. 如何從錯誤中
          1. 進行修正學習的呢?
      2. 神經網路
        1. 學習過程
          1. 可以分成下列兩個步驟:
          2. 1.前向傳播 (Forward-Propagation)
          3. 2.反向傳播 (Backward-Propagation)
  3. 前向傳播 (Forward-Propagation)
    1. 類神經網路
      1. 採用監督式學習方法
        1. 在網絡中
          1. 每一個神經元
          2. 都是一個激發函數
        2. 多個神經元連接在一起
          1. 形成一個類似生物神經網絡的
          2. 網狀結構
          3. 並分成了好幾層。
    2. 當機器學習第一次
      1. 「看」到一隻貓咪的圖片資料時
        1. 會將貓咪圖片的特徵向量
          1. 透過神經網路
          2. 從左向右傳遞過去
        2. 中間會經過特定幾個神經元
          1. 經過各個神經元上的激發函數後
          2. 產出最終的預測答案
        3. 比如最後預測出來的結果是0.1
          1. 機器學習認為這張圖片裡面很可能沒有貓咪。
  4. 反向傳播 (Backward-Propagation)
    1. 此時資料科學家會
      1. 設定更正錯誤的方法
        1. 「代價函數」(Cost Function)。
          1. 代價函數是
          2. 預測結果
          3. 真實結果
          4. 之間的差距
    2. 如果
      1. 預測完全正確
        1. 則代價函數值為0
          1. 如果
      2. 代價函數值很高
        1. 則表示預測的偏誤很大
      3. 所以我們的目標
        1. 便是將代價函數
          1. 優化到越小越好。
      1. 預測結果和真實結果
        1. 不一致時
          1. 兩者間的差距越大
          2. 就會讓代價函數越大
      2. 因此
        1. 為了讓預測結果
          1. 越接近目標值
          2. 也就是代價函數
          3. 達到最小
      3. 我們會將這個結果
        1. 從右到左反向傳遞回去
          1. 調整神經元的權重
          2. 以找到代價函數的
          3. 最小值。
    3. 簡單來講
      1. 類神經網路
        1. 就是先讓資料訊號
          1. 通過網路
          2. 輸出結果後
          3. 計算其與真實情況的誤差。
        2. 再將誤差訊號
          1. 反向傳遞回去
          2. 對每一個神經元
          3. 都往正確的方向
          4. 調整一下權重
        3. 如此來回個
          1. 數千萬遍後
          2. 機器就學會
          3. 如何辨識一隻貓了。
    4. 1986年
      1. Rumelhar和Hinton等人
        1. 提出了反向傳播算法
      2. 解決了神經網路
        1. 所需要的複雜計算量問題
          1. 從而帶動了神經網路的研究熱潮
    5. 此時的
      1. Hinton還很年輕
        1. 即便在後來神經網路遇到了瓶頸
          1. 反向傳播的優化(找出誤差的最小值)問題
      2. 學術界一度摒棄
        1. 神經網路時
          1. 仍不離不棄
          2. 對於神經網路的研究
      3. 也正是這股熱情
        1. 使得30年以後
          1. 正是他重新定義了
          2. 神經網路
      4. 帶來了神經網路
        1. 復甦的又一春
          1. Hinton也因此被稱為
          2. 「深度學習之父」。
    6. 這邊
      1. 就讓我們來瞭解一下
        1. 類神經網路
          1. 究竟遇到了什麼問題
          2. 以致差點一厥不振。
  5. 梯度消失問題——多層神經網路的挑戰
    1. 當變數是
      1. 線性關係時
        1. 代價函數J(Ө),
          1. 也就是計算預測結果
          2. 和實際真實數據
          3. 之間的距離差距
          4. 將公式用圖形畫出來
          5. 能發現是一個凸函數
    2. 可以想像
      1. 我們將一顆球
        1. 從最高點開始滾落
          1. 很快就能掉到這個山谷的
          2. 谷底 (最小值)。
      2. 也就是說
        1. 在面對線性問題時
          1. 模型能夠很快地找到
          2. 代價函數的最小值。
    3. 然而在真實世界中
      1. 變數之間的關係
        1. 多半是非線性
          1. 比如當我們採用
          2. Sigmoid神經元時
      2. 由於Sigmoid函數
        1. 不是線性函數
          1. 其代價函數 J(Ө)
          2. 便不是凸函數
          3. 意味著圖形上
          4. 有多個局部最小值。
    4. 將Sigmoid神經元的
      1. 代價函數圖形繪製出來後
        1. 可以發現在
          1. 最高點丟下一顆球後
          2. 球可能會掉到某個下凹的地方
          3. 就停止滾動了
          4. 然而那並非是全山谷最低的地方
      2. 也就是說
        1. 我們很容易僅找到局部最小值
          1. 而非全域的最小值。
      3. 訓練速度慢
        1. 實際結果
          1. 也只能傳少少幾層的
          2. 淺層神經網路的情況下
          3. 不比其他方法好
          4. 不如使用其他的機器學習模型
    5. 這種尋找代價函數
      1. 最小值的方法稱為
        1. 「梯度下降法」(Gradient Descent)
        2. 至於要從山谷中的
          1. 哪一個地方降落
          2. 開始往下走呢?
        3. 我們可以先隨機選擇
          1. 一个斜率為初始值
          2. 然後不斷地修改以减小
        4. 直到斜率為0。
          1. 如此稱為「隨機梯度下降法」
          2. (Stochastic Gradient Descent)。
        5. 透過微積分
          1. 計算出斜率 (導數),
          2. 我們可以計算出
          3. 山坡上最陡峭的那一個方向
          4. 這種微積分概念稱為「梯度」。
          5. 只要朝著梯度的方向走去
          6. 就是最快下降的道路了
    6. 機器學習
      1. 相當注重
        1. 優化的問題
          1. 如何用更快的方式
          2. 逼近最佳解
          3. 電腦科學家會去想
          4. 我該優化什麼東西才好?
          5. 要怎麼優化
          6. 才會實際上
          7. 增加我的收入
          8. 或解決某個實務上的問題?
          9. 要用甚麼方法達成這個優化?
      2. 像是我們在梯度下降法中
        1. 討論的收斂性值
          1. (如何找到最低的谷底),
          2. 即是機器學習的研究重點
      3. 機器學習
        1. 重視實務問題上的
          1. 使用情境差異
          2. 會嘗試解決
          3. 各種不同的問題
          4. 並尋找最佳的優化方式。
    7. 一層層的類神經網路
      1. 聽起來似乎很厲害
        1. 當年由Hinton等人
          1. 首先提出了多層感知機
          2. 以及反向傳播的訓練算法
          3. 使得類神經網路在1980-1990年代鼎盛一時
    8. 然而
      1. 幾乎讓神經網路
        1. 這個機器學習方法
          1. 從此一蹶不振的問題
          2. 很快就出現了
          3. 這個問題叫做
          4. 「梯度消失」(Vanishing Gradient)。
    9. 梯度下降法
      1. 就像爬下谷底一樣
        1. 從一開始很快的往下跑
          1. 越接近谷底時
          2. 每個一梯度會逐漸變小
          3. 慢慢逼近最小值
    10. 我們在一開始提到過
      1. 類神經網路的原理
        1. 就是先讓資料訊號
          1. 通過網路
          2. 輸出結果後
        2. 計算其與真實情況的誤差
          1. 再將誤差訊號反向傳遞回去
        3. 透過梯度下降法
          1. 讓神經網路網路去
          2. 逐一調整神經元的權重
        4. 不斷優化直到誤差最小
          1. 也就是代價函數達到最小值
    11. 然而這種方法
      1. 在神經網路具備多層的情況下
        1. 性能變得非常不理想
          1. 容易出現梯度消失問題
      2. 非線性問題的代價函數
        1. 為非凸函數
          1. 求解時容易陷入局部最優解
          2. 而非全域最優解
      3. 更糟的是
        1. 這種情況隨著神經網路層數的增加
          1. 而更加嚴重
      4. 即隨著梯度逐層不斷消散
        1. 導致其對神經元
          1. 權重調整的功用
          2. 越來越小
      5. 所以只能轉而處理淺層結構(小於等於3)
        1. 從而限制了性能
      6. 如果說為了不讓神經網路失真
        1. 僅能讓資料來回傳個1、2層
          1. ,那還叫神經網路嗎?
      7. 人類的大腦可就有數千萬層神經網路呢!
        1. 與其使用理論難度高
          1. 訓練速度慢
          2. 實際結果也只能傳少少幾層
          3. 淺層神經網路的情況下
          4. 不比其他方法好
          5. 不如使用其他的機器學習模型
  6. 第二波浪潮: 淺層機器學習 (Shallow Learning)
    1. 神經網路
      1. 由於遇到了
        1. 優化的瓶頸
          1. 以致一度沒落
      2. 當時的學界
        1. 只要看到出現
          1. 「神經網路」字眼的
          2. 論文或研究計畫
          3. 便會立刻貶斥
          4. 多層的神經網路
          5. 是不可能的
      3. 而若採用僅有兩層的
        1. 神經網路
          1. 不如使用其他更好上手
          2. 同樣只有兩層的
          3. 「淺層」機器學習模型。
    2. 1990年代
      1. 各式各樣的淺層機器學習被提出
        1. 其中支撐向量機 (SVM, Support Vector Machines)
          1. 最廣受歡迎。
    3. 同樣是做資料的二分法,
      1. SVM是怎麼做的呢?
        1. 要如何找出一條線
          1. 完美地將藍球和紅球
          2. 切分開?
      2. 且兩類群
        1. 須距離這條線
          1. 最遠
          2. 以確定兩群資料
          3. 分得越開越好
      3. 這樣新進資料進來的時候
        1. 才不會容易掉到
          1. 錯誤的另外一邊
          2. 出現誤差(Error)
      4. SVM會將原始資料
        1. 投影到一個更高維度的空間裡
          1. 在低維度不可切分的資料
          2. 在高維度便可以切分了。
      5. SVM 理論上
        1. 更加嚴謹完備
          1. 上手簡單
      6. 得到主流學術界的追捧
        1. 此時人人都不相信
          1. 神經網路的可能性。
      7. 而支持向量機 (SVM) 技術
        1. 在圖像和語音識別方面的成功,
          1. 使得神經網絡的研究
          2. 陷入前所未有的低潮。
      8. 此時學術界的共識是
        1. 多層神經網路
          1. 是個完全沒有前途的死胡同
    4. 究竟是誰重新改變了這一切
      1. 讓多層神經網路
        1. 在2006年時換上
          1. 「深度神經網路」
          2. Deep Neural Network;
          3. 又稱Deep Learning, 深度學習
          4. 的新名字
          5. 聲勢浩大地捲土重來呢?
      2. 還記得我們提過
        1. 對於神經網路不離不棄研究三十年的Hinton嗎?
          1. 他是怎麼解決這個問題的呢?
      3. 在現今
        1. 深度學習
          1. 已是人工智慧領域中
          2. 成長最為快速的類別
      4. 下一篇就讓我們來聊聊深度學習之父
        1. 多倫多大學Geoffrey Hinton教授的故事
          1. 與深度學習火熱的應用趨勢。