Deep Learning

基礎知識

  1. Loss Function:
  • MSE(mean square error loss)(均方誤差)
  • CEE(cross entropy error loss)(交叉熵誤差)
  1. Backward:

Sigmoid:

人工智能學習筆記----01_hhh江月的技術博客_卷積

ReLU:(分段討論)

人工智能學習筆記----01_hhh江月的技術博客_卷積_02

Add:(直接傳播,不發生改變)

人工智能學習筆記----01_hhh江月的技術博客_全連接_03

Multiply:(相當於互換輸入)

人工智能學習筆記----01_hhh江月的技術博客_全連接_04

Affine:(矩陣乘法,也是交替相乘,不過需要考慮矩陣的形狀,進行相應的轉置)

人工智能學習筆記----01_hhh江月的技術博客_激活函數_05

  1. Optimizer:
  • SGD (stochastic gradient descent)
  • Momentum
  • ADAM

https://zhuanlan.zhihu.com/p/90169812

  1. Weight decay:

一般取值weight_decay=1e-4

  1. Dropdout:

作用:刪除部分神經元,防止模型過擬合

\[\begin{aligned} h' = \begin{cases} 0 & \text{ 概率為 } p \\ \frac{h}{1-p} & \text{ 其他情況} \end{cases} \end{aligned} \]

按照概率p刪去部分神經元結點後,為使最後輸出的期望保持不變,需要等比例增大神經元輸出的值(標準化,期望保持不變)

  1. Batch Norm

Covariant(協方差):

定義式:$$\begin{matrix}Cov\left(X,Y\right)&=E\left[\left(X-E\left[X\right]\right)\left(Y-E\left[Y\right]\right)\right]\end{matrix}=E[XY]-E[X]E[Y]$$

意義:表示X、Y兩個維度偏離各自均值的程度,如果Cov > 0,則説明兩者正相關,如果Cov < 0 則説明負相關,Cov = 0 則説明相互獨立

運算符:BN(·)

首先對輸入的數據進行歸一化:


\[\begin{gathered}\hat{\boldsymbol{\mu}}_{\mathcal{B}}=\frac1{|\mathcal{B}|}\sum_{\mathrm{x}\in\mathcal{B}}\mathrm{x},\\\hat{\boldsymbol{\sigma}}_{\mathcal{B}}^2=\frac1{|\mathcal{B}|}\sum_{\mathbf{x}\in\mathcal{B}}(\mathbf{x}-\hat{\boldsymbol{\mu}}_{\mathcal{B}})^2+\epsilon.\end{gathered} \]


得到歸一化後的均值和方差(方差加上了一個很小的數 \(\epsilon\)


\[\mathrm{BN}(\mathbf{x})=\boldsymbol{\gamma}\odot\frac{\mathbf{x}-\hat{\boldsymbol{\mu}}_{\mathcal{B}}}{\hat{\boldsymbol{\sigma}}_{\mathcal{B}}}+\boldsymbol{\beta}. \]


通過訓練 \(\gamma\) (拉伸)和 \(\beta\)

人工智能學習筆記----01_hhh江月的技術博客_卷積_06

  1. 卷積(CNN)
  2. 人工智能學習筆記----01_hhh江月的技術博客_卷積_07

卷積層的參數數量:in_channels * out_channels * kernel_size

解釋

1*1卷積層:一般用於降低通道數(減少參數)

kernel_size=1:相當於全連接層

nn.Flatten():將4D的tensor轉換成2D的tensor(只保留了張量個數的維度,將通道和高寬展平了)

  1. LeNet
  2. AlexNet(相當於層數更多的LeNet網絡,最後有一個dropout層用來簡化模型參數)
  3. VGG(將模型特定的層抽出合併成一個塊,稱為VGG塊)

-> 卷積層 -> 激活函數 (-> 卷積層 -> 激活函數 ...) -> 池化層

每一個vgg塊由多個卷積層、激活函數疊加再加上一個池化層組成,一個vgg網絡由多個vgg塊組成

  1. NiN

nin塊由卷積層、激活函數和兩個1X1的卷積層組成

去掉了全連接層,降低了過擬合的概率,並減少了參數的數量

人工智能學習筆記----01_hhh江月的技術博客_全連接_08

  1. GoogLeNet

卷積層數超過100層

重要思想:將不同的卷積模塊封裝成一個stage

  1. ResNet

ResNet塊

人工智能學習筆記----01_hhh江月的技術博客_全連接_09

重要思想

將原來的模型 到了卷積後的模型中,能夠避免梯度變得過小(梯度消失)

*問題:當神經網絡較深時,梯度很容易變得很小(網絡參數沒法更新)

人工智能學習筆記----01_hhh江月的技術博客_全連接_10

  1. DenseNet
  1. RNN(區域神經網絡)
  2. 多GPU並行
  • 將批量數據均分到多個GPU上進行計算
  • 將模型拆分成多個小模型存在不同的GPU上
  1. 分佈式計算
  2. train(訓練):
torchvision.datasets.ImageFolder(root: str, tranform) -> Dataset
# 讀取root中的數據集,並返回處理好後的Dataset

torch.utils.data.DataLoader(dataset: Dataset, batch_size, shuffle, num_workers) -> DataLoader(Iterator)
# 將獲取Dataset轉換成DataLoader(Iterator類型)

net = torchvision.models.resnet18(pretrained=False)
net.fc = nn.Linear(net.fc.in_features, <out_features>)
nn.init.xavier_uniform_(net.fc.weight)
# 使用定義好的網絡結構,並修改最後一層的輸出形狀

目標檢測

將物體識別出來並標出圖像中物體的位置和物體的類別

  • 基於錨框(anchor)的檢測算法
    Bounding box(錨框)

包含邊框左上角和右下角的座標、邊框中物體的類別、置信度

IOU(交併比)

人工智能學習筆記----01_hhh江月的技術博客_卷積_11

通過計算預測框與預先標定的框的交、並區域面積比較

NMS(非極大值抑制)

人工智能學習筆記----01_hhh江月的技術博客_激活函數_12

語義分割

將物體的邊緣分割出來

實例分割

不僅將物體的邊緣分割出來,還能夠確定每個物體的類別

序列模型

  • 自迴歸模型

馬爾科夫鏈

  • N元語法

認為第N個詞的出現只與前面N-1個詞有關

人工智能學習筆記----01_hhh江月的技術博客_激活函數_13

>

一元語法忽略了文本之間的信息

  • 拉普拉斯平滑法

作用:處理零概率問題(在觀測某個樣本庫時,不能因為一個事件沒有發生而認為該事件概率為0,即不可能事件)

公式:(將所有的事件數目都+1)

人工智能學習筆記----01_hhh江月的技術博客_全連接_14

人工智能學習筆記----01_hhh江月的技術博客_全連接_15

RNN(循環神經網絡)

RNN的輸出取決於當前時刻輸入和上一時刻的輸出(將輸出繼續作為輸入,相當於循環)

  • 應用

優化算法

損失函數

  • MSE (mean square error)

均方誤差,用於數值迴歸模型

  • CE (cross entropy)

交叉熵損失,用於分類模型

優化算法

凸集

人工智能學習筆記----01_hhh江月的技術博客_激活函數_16

  • SGD

隨機梯度下降

人工智能學習筆記----01_hhh江月的技術博客_全連接_17

  • SGD-Momentum

包含動量(使用指數加權平均法對梯度下降進行平滑處理

人工智能學習筆記----01_hhh江月的技術博客_卷積_18

指數加權平均

人工智能學習筆記----01_hhh江月的技術博客_卷積_19

\(v_t\) 為第t次的平均值,\(\theta_t\)

人工智能學習筆記----01_hhh江月的技術博客_卷積_20

作用:1. 撫平短期波動,起到了平滑的作用。2. 還能夠將長線趨勢或週期趨勢顯現出來。

優點:運用遞推的方法求解n時刻的平均值,並且只需要保存 (n-1) 時刻的平均值和 n 時刻的值即可,節省內存(AdaGrad還需要存儲 n)。\(\beta\)

  • AdaGrad

人工智能學習筆記----01_hhh江月的技術博客_全連接_21

隨着算法不斷迭代,r會越來越大,整體的學習率會越來越小

優點:學習率發生改變

  • RMSProp

人工智能學習筆記----01_hhh江月的技術博客_激活函數_22

求累計平方梯度的方法與AdaGrad不同

  • Adam(更常用)

神經網絡原理分析

  1. 越靠近輸入層的卷積層(底層)包含更多的邊緣輪廓信息,越靠近輸出層的卷積層(頂層)包含更多的語言信息(抽象的
  2. 越靠近頂層的feature map分辨率越低

經過眾多 conv, pooling 操作之後,feature map 的尺寸減小,雖然包含了較多的語言信息,但是缺失了邊緣輪廓等的位置信息(一般是進行上採樣操作

經典網絡模型

分類/迴歸

區別在於最後全連接層的輸出

  • MLP(多層感知機)

使用全連接層

  • CNN(卷積神經網絡)

時序序列

包含文本序列和音頻序列

  • RNN
  • LSTM

生成式模型

  • 文本生成模型
  • CNN+RNN
  • transformer
  • 圖像生成模型
  • Diffusion

深度學習中的操作

前向傳播

  • 卷積運算
  • 匯聚(pooling)
  • 殘差連接

反向傳播

實踐和應用

目標檢測

  • RCNN(區域卷積神經網絡)

將CNN用於目標檢測中

原理:通過Selective Search算法獲取2000個選框,然後對每個選框區域使用CNN提取feature map,再將其輸入到21個(20個類別+1個背景)SVM分類器中得到每個類別的概率,然後對所有候選框最大概率類別進行NMS操作(非極大值抑制)從而篩選出最後結果。

Selective Search(選擇性搜索)

  • 窮舉法(對每個像素隨機生成多個選框)
  • 相似性度量
  • 顏色相似性(色彩直方圖)
  • 紋理相似性

SPPNet(空間金字塔池化層)

人工智能學習筆記----01_hhh江月的技術博客_卷積_23

優點:避免了網絡輸入時對圖像進行resize操作,只在最後的fc層前加入一個SPP層,該層的輸出size固定

  • Fast RCNN
  • Faster RCNN
  • FPN(特徵金字塔)

OCR文字識別

  • CTPN

檢測文本位置

  • CRNN

識別文本區域中的文字內容

  • CTC

常用在語音識別、文本識別等領域的算法,用來解決輸入和輸出序列長度不一、無法對齊的問題

CTC通常接在RNN的後面,與RNN結合使用

語音識別

  • 語音數據的表示

語音分幀:

DFT/FFT:

梅爾濾波器:

MFCC特徵提取:

  • 發音單元(建模方式)
  • 聲學模型的訓練