范数
范数的一般化定义:设(pgeq 1)的实数,p-norm定义为:
[|| x ||_{p}; :=; (sum_{i=1}^{n}{left| x_{i}
ight|^{p}})^{frac{1}{p}}
]
L0范数
[left| left| x
ight|
ight|_{0}; :=; ^{0}sqrt{sum_{i=0}^{n}{x_{i}^{0}}}
]
严格来讲,L0不属于范数,上面的公式让人难以理解。在实际应用中,人们往往采用以下定义:
[left| left| x
ight|
ight|_{0}; ; =; #left( i
ight); with; x_{i};
eq ; 0
]
其表示向量中所有非零元素的个数。
L1范数
[left| left| x
ight|
ight|_{1}; :=; sum_{i=1}^{n}{left| x_{i}
ight|}
]
也称为曼哈顿距离。
L0范数是指向量中非0的元素的个数。如果我们用L0范数来规则化一个参数矩阵W的话,就是希望W的大部分元素都是0。换句话说,让参数W是稀疏的。看到了“稀疏”二字,大家都应该从当下风风火火的“压缩感知”和“稀疏编码”中醒悟过来,原来用的漫山遍野的“稀疏”就是通过这玩意来实现的。
但你又开始怀疑了,是这样吗?看到的papers世界中,稀疏不是都通过L1范数来实现吗?脑海里是不是到处都是||W||1影子呀!
L1范数和L0范数可以实现稀疏,L1因具有比L0更好的优化求解特性而被广泛应用。
L2范数
范数中最常见,也最著名的非L2范数莫属。
[left| left| x
ight|
ight|_{2}; :=; sqrt{sum_{i=1}^{n}{x_{i}^{2}}}
]
L2范数的优点
从学习理论的角度来说,L2范数可以防止过拟合,提升模型的泛化能力。
从优化或者数值计算的角度来说,L2范数有助于处理condition number不好的情况下矩阵求逆很困难的问题。
L1和L2的差别,为什么一个让绝对值最小,一个让平方最小,会有那么大的差别呢?
下降速度:
L1就是按绝对值函数的“坡”下降的,而L2是按二次函数的“坡”下降。
模型空间的限制:
对于L1和L2规则化的代价函数来说,我们写成一下形式:
[Lasso:; min_w{||y-Xw||^2},; s.t. ||w||_1leq{C}\
Ridge:; min_w{||y-Xw||^2},; s.t. ||w||_2leq{C}\
]
考虑二维的情况,等高线与norm ball相交的地方就是最优解。L1-ball的最优点大都出现在"角点"处,这便大概率产生了稀疏性;L2-ball却不可以,它只是一种规则化手段。
无限范数
infinity norm:
[left| left| x
ight|
ight|_{infty }; :=; ^{infty }sqrt{sum_{i=1}^{n}{x_{i}^{infty }}}
]
即:
[left| left| x
ight|
ight|_{infty }; =; ^{infty }sqrt{sum_{i=1}^{n}{x_{i}^{infty }}}; =; ^{infty }sqrt{x_{j}^{infty }}; ; =; max left( left| x_{j}
ight|
ight)
]
表示的是X向量中最大元素的长度。
机器学习中的应用
正则化
对模型复杂度进行惩罚,如果惩罚项选择L1,则是我们所说的Lasso回归,而L2则是Ridge回归。
贝叶斯
正则化项从贝叶斯学习理论的角度来看,其相当于一种先验函数分布。
即当你训练一个模型时,仅仅依靠当前的训练集数据是不够的,为了实现更好的预测(泛化)效果,我们还应该加上先验项。
而L1则相当于设置一个Laplacean先验,而L2则类似于 Gaussian先验。
L1先验对大值和小值的tolerate很好,而L2先验则倾向于均匀化大值和小值。
贝叶斯回归和图模型
回归模型(y=Xw+epsilon),可以看做是:
[p(y|X; w,lambda)=N(Xw,lambda) ,; p(epsilon)=N(0,lambda)
]
贝叶斯分布:
[p(epsilon)=frac{1}{sqrt{2pi}delta}*exp(-frac{epsilon^2}{2delta^2})
]
所以:
[p(y|x;w)=frac{1}{sqrt{2pi}delta}*exp(-frac{(y-w^Tx)^2}{2delta^2})
]
对极大似然MLE取对数:
[egin{split}
l(w)&=log(prod_{i=1}^{m}{frac{1}{sqrt{2pi}delta}*exp(-frac{(y-w^Tx)^2}{2delta^2})}) \
&=mlog(frac{1}{sqrt{2pi}delta}) - frac{1}{2delta^2}{sum_{i=1}^{m}{(y-w^Tx)^2}}
end{split}]
即:
[w_{MLE}=arg; minsum_{i=1}^{m}{(y-w^Tx)^2}
]
这就导出了平方损失函数。这是在我们对参数 w 没有加入任何先验分布的情况下。
在数据维度很高的情况下,我们的模型参数很多,模型复杂度高,容易发生过拟合。这个时候,我们可以对参数 w 引入先验分布,降低模型复杂度。
Ridge Regression
假设参数w服从协方差为(alpha)的标准高斯分布。
[egin{split}
L(w)&=p(y|x;w*p(w))\
&=prod_{i=1}^{m}{frac{1}{sqrt{2pi}delta}*exp(-frac{(y-w^Tx)^2}{2delta^2})})* prod_{j=1}{n}{frac{1}{sqrt{2pi}alpha}*exp(-frac{(w)^2}{2alpha^2})}, w是n个参数\
&=prod_{i=1}^{m}{frac{1}{sqrt{2pi}delta}*exp(-frac{(y-w^Tx)^2}{2delta^2})})* frac{1}{(2pi)^{n/2}}frac{1}{|Sigma|^{1/2}}exp[-frac{1}{2}{w^TSigma^{-1}w}]
end{split}
]
取对数,得:
[egin{split}
l(w)&=log(L(w)) \
&= mlog{frac{1}{sqrt{2pi}}} + nlogfrac{1}{sqrt{2pi}} -frac{1}{2}log{|Sigma|}-
frac{1}{2delta^2}{sum_{i=1}^{m}{(y-w^Tx)^2}}-frac{1}{2}frac{1}{alpha}w^Tw
end{split}
]
和w有关的项:
[J(w)=frac{1}{m}{||y-w^Tx||_2} + lambda||w||_2
]
ridge regression 并不具有产生稀疏解的能力,也就是说参数并不会真出现很多零,只是会让权值在0附近分布很密集。
假设我们的预测结果与两个特征相关,L2正则倾向于综合两者的影响,给影响大的特征赋予高的权重;而L1正则倾向于选择影响较大的参数,而舍弃掉影响较小的那个。实际应用中L2正则表现往往会优于 L1正则,但 L1正则会大大降低我们的计算量。
Lasso
如果对w引入Laplace分布呢?Laplace分布:
[f(x|u,b)=frac{1}{2b}exp({-frac{|x-u|}{b}})
]
重复之前的推导过程我们很容易得到:
[w_{MAP} = arg min(frac{1}{2delta^2}{sum_{i=1}^{m}(y-w^Tx)^2} + frac{1}{2b^2}{||w||_1})
]
LASSO 仍然是一个 convex optimization 问题,它的优良性质是能产生稀疏性,导致 w 中许多项变成零。等价于L1正则化。
Elastic Net
既然 L1和 L2正则各自都有自己的优势,那我们能不能将他们 combine 起来?于是就有了混合先验概率,公式比较复杂,参数约束如下: