卷積神經網絡(CNN) 具有局部互聯、權值共享、下采樣(池化)和使用多個卷積層的特點。
局部互聯 是指每個神經元只感受局部的圖像區域,也就是卷積操作。
權值共享 是指當前層所有特征圖共用一個卷積核,每個卷積核提取一種特征,參數量明顯下降;使用多個卷積核可以提取多種特征。
下采樣 每次對輸入的特征圖錯開一行或一列,能夠壓縮特征圖大小,特征降維,提取主要特征,將語義相似的特征融合,對平移形變不敏感,提高模型泛化能力。
使用多個卷積層 能夠提取更深層次的特征,組合特征實現從低級到高級、局部到整體的特征提取。
卷積層 任務是檢測前一層的局部特征,即用來進行特征提取,用不同的卷積核卷積得到不同的特征,通過多層卷積實現特征的組合,完成從低級到高級、局部與整體的特征提取。例如,圖像先提取邊緣特征,組合成形狀特征,再得到更高級的特征;語音和文本具有相似特征,從聲音到語音,再到音素、音節、單詞、句子。
下采樣(池化)層 對輸入的特征圖錯開行或列,壓縮特征圖大小,降低參數量和計算復雜度,也對特征進行了壓縮,提取主要特征,將語義相似的特征融合起來,對微小的平移和形變不敏感。包括平均池化和最大池化和隨機池化,平均池化領域內方差小,更多的保留圖像的背景信息,最大池化領域內均值偏移大,更多的保留圖像的紋理信息,隨機池化(Stochastic Pooling)則介于兩者之間。
全連接層 將二維空間轉化成一維向量,將全連接層的輸出送入分類器或回歸器來做分類和回歸。
在卷積神經網絡中,前面的卷積層的參數少但計算量大,后面的全連接層則相反,因此加速優化重心放在前面的卷積層,參數調優的重心放在后面的全連接層。
全卷積網絡 將一般的卷積神經網絡的全連接層替換成1x1的卷積層,使得網絡可以接受任意大小的輸入圖像,網絡輸出的是一張特征圖,特征圖上的每個點對應其輸入圖像上的感受野區域。
多個3x3卷積比7x7卷積的優點在于,參數量減少并且非線性表達能力增強;1x1卷積的作用在于,可以用于特征降維與升維,各通道特征融合,以及全卷積網絡(支持任意輸入圖像大小)。
深度神經網絡具有從低級到高級、局部到整體的特征表達和學習能力,相比于淺層網絡能更簡潔緊湊的提取特征,但訓練時容易發生過擬合、梯度彌散和局部極值的問題。
過擬合(Overfitting) 一般發生在數據量較少而模型參數較多時,其表現是模型在訓練時變現的很好(error和loss很低)、但在測試時較差(error和loss較大),使得模型的泛化能力不行。歸根結底是數據量不夠多不夠好,最好的辦法是通過增加數據量(更多更全的數據、數據增廣、數據清洗),還可以通過使用dropout、BN、正則化等來防止過擬合,訓練時的trick是適當增加訓練時的batchsize、適當降低學習率。
梯度彌散(Gradient Vanish) 是指在靠近輸出層的隱層訓練的好,但在靠近輸入層的隱層幾乎無法訓練,是多層使用sigmoid激活函數所致(sigmoid函數在接近1的部分梯度下降的太快),用ReLu激活函數可以緩解這個問題。
局部極值 是指在訓練深度網絡時求解一個高度非凸的優化問題如最小化訓練誤差loss可能會得到壞的局部極值而非全局極值。采用梯度下降法也可能存在這種問題。
Dropout 是在訓練時隨機拋棄隱層中的部分神經元,在某次訓練時不更新權值,防止過擬合(過擬合發生在模型參數遠大于數據量時,而dropout變相的減少了模型參數),提高泛化能力,在全連接層使用。感覺是模仿了生物神經系統。Dropout使得隨機拋棄的神經元既不參加前向計算,也不需要反向傳播。
歸一化(Normalization) 用于加速收斂,提高模型精度,包括LRN(Local Response Normalization)、BN(Batch Normalization)等,有助于模型泛化。
BN(Batch Normalization) 希望激活函數的輸出盡量滿足高斯分布,可以在全連接層后、激活層前加上BN,本質目的是促進模型收斂,降低初始值對模型訓練的影響,提高模型精度和泛化能力。使用了BN,就不需要使用LRN(AlexNet中用到的局部響應歸一化),也不需要過多的考慮權重初始值、Dropout和權重懲罰項的參數設置問題。
正則化(Regularization)包括L1、L2范數正則化,加入正則化懲罰項,能夠防止過擬合,提高模型泛化能力。
梯度下降 包括批量梯度下降、隨機梯度下降。可以比作下山問題,下山方向永遠是梯度下降最快的方向,學習率即下山的步長。
批量梯度下降 每次迭代使用全部訓練樣本來計算損失函數和梯度,來更新模型參數。每次迭代都朝著正確的方向進行,保證收斂于極值點(也可能是局部極值點。.),但迭代太慢,計算冗余,消耗大量內存。
隨機梯度下降 實際上是小批量梯度下降,每次迭代隨機使用小批量例如k個訓練樣本計算損失函數和梯度,來更新模型參數。每次迭代不一定會朝著正確方向進行,可能會有波動,但也會收斂于極值點,即保證收斂性又保證收斂速度。
激活函數 主要有ReLu激活函數、Sigmoid激活函數、Tanh激活函數。它們都是非線性激活函數(ReLu是規整化線性函數),比線性激活函數具有更強的特征表達能力。Sigmoid函數的x越大,導數越接近0,反向傳播到遠離輸出層時容易出現梯度彌散,現在一般用ReLu用作激活函數來防止梯度彌散。
數據預處理 數據歸一化(去均值歸一化)、PCA主成分分析、ZCA白化。數據歸一化的好處在于使得訓練數據和測試數據具有一致的數據分布,增強模型的泛化能力。
PCA主分量分析 用于數據降維和降低特征間相關度,需要特征均值接近0且各特征的方差接近,因此需要先做去均值,一般情況下都不需要做方差歸一化。
ZCA白化 用于降低特征冗余度(不降維),需要特征間相關度較低且特征具有相同的方差,因此ZCA白化一般是在PCA白化的基礎上做的,可以看做是各個特征的幅度歸一化。
圖像處理與數據增廣 顏色轉換、對比度拉伸、直方圖均衡、局部直方圖均衡、加隨機噪聲、平移、縮放、旋轉、鏡像、投影變換、隨機裁剪等。
1.通過數據
更多的數據樣本
數據的代表性、全面性
數據預處理
圖像處理與數據增廣
數據清洗
難例
2.通過算法
選擇合適的網絡模型(包括網絡結構和網絡參數)
在已有模型上進行fine-tune
dropout、normalization、正則化
合理調節訓練參數(學習率、batchsize等)
根據具體應用場景還可能需要修改損失函數
-
卷積
+關注
關注
0文章
95瀏覽量
18527 -
深度學習
+關注
關注
73文章
5506瀏覽量
121259
發布評論請先 登錄
相關推薦
評論