DL-深度學習基礎
目錄
過擬合與欠擬合
- 欠擬合指模型不能在訓練集上獲得足夠低的訓練誤差
- 過擬合指模型的訓練誤差與測試誤差(泛化誤差)之間差距過大
- 反應在評價指標上,就是模型在訓練集上表現良好,但是在測試集和新資料集上表現一般呢(泛化能力差)
降低過擬合風險的方法
所有為了減少測試誤差的策略統稱為正則化方法,這些方法可能以增大訓練誤差為代價
- 資料增強
- 影象:平移、旋轉、縮放
- 利用生成對抗網路(GAN)生成新資料
- NLP:利用機器翻譯生成新資料
- 降低模型複雜度
- 神經網路:減少網路層、神經元個數
- 決策樹:降低樹的深度、剪枝
- 權值約束(新增正則化項)
- L1正則化
- L2正則化
- 整合學習
- 神經網路:Dropout
- 決策樹:隨機森林、GBDT
- 提前終止
資料集擴增
我們在使用訓練資料訓練模型,通過這個模型對將來的資料進行擬合,而在這之間又一個假設便是,訓練資料與將來的資料是獨立同分布的。即使用當前的訓練資料來對將來的資料進行估計與模擬,而更多的資料往往估計與模擬地更準確
一般的方法:1、重取樣
2、根據當前資料集估計資料分佈引數,使用該分佈產生更多資料等更多詳細參考機器學習中防止過擬合的處理方法
正則化
首先看詳解正則
L1正則化可以產生稀疏權值矩陣,讓特徵的權重等於0,用於特徵選擇
L2正則化可以防止模型過擬合,一定程度上,L1也可以防止過擬合在這篇文章中,在解釋為什麼L1正則化會產生稀疏權值矩陣時,把w1 w2在二維平面上化成了正菱形,原因是L=|w1|+|w2|或者寫為f(w1,w2)=|w1|+|w2|。無論是|w1|+|w2|=1,還是|w1|+|w2|=2,對應的影象都是一個正菱形,從1到2,菱形由小變大。我們要最小化損失函式,也就是要最小化L,那就是菱形越來越小,把最優值往原點方向拉,努力讓w都變小。
降低欠擬合風險的方法
-
加入新的特
-
交叉特徵、多項式特徵
-
深度學習:因式分解機、Deep-Crossing、自編碼器
-
-
增加模型複雜度
-
線性模型:新增高次項
-
神經網路:增加網路層數、神經元個數
-
-
減小正則化項的係數
-
新增正則化項是為了限制模型的學習能力,減小正則化項的係數則可以放寬這個限制
-
模型通常更傾向於更大的權重,更大的權重可以使模型更好的擬合資料
-
反向傳播公式推導
詳細步驟參考一問弄懂神經網路反向傳播法BP
- 可以用四個公式總結反向傳播的過程
商標(l)表示網路的層,(L)表示輸出層(最後一層),下標j和k指示神經元的位置,
w_jk表示l層第j個神經元與(l-1)層第k個神經元連線的權重
公式一:C代表總的損失函式
公式二:加和符號上是 ,nl表示第l層神經元的個數
啟用函式
啟用函式的作用-為什麼要使用非線性啟用函式
- 使用啟用函式的目的是為了向網路中加入非線性因素;加強網路的表示能力,解決線性模型不能解決的問題
為什麼加入非線性因素能夠加強網咯的表示能力?——神經網路的萬能近似定理
- 神經網路萬能近似定理認為主要神經網路具有至少一個非線性隱藏層,那麼只要給予網路足夠數量的隱藏單元,他就可以以任意的精度來近似從一個有限維空間到另一個有限緯空間的函式
- 如果不使用非線性啟用函式,那麼每一層輸出都是上一層的線性組合;那麼無論網路有多少層,其整體也將是線性的,最終的效果跟只有一層網路的效果一樣,導致失去萬能近似的性質
- 但僅部分層是純線性是可以接受的,這有助於減少網路中的引數
常見的啟用函式
整流線性單元 ReLU
- ReLU通常是啟用函式較好的預設選擇
ReLU的擴充
- ReLU及其擴充都基於以下公式
當alpha = 0時,即標準的線性整流單元
- 絕對值整流
固定 alpha = -1 ,此時整流函式即絕對值函式 g(z) = |z|
- 滲漏整流線性單元
固定 alpha 為一個小值,比如0.001
- 引數化整流線性單元
將alpha作為一個可學習的引數
- maxout單元
maxout單元進一步擴充套件了ReLU,他是一個可學習的k段函式,引數數量是普通全聯接層的k倍
相關文章
- 深度學習基礎深度學習
- 深度學習--RNN基礎深度學習RNN
- 深度學習及pytorch基礎深度學習PyTorch
- 深度學習基礎之 Dropout深度學習
- 【機器學習基礎】神經網路/深度學習基礎機器學習神經網路深度學習
- 【機器學習基礎】關於深度學習的Tips機器學習深度學習
- 深度學習機器學習基礎-基本原理深度學習機器學習
- 使用 C# 入門深度學習:Pytorch 基礎C#深度學習PyTorch
- python程式設計基礎:深度學習基礎:繪相簿之matplotlib(1)Python程式設計深度學習
- 第一次作業:深度學習基礎深度學習
- 麻省理工深度學習基礎公開課.ppt深度學習
- 動手學深度學習需要這些數學基礎知識深度學習
- 資源 | Intel釋出AI免費系列課程3部曲:機器學習基礎、深度學習基礎以及TensorFlow基礎IntelAI機器學習深度學習
- 【深度學習基礎-13】非線性迴歸 logistic regression深度學習
- 【深度學習基礎-10】簡單線性迴歸(上)深度學習
- 深度學習基礎-最佳化演算法詳解深度學習演算法
- Pytorch 手寫數字識別 深度學習基礎分享PyTorch深度學習
- 【深度學習基礎-12】多元迴歸分析基礎及進階-python程式碼實現深度學習Python
- 免殺學習-基礎學習
- Linux基礎學習——檔案基礎Linux
- python基礎學習Python
- Redis 基礎學習Redis
- Linux基礎學習Linux
- Docker 基礎學習Docker
- Flume基礎學習
- 【Vue學習】基礎Vue
- jQuery基礎學習jQuery
- Scala基礎學習
- kafka基礎學習Kafka
- Zookeeper 基礎學習
- 學習linux基礎Linux
- Pandas基礎學習
- 基於PaddlePaddle的詞向量實戰 | 深度學習基礎任務教程系列深度學習
- 基於PaddlePaddle的詞向量實戰 | 深度學習基礎任務教程系列(二)深度學習
- 深度學習基礎-基於Numpy的卷積神經網路(CNN)實現深度學習卷積神經網路CNN
- 深度學習教程 | 神經網路基礎深度學習神經網路
- Python基礎學習篇Python
- Zookeeper學習——基礎框架框架