機器學習和深度學習知識路線及知識點總結


 

 

數據預處理

1、深度學習中的數據預處理有哪些方式?

1、 數據歸一化。包括高斯歸一化、最大最小值歸一化等。

2、 白化。許多深度學習算法都依賴於白化來獲得更好的特征。所謂的白化,以PCA白化來說,就是對PCA降維后的數據的每一列除以其特征值的根號。

2、為什么需要對數據進行歸一化處理,歸一化的方式有哪些?

1. 為了后面數據處理的方便,歸一化的確可以避免一些不必要的數值問題。

2. 為了程序運行時收斂加快。(如果)

3. 同一量綱。樣本數據的評價標准不一樣,需要對其量綱化,統一評價標准。這算是應用層面的需求。

4. 避免神經元飽和。啥意思?就是當神經元的激活在接近 0 或者 1 時會飽和,在這些區域,梯度幾乎為 0,這樣,在反向傳播過程中,局部梯度就會接近 0,這會有效地“殺死”梯度。

5. 保證輸出數據中數值小的不被吞食。

詳細請參考:

歸一化的方式主要有:線性歸一化、標准差歸一化、非線性歸一化

線性歸一化:

[公式]

標准差歸一化:

[公式]

非線性歸一化:

適用范圍為:經常用在數據分化比較大的場景,有些數值很大,有些很小。通過一些數學函數,將原始值進行映射。該方法包括指數,正切等。

3、數據增強的方式有哪些?

翻轉、旋轉、縮放、裁剪、平移、尺度變換、添加噪聲、色彩抖動、亮度調整、對比度增強。

注意:在數據量比較少的情況下,數據增強的方式對模型效果的提升(泛化能力)很有效。

數據增強可以分為兩類,一類是離線增強,一類是在線增強。

離線增強:直接對數據集進行處理,數據的數目會變成增強因子乘以原數據集的數目,這種方法常常用於數據集很小的時候。

在線增強:這種增強的方法用於,獲得 batch 數據之后,然后對這個 batch 的數據進行增強,如旋轉、平移、翻折等相應的變化,由於有些數據集不能接受線性級別的增長,這種方法長用於大的數據集,很多機器學習框架已經支持了這種數據增強方式,並且可以使用 GPU 優化計算。

物體檢測中的數據增強:其實和正常的數據增強一樣的,數據本身增強后,對box進行一定的平移旋轉即可。

4、深度學習如何解決數據樣本不均衡?你在項目中是怎么解決的?

1、數據增強

2、使用Focal loss

深度學習中的名詞解釋

1、奧卡姆剃刀的思想?

在所有可能選擇的模型中,我們應該選擇能夠很好地解釋已知數據並且十分簡單的模型。

換句話說,同等效果下,選擇較為簡單的模型。

奧卡姆剃刀思想用在哪里呢?其實就是深度學習中的正則化。

2、梯度消失和梯度爆炸?

兩種情況下梯度消失經常出現,一是在深層網絡中,二是采用了不合適的損失函數,比如sigmoid。

梯度爆炸一般出現在深層網絡和權值初始化值太大的情況下。

由鏈式法則可知,當采用sigmoid這類函數時,深層網絡參數更新時,往往會出現梯度消失現象。當初始參數大時,也會出現梯度爆炸。

詳細請參考:

3、鞍點、局部最小值和全局最小值?如何區分它們?如何跳出鞍點和局部最小值?

鞍點和局部極小值、全局最小值的梯度都相等,均為0,不同在於在鞍點附近Hessian矩陣是不定的(行列式小於0,行列式必須是方陣),而在局部極小值附件的Hessian矩陣是正定的。

關於正定矩陣,是特征值都不小於0的實對稱矩陣,關於負定矩陣是特征值都小於0的實對稱矩陣,關於不定矩陣是特征值既有大於0又有小於0的值。

跳出鞍點或者局部最小點一般有以下幾種方式:

1、 以多組不同參數值初始化多個神經網絡,按標准方法訓練后,取其中誤差最小的解作為最終參數。這相當於從多個不同的初始點開始搜索,這樣就可能陷入不同的局部極小,從中進行選擇有可能獲得更接近全局最小的結果。

