深度學習中的網路設計技術 一 理論概述

2021-10-02 19:39:42 字數 4257 閱讀 3941

(1) 網路設計要點

網路設計考慮重點:1. 精度 2.容量 3. 效率

精度:網路**樣本的精度(tp / (tp +fp))

容量:容納資料量的多少,神經元越多,容量越大。

效率:網路執行的效率,這是乙個很重要的指標。

總結:層次要深,資訊要充分融合,計算量要足夠小。

(2)、網路計算成本

h x w 表示輸出特徵圖的空間大小,n代表輸入通道數,k x k 代表卷積核的大小,m代表輸出通道數,那麼標準卷積的計算成本就變成了h * w * n * k * k * m

這裡重要的一點就是,標準卷積的計算成本與以下因素成比例:

(1) 輸出特徵圖的空間大小 h * w

(2) 卷積核的大小 k * k

(3)輸入通道和輸出通道的數量n x m

從以上幾個因素對網路的效能進行改進。

(3) 高效的卷積網路

高效的網路應該具備以下特點:

參數量小,占用記憶體低

效率高計算量低

並行化程度高

效能與大的網路模型相當

(1) 網路深度的設計
為什麼加深網路可以提公升效能?

答:1. 更深的網路模型具有更好的非線性表達能力。2. 網路更深每一層要做的事情更加簡單,各個深度的網路各司其職。

具體設計怎樣的深度?

答:一般常見的深度是5~8層,不超過30層。

加深網路容易出現的問題?

答:達到一定深度後效能反而下降,難以優化。

更加容易過擬合。

pld (processing level deprivation )現象,網路無法學到簡單但是必要的函式來描述資料

pls (processing level saturation)現象,網路的淺層飽和,無法發揮網路的效能。

(2) 網路寬度的設計

寬度:一般都指輸出的通道數。

網路寬度變大有什麼作用?

答:網路寬度變大會提取更加豐富的不同顏色和紋理資訊。如:alexnet 第乙個卷積層輸出96個通道,使它提取更加豐富的特徵資訊。

一般網路寬度怎麼設定?

答: 1. 第一層輸出通道32 即可,此後逐漸增加,計算量隨通道數的增加為o(n ^2)。 但提高網路寬度可以提高效能,在達到一定臨界點後飽和。

網路寬度設計的原則?

答:主流模型第乙個卷積層寬度不超過64,加寬後引數的增長量比較塊。

增加網路寬度比增加網路深度更有利於效能的提公升,但是計算量也增加的較快。

多使用1 * 1 卷積、分組卷積、 跨層連線等技術。

(3) dropout 和 bn 設計

dropout基本結構

它的主要思想就是:在訓練神經網路的每一輪迭代中,隨機地關閉一些神經元,以此降低神經網路的複雜程度

dropout可以有效的緩解過擬合的發生,在一定程度上達到正則化的效果,它能夠提高模型的泛化能力。

dropout的優點

使用dropout正則化的神經網路,不會過分依賴於某個或某些特徵,使得權重分散。因為在每一輪迭代中隱藏層的任何乙個結點都有可能被刪除,那麼原本屬於它的權重就會被分配到其他結點上,多次迭代平均下來,就能降低對某個特徵或者是某個結點的依賴了。

緩解relu的dead issue 。dead issue 是指:乙個非常大的梯度流過乙個 relu 神經元,更新過引數之後,這個神經元再也不會對任何資料有啟用現象了,那麼這個神經元的梯度就永遠都會是 0.

dropout 使用的注意事項

dropout降低了模型的效能,所以對於原本需要容量為n的網路才能解決的問題,現在需要n/p, p表示保留該節點的概率,這個概率一般是0.5~0.9之間,在測試的時候需要乘以p。

dropout 相當於增加了雜訊,造成梯度的損失,所以需要更大的學習率和動量項,訓練更久才能收斂。

bn 概述

bn(batch normalization), 歸一化分布,增強梯度有效性。

batch normalization的作用是他適用的歸一化過程不只是輸入層,甚至同樣適用於神經網路的深度隱藏層。

在用於隱藏層時,我們也許不想隱藏單元值必須是平均值0和方差1(比如使用sigmoid函式的時候)。

