目錄
1. 神經網絡有什么難點問題?
(1)優化問題:神經網絡模型是一個非凸函數,再加上在深度網絡中的梯度 消失問題,很難進行優化;另外,深度神經網絡模型一般參數比較多,訓練數據也 比較大,會導致訓練的效率比較低. (2)泛化問題:因為神經網絡的擬合能力強,反而容易在訓練集上產生過擬 合. 因此在訓練深度神經網絡時,同時也需要通過一定的正則化方法來改進網絡 的泛化能力。
2. 訓練神經網絡時常用的優化算法有什么? (1)小批量梯度下降(Mini-Batch ).
在訓練深度神經網絡時,訓練數據的規模通常都比較大. 如果在梯度下降時, 每次迭代都要計算整個訓練數據上的梯度,這就需要比較多的計算資源.
另外大 規模訓練集中的數據通常會非常冗余,也沒有必要在整個訓練集上計算梯度. 因 此,在訓練深度神經網絡時,經常使用小批量梯度下降法(Mini-Batch ).
為了更有效地訓練深度神經網絡,在標準的小批量梯度下降法的基礎上,也經常使用一些改進方法以加快優化速度,比如 如何選擇批量大小、如何調整學習率以及如何修正梯度估計
1)批量大小
批量大小(Batch Size)對網絡優化的影響也非常 大. 一般而言,批量大小不影響隨機梯度的期望,但是會影響隨機梯度的方差. 批 量大小越大,隨機梯度的方差越小,引入的噪聲也越小,訓練也越穩定,因此可以 設置較大的學習率. 而批量大小較小時,需要設置較小的學習率,否則模型會不收 斂. 學習率通常要隨著批量大小的增大而相應地增大
下圖為從 Epoch(回合)和 (單次更新)兩個角度看,批量大小對損失下降的影響.
每一次小批量更新為一次,所有訓練集的樣本更新一 遍為一次Epoch,兩者的關系為 1個 Epoch等于( 訓練樣本的數量 / 批量大小 )次.
關于圖的分析:
從圖a可以看出,批量大小越大,下降效果越明顯,并且下降曲線越平滑.
但從圖b可以看出,如果按整個數據集上的回合(Epoch)數來看,則是批量樣本數越小,適當小的批量大小會導致更快的收斂.
批量大小和模型的泛化能力的也有一定的關系. 研究發現:批量大小越大,越有可能收斂到陡峭最小值;批量大小越小,越有可 能收斂到平坦最小值
2)學習率
學習率是神經網絡優化時的重要超參數. 在梯度下降法中,學習率 的取值 非常關鍵,如果過大就不會收斂,如果過小則收斂速度太慢. 常用的學習率調整 方法包括學習率衰減、學習率預熱、周期性學習率調整以及一些自適應調整學習 率的方法,比如 、、 等. 自適應學習率方法可以針對 每個參數設置不同的學習率.???????
3)梯度估計.
在隨機(小批量)梯度下降法中,如果每次選取樣本數量比較小,損 失會呈現振蕩的方式下降. 也就是說,隨機梯度下降方法中每次迭代的梯度估計 和整個訓練集上的最優梯度并不一致,具有一定的隨機性. 一種有效地緩解梯度 估計隨機性的方式是通過使用最近一段時間內的平均梯度來代替當前時刻的隨 機梯度來作為參數更新的方向,從而提高優化速度.
3. 學習率詳細介紹 (1)學習率衰減是什么
經驗上看,學習率在一開始要保持大些來保證收斂速度,在收斂到最優 點附近時要小些以避免來回振蕩. 比較簡單的學習率調整可以通過學習率衰 減( Rate Decay)的方式來實現,也稱為學習率退火( Rate ).
(2)學習率衰減方法有什么
分段常數衰減( Decay):
即每經過1 , 2 , ? , 次迭代 將學習率衰減為原來的1 , 2 , ? , 倍,其中 和 < 1為根據經驗設置的超 參數. 分段常數衰減也稱為階梯衰減(Step Decay).
逆時衰減( Time Decay):
其中 為衰減率
指數衰減( Decay):
其中 < 1為衰減率
自然指數衰減( Decay):
其中 為衰減率.
余弦衰減( Decay):
其中 為總的迭代次數
不同衰減方法的比較:
(3)學習率預熱是什么
為了提高訓練穩定性,我們可以在最初幾輪迭代時,采用比較小的學習 率,等梯度下降到一定程度后再恢復到初始的學習率,這種方法稱為學習率預 熱( Rate ).
一個常用的學習率預熱方法是逐漸預熱( )
假設預熱的迭代次數為 ′,初始學習率為 0,在預熱過程中,每次更新的學習率為
當預熱過程結束,再選擇一種學習率衰減方法來逐漸降低學習率.
(4)自適應調整學習率的方法有什么
( )算法是借鑒?2 正則化的 思想,每次迭代時自適應地調整每個參數的學習率. 在第 次迭代時,先計算每個 參數梯度平方的累計值
其中⊙為按元素乘積, ∈ ?|| 是第次迭代時的梯度
算法的參數更新差值為
其中是初始的學習率,是為了保持數值穩定性而設置的非常小的常數,一般取 值 ?7 到 ?10 .
在 算法中,如果某個參數的偏導數累積比較大,其學習率相對較 小;相反,如果其偏導數累積較小,其學習率相對較大. 但整體是隨著迭代次數的 增加,學習率逐漸縮小.
缺點:在經過一定次數的迭代依然沒有找到最優點時,由 于這時的學習率已經非常小,很難再繼續找到最優點.
算法是 Geoff 提出的一種自適應學習率的方法 ,可以在有些情況下避免 算法中學習率不斷單調下降以至 于過早衰減的缺點.
算法首先計算每次迭代梯度 平方的指數衰減移動平均,
其中 為衰減率,一般取值為0.9.
算法的參數更新差值為
其中是初始的學習率,比如0.001.
在迭代過程中神經網絡 參數初始化,每個參數的學習率并不是呈衰 減趨勢,既可以變小也可以變大.
(算)法也是 算法的一個改進. 和 算法類似, 算法通過梯度平方的指數衰減移動平均來調整學習 率. 此外, 算法還引入了每次參數更新差值 Δ 的平方的指數衰減權移 動平均
第 次迭代時,參數更新差值Δ 的平方的指數衰減權移動平均為
其中1 為衰減率. 此時Δ 還未知,因此只能計算到Δ?1.
算法的參數更新差值為
其中 的計算方式和算法一樣,
為參數更新差值 Δ 的指數衰減權移動平均.
從上式可以看出,算法將 算法中的初始學習率 改為動 態計算的
,在一定程度上平抑了學習率的波動.
4.梯度估計修正方法有什么 1)動量法
動量()是模擬物理中的概念. 一般而言,一個物體的動量指的 是這個物體在它運動方向上保持運動的趨勢,是物體的質量和速度的乘積. 動 量法( )是用之前積累動量來替代真正的梯度. 每次迭代的梯度可以看作是加速度。
一般而言,在迭代初期,梯度方向都比較一致,動量法會起到 加速作用,可以更快地到達最優點. 在迭代后期,梯度方向會不一致,在收斂值附 近振蕩,動量法會起到減速作用,增加穩定性.
2)加速梯度
加速梯度( ,NAG),也叫 動量法( )是一種對動量法的改進
動量法和加速梯度在參數更新時的比較如圖所示
3)Adam算法
自適應動量估計( ,Adam)算法 可以看作是動量法和 算法的結合,不但使用動量作為參 數更新方向,而且可以自適應調整學習率.
Adam 算法一方面計算梯度平方
的指數加權平均(和 算法類 似),另一方面計算梯度g 的指數加權平均(和動量法類似)
其中1 和2 分別為兩個移動平均的衰減率,通常取值為1 = 0.9, 2 = 0.99.
可以看作是梯度的均值(一階矩), 可以看作是梯度的未減去均值的方 差(二階矩).
Adam算法的參數更新差值為
其中學習率通常設為0.001,并且也可以進行衰減,比如
Adam 算法是 算法與動量法的結合,因此一種自然的 Adam 算法 的改進方法是引入加速梯度,稱為Nadam算法
4)梯度截斷
在深度神經網絡或循環神經網絡中,除了梯度消失之外,梯度爆炸也是影響 學習效率的主要因素. 在基于梯度下降的優化過程中,如果梯度突然增大,用大 的梯度更新參數反而會導致其遠離最優點. 為了避免這種情況,當梯度的模大于 一定閾值時,就對梯度進行截斷,稱為梯度截斷( )
梯度截斷是一種比較簡單的啟發式方法,把梯度的模限定在一個區間,當梯 度的模小于或大于這個區間時就進行截斷. 一般截斷的方式有以下幾種:
按值截斷: 在第 次迭代時,梯度為,給定一個區間[, ],如果一個參數的梯度 小于時,就將其設為;如果大于時,就將其設為.
按模截斷: 按模截斷是將梯度的模截斷到一個給定的截斷閾值.
如果???????
,保持 不變. 如果
,令
截斷閾值是一個超參數,也可以根據一段時間內的平均梯度來自動調整. 實驗 中發現,訓練過程對閾值 并不十分敏感,通常一個小的閾值就可以得到很好的 結果
5. 優化算法匯總與比較
該圖為再數據集上的比較(學習率為 0.001,批量大小為128).
6. 參數初始化的方法有什么 (1) 預訓練初始化
不同的參數初始值會收斂到不同的局部最優解. 雖然這些 局部最優解在訓練集上的損失比較接近,但是它們的泛化能力差異很大. 一個好的初始值會使得網絡收斂到一個泛化能力高的局部最優解. 預訓練初始化通常會 提升模型泛化能力的 一種解釋是預訓練任 務起到一定的正則化 作用. 通常情 況下,一個已經在大規模數據上訓練過的模型可以提供一個好的參數初始 值,這種初始化方法稱為預訓練初始化( ). 預訓 練任務可以為監督學習或無監督學習任務. 由于無監督學習任務更容易獲 取大規模的訓練數據,因此被廣泛采用. 預訓練模型在目標任務上的學習 過程也稱為精調(Fine-).
(2) 隨機初始化
在線性模型的訓練(比如感知器和 回歸)中,我們一 般將參數全部初始化為0. 但是這在神經網絡的訓練中會存在一些問題. 因 為如果參數都為0,在第一遍前向計算時,所有的隱層神經元的激活值都相 同. 在反向傳播時,所有權重的更新也都相同. 這樣會導致隱層神經元沒有 區分性. 這種現象也稱為對稱權重現象. 為了打破這個平衡,比較好的方式是對每個參數都隨機初始化( ),這樣使得不同神經 元之間的區分性更好
常用的隨機初始化方法有什么?
一種最簡單的隨機初始化方法是從一個固定均值(通常為 0)和方差 2 的分布中采樣來生成參數的初始值主要有以下兩種:
(1)高斯分布初始化:使用一個高斯分布(0, 2 )對每個參數進行隨機初始 化.
(2)均勻分布初始化:在一個給定的區間[?, ]內采用均勻分布來初始化參 數. 假設隨機變量在區間[, ]內均勻分布,則其方差為
因此,若使用區間為 [?, ] 的均分分布來采樣,并滿足 var() = 2 時,則 的取值為
在基于固定方差的隨機初始化方法中,比較關鍵的是如何設置方差 2 . 如 果參數范圍取的太小,一是會導致神經元的輸出過小,經過多層之后信號就慢慢 消失了;二是還會使得 型激活函數丟失非線性的能力
要高效地訓練神經網絡,給參數選取一個合適的隨機初始化區間是非常重 要的. 一般而言,參數初始化的區間應該根據神經元的性質進行差異化的設置. 如果一個神經元的輸入連接很多,它的每個輸入連接上的權重就應該小一些, 以避免神經元的輸出過大(當激活函數為 ReLU 時)或過飽和(當激活函數為 函數時).
初始化一個深度網絡時,為了緩解梯度消失或爆炸問題,我們盡可能保持每 個神經元的輸入和輸出的方差一致,根據神經元的連接數量進行自適應的調整初 始化分布的方差,這類方法稱為方差縮放( )
初始化:初始化激活函數適用于恒等函數、 函數和 Tanh 函數
He初始化:適用于ReLU 激活函數
(3) 固定值初始化
對于一些特殊的參數,我們可以根據經驗用一個特殊的固 定值來進行初始化. 比如偏置(Bias)通常用0來初始化,但是有時可以設 置某些經驗值以提高優化效率. 在 LSTM 網絡的遺忘門中,偏置通常初始 化為1或2,使得時序上的梯度變大. 對于使用ReLU的神經元,有時也可以 將偏置設為0.01,使得ReLU神經元在訓練初期更容易激活,從而獲得一定 的梯度來進行誤差反向傳播.
(4)正交初始化
上面介紹的兩種基于方差的初始化方法都是對權重矩陣中的每個參數進行 獨立采樣. 由于采樣的隨機性,采樣出來的權重矩陣依然可能存在梯度消失或梯 度爆炸問題.
因此,一種更加直接的方式是將 () 初始化為正交矩陣,即 ()(()) T = ,這種方法稱為正交初始化( )
正 交初始化的具體實現過程可以分為兩步:首先,用均值為 0、方差為 1的高斯分布 初始化一個矩陣;其次,將這個矩陣用奇異值分解得到兩個正交矩陣,并使用其中 之一作為權重矩陣.
7. 數據歸一化必要性及方法是什么 (1)為什么要進行數據預處理
(2)常用的歸一化方法有什么 1)縮放歸一化
縮放歸一化是一種非常簡單的歸一化方法,通過縮放將每一個特征 的取值范圍歸一到 [0, 1] 或 [?1, 1] 之間. 假設有 個樣本
對于每一維特征,
其中min()和max()分別是特征在所有樣本上的最小值和最大值
2)標準歸一化
標準歸一化也叫 z-score 歸一化,來源于統計上的標準分數. 將每一 個維特征都調整為均值為0,方差為1. 假設有 個樣本
,對于每一維特 征,我們先計算它的均值和方差:
然后,將特征 () 減去均值,并除以標準差,得到新的特征值
這里不能為0. 如果方差為0,說明這一維特征沒有任務區分性,可以直接刪掉
3)白化
白化()是一種重要的預處理方法,用來降低輸入數據特征之間 的冗余性. 輸入數據經過白化處理后,特征之間相關性較低,并且所有特征具有相 同的方差
白化的一個主要實現方式是使用主成分分析( ,PCA)方法去除掉各個成分之間的相關性
標準歸一化和PCA白化的比較如下圖所示
4)批量歸一化
批量歸一化(Batch ,BN)方法是一種有效 的逐層歸一化方法,可以對神經網絡中任意的中間層進行歸一化操作
對于一個深度神經網絡,令第 層的凈輸入為 (),神經元的輸出為 (),即
其中(?)是激活函數, 和是可學習的參數.
為了減少內部協變量偏移問題,就要使得凈輸入 () 的分布一致,比如都歸 一化到標準正態分布. 雖然歸一化操作可以應用在輸入
上,但其分布性質 不如 () 穩定. 因此,在實踐中歸一化操作一般應用在仿射變換之后,激活函數之 前.
為了提高歸一化效 率,一般使用標準歸一化,將凈輸入 () 的每一維都歸一到標準正態分布.
其中
和
是指當前參數下, () 的每一維在整個訓練集上的期望和 方差
批量歸一化操作可以看作是一個特殊的神經層,加在每一層非線性激活函數 之前,即
其中因為批量歸一化本身具有平移變換,所以仿射變換
不再需要偏置參 數.
批量歸一化是對一個中間層的單個神經元進行歸一化操作,因此要求小批量 樣本的數量不能太小,否則難以計算單個神經元的統計信息. 此外,如果一個神經 元的凈輸入的分布在神經網絡中是動態變化的,比如循環神經網絡,那么就無法 應用批量歸一化操作.
5)層歸一化
層歸一化(Layer )是和批量歸一化非常類似 的方法. 和批量歸一化不同的是,層歸一化是對一個中間層的所有神經元進行歸 一化.
層歸一化定義為
其中和 分別代表縮放和平移的參數向量,和 () 維數相同
層歸一化和批量歸一化整體上是十分類似的,差別在于歸一化的方法不同. 對于 個樣本的一個小批量集合???????
,層歸一化是對矩陣 () 的每一列進行歸一化,而批量歸一化是對每一行進行歸一化. 一般而言,批量歸 一化是一種更好的選擇. 當小批量樣本數量比較小時,可以選擇層歸一化
6)權重歸一化
權重歸一化( )是對神經網絡 的連接權重進行歸一化神經網絡 參數初始化,通過再參數化()方法,將連接權重 分解為長度和方向兩種參數
由于在神經網絡中權重經常是共享的,權重數量往往比神經元數量要少,因 此權重歸一化的開銷會比較小.
8.超參數優化 (1)常見的超參數有哪幾類?
1) 網絡結構,包括神經元之間的連接關系、層數、每層的神經元數量、激活函 數的類型等.
2) 優化參數,包括優化方法、學習率、小批量的樣本數量等.
3) 正則化系數
(2)超參數優化難點是什么?
超參數優化( )主要存在兩方面的困難:
1) 超參數優化是一個組合優化問題,無法像一般參數那樣通過梯度下降方法來優 化,也沒有一種通用有效的優化方法.
2)評估一組超參數配置()的時間代價非常高,從而導致一些優化方法(比如演化算法( ))在超參數優化中難以應用
(3)超參數優化方法有什么?
網格搜索(Grid )是一種通過嘗試所有超參數的組合來尋址合適一 組超參數配置的方法. 假設總共有 個超參數,第個超參數的可以取 個值. 那么總共的配置組合數量為1 × 2 × ? × . 如果超參數是連續的,可以將 超參數離散化
一般而言,對于連續的超參數,我們不能按等間隔的方式進行離散化,需要根據超 參數自身的特點進行離散化.
網格搜索根據這些超參數的不同組合分別訓練一個模型,然后測試這些模型 在開發集上的性能,選取一組性能最好的配置
不同超參數對模型性能的影響有很大差異. 有些超參數(比如正則化系數) 對模型性能的影響有限,而另一些超參數(比如學習率)對模型性能影響比較大. 在這種情況下,采用網格搜索會在不重要的超參數上進行不必要的嘗試.
比較有效的改進方法是對超參數進行隨機組合,然后選取一個性能最好的 配置,這就是隨機搜索( )隨機搜索在實 踐中更容易實現,一般會比網格搜索更加有效
網格搜索和隨機搜索都沒有利用不同超參數組合之間的相關性,即如果模型 的超參數組合比較類似,其模型性能也是比較接近的. 因此這兩種搜索方式一般 都比較低效.
貝葉斯優化( )是一種自適應的超參數優化方法,根據當前已經試驗的超參數組合,來預測下一個可能帶來最大收益的組合
一種比較常用的貝葉斯優化方法為時序模型優化( Model-Based ,SMBO)
時序模型優化方法如算法所示
貝葉斯優化的一個缺點是高斯過程建模需要計算協方差矩陣的逆,時間復雜 度是(3 ),因此不能很好地處理高維情況. 深度神經網絡的超參數一般比較多, 為了使用貝葉斯優化來搜索神經網絡的超參數,需要一些更高效的高斯過程建 模. 也有一些方法可以將時間復雜度從(3 )降低到()
動態資源分配的關鍵是將有限的資源分配給更有可能帶來收益的超參數組 合. 一種有效方法是逐次減半( )方法
9. 數據增強方法有什么
在數 據量有限的情況下,可以通過數據增強(Data )來增加數據量,提 高模型魯棒性,避免過擬合. 目前,數據增強還主要應用在圖像數據上,在文本等 其他類型的數據上還沒有太好的方法
圖像數據的增強主要是通過算法對圖像進行轉變,引入噪聲等方法來增加數 據的多樣性. 增強的方法主要有幾種:
(1) 旋轉():將圖像按順時針或逆時針方向隨機旋轉一定角度.
(2) 翻轉(Flip):將圖像沿水平或垂直方法隨機翻轉一定角度.
(3) 縮放(Zoom In/Out):將圖像放大或縮小一定比例.
(4) 平移(Shift):將圖像沿水平或垂直方法平移一定步長.
(5) 加噪聲(Noise):加入隨機噪聲.