文章目录
一、正则化与偏差-方差分解
正则化方法是机器学习(深度学习)中重要的方法,它目的在于减小方差。下面借助周志华老师西瓜书中的对于方差、偏差的定义来进行理解。
泛化误差可分解为:偏差、方差与噪声之和。
- 偏差度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力
- 方差度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响
- 噪声则表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界
正则化方法就是减小方差的策略。常见的过拟合就会导致高方差,因此,人们常用正则化降低方差来解决过拟合。
正则化有L1正则化与L2正则化,通常就是损失函数加上正则项。
𝑶 𝒃 𝒋 = 𝑪 𝒐 𝒔 𝒕 + R e g u l a r i z a t i o n T e r m 𝑶𝒃𝒋 = 𝑪𝒐𝒔𝒕 + Regula riza tion Term Obj=Cost+RegularizationTerm
L1 Regularization Term: ∑ i N ∣ w i ∣ \sum_i^N|w_i| ∑iN∣wi∣
L2 Regularization Term: ∑ i N w i 2 \sum_i^Nw_i^2 ∑iNwi2
关于L1正则化与L2正则化面试中常涉及到如下问题:百面机器学习—13.L1正则化与稀疏性
二、pytorch中的L2正则项—weight decay(权值衰减)
加入L2正则项后,目标函数:
O b j = L o s s + λ 2 ∗ ∑ i N w i 2 w i + 1 = w i − ∂ O b j ∂ w i = w i ( 1 − λ ) − ∂ L o s s ∂ w i Obj=Loss + \frac{\lambda}{2}*\sum_i^Nw_i^2\\w_{i+1}=w_i-\frac{\partial{Obj}}{\partial{w_i}}=w_i(1-\lambda)-\frac{\partial{Loss}}{\partial{w_i}} Obj=Loss+2λ∗i∑Nwi2wi+1=wi−∂wi∂Obj=wi(1−λ)−∂wi∂Loss
0 < λ < 1 0<\lambda<1 0<λ<1,L2正则项又称为权值衰减。
下面通过一个小例子来试验weight decay。
import torch
import torch.nn as nn
import matplotlib.pyplot as plt
from torch.utils.tensorboard import SummaryWriter
n_hidden = 200
max_iter = 2000
disp_interval =