有了γ和β兩個引數後,我們可以確保所有z(i)的值是我們想賦予的任意值(均值和方差由兩個引數γ和β控制)。

它的真正作用是保證隱藏的單元均已使用均值和方差標準化(即:z(i)有固定的均值和方差)

bn 的優點

調整了資料的分布,不考慮啟用函式,它讓每一層的輸出歸一化到均值為0,方差為1的分布,這保證了梯度的有效性,減輕了對引數初始化的依賴。

訓練更快,可以使用更高的學習率。

使得損失平面更加平滑。

bn 使用注意事項

小的batchsize不穩定

嘗試layer normalization、group normalization、instance normalization等變種。

(4) 卷積核、步長、池化的設計

1、 卷積核設計

大型卷積核比較少用,3 * 3 卷積核用的較多。

為什麼要使用3 * 3 卷積核:1. 使用多個較小的卷積核代替大的卷積核,使得網路層數增加,所以非線性表達能力增強。2. 小的卷積核使得網路引數量減少,更加容易訓練。

2、步長設計

保證輸出解析度的情況下,分類任務中網路低層的解析度很重要,對於目標檢測/影象分割等任務,需要同時保證最後特在圖的解析度。所以一般第乙個卷積層步長不超過2,如果步長過大就會影響的解析度,進而影響後續特徵的提取。

建議: a. 使用帶步長的卷積代替池化 b. 前兩個卷積層不要超過2倍的下取樣率。

高效能網路可以採用大卷積核+大取樣率。

3、池化設計

剛開始訓練網路的時候,池化確實有利於提高抗變形能力,不管池不池化,模型最後學習完都能獲得同樣的抗變形能力。

初始化的時候不同的池化方法是有差異的,但是學習完之後不管什麼池化方法效果都差不多。

(5)卷積方式的使用和設計
卷積拆分(分組卷積)

通道補償和特徵重用:

a. 提公升單層通道利用率:特徵通道補償

b. 提公升多層通道利用率:密集連線網路

分數 + 整數的分組卷積

(6) 剪枝
剪枝發生在模型訓練完之後。它的步驟:

訓練乙個網路

刪除權重小於一定閾值的連線,得到稀疏網路。

對稀疏網路再訓練

(7) 量化
量化:從高精度(位寬)轉化成低精度(位寬),如32位浮點數到8位。

量化分為:權重量化 輸入量化 啟用值量化 誤差量化

量化優點:a. 更小的模型尺寸 b.更低的記憶體和快取 c.更快的計算d. 更低的功耗

(8) 通道混洗
import torch

x = torch.randn(1,

6,6,

6)x = x.reshape(1,

2,3,

6,6)

# 分組,每組3個通道

x = x.permate(0,

2,1,

3,4)

# 交換軸

x = x.reshape(1,

6,6,

6)# 重新變為1,6,6,6

print

(x)

深度學習中的網路設計技術 二 正則化技術

1.什麼是過擬合?什麼是欠擬合?過擬合其實就是在訓練樣本內能夠很好的擬合資料,而在訓練樣本外 沒有參與訓練的樣本 擬合效果很差,這樣的現象就是過擬合。如果你在訓練網路的過程中發現,模型準確率很高,但是在測試的時候發現準確率很低,那麼有可能就是發生了過擬合現象。也就是數過擬合沒有好的泛化能力。泛化 指...

深度學習 神經網路理論

但是,不要被複雜的定義嚇到。神經網路 包括現在的深度神經網路,卷積神經網路等等 的實質其實是一種加權疊加的思想,其通過不斷地訓練反饋更新權值,使得網路的輸出跟目標輸出一致,獲得所謂的 學習能力 這是乙個典型的神經網路結構,其分別由數個神經元組成輸入層,隱藏層,輸出層,其中輸入層,輸出層固定,隱藏層層...

深度學習理論與技術的重點研究方向

面向泛在 如移動計算 高風險 如精準醫療 高可靠性 如智慧型交通 等應用場景,突破深度學習理論基礎薄弱 模型結構單 一 資源消耗過高 資料依賴性強的瓶頸。研究下一代深度學習理論基礎 非神經網路 資源節約型深度學習模型 方法及高效優化技術 適於小樣本 無監督樣本 強化 博弈學習的深度學習方法與技術。深...