天天看點

自學記錄《深度學習500問》之 深度學習基礎

深度學習基礎

      • 1.為什麼使用深層表示?
      • 2.為什麼深層神經網絡難以訓練?
      • 3.深度學習和機器學習有什麼不同?
      • 4.前向傳播與反向傳播
      • 5.神經網絡的輸出
      • 6.卷積神經網絡的輸出
      • 7.池化層的輸出
      • 8.神經網絡更“深”有什麼意義?
      • 9.什麼是超參數?
      • 10.如何尋找超參數的最優值?
      • 11.超參數搜尋的一般過程?
      • 12.為什麼需要非線性激活函數?
      • 13.常見的激活函數
      • 14.常見的激活函數的導數
      • 15.激活函數有哪些性質?
      • 16.如何選擇激活函數?
      • 17.使用Relu激活函數的優點?
      • 18.什麼時候可以使用線性激活函數?
      • 19.怎樣了解Relu(<0時)是非線性激活函數?
      • 20.softmax函數如何應用于多分類?
      • 21.cross_entropy交叉熵損失函數?
      • 22.為什麼Tanh收斂速度比Sigmoid塊?
      • 23.為什麼需要batch_size?
      • 24.batch_size如何選擇?
      • 25.在合理的範圍内,增大batch_size有何好處?
      • 26.盲目增大batch_size有何壞處?
      • 27.調整batch_size對訓練效果的影響到底如何?
      • 28.歸一化的含義?
      • 29.歸一化的目的?
      • 30.歸一化如何提高求解最優解的速度?
      • 31.歸一化有哪些類型?
      • 32.局部響應歸一化?
      • 33.什麼是批歸一化(Batch Normalization)?
      • 34.批歸一化(BN)算法的優點?
      • 34.批歸一化(BN)算法流程?
      • 35. 批歸一化和群組歸一化比較
      • 36. Weight Normalization
      • 37.Batch Normalization在什麼時候用比較合适?
      • 38.為什麼無監督預訓練可以幫助深度學習?
      • 39.什麼是模型微調fine tuning
      • 40.微調時候網絡參數是否更新?
      • 41.fine-tuning 模型的三種狀态
      • 42.權重偏差初始化
      • 43.學習率的作用?
      • 44.為什麼要正則化?
      • 45.什麼是dropout正則化?
      • 46.dropout的缺點?
      • 47.深度學習中常用的資料增強方法?
      • 48.代價函數,損失函數,目标函數差別?

1.為什麼使用深層表示?

  1. 深度神經網絡是一種遞進式的學習算法,淺層的神經元直接從資料中學習一些低層次的簡單特征,例如邊緣、紋理等。而深層的神經元則基于已經學習到的淺層特征繼續學習更進階的特征, 從計算機的角度來學習深層次的資訊。
  2. 深層的網絡隐藏單元數量相對較少,隐藏層數目較多,如果淺層的網絡想要達到同樣的計算結果,則需要指數級增長神經元的數量才能達到。

2.為什麼深層神經網絡難以訓練?

  1. 梯度消失:從隐藏層從後向前看,梯度會變得越來越小,說明前面層的學習效果遠低于後面的層,是以學習會卡住。
梯度消失的原因受到多種因素影響,例如學習率的大小,網絡參數的初始化,激活函數的邊緣效應等。在深層神經網絡中,每一個神經元計算得到的梯度都會傳遞給前一層,較淺層的神經元接收到的梯度受到之前所有層梯度的影響。如果計算得到的梯度值非常小,随着層數增多,求出的梯度更新資訊将會以指數形式衰減,就會發生梯度消失。下圖是不同隐含層的學習速率:
自學記錄《深度學習500問》之 深度學習基礎
  1. 梯度爆炸:在深度網絡或循環神經網絡等結構當中,梯度在網絡中不斷累積,變成非常大,導緻網絡的權重參數大幅更新,使網絡不穩定。在極端情況下,權重值甚至會溢出,變為NaN值,再也無法更新。

若激活函數的導數的絕對值小于1**,那麼經過多次連乘後傳到前面層的誤差項就接近于0,那麼就會導緻前面層的參數幾乎沒有更新,即梯度消失。反之,若激活函數的導數的絕對值大于1,多次連乘後就會非常大,導緻梯度爆炸。**

  1. 權重矩陣的退化導緻模型的有效自由度減少

​ 參數空間中學習的退化速度減慢,導緻減少了模型的有效維數,網絡的可用自由度對學習中梯度範數的貢獻不均衡,随着相乘矩陣的數量(即網絡深度)的增加,矩陣的乘積變得越來越退化。在有硬飽和邊界的非線性網絡中(例如 ReLU 網絡),随着深度增加,退化過程會變得越來越快。Duvenaud等人2014年的論文裡展示了關于該退化過程的可視化:

自學記錄《深度學習500問》之 深度學習基礎

随着深度的增加,輸入空間(左上角所示)會在輸入空間中的每個點處被扭曲成越來越細的單絲,隻有一個與細絲正交的方向影響網絡的響應。沿着這個方向,網絡實際上對變化變得非常敏感。

3.深度學習和機器學習有什麼不同?

機器學習:利用計算機使用機率學、統計學等知識,輸入資料,讓計算機學會新知識。機器學習的過程,就是訓練資料去優化目标函數。

深度學習:是一種特殊的機器學習,具有更強大的能力和靈活性,它是通過學習将世界表示為嵌套的層次結構,由淺至深提取特征。

主要差別:傳統的機器學習需要定義一些手工特征,進而指向性的去提取目标資訊,非常依賴任務的特異性以及設計特征的專家經驗。深度學習則不需要,可以從大資料中自主學習簡單特征,逐漸學習更為複雜的深層特征。

自學記錄《深度學習500問》之 深度學習基礎

4.前向傳播與反向傳播

前向傳播(foward propagation, FP):由輸入層逐層計算得到輸出的過程。

向傳播(backward propagation, BP):由網絡的輸出通過計算梯度由深到淺的更新網絡參數。

5.神經網絡的輸出

自學記錄《深度學習500問》之 深度學習基礎

如上圖,輸入層有三個節點,我們将其依次編号為 1、2、3;隐藏層的 4 個節點,編号依次為 4、5、6、7;最後輸出層的兩個節點編号為 8、9。比如,隐藏層的節點 4,它和輸入層的三個節點 1、2、3 之間都有連接配接,其連接配接上的權重分别為是   w 41 , w 42 , w 43 \ w_{41}, w_{42}, w_{43}  w41​,w42​,w43​ 。

為了計算節點 4 的輸出值,我們必須先得到其所有上遊節點(也就是節點 1、2、3)的輸出值。節點 1、2、3 是輸入層的節點,是以,他們的輸出值就是輸入向量本身。按照上圖畫出的對應關系,可以看到節點 1、2、3 的輸出值分别是   x 1 , x 2 , x 3 \ x_1, x_2, x_3  x1​,x2​,x3​。

a 4 = σ ( w T ⋅ a ) = σ ( w 41 x 4 + w 42 x 2 + w 43 a 3 + w 4 b ) a_4 = \sigma(w^T \cdot a) = \sigma(w_{41}x_4 + w_{42}x_2 + w_{43}a_3 + w_{4b}) a4​=σ(wT⋅a)=σ(w41​x4​+w42​x2​+w43​a3​+w4b​)

其中   w 4 b \ w_{4b}  w4b​ 是節點 4 的偏置項。

同樣,我們可以繼續計算出節點 5、6、7 的輸出值   a 5 , a 6 , a 7 \ a_5, a_6, a_7  a5​,a6​,a7​。

計算輸出層的節點 8 的輸出值   y 1 \ y_1  y1​:

y 1 = σ ( w T ⋅ a ) = σ ( w 84 a 4 + w 85 a 5 + w 86 a 6 + w 87 a 7 + w 8 b ) y_1 = \sigma(w^T \cdot a) = \sigma(w_{84}a_4 + w_{85}a_5 + w_{86}a_6 + w_{87}a_7 + w_{8b}) y1​=σ(wT⋅a)=σ(w84​a4​+w85​a5​+w86​a6​+w87​a7​+w8b​)

其中   w 8 b \ w_{8b}  w8b​ 是節點 8 的偏置項。