2、 使用“模擬退火”技術。模擬退火在每一步都以一定的概率接受比當前解更差的結果,從而有助於“跳出”局部極小。在每步迭代過程中,接受“次優解”的概率要隨着時間的推移而逐漸降低,從而保證算法穩定。

3、 使用隨機梯度下降,與標准梯度下降法精確計算梯度不同,隨機梯度下降法在計算梯度時加入了隨機因素。於是,即便現如局部極小點,它計算出的梯度仍可能不為零,這樣就有機會跳出局部極小繼續搜索。

4、深度學習中的超參數有哪些?

超參數 : 在機器學習的上下文中,超參數是在開始學習過程之前設置值的參數,而不是通過訓練得到的參數數據。通常情況下,需要對超參數進行優化,給學習機選擇一組最優超參數,以提高學習的性能和效果。

超參數指的是會影響到最終參數的參數,主要包括卷積核大小和數量、是否采用BN和池化操作、遷移學習、參數的初始化方式、學習率、損失函數、激活函數、是否采用自適應學習率、優化器的選擇等等。

5、如何尋找超參數的最優值?

在使用機器學習算法時,總有一些難調的超參數。例如權重衰減大小,高斯核寬度等等。這些參數需要人為設置,設置的值對結果產生較大影響。常見設置超參數的方法有:

1. 猜測和檢查:根據經驗或直覺,選擇參數,一直迭代。

2. 網格搜索:讓計算機嘗試在一定范圍內均勻分布的一組值。

3. 隨機搜索:讓計算機隨機挑選一組值。

4. 貝葉斯優化:使用貝葉斯優化超參數,會遇到貝葉斯優化算法本身就需要很多的參數的困難。

5. MITIE方法,好初始猜測的前提下進行局部優化。它使用BOBYQA算法,並有一個精心選擇的起始點。由於BOBYQA只尋找最近的局部最優解,所以這個方法是否成功很大程度上取決於是否有一個好的起點。在MITIE的情況下,我們知道一個好的起點,但這不是一個普遍的解決方案,因為通常你不會知道好的起點在哪里。從好的方面來說,這種方法非常適合尋找局部最優解。稍后我會再討論這一點。

6. 最新提出的LIPO的全局優化方法。這個方法沒有參數,而且經驗證比隨機搜索方法好。

6、訓練集、驗證集、測試集和交叉驗證

一般來說,訓練集、驗證集、測試集對中型數據來說,一般划分的比例為6:2:2,但是對於特別大的數據集,比如100w的級別,這個時候,完全沒有必要再按照6:2:2的方式,可以加大訓練量,使模型得到更充足的訓練,此時可以調整為8:1:1的比例,甚至給驗證集和測試集更小的比例。

K折交叉驗證:把數據分成K份,每次拿出一份作為驗證集,剩下k-1份作為訓練集,重復K次。最后平均K次的結果,作為誤差評估的結果。與前兩種方法對比,只需要計算k次,大大減小算法復雜度,被廣泛應用。一般情況將K折交叉驗證用於模型調優,找到使得模型泛化性能最優的超參值。找到后,在全部訓練集上重新訓練模型,並使用獨立測試集對模型性能做出最終評價。

如果訓練數據集相對較小,則增大k值。

增大k值,在每次迭代過程中將會有更多的數據用於模型訓練,能夠得到最小偏差,同時算法時間延長。且訓練塊間高度相似,導致評價結果方差較高。

如果訓練集相對較大,則減小k值。

減小k值,降低模型在不同的數據塊上進行重復擬合的性能評估的計算成本,在平均性能的基礎上獲得模型的准確評估。

7、線性分類器的三個最佳准則

感知准則函數、支持向量機、Fisher准則。

8、KL散度和JS散度

KL散度又稱之為KL距離,相對熵:

[公式]

當P(X)和Q(X)的相似度越高,KL散度越小。

KL散度主要有兩個性質:

(1) 不對稱性

盡管KL散度從直觀上是個度量或距離函數,但它並不是一個真正的度量或者距離,因為它不具有對稱性,即 [公式]

(2) 非負性

相對熵的值是非負值,即 [公式]

JS散度

JS散度也稱JS距離,是KL散度的一種變形。

[公式]

 轉自:https://www.zhihu.com/people/18301926762/posts?page=14

   https://zhuanlan.zhihu.com/p/97311641


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM