当前位置:首页 » 操作系统 » l1算法

l1算法

发布时间: 2022-08-05 04:13:07

A. 有两个带头结点的单循环链表L1和L2,编写算法将链表L2链接到链表L1之后成为一个单循环链表

list * connect(list* L1,list* L2)
{
list * p=L1
while(p->next)
p=p->next; //找到L1最后一个节点
p->next=L2->next; //把L2的节点连到L1的末端
while(p->next)
p=p->next; //找到L2最后一个节点
p->next=L1; //将next指向L1头节点,形成循环链表
return L1;
}

B. L1范数的最优化过程是怎么样的梯度下降遇到不可导点怎么办

度下降法是一个最优化算法,通常也称为最速下降法。最速下降法是求解无约束优化问题最简单和最古老的方法之一,虽然现在已经不具有实用性,但是许多有效算法都是以它为基础进行改进和修正而得到的。最速下降法是用负梯度方向为搜索方向的.

C. 为什么l1等于二分之一

应该是具有防止过拟合作用吧。参考下文:二、L2范数除了L1范数,还有一种更受宠幸的规则化范数是L2范数:||W||2。它也不逊于L1范数,它有两个美称,在回归里面,有人把有它的回归叫“岭回归”(RidgeRegression),有人也叫它“权值衰减weightdecay”。这用的很多吧,因为它的强大功效是改善机器学习里面一个非常重要的问题:过拟合。至于过拟合是什么,上面也解释了,就是模型训练时候的误差很小,但在测试的时候误差很大,也就是我们的模型复杂到可以拟合到我们的所有训练样本了,但在实际预测新的样本的时候,糟糕的一塌糊涂。通俗的讲就是应试能力很强,实际应用能力很差。擅长背诵知识,却不懂得灵活利用知识。例如下图所示(来自Ng的course):上面的图是线性回归,下面的图是Logistic回归,也可以说是分类的情况。从左到右分别是欠拟合(underfitting,也称High-bias)、合适的拟合和过拟合(overfitting,也称Highvariance)三种情况。可以看到,如果模型复杂(可以拟合任意的复杂函数),它可以让我们的模型拟合所有的数据点,也就是基本上没有误差。对于回归来说,就是我们的函数曲线通过了所有的数据点,如上图右。对分类来说,就是我们的函数曲线要把所有的数据点都分类正确,如下图右。这两种情况很明显过拟合了。OK,那现在到我们非常关键的问题了,为什么L2范数可以防止过拟合?回答这个问题之前,我们得先看看L2范数是个什么东西。L2范数是指向量各元素的平方和然后求平方根。我们让L2范数的规则项||W||2最小,可以使得W的每个元素都很小,都接近于0,但与L1范数不同,它不会让它等于0,而是接近于0,这里是有很大的区别的哦。而越小的参数说明模型越简单,越简单的模型则越不容易产生过拟合现象。为什么越小的参数说明模型越简单?我也不懂,我的理解是:限制了参数很小,实际上就限制了多项式某些分量的影响很小(看上面线性回归的模型的那个拟合的图),这样就相当于减少参数个数。其实我也不太懂,希望大家可以指点下。这里也一句话总结下:通过L2范数,我们可以实现了对模型空间的限制,从而在一定程度上避免了过拟合。L2范数的好处是什么呢?这里也扯上两点:1)学习理论的角度:从学习理论的角度来说,L2范数可以防止过拟合,提升模型的泛化能力。2)优化计算的角度:从优化或者数值计算的角度来说,L2范数有助于处理conditionnumber不好的情况下矩阵求逆很困难的问题。哎,等等,这conditionnumber是啥?我先google一下哈。这里我们也故作高雅的来聊聊优化问题。优化有两大难题,一是:局部最小值,二是:ill-condition病态问题。前者俺就不说了,大家都懂吧,我们要找的是全局最小值,如果局部最小值太多,那我们的优化算法就很容易陷入局部最小而不能自拔,这很明显不是观众愿意看到的剧情。那下面我们来聊聊ill-condition。ill-condition对应的是well-condition。那他们分别代表什么?假设我们有个方程组AX=b,我们需要求解X。如果A或者b稍微的改变,会使得X的解发生很大的改变,那么这个方程组系统就是ill-condition的,反之就是well-condition的。我们具体举个例子吧:咱们先看左边的那个。第一行假设是我们的AX=b,第二行我们稍微改变下b,得到的x和没改变前的差别很大,看到吧。第三行我们稍微改变下系数矩阵A,可以看到结果的变化也很大。换句话来说,这个系统的解对系数矩阵A或者b太敏感了。又因为一般我们的系数矩阵A和b是从实验数据里面估计得到的,所以它是存在误差的,如果我们的系统对这个误差是可以容忍的就还好,但系统对这个误差太敏感了,以至于我们的解的误差更大,那这个解就太不靠谱了。所以这个方程组系统就是ill-conditioned病态的,不正常的,不稳定的,有问题的,哈哈。这清楚了吧。右边那个就叫well-condition的系统了。还是再啰嗦一下吧,对于一个ill-condition的系统,我的输入稍微改变下,输出就发生很大的改变,这不好啊,这表明我们的系统不能实用啊。你想想看,例如对于一个回归问题y=f(x),我们是用训练样本x去训练模型f,使得y尽量输出我们期待的值,例如0。那假如我们遇到一个样本x’,这个样本和训练样本x差别很小,面对他,系统本应该输出和上面的y差不多的值的,例如0.00001,最后却给我输出了一个0.9999,这很明显不对呀。就好像,你很熟悉的一个人脸上长了个青春痘,你就不认识他了,那你大脑就太差劲了,哈哈。所以如果一个系统是ill-conditioned病态的,我们就会对它的结果产生怀疑。那到底要相信它多少呢?我们得找个标准来衡量吧,因为有些系统的病没那么重,它的结果还是可以相信的,不能一刀切吧。终于回来了,上面的conditionnumber就是拿来衡量ill-condition系统的可信度的。conditionnumber衡量的是输入发生微小变化的时候,输出会发生多大的变化。也就是系统对微小变化的敏感度。conditionnumber值小的就是well-conditioned的,大的就是ill-conditioned的。如果方阵A是非奇异的,那么A的conditionnumber定义为:也就是矩阵A的norm乘以它的逆的norm。所以具体的值是多少,就要看你选择的norm是什么了。如果方阵A是奇异的,那么A的conditionnumber就是正无穷大了。实际上,每一个可逆方阵都存在一个conditionnumber。但如果要计算它,我们需要先知道这个方阵的norm(范数)和MachineEpsilon(机器的精度)。为什么要范数?范数就相当于衡量一个矩阵的大小,我们知道矩阵是没有大小的,当上面不是要衡量一个矩阵A或者向量b变化的时候,我们的解x变化的大小吗?所以肯定得要有一个东西来度量矩阵和向量的大小吧?对了,他就是范数,表示矩阵大小或者向量长度。OK,经过比较简单的证明,对于AX=b,我们可以得到以下的结论:也就是我们的解x的相对变化和A或者b的相对变化是有像上面那样的关系的,其中k(A)的值就相当于倍率,看到了吗?相当于x变化的界。对conditionnumber来个一句话总结:conditionnumber是一个矩阵(或者它所描述的线性系统)的稳定性或者敏感度的度量,如果一个矩阵的conditionnumber在1附近,那么它就是well-conditioned的,如果远大于1,那么它就是ill-conditioned的,如果一个系统是ill-conditioned的,它的输出结果就不要太相信了。好了,对这么一个东西,已经说了好多了。对了,我们为什么聊到这个的了?回到第一句话:从优化或者数值计算的角度来说,L2范数有助于处理conditionnumber不好的情况下矩阵求逆很困难的问题。因为目标函数如果是二次的,对于线性回归来说,那实际上是有解析解的,求导并令导数等于零即可得到最优解为:然而,如果当我们的样本X的数目比每个样本的维度还要小的时候,矩阵XTX将会不是满秩的,也就是XTX会变得不可逆,所以w*就没法直接计算出来了。或者更确切地说,将会有无穷多个解(因为我们方程组的个数小于未知数的个数)。也就是说,我们的数据不足以确定一个解,如果我们从所有可行解里随机选一个的话,很可能并不是真正好的解,总而言之,我们过拟合了。但如果加上L2规则项,就变成了下面这种情况,就可以直接求逆了:这里面,专业点的描述是:要得到这个解,我们通常并不直接求矩阵的逆,而是通过解线性方程组的方式(例如高斯消元法)来计算。考虑没有规则项的时候,也就是λ=0的情况,如果矩阵XTX的conditionnumber很大的话,解线性方程组就会在数值上相当不稳定,而这个规则项的引入则可以改善conditionnumber。另外,如果使用迭代优化的算法,conditionnumber太大仍然会导致问题:它会拖慢迭代的收敛速度,而规则项从优化的角度来看,实际上是将目标函数变成λ-stronglyconvex(λ强凸)的了。哎哟哟,这里又出现个λ强凸,啥叫λ强凸呢?当f满足:时,我们称f为λ-stronglyconvex函数,其中参数λ>0。当λ=0时退回到普通convex函数的定义。在直观的说明强凸之前,我们先看看普通的凸是怎样的。假设我们让f在x的地方做一阶泰勒近似(一阶泰勒忘了吗?f(x)=f(a)+f‘(a)(x-a)+o(||x-a||).):直观来讲,convex性质是指函数曲线位于该点处的切线,也就是线性近似之上,而stronglyconvex则进一步要求位于该处的一个二次函数上方,也就是说要求函数不要太“平坦”而是可以保证有一定的“向上弯曲”的趋势。专业点说,就是convex可以保证函数在任意一点都处于它的一阶泰勒函数之上,而stronglyconvex可以保证函数在任意一点都存在一个非常漂亮的二次下界quadraticlowerbound。当然这是一个很强的假设,但是同时也是非常重要的假设。可能还不好理解,那我们画个图来形象的理解下。大家一看到上面这个图就全明白了吧。不用我啰嗦了吧。还是啰嗦一下吧。我们取我们的最优解w*的地方。如果我们的函数f(w),见左图,也就是红色那个函数,都会位于蓝色虚线的那根二次函数之上,这样就算wt和w*离的比较近的时候,f(wt)和f(w*)的值差别还是挺大的,也就是会保证在我们的最优解w*附近的时候,还存在较大的梯度值,这样我们才可以在比较少的迭代次数内达到w*。但对于右图,红色的函数f(w)只约束在一个线性的蓝色虚线之上,假设是如右图的很不幸的情况(非常平坦),那在wt还离我们的最优点w*很远的时候,我们的近似梯度(f(wt)-f(w*))/(wt-w*)就已经非常小了,在wt处的近似梯度?f/?w就更小了,这样通过梯度下降wt+1=wt-α*(?f/?w),我们得到的结果就是w的变化非常缓慢,像蜗牛一样,非常缓慢的向我们的最优点w*爬动,那在有限的迭代时间内,它离我们的最优点还是很远。所以仅仅靠convex性质并不能保证在梯度下降和有限的迭代次数的情况下得到的点w会是一个比较好的全局最小点w*的近似点(插个话,有地方说,实际上让迭代在接近最优的地方停止,也是一种规则化或者提高泛化性能的方法)。正如上面分析的那样,如果f(w)在全局最小点w*周围是非常平坦的情况的话,我们有可能会找到一个很远的点。但如果我们有“强凸”的话,就能对情况做一些控制,我们就可以得到一个更好的近似解。至于有多好嘛,这里面有一个bound,这个bound的好坏也要取决于stronglyconvex性质中的常数α的大小。看到这里,不知道大家学聪明了没有。如果要获得stronglyconvex怎么做?最简单的就是往里面加入一项(α/2)*||w||2。呃,讲个stronglyconvex花了那么多的篇幅。实际上,在梯度下降中,目标函数收敛速率的上界实际上是和矩阵XTX的conditionnumber有关,XTX的conditionnumber越小,上界就越小,也就是收敛速度会越快。这一个优化说了那么多的东西。还是来个一句话总结吧:L2范数不但可以防止过拟合,还可以让我们的优化求解变得稳定和快速。好了,这里兑现上面的承诺,来直观的聊聊L1和L2的差别,为什么一个让绝对值最小,一个让平方最小,会有那么大的差别呢?我看到的有两种几何上直观的解析:

D. L1正则如何处理多重共线性问题

多重共线性是使用线性回归算法时经常要面对的一个问题。在其他算法中,例如决策树和贝叶斯,前者的建模过程是逐步递进,每次拆分只有一个变量参与,这种建模机制含有抗多重共线性干扰的功能;后者干脆假定变量之间是相互独立的,因此从表面上看,也没有多重共线性的问题。但是对于回归算法,不论是一般回归,逻辑回归,或存活分析,都要同时考虑多个预测因子,因此多重共线性是不可避免需要面对的,在很多时候,多重共线性是一个普遍的现象。在构造预测模型时如何处理多重共线性是一个比较微妙的议题。既不能不加控制,又不能一刀切,认为凡是多重共线性就应该消除。

E. 如何理解近端梯度算法

L1正则化是一种常用的获取稀疏解的手段,同时L1范数也是L0范数的松弛范数。求解L1正则化问题最常用的手段就是通过加速近端梯度算法来实现的。

考虑一个这样的问题:

minx f(x)+λg(x)

x∈Rn,f(x)∈R,这里f(x)是一个二阶可微的凸函数,g(x)是一个凸函数(或许不可导),如上面L1的正则化||x||。

此时,只需要f(x)满足利普希茨(Lipschitz)连续条件,即对于定义域内所有向量x,y,存在常数M使得||f'(y)-f'(x)||<=M·||y-x||,那么这个模型就可以通过近端梯度算法来进行求解了。

ps:下面涉及很多数学知识,不想了解数学的朋友请跳到结论处,个人理解,所以也不能保证推理很严谨,如有问题,请一定帮忙我告诉我。

利普希茨连续条件的几何意义可以认为是函数在定义域内任何点的梯度都不超过M(梯度有上限),也就是说不会存在梯度为正负无穷大的情况。

因而,我们有下图所示的推算:

我们可以用f(y) = f(x)+f'(x)(y-x)+M/2*||y-x||2来近似的表示f(y),也可以认为是高维下的泰勒分解,取到二次项。

我们换一种写法,f(xk+1) = f(xk)+f'(xk)(xk+1-xk)+M/2*||xk+1-xk||2,也就是说可以直接迭代求minx f(x),就是牛顿法辣。

再换一种写法,f(xk+1)=(M/2)(xk+1-(xk+(1/M)f'(xk)))2+CONST,其中CONST是一个与xk+1无关的常数,也就是说,此时我们可以直接写出这个条件下xk+1的最优取值就是xk+1=xk+(1/M)f'(xk)。令z=xk+(1/M)f'(xk)。

回到原问题,minx f(x)+λg(x),此时问题变为了求解minx (M/2)||x-z||2+λg(x)。

实际上在求解这个问题的过程中,x的每一个维度上的值是互不影响的,可以看成n个独立的一维优化问题进行求解,最后组合成一个向量就行。

如果g(x)=||x||1,就是L1正则化,那么最后的结论可以通过收缩算子来表示。

即xk+1=shrink(z,λ/M)。具体来说,就是Z向量的每一个维度向原点方向移动λ/M的距离(收缩,很形象),对于xk+1的第i个维度xi=sgn(zi)*max(|zi|-λ/M,0),其中sgn()为符号函数,正数为1,负数为-1。

一直迭代直到xk收敛吧。

F. l1正则逻辑回归有可能有多个局部最有参数估计

多变量线性回归
n 代表特征的数量
xi 代表第 i 个训练实例,是特征矩阵中的第 i 行,是一个向量。
xij 代表特征矩阵中第 i 行的第 j 个特征,也就是第 i 个训练实例的第 j 个特征
假设函数

hΘ(x)=Θ0x0+Θ1x1+⋯+Θnxn

定义Θ={Θ0,Θ1,⋯,Θn}
简化为:

hΘ(x)=ΘTX

代价函数

J(Θ0,Θ1,⋯,Θn)=12m∑i=1m(hΘ(xi)−yi)2

多变量梯度下降

Θj:=Θj−α1m∑i=1m((hθ(xi)−yi)⋅xij)

特征缩放
加快梯度下降法的收敛速度。
xn=xn−unSn
其中un是平均值,Sn是标准差。
学习效率
梯度下降算法的每次迭代受到学习率的影响,如果学习率α过小,则达到收敛所需的迭代次数会非常高;如果学习率α过大,每次迭代可能不会减小代价函数,可能会越过局部最小值导致无法收敛。
α 参考取值:0.01, 0.03, 0.1, 0.03, 1, 3…

G. 什么是L1缓存啊什么是L2缓存啊

二级缓存是CPU性能的体现,像以前的P4的CPU,二级缓存都为1M,现在双核心的为2M,之所有INTEL的CPU比AMD的CPU在制图,处理数据方面快得多的原因也正在此,AMD的二级缓存基本上只有INTEL的一半。二级缓存是在和内存之间读取数据的时候体现的,如果二级缓存不够,那大量的数据就会堆积在内存里进行运算,所以速度就会大大降低,相反,如果二级缓存够大,进入内存运算的数据就会相对的减少,所以二级缓存很重要,也是CPU的性能优越的指标。

H. KNN算法中距离度量方式L1,L2,

L1是一阶范数,L2是二阶范数,COS是余弦距离

I. 有人在学压缩感知吗谁知道怎么用0范数或者L1范数最小化重构原始信号或者给我文献也行

用0范数或1范数解决cs重构归属一个数学问题,犹如给定你一个公式,利用这个公式或者说原理去做出很多的算法,cs重构本归属与对0范数的求解问题上的。
但0范数属于数学上一个NP_hard问题,是无法解决的,所以不能直接用求0范数的理论去做算法,从而提出一系列基于求0范数最小的贪婪类算法。如MP,OMP等算法。,这类算法中,最为基础的算是MP算法了。贪婪算法的速度较快,但是重构效果相对较差,需要的测量数也较多,不能高效地压缩信号,并且对测量矩阵的要求更高。但总的来说,应用范围广。
数学家同时发现,求解L1范数也可以逼近与0范数的效果,即把NP_hard问题转化为线性规划问题。所以现在有很多用求L1范数原理而创造了各类算法,最典型的是BP(基追踪)算法和梯度投影稀疏重构算法。这种算法重构效果很好,但是运算量大,复杂,应用于实际上可能不大。至少得改进其算法。
还有一大类算法,我不关注,不说了。
具体那些算法怎么实现,自己去网上下程序仿真一下吧。。。。

热点内容
手机f加密 发布:2024-05-19 03:28:47 浏览:225
用什么密码写日记 发布:2024-05-19 03:27:57 浏览:303
数据库access2003 发布:2024-05-19 02:49:39 浏览:620
碧蓝航线pc挂机脚本 发布:2024-05-19 02:30:03 浏览:589
脚本fir 发布:2024-05-19 02:28:57 浏览:261
阿里云独享服务器 发布:2024-05-19 02:23:54 浏览:253
织梦源码ga 发布:2024-05-19 02:23:20 浏览:571
java文件名后缀 发布:2024-05-19 02:14:39 浏览:956
快手点榜脚本 发布:2024-05-19 02:08:44 浏览:163
pythonforinkeys 发布:2024-05-19 01:55:44 浏览:793