同理,我們還可以計算出   y 2 \ y_2  y2​。這樣輸出層所有節點的輸出值計算完畢,我們就得到了在輸入向量   x 1 , x 2 , x 3 , x 4 \ x_1, x_2, x_3, x_4  x1​,x2​,x3​,x4​ 時,神經網絡的輸出向量   y 1 , y 2 \ y_1, y_2  y1​,y2​ 。這裡我們也看到,輸出向量的次元和輸出層神經元個數相同。

6.卷積神經網絡的輸出

自學記錄《深度學習500問》之 深度學習基礎

假設圖像寬度   W i n = 5 \ W_{in}=5  Win​=5,filter 寬度   F = 3 \ F=3  F=3,Zero Padding   P = 0 \ P=0  P=0,步幅   S = 2 \ S=2  S=2,則輸出尺寸:

W o u t = ( W i − F + 2 P 單 側 ) / S + 1 W_ {out} = (W_i-F+2P_{單側})/S+1 Wout​=(Wi​−F+2P單側​)/S+1

7.池化層的輸出

Pooling 層主要的作用是下采樣,通過去掉 Feature Map 中不重要的樣本,進一步減少參數數量。

例:   2 ∗ 2 \ 2*2  2∗2 的   m a x p o o l i n g \ max pooling  maxpooling

自學記錄《深度學習500問》之 深度學習基礎

除了   M a x P o o i n g \ Max Pooing  MaxPooing 之外,常用的還有   A v e r a g e P o o l i n g \ Average Pooling  AveragePooling ——取各樣本的平均值。​

對于深度為   D \ D  D 的   F e a t u r e M a p \ Feature Map  FeatureMap,各層獨立做   P o o l i n g \ Pooling  Pooling,是以   P o o l i n g \ Pooling  Pooling 後的深度仍然為   D \ D  D(即池化後特征圖通道數不變) 。

8.神經網絡更“深”有什麼意義?

前提:在一定範圍内

  • 在神經元的數量相同的情況下,深層網絡具有更大的容量,分層組合可以創造指數級的表達空間,能夠組合更多不同類項的子結構,可以更容易的學習和表示各種特征。
  • 隐藏層的增加意味着由激活函數帶來的非線性變換嵌套層數更多,就能構造更複雜的映射關系。

9.什麼是超參數?

超參數是在開始學習之前設定的參數,而不是通過訓練得到的參數資料。通常情況下,需要對超參數進行優化,給學習選擇一組最優的超參數,以提高學習的性能和效果。

具體來講包括

學習率(learning rate)

、梯度下降法的

疊代次數(iterations)

隐藏層數(hidden layers)

隐藏層單元數

激活函數( activation function)

等,都需要根據實際情況來設定,這些數字實際上控制了最後的參數和的值,是以它們被稱作超參數。

10.如何尋找超參數的最優值?

  1. 猜測+試驗:根據經驗選擇參數,訓練;調整,再訓練;再調整,訓練;直至訓練結果較符合要求。
  2. 網絡搜尋:讓計算機嘗試在一定範圍内均勻分布的一組值。
  3. 随機搜尋:讓計算機随機挑選一組值
  4. MITIE方法:好的初始猜測的前提下,進行局部優化。

11.超參數搜尋的一般過程?

  1. 将資料集分成訓練集、驗證集和測試集。
  2. 根據訓練集上訓練,得到模型參數。
  3. 在驗證集上根據模型的性能名額對模型超參數進行搜尋。
  4. 步驟2和步驟3交替疊代,直至網絡模型符合要求。
  5. 模型的參數已經固定,此時在測試集中評價模型優劣

12.為什麼需要非線性激活函數?

為什麼需要激活函數?

  1. 激活函數可以讓模型去了解和學習非常複雜的非線性函數。
  2. 如不使用激活函數,那麼輸出信号僅是一個簡單的線性函數,神經網絡則無法學習和拟合複雜的資料類型,例如圖像、語音等等等。
  3. 激活函數可以把目前的特征空間映射轉換到另一個空間,讓資料能更好的被分類。

