zoukankan      html  css  js  c++  java
  • 范数及其应用

    范数

    范数的一般化定义:设(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 起来?于是就有了混合先验概率,公式比较复杂,参数约束如下:

  • 相关阅读:
    leetcode 673. 最长递增子序列的个数 java
    leetcode 148. 排序链表 java
    leetcode 98. 验证二叉搜索树 java
    leetcode 29. 两数相除 java
    leetcode 234. 回文链表 java
    Valid Palindrome LeetCode Java
    Single Number II LeetCode Java
    Single Number LeetCode java
    Search in Rotated Sorted Array II LeetCode Java
    Search in Rotated Sorted Array leetcode java
  • 原文地址:https://www.cnblogs.com/houkai/p/10160680.html
Copyright © 2011-2022 走看看