Deep Learning
基礎知識
- Loss Function:
- MSE(mean square error loss)(均方誤差)
- CEE(cross entropy error loss)(交叉熵誤差)
- Backward:
Sigmoid:
ReLU:(分段討論)
Add:(直接傳播,不發生改變)
Multiply:(相當於互換輸入)
Affine:(矩陣乘法,也是交替相乘,不過需要考慮矩陣的形狀,進行相應的轉置)
- Optimizer:
- SGD (stochastic gradient descent)
- Momentum
- ADAM
https://zhuanlan.zhihu.com/p/90169812
- Weight decay:
一般取值weight_decay=1e-4
- Dropdout:
作用:刪除部分神經元,防止模型過擬合
\[\begin{aligned} h' = \begin{cases} 0 & \text{ 概率為 } p \\ \frac{h}{1-p} & \text{ 其他情況} \end{cases} \end{aligned} \]
按照概率p刪去部分神經元結點後,為使最後輸出的期望保持不變,需要等比例增大神經元輸出的值(標準化,期望保持不變)
- 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\)
- 卷積(CNN)
卷積層的參數數量:in_channels * out_channels * kernel_size
解釋:
1*1卷積層:一般用於降低通道數(減少參數)
kernel_size=1:相當於全連接層
nn.Flatten():將4D的tensor轉換成2D的tensor(只保留了張量個數的維度,將通道和高寬展平了)
- LeNet
- AlexNet(相當於層數更多的LeNet網絡,最後有一個dropout層用來簡化模型參數)
- VGG(將模型特定的層抽出合併成一個塊,稱為VGG塊)
-> 卷積層 -> 激活函數 (-> 卷積層 -> 激活函數 ...) -> 池化層
每一個vgg塊由多個卷積層、激活函數疊加再加上一個池化層組成,一個vgg網絡由多個vgg塊組成
- NiN
nin塊由卷積層、激活函數和兩個1X1的卷積層組成
去掉了全連接層,降低了過擬合的概率,並減少了參數的數量
- GoogLeNet
卷積層數超過100層
重要思想:將不同的卷積模塊封裝成一個stage
- ResNet
ResNet塊:
重要思想:
將原來的模型 加 到了卷積後的模型中,能夠避免梯度變得過小(梯度消失)
*問題:當神經網絡較深時,梯度很容易變得很小(網絡參數沒法更新)
- DenseNet
- RNN(區域神經網絡)
- 多GPU並行
- 將批量數據均分到多個GPU上進行計算
- 將模型拆分成多個小模型存在不同的GPU上
- 分佈式計算
- 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(交併比):
通過計算預測框與預先標定的框的交、並區域面積比較
NMS(非極大值抑制):
語義分割
將物體的邊緣分割出來
實例分割
不僅將物體的邊緣分割出來,還能夠確定每個物體的類別
序列模型
- 自迴歸模型
馬爾科夫鏈
- N元語法
認為第N個詞的出現只與前面N-1個詞有關
>
一元語法忽略了文本之間的信息
- 拉普拉斯平滑法
作用:處理零概率問題(在觀測某個樣本庫時,不能因為一個事件沒有發生而認為該事件概率為0,即不可能事件)
公式:(將所有的事件數目都+1)
RNN(循環神經網絡)
RNN的輸出取決於當前時刻輸入和上一時刻的輸出(將輸出繼續作為輸入,相當於循環)
- 應用
優化算法
損失函數
- MSE (mean square error)
均方誤差,用於數值迴歸模型
- CE (cross entropy)
交叉熵損失,用於分類模型
優化算法
凸集
- SGD
隨機梯度下降
- SGD-Momentum
包含動量(使用指數加權平均法對梯度下降進行平滑處理)
指數加權平均
\(v_t\) 為第t次的平均值,\(\theta_t\)
作用:1. 撫平短期波動,起到了平滑的作用。2. 還能夠將長線趨勢或週期趨勢顯現出來。
優點:運用遞推的方法求解n時刻的平均值,並且只需要保存 (n-1) 時刻的平均值和 n 時刻的值即可,節省內存(AdaGrad還需要存儲 n)。\(\beta\)
- AdaGrad
隨着算法不斷迭代,r會越來越大,整體的學習率會越來越小
優點:學習率發生改變
- RMSProp
求累計平方梯度的方法與AdaGrad不同
- Adam(更常用)
神經網絡原理分析
- 越靠近輸入層的卷積層(底層)包含更多的邊緣輪廓信息,越靠近輸出層的卷積層(頂層)包含更多的語言信息(抽象的)
- 越靠近頂層的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(空間金字塔池化層)
優點:避免了網絡輸入時對圖像進行resize操作,只在最後的fc層前加入一個SPP層,該層的輸出size固定
- Fast RCNN
- Faster RCNN
- FPN(特徵金字塔)
OCR文字識別
- CTPN
檢測文本位置
- CRNN
識別文本區域中的文字內容
- CTC
常用在語音識別、文本識別等領域的算法,用來解決輸入和輸出序列長度不一、無法對齊的問題
CTC通常接在RNN的後面,與RNN結合使用
語音識別
- 語音數據的表示
語音分幀:
DFT/FFT:
梅爾濾波器:
MFCC特徵提取:
- 發音單元(建模方式)
- 聲學模型的訓練