為什麼激活函數需要是非線性的?

  1. 如果激活函數都是線性的,那麼組合後網絡仍是線性的,增加激活函數僅相當于改變了網絡的權重參數W和偏置b,這樣就做不到用非線性來逼近任意函數。
  2. 使用了非線性激活函數 ,以便使網絡更加強大,增加它的能力,使它可以學習複雜的事物,複雜的表單資料,以及表示輸入輸出之間非線性的複雜的任意函數映射。使用非線性激活函數,能夠從輸入輸出之間生成非線性映射。

13.常見的激活函數

自學記錄《深度學習500問》之 深度學習基礎
自學記錄《深度學習500問》之 深度學習基礎
自學記錄《深度學習500問》之 深度學習基礎
自學記錄《深度學習500問》之 深度學習基礎

14.常見的激活函數的導數

自學記錄《深度學習500問》之 深度學習基礎

15.激活函數有哪些性質?

  1. 非線性:激活函數是非線性的,理論上來講一個兩層的神經網絡就可以逼近所有函數。
  2. 可微性:可以基于梯度優化參數。
  3. 單調性:當激活函數是單調的時候,單層網絡能夠保證是凸函數。
  4. f(x) ≈ x:當激活函數滿足這個性質的時候,如果參數的初始化是随機的較小值,那麼神經網絡的訓練将會很高效;如果不滿足這個性質,那麼就需要詳細地去設定初始值。
  5. 輸出值的範圍:當激活函數的輸出是有限的時候,基于梯度的優化算法會更穩定(因為特征的表示受有限權值的影響更顯著);當激活函數的輸出是無限的時候,模型的訓練會更高效,此時一般需要小一點的learning reat。

16.如何選擇激活函數?

通常的做法是,如果不确定哪一個激活函數效果更好,可以把它們都試試,然後在驗證集或者測試集上進行評價。然後看哪一種表現的更好,就去使用它。

以下是常見的選擇情況:

  1. 如果輸出是0,1二分類問題,則輸出層選用Sigmoid函數,其他層選用Relu函數。
  2. 在隐藏層上通常會選用最常用的預設函數:Relu函數,或者Leaky ReLu函數。有時也會使用tanh函數,但 Relu 的一個優點是:當是負值的時候,導數等于 0。
  3. tanh函數非常優秀,幾乎适合所有場合。
  4. Sigmoid函數除了二分類的輸出層以外基本不會用。
  5. 如果遇到了一些死的神經元,可以使用Leaky ReLu函數。

17.使用Relu激活函數的優點?

  1. 在區間變動很大的情況下,Relu激活函數實際上就是一個if-else語句,而sigmoid函數需要進行浮點四則運算,在實踐中,使用Relu函數的神經網絡通常會比使用sigmoid和tanh激活函數的神經網絡學習得更快。
  2. sigmoid和tanh函數的導數在正負飽和區間的梯度都會接近于0,導緻梯度消失,而Relu和Leaky Relu函數大于0部分的梯度都為常數,不會出現此現象。
  3. 需要注意,當Relu函數進入負半區的時候,梯度為0,此時神經元不會訓練,産生所謂的稀疏性,而Leaky Relu 不會産生這個問題。

18.什麼時候可以使用線性激活函數?

  1. 輸出層,大多可能使用線性激活函數。
  2. 在隐含層可能會用到一些線性激活函數。
  3. 總之用到線性激活函數的很少。

19.怎樣了解Relu(<0時)是非線性激活函數?

圖像如下:

自學記錄《深度學習500問》之 深度學習基礎

由圖像可看出以下特點:

  1. 單側抑制
  2. 相對寬闊的興奮邊界
  3. 稀疏激活性

ReLU 函數從圖像上看,是一個分段線性函數,把所有的負值都變為 0,而正值不變,這樣就成為單側抑制。

因為有了這單側抑制,才使得神經網絡中的神經元也具有了稀疏激活性。

稀疏激活性:從信号方面來看,即神經元同時隻對輸入信号的少部分選擇性響應,大量信号被刻意的屏蔽了,這樣可以提高學習的精度,更好更快地提取稀疏特征。當 x<0 時,ReLU 硬飽和,而當 x>0 時,則不存在飽和問題。ReLU 能夠在 x>0 時保持梯度不衰減,進而緩解梯度消失問題。

20.softmax函數如何應用于多分類?

softmax函數通過将多類别的輸出轉化為機率分布,之後應用在計算交叉熵損失函數上

