一、概念
正則化在深度學習領域是為了防止訓練結果過擬合而采取的一種方法。
1.1 過擬合
過擬合表示模型的泛化能力較差,體現在實際訓練模型上就是在訓練集表現很好,但是在測試集的效果一般。
過擬合的原因:1,模型過于復雜。2,參數過多。
除了正則化可以降低過擬合現象,Dropout、early stopping和數據增強等方法也可以達到相似效果。
1.2 正則化(regularization)
正則化可以分為L1正則化、L2正則化,就是在損失函數中加上正則化項,對模型添加懲罰項,會減小模型的參數數值。
L1正則化:
L2正則化:
二、Pytorch示例
pytorch中L2正則化的使用在優化器中的weight_decay(權值衰減)參數設置,這里以SGD優化器為例。根據官網,weight_decay是對所有參數進行正則化。
# weight_decay
optim = torch.optim.SGD(wzh.parameters(), lr=0.01, weight_decay=0.01)for epoch in range(100):running_loss = 0.0for data in dataloader:imgs, targets = dataoutputs = wzh(imgs)result = loss(outputs, targets)optim.zero_grad()result.backward()optim.step()running_loss = running_loss + resultprint(running_loss)
L1正則化需要自己定義函數。
三、參考文章
總結-深度學習中的正則化方法(regularization)
權重衰減(weight decay)與學習率衰減(learning rate decay)