1. 程式人生 > 其它 >機器學習和深度學習知識路線及知識點總結

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

資料預處理

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