自學記錄《深度學習500問》之 深度學習基礎

21.cross_entropy交叉熵損失函數?

計算兩個機率分布之間的距離。

自學記錄《深度學習500問》之 深度學習基礎

22.為什麼Tanh收斂速度比Sigmoid塊?

自學記錄《深度學習500問》之 深度學習基礎

由二者的導數可以看出,tanh函數的梯度範圍大于sigmoid函數的梯度範圍,更小的梯度更容易出校梯度消失現象,是以tanh更快。

自學記錄《深度學習500問》之 深度學習基礎

23.為什麼需要batch_size?

bath的選擇會決定下降的方向。

對于較小的資料集,可令batch = 全資料集,好處是:

  1. 由全資料集确定的方向能更好的代表樣本總體,進而更好地朝着極值所在的方向。
  2. 由于不同的權重的梯度差别巨大,是以選擇一個全局學習率很困難,可以選用一些學習率自适應(基于不同的權重進行調整)的優化函數。

對于較大的資料集,由于顯存的限制,一次載入所有資料不可行。

24.batch_size如何選擇?

如果每次隻訓練一個新樣本,即batch_size = 1,那麼會導緻每次修正的方向都以各自樣本的梯度方向修正,各自為政、互相抵消、難以達到收斂。

因為全資料集又有顯存限制,是以可采用批量梯度下降法(Mini-batches Learning)。

25.在合理的範圍内,增大batch_size有何好處?

  1. 顯存使用率增加,大矩陣乘法并行化效率提高。
  2. 跑完一次epoch所需時間減少,總體訓練速度加快。
  3. 在到一定的範圍内,batch_size越大,下降的方向越準确。

26.盲目增大batch_size有何壞處?

  1. 首先顯存容量可能不夠
  2. 跑完一個epoch所需疊代次數減少了,但是花費的時間大大增加了,進而對參數的修正也會變慢。

27.調整batch_size對訓練效果的影響到底如何?

  1. 如果batch_size太小,訓練結果極差。
  2. 随着batch_size增大,訓練速率加快。
  3. 随着 Batch_Size 增大,達到相同精度所需要的 epoch 數量越來越多。
  4. 由于上述兩種因素的沖突, Batch_Size 增大到某個時候,達到時間上的最優。
  5. 由于最終收斂精度會陷入不同的局部極值,是以 Batch_Size 增大到某些時候,達到最終收斂精度上的最優。

28.歸一化的含義?

将資料都映射到0-1範圍内

自學記錄《深度學習500問》之 深度學習基礎

29.歸一化的目的?

  • 為了之後資料處理友善
  • 使程式收斂加快、
  • 使用sigmoid激活函數時防止神經元飽和死亡
  • 同一量綱。樣本資料的評價标準不一樣,需要對其量綱化,統一評價标準。這算是應用層面的需求。
  • 保證資料中的較小值不被吞食

30.歸一化如何提高求解最優解的速度?

自學記錄《深度學習500問》之 深度學習基礎

上圖是代表資料是否均一化的最優解尋解過程(圓圈可以了解為等高線)。左圖表示未經歸一化操作的尋解過程,右圖表示經過歸一化後的尋解過程。當使用梯度下降法尋求最優解時,很有可能走“之字型”路線(垂直等高線走),進而導緻需要疊代很多次才能收斂;而右圖對兩個原始特征進行了歸一化,其對應的等高線顯得很圓,在梯度下降進行求解時能較快的收斂。

3D 圖解未歸一化

例子:假設 w1 的範圍在 [−10,10],而 w2 的範圍在 [−100,100],梯度每次都前進 1 機關,那麼在 w1 方向上每次相當于前進了 1/20,而在 w2 上隻相當于 1/200!某種意義上來說,在 w2 上前進的步長更小一些,而 w1 在搜尋過程中會比 w2 “走”得更快。這樣會導緻,在搜尋過程中更偏向于 w1 的方向。走出了“L”形狀,或者成為“之”字形。

自學記錄《深度學習500問》之 深度學習基礎

31.歸一化有哪些類型?

  • 線性歸一化
    自學記錄《深度學習500問》之 深度學習基礎

    适用範圍:比較适用在數值比較集中的情況。

    ​ 缺點:如果 max 和 min 不穩定,很容易使得歸一化結果不穩定,使得後續使用效果也不穩定。

  • 标準化
    自學記錄《深度學習500問》之 深度學習基礎
    含義:經過處理的資料符合标準正态分布,即均值為 0,标準差為 1 其中 μ 為所有樣本資料的均值,σ 為所有樣本資料的标準差。
  • 非線性歸一化

    -适用範圍:經常用在資料分化比較大的場景,有些數值很大,有些很小。通過一些數學函數,将原始值進行映射。該方法包括 log、指數,正切等。

32.局部響應歸一化?

  • 原理:仿造生物學上活躍的神經元對相鄰神經元的抑制現象。

33.什麼是批歸一化(Batch Normalization)?

上述的歸一化,隻是對輸入層資料進行的歸一化處理,卻沒有在中間層進行歸一化處理。

  • 要知道,雖然我們對輸入資料進行了歸一化處理,但是輸入資料經過 σ ( W X + b ) σ(WX+b) σ(WX+b)這樣的矩陣乘法以及非線性運算之後,其資料分布很可能被改變,而随着深度網絡的多層運算之後,資料分布的變化将越來越大。如果我們能在網絡的中間也進行歸一化處理,是否對網絡的訓練起到改進作用呢?答案是肯定的。

這種在神經網絡中間層也進行歸一化處理,使訓練效果更好的方法,就是批歸一化Batch Normalization(BN)。

34.批歸一化(BN)算法的優點?

  1. 減少人為選擇的參數。在某些情況下,可以取消dropout和L2正則項參數或采取更小的L2正則項限制參數。
  2. 減小了對學習率的要求。
  3. 可以不使用局部響應歸一化
  4. 破壞原來資料的分布,在一定程度上給防止過拟合。
  5. 對于sigmoid激活函數來說可以減少梯度消失,加快收斂速度,提高訓練精度。

34.批歸一化(BN)算法流程?

自學記錄《深度學習500問》之 深度學習基礎

35. 批歸一化和群組歸一化比較

批量歸一化: 按批量次元進行歸一化。

群組歸一化: GN 将通道分成組,并在每組内計算歸一化的均值和方差。

自學記錄《深度學習500問》之 深度學習基礎

36. Weight Normalization

Weight Normalization 是對網絡權值 W W W 進行 normalization,是以也稱為 Weight Normalization;

自學記錄《深度學習500問》之 深度學習基礎

37.Batch Normalization在什麼時候用比較合适?

  1. 在CNN當中,BN應用在非線性映射(激活函數)之前。在神經網絡訓練時遇到收斂速度很慢,或梯度爆炸等無法訓練的狀況時可以嘗試BN來解決。另外,在一般使用情況下也可以加入BN來加快訓練速度,提高模型精度。
  2. BN比較适用的場景是:每個mini-batch比較大,資料分布比較接近。在進行訓練之前,要做好充分的shuffle,否則效果會差很多。另外,由于BN需要在運作過程中統計每個mini-batch的一階統計量和二階統計量,是以不适用于動态的網絡結構和RNN網絡。

38.為什麼無監督預訓練可以幫助深度學習?

深度網絡存在問題:

  1. 網絡越深,需要的訓練樣本數越多。若用監督則需大量标注樣本,不然小規模樣本容易造成過拟合。深層網絡特征比較多,會出現的多特征問題主要有多樣本問題、規則化問題、特征選擇問題。
  2. 多層神經網絡參數優化是個高階非凸優化問題,經常得到收斂較差的局部解;
  3. 梯度擴散問題,BP算法計算出的梯度随着深度向前而顯著下降,導緻前面網絡參數貢獻很小,更新速度慢。

解決方法:

​ 逐層貪婪訓練,無監督預訓練(unsupervised pre-training)即訓練網絡的第一個隐藏層,再訓練第二個…最後用這些訓練好的網絡參數值作為整體網絡參數的初始值。經過預訓練最終能得到比較好的局部最優解。

39.什麼是模型微調fine tuning

  • 用别人的參數、修改後的網絡和自己的資料進行訓練,使得參數适應自己的資料,這樣一個過程,通常稱之為微調(fine tuning).

40.微調時候網絡參數是否更新?

答案:會更新。

  • finetune 的過程相當于繼續訓練,跟直接訓練的差別是初始化的時候。
  • 直接訓練是按照網絡定義指定的方式初始化。
  • finetune是用你已經有的參數檔案來初始化。

41.fine-tuning 模型的三種狀态

  • 狀态一:隻預測,不訓練。
  • 狀态二:訓練,但隻訓練最後分類層。 特點:fine-tuning的模型最終的分類以及符合要求,現在隻是在他們的基礎上進行類别降維。
  • 狀态三:完全訓練,分類層+之前卷積層都訓練。特點:跟狀态二的差異很小,當然狀态三比較耗時和需要訓練GPU資源,不過非常适合fine-tuning到自己想要的模型裡面,預測精度相比狀态二也提高不少。

42.權重偏差初始化

若全都初始化為同樣的值,神經網絡計算出來的輸出值是一樣的,神經網絡在進行反向傳播算法計算出來的梯度值也一樣,并且參數更新值也一樣,網絡就是對稱的。

  • 可以将每個神經元的權重向量初始化為一個從多元高斯分布取樣的随機向量,是以神經元在輸入空間中指向随機的方向(so the neurons point in random direction in the input space),也可以從均勻分布中來随機選取小數。
  • 對于偏差,可以将其初始化為零

43.學習率的作用?

學習率 (learning rate),在疊代過程中會控制模型的學習進度。

  • 在疊代優化的前期中,學習率較大,則前進的步長就會較長,這時便能以較快的速度進行梯度下降,而在疊代優化的後期,逐漸減國小習率的值,減小步長,這樣将有助于算法的收斂,更容易接近最優解。

44.為什麼要正則化?

答:減小過拟合

  • 深度學習可能存在過拟合問題——高方差,有兩個解決方法,一個是正則化,另一個是準備更多的資料,這是非常可靠的方法,但你可能無法時時刻刻準備足夠多的訓練資料或者擷取更多資料的成本很高,但正則化通常有助于避免過拟合或減少你的網絡誤差。

過拟合現象如下圖所示:左圖是高偏差,右圖是高方差,中間是Just Right

自學記錄《深度學習500問》之 深度學習基礎

45.什麼是dropout正則化?

答:随機删除網絡中的神經單元,使得網絡不要依賴于任何一個特征(L2正則化:在損失函數中添加描述模型複雜度的因子)

  • 經過交叉驗證,隐藏層中添加的 dropout 率等于 0.5 的時候效果最好,原因是 0.5 的時候 dropout 随機生成的網絡結構最多。
>  class FooNet(Module):
>     def __init__(self):
>         super(FooNet, self).__init__()
>         self.layer = Sequential(
>             # Dropout 放在需要drop神經元的層之前,傳入每個神經元被舍棄的機率
>             Dropout(p=0.5),
>             Linear(1000, 1),
>             ReLU()
>         )
> 
>     def forward(self, x):
>         return self.layer(x)

           

46.dropout的缺點?

答:​ dropout一大缺點就是代價函數J不再被明确定義

47.深度學習中常用的資料增強方法?

  • Color Jittering:對顔色的資料增強:圖像亮度、飽和度、對比度變化(此處對色彩抖動的了解不知是否得當);
  • Random Scale:尺度變換;
  • Random Crop:采用随機圖像內插補點方式,對圖像進行裁剪、縮放;包括Scale Jittering方法(VGG及ResNet模型使用)或者尺度和長寬比增強變換;
  • Horizontal/Vertical Flip:水準/垂直翻轉;
  • Shift:平移變換;
  • Rotation/Reflection:旋轉/仿射變換;
  • Noise:高斯噪聲、模糊處理;
  • Label Shuffle:類别不平衡資料的增廣;
  • PCA Jittering:首先按照RGB三個顔色通道計算均值和标準差,再在整個訓練集上計算協方差矩陣,進行特征分解,得到特征向量和特征值,用來做PCA Jittering;

48.代價函數,損失函數,目标函數差別?

  • 損失函數和代價函數是同一個東西, 目标函數是一個與他們相關但更廣的概念,對于目标函數來說在有限制條件下的最小化就是損失函數(loss function)。

繼續閱讀