深度學習框架概述

深度學習框架概述



author: jason_ql
Blog: https://blog.csdn.net/lql0716


1、引言

  • Machine learning = looking for a Function
    機器學習,其實就是尋找一個能夠描述整個數據集狀態的函數,這個函數可以是線性,也可以是非線性

1.1 應用領域

  • 語音識別(speech recognition)
    這裏寫圖片描述

  • 圖片識別(image recognition)
    這裏寫圖片描述

  • 圍棋(playing go)
    這裏寫圖片描述

  • 問答系統(dialogue system)
    這裏寫圖片描述

1.2 圖片識別框架

  • A set of function Model:f1,f2,...

  • 流程
    如下圖所示,訓練出一些函數之後,篩選出效果較好的函數作爲訓練之後的最終模型,利用模型對輸入的圖片進行處理判斷識別
    這裏寫圖片描述

  • 訓練與測試的流程圖
    這裏寫圖片描述

  • 由以上流程可以發現,深度學習可以分爲三步,如下圖

    這裏寫圖片描述

    其中第一步定義函數的過程即爲定義一個神經網絡(如下圖)
    這裏寫圖片描述

    這就類比於人類的大腦的神經網絡(如下圖)
    這裏寫圖片描述

1.3 神經網絡(neural network)

1.3.1 神經元(neuron)

  • 數據:a1,a2,...,ak
  • 權重參數:w1,w2,...,wk
  • 偏差(bias):b
  • 函數:z
  • 激活函數:σ(z)=11+ez
  • 參數:θ=(w1,w2,...,wk,b)

這裏寫圖片描述

  • 其中激活函數爲 S 型函數,其曲線如下圖
    這裏寫圖片描述

  • 常用的激活函數有:
    這裏寫圖片描述

1.3.2 神經網絡

  • 將神經元連接起來,就組成了一個神經網絡結構,不同的神經元可以有不同的數值,網絡結構圖如下
    這裏寫圖片描述

1.3.3 全連接前饋神經網絡(full connect feedforward network)

  • 全連接前饋神經網絡示例

    圖1
    這裏寫圖片描述

    圖2
    這裏寫圖片描述

    圖3
    這裏寫圖片描述
    如上圖所示,如果輸入數據 [0,0]T ,則神經網絡會輸出 f([0,0]T)=[0.51,0.85]T

  • 全連接神經網絡結構示意圖
    這裏寫圖片描述
    其中 Layer 1表示全連接第一層,這裏一共有 L 層

  • 輸出層(output layer)
    這裏寫圖片描述
    如上圖,即選擇 ezi 最大的

  • 對於神經網絡的層次L、偏差 b 確定,一般是根據經驗來確定的

1.3.4 應用示例

  • 手寫數字識別
  • 訓練識別圖片中的數字2

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

1.4 goodness of function

  • 訓練集與對應的標籤
    這裏寫圖片描述

  • 訓練的最終目標如下圖
    這裏寫圖片描述

  • 損失函數(訓練好的模型應該使得損失函數值達到最小)
    這裏寫圖片描述

這裏寫圖片描述

1.5 pick the best function

  • 如何找到參數 θ 使得損失函數 L 最小化?
    這裏寫圖片描述

1.5.2 梯度下降法(Gradient Descent)

  • 初始化權重 w
    這裏寫圖片描述

  • 計算損失函數對權重的梯度 L/w
    這裏寫圖片描述

  • 添加學習率係數 η (即梯度下降的步長)
    這裏寫圖片描述

  • 下降到梯度接近於0即可停止
    這裏寫圖片描述

  • 梯度下降示例

    這裏寫圖片描述

    這裏寫圖片描述

    這裏寫圖片描述

    這裏寫圖片描述

  • 但是,梯度下降並不能保證全局最優
    這裏寫圖片描述

1.5.2.1 梯度下降法的示例解釋

  • 假如對於遊戲中的地圖
    這裏寫圖片描述

這裏寫圖片描述

1.5.2.2 反向傳播(Backpropagation)計算梯度

  • 利用反向傳播來高效的計算梯度
    這裏寫圖片描述

1.6 網絡的深度層次是不是越大越好?

  • 深度對錯誤率的影響(Thin型網絡)
    這裏寫圖片描述

  • Fat 型網絡(即深度小,單層的參數足夠多)
    這裏寫圖片描述

  • “Thin” 與 “Fat” 型網絡哪一種好?
    這裏寫圖片描述

這裏寫圖片描述

  • 神經網絡與邏輯電路的類比
    這裏寫圖片描述

  • 深度就相當於將目標模塊兒化
    這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

1.7 深度學習框架 Keras

  • keras
    這裏寫圖片描述

  • keras 文檔及示例

這裏寫圖片描述

1.7.1 應用示例(手寫字體識別)

  • 手寫字體識別
    這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

2、神經網絡的訓練方法

  • 訓練流程圖
    這裏寫圖片描述

  • 不要總歸咎於過擬合,也可能是其他原因
    這裏寫圖片描述

  • 調參過程
    這裏寫圖片描述

2.1 選擇合適的損失函數

  • 選擇合適的損失函數
    這裏寫圖片描述

這裏寫圖片描述

  • 精確度(accuracy)對比
    這裏寫圖片描述

這裏寫圖片描述

  • 常見的損失函數
    這裏寫圖片描述

2.2 Mini-batch 小批量的更新參數

這裏寫圖片描述

  • epoch 與 batch
    • epoch
      當一個完整的數據集 D 通過了神經網絡一次並且返回了一次,這個過程稱爲一個 epoch
    • batch
      當一個 epoch 對於計算機而言太龐大的時候,就需要把它分成 k 個小塊(k 個子集 {B1,...,Bk} ),一個小塊 Bi 就是一個batch,一個batch通過神經網絡一次就是一個epoch,那麼全部數據 D 要通過神經網絡一次,那就需要迭代 k 次才能使得這 k 個 batch 全部通過神經網絡一次,也就是需要經過 k 個 epoch

    • 例子
      比如對於一個有 2000 個訓練樣本的數據集。將 2000 個樣本分成大小爲 500 的 batch,那麼完成一個 epoch 需要 4 個 iteration。
      這裏寫圖片描述

    這裏寫圖片描述
  • 爲什麼不真正的進行最小化損失函數?
    這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

2.3 新的激活函數

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

  • ReLU

    這裏寫圖片描述
    這裏寫圖片描述

    這裏寫圖片描述

    這裏寫圖片描述

    這裏寫圖片描述

  • 改進的ReLU

    這裏寫圖片描述

    這裏寫圖片描述

    ReLU是Maxout的一種特殊情況,Max網絡中的激活函數可以是任何分段線性凸函數
    這裏寫圖片描述

2.4 自適應學習率(Adaptive learning rate)

這裏寫圖片描述

  • 一定要注意學習率的設置,如果過大,容易導致損失函數向增大的方向發展,如果過小,則會訓練的比較慢

    這裏寫圖片描述

    這裏寫圖片描述

  • 在訓練剛開始的時候,使用較大的學習率,當進行epchs一段時間之後,將學習率逐漸調小

    這裏寫圖片描述

    這裏寫圖片描述

    這裏寫圖片描述

    這裏寫圖片描述

    這裏寫圖片描述

2.6 Momentum(動量)

這裏寫圖片描述

  • 在平穩的位置、鞍點、局部極小的位置很難找到最優的網絡參數
    這裏寫圖片描述

  • 利用物理中的動量來優化梯度

    這裏寫圖片描述

    這裏寫圖片描述

    這裏寫圖片描述

2.7 Early Stopping

這裏寫圖片描述

  • 過擬合的原因
    這裏寫圖片描述

    這裏寫圖片描述

    這裏寫圖片描述

    這裏寫圖片描述

    這裏寫圖片描述

2.8 權重衰退(weight decay)

![這裏寫圖片描述](https://img-blog.csdn.net/20180629124153585?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xxbDA3MTY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
  • 我們的大腦可以篩出無用的神經元,同樣的,對機器學習也這樣做
    這裏寫圖片描述

    這裏寫圖片描述

    這裏寫圖片描述

2.9 Dropout(清理掉無用的神經元)

![這裏寫圖片描述](https://img-blog.csdn.net/20180629124544663?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xxbDA3MTY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
  • 每次在更新參數之前,神經元有 p 的概率會被拋棄

    這裏寫圖片描述

  • 去掉無用的神經元之後,會產生一個新的神經網絡,利用新的神經網絡繼續訓練

    這裏寫圖片描述

  • 參數的調整

    這裏寫圖片描述

這裏寫圖片描述

  • dropout在訓練集與測試集直接的關係

    這裏寫圖片描述


這裏寫圖片描述 ![這裏寫圖片描述](https://img-blog.csdn.net/2018062912573668?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xxbDA3MTY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70) ![這裏寫圖片描述](https://img-blog.csdn.net/2018062912582519?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xxbDA3MTY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

2.10 網絡結構(network structure)

![這裏寫圖片描述](https://img-blog.csdn.net/20180629130003373?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xxbDA3MTY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
  • 文檔分類示例
    這裏寫圖片描述

    這裏寫圖片描述

    這裏寫圖片描述

    這裏寫圖片描述

    這裏寫圖片描述

    這裏寫圖片描述

3、改進的神經網絡

3.1 CNN (卷積神經網絡,Convolutional Neural network)

  • 爲何要用CNN,全連接網絡過於龐大

    這裏寫圖片描述

    這裏寫圖片描述

    相似的區域可以共享參數
    這裏寫圖片描述

    縮放圖片可以減少參數量
    這裏寫圖片描述

  • CNN也可分爲如下三步
    這裏寫圖片描述

  • CNN流程圖

    這裏寫圖片描述

    這裏寫圖片描述

    這裏寫圖片描述

3.1.1 CNN卷積

這裏寫圖片描述

  • 濾波器移動的步長爲1
    這裏寫圖片描述

  • 濾波器移動的步長爲2
    這裏寫圖片描述

  • 卷積後,會出現相似的區域
    這裏寫圖片描述

  • 對濾波器2也做同樣的操作
    這裏寫圖片描述

  • 邊界填充0
    這裏寫圖片描述

  • 對彩色圖像在三個通道分別做同樣的濾波操作
    這裏寫圖片描述

3.1.2 CNN pooling (池化)

這裏寫圖片描述

  • max poolling
    這裏寫圖片描述

這裏寫圖片描述

  • 卷積池化之後生成一個新的圖像
    這裏寫圖片描述

這裏寫圖片描述

3.1.3 flatten

  • 矩陣向量化,作爲訓練數據傳入網絡進行訓練
    這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

  • 共享權重
    這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

3.1.4 goodness of function

這裏寫圖片描述

  • 可以用全連接網絡來訓練圍棋,但是使用CNN效果會更好
    這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

3.2 RNN(循環神經網絡,Recurrent Neural Network)

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

3.2.1 雙向(Bidirectional)RNN

這裏寫圖片描述

3.3 LSTM(Long Short-term Memory )網絡

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

4、其他網絡簡介

  • 監督學習(supervised learning)
    Ultra deep network, attention model
  • 強化學習(reinforcement learning)

  • 無監督學習(unsupervised learning)

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

參考資料

  • deep learning tutorial (李宏毅)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章