-
机器学习中常常提到的正则化到底是什么意思?
2020-06-01 20:33:14r(d)可以理解为有d的参数进行约束,或者 D 向量有d个维度。咱们将楼主的给的凸优化结构细化一点,别搞得那么抽象,不好解释; , 其中,咱们可以令: f() = .ok,这个先介绍到这里,至于f(x)为什么用多项式的方式去...r(d)可以理解为有d的参数进行约束,或者 D 向量有d个维度。
咱们将楼主的给的凸优化结构细化一点,别搞得那么抽象,不好解释;, 其中,
咱们可以令: f() =
.
ok,这个先介绍到这里,至于f(x)为什么用多项式的方式去模拟?相信也是很多人的疑问,很简单,大家看看高等数学当中的泰勒展开式就行了,任何函数都可以用多项式的方式去趋近,
log x,lnx,
等等都可以去趋近,而不同的函数曲线其实就是这些基础函数的组合,理所当然也可以用多项式去趋近,好了,这个就先解释到这里了。
接下来咱们看一下拟合的基础概念。
首先,用一个例子来理解什么是过拟合,假设我们要根据特征分类{男人X,女人O}。
请看下面三幅图,x1、x2、x3;
这三幅图很容易理解:
1、 图x1明显分类的有点欠缺,有很多的“男人”被分类成了“女人”。
2、 图x2虽然有两个点分类错误,但是能够理解,毕竟现实世界有噪音干扰,比如有些人男人留长发、化妆、人妖等等。
3、 图x3分类全部是正确的,但是看着这副图片,明显觉得过了,连人妖都区分的出来,可想而知,学习的时候需要更多的参数项,甚至将生殖器官的形状、喉结的大小、有没有胡须特征等都作为特征取用了,总而言之f(x)多项式的N特别的大,因为需要提供的特征多,或者提供的测试用例中我们使用到的特征非常多(一般而言,机器学习的过程中,很多特征是可以被丢弃掉的)。好了,总结一下三幅图:
x1我们称之为【欠拟合】
x2我们称之为【分类正拟合】,随便取的名字,反正就是容错情况下刚好的意思。
x3我们称之为【过拟合】,这种情况是我们不希望出现的状况,为什么呢?很简单,它的分类只是适合于自己这个测试用例,对需要分类的真实样本而言,实用性可想而知的低。恩,知道了过拟合是怎么回事之后,我们来看一下如何去规避这种风险。先不管什么书上说的、老师讲的、经验之说之类的文言文。咱们就站在第一次去接触这种分类模型的角度去看待这个问题,发散一下思维,我们应该如何去防止过拟合?
显而易见,我们应该从【过拟合】出现的特征去判别,才能规避吧?
显而易见,我们应该、而且只能去看【过拟合】的f(x)形式吧?
显而易见,我们从【过拟合】的图形可以看出f(x)的涉及到的特征项一定很多吧,即等等很多吧?
显而易见,N很大的时候,是等数量增长的吧?
显而易见,w系数都是学习来的吧?So,现在知道这些信息之后,如何去防止过拟合,我们首先想到的就是控制N的数量吧,即让N最小化吧,而让N最小化,其实就是让W向量中项的个数最小化吧?
其中,W=()
PS: 可能有人会问,为什么是考虑W,而不是考虑X?很简单,你不知道下一个样本想x输入的是什么,所以你怎么知道如何去考虑x呢?相对而言,在下一次输入
,即第k个样本之前,我们已经根据
次测试样本的输入,计算(学习)出了W.就是这么个道理,很简单。
ok,any way.回到上面的思维导图的位置,我们再来思考,如何求解“让W向量中项的个数最小化”这个问题,学过数学的人是不是看到这个问题有点感觉?对,没错,这就是0范数的概念!什么是范数,我在这里只是给出个0-2范数定义,不做深究,以后有时间在给大家写点文章去分析范数的有趣玩法;
0范数,向量中非零元素的个数。
1范数,为绝对值之和。
2范数,就是通常意义上的模。PS,貌似有人又会问,上面不是说求解“让W向量中项的个数最小化”吗?怎么与0范数的定义有点不一样,一句话,向量中0元素,对应的x样本中的项我们是不需要考虑的,可以砍掉。因为
没有啥意义,说明
项没有任何权重。so,一个意思啦。
ok,现在来回答楼主的问题,r(d) = “让W向量中项的个数最小化” =
所以为了防止过拟合,咱们除了需要前面的相加项最小,即楼主公式当中的
=
最小,我们还需要让r(d)=
最小,所以,为了同时满足两项都最小化,咱们可以求解让
和r(d)之和最小,这样不就同时满足两者了吗?如果r(d) 过大,
再小也没用;相反r(d)再小,
太大也失去了问题的意义。
说到这里我觉得楼主的问题我已经回答了,那就是为什么需要有个r(d)项,为什么r(d)能够防止过拟合原因了。
根据《男人帮》电影大结局的剧情:本来故事已经完成了,为了让大家不至于厌恶课本的正规理论,我们在加上一集内容,用以表达我对机器学习出书者的尊重;书本中,或者很多机器学习的资料中,为了让全球的机器学习人员有个通用的术语,同时让大家便于死记硬本,给我上一段黑体字的部分的内容加上了一坨定义,例如:
我们管叫做经验风险,管上面我们思维导图的过程叫做正则化,所以顺其自然的管r(d)叫做正则化项,然后管
+r(d) 叫做结构风险,所以顺其自然的正则化就是我们将结构风险最小化的过程,它们是等价的。
By the way,各位计算机界的叔叔、阿姨、伯伯、婶婶,经过不懈的努力,发现了这个公式很多有意思的地方,它们发现0范数比较恶心,很难求,求解的难度是个NP完全问题。然后很多脑袋瓜子聪明的叔叔、阿姨、伯伯、婶婶就想啊,0范数难求,咱们就求1范数呗,然后就研究出了下面的等式:
一定的条件我就不解释了,这里有一堆算法,例如主成分KPCA等等,例子我就不在举了,还是原话,以后我会尽量多写点这些算法生动点的推到过程,很简单,注重过程,不要死记硬背书本上的结果就好。
上面概括而言就是一句话总结:1范数和0范数可以实现稀疏,1因具有比L0更好的优化求解特性而被广泛应用。然后L2范数,是下面这么理解的,我就直接查别人给的解释好了,反正简单,就不自己动脑子解释了:
L2范数是指向量各元素的平方和然后求平方根。我们让L2范数的正则项||W||2最小,可以使得W的每个元素都很小,都接近于0,但与L1范数不同,它不会让它等于0,而是接近于0,这里是有很大的区别的哦;所以大家比起1范数,更钟爱2范数。
所以我们就看到书籍中,一来就是,r(d)=或者r(d)=
这种结构了,然后在机器学习当中还能看到下面的结构:
min{} ,
>=0
都是这么来的啦,万变不离其中。
讲一点自己机器学习过程的体验,大家都觉得机器学习入门难,绝大部分人反应知其然不知其所以然,这个原因很多时候在于中国教育工作者的教学、科研氛围,尤其是中文书籍出书者自己都不去搞懂原理,一个劲的为了利益而出书、翻译书,纯粹利益驱动。再加之机器学习起源于国外,很多经典的、有趣的历史没有被人翻译、或者归类整理,直接被舍弃掉了。个人感觉这是中国教育的缺失导致的。希望更多的人真的爱好计算机,爱好机器学习以及算法这些知识。喜欢就是喜欢。希望国内机器学习的爱好者慢慢的齐心合力去多多引荐这些高级计算机知识的基础。教育也不是由于利益而跟风,AI热出版社就翻译AI,机器学习热就翻译机器学习,知识层面不断架空,必然导致大家学习热情的不断衰减!愿共勉之。 -
SVM中支持向量的通俗解释
2018-03-17 02:33:31支持向量就是离分类超平面最近的样本点,因为每一个样本点都是一个多维的向量,向量的每一个维度都是这个样本点的一个特征。后来看到一个更通俗的解释,来自百度回答:支持向量意思就是 数据集种的某些点,位置比较...SVM中的支持向量,最开始接触的时候没想明白为什么HingeLoss为0的点不考虑,明明这些才是足够优秀的点,后来想清楚,正是因为人家足够优秀,所以没有拿来划分的意义,要的就是那些离分界线最近的点。支持向量就是离分类超平面最近的样本点,因为每一个样本点都是一个多维的向量,向量的每一个维度都是这个样本点的一个特征。
后来看到一个更通俗的解释,来自百度回答:支持向量意思就是 数据集种的某些点,位置比较特殊,比如刚才提到的x+y-2=0这条直线,直线上面区域x+y-2>0的全是A类,下面的x+y-2<0的全是B类,我们找这条直线的时候,一般就看聚集在一起的两类数据,他们各自的最边缘位置的点,也就是最靠近划分直线的那几个点,而其他点对这条直线的最终位置的确定起不了作用,所以我姑且叫这些点叫“支持点”(意思就是有用的点),但是在数学上,没这种说法,数学里的点,又可以叫向量,比如二维点(x,y)就是二维向量,三维度的就是三维向量( x,y,z)。所以 “支持点”改叫“支持向量”,听起来比较专业,NB。
支持向量机请通俗介绍 高中文化
-
如何画椭圆壳体_为什么会产生维度灾难?如何解决?
2020-12-14 15:03:03如果要给从事机器学习领域的人建议的话,那会是:永远不要忘记...那是什么意思?数据点主要表示为d维向量。我们假设特定问题中的所有数据点都位于单位超球面中。我们都知道3D中超球面的体积,它是:要将其扩展为d维...如果要给从事机器学习领域的人建议的话,那会是:永远不要忘记维度灾难。传统的解释是这样的:“如果你有很多输入维度,那么问题就变得很昂贵并且难以解决。”事实如此,但为什么会这样呢?让我们来更详细地讨论这个问题吧。
维度灾难最直观的解释之一就是看单位超球面及其体积。那是什么意思?数据点主要表示为d维向量。我们假设特定问题中的所有数据点都位于单位超球面中。我们都知道3D中超球面的体积,它是:
要将其扩展为d维,我们可以忽略体积方程中的常数并将它们放在变量c中,然后体积方程采用以下形式:
观察下面的圆圈,几何上,好像大多数点落在外壳之间(蓝线和红线之间的空间)。换句话说,半径为0.95的单位圆的壳层也只占圆圈面积的一小部分:
一个单位圆,其中生成随机数据点
现在,想象一下当我们观察一个d维超球面时,这种情况怎么样?大多数人会说这是差不多的情况,大部分体积都会超出超球体的外壳。但大多数人都错了。事实是人类并不能真正思考高维空间。它不直观,我们无法想象。我们来看看实际发生了什么。我们可以写出外壳从d维超球面占据的体积分数,如下所示:
观察一下如果我们取壳体的超球面半径的5%,分数会有什么样的变化,现在问题就很清晰了。随着输入维度d的增加,驻留在壳体中的体积的数量显着增加,如下图所示:
该图显示了壳体在超球面占据的体积分数随着数据维数的增加而增加。
我们可以看到,壳体的体积分数呈指数增长,朝向1,1的维数是其极限。即使对于少量的r,壳的分数也迅速增加到1。
这是什么意思,何时会产生这样的问题?为了来观察这个变化,让我们来看一下机器学习中最常用的分布,即高斯分布。如果我们观察三维输入空间的高斯密度,它就像一个超球面,其中概率随着半径的平均值而减小,这通常适用于超过3个维度,通过下图你就能明白:
二维高斯分布的高斯密度。注意密度是如何投射到类似椭圆的对象上的,在更高维空间中可以预期类似的行为。
在高维空间中,高斯的密度集中在其超球面的外壳中,这是由于超球面体积是壳体的一部分,这在高维空间中变得显著。这意味着在在采用高斯采样的情况下,结果将是来自超球面的外壳具有最高概率的数据点。
我们可以从经验风险最小化的角度思考维度灾难。简而言之,我们希望从我们的数据中获取代表性的训练样本,以便能够推广到不可见的数据。现在,在超球面的例子中,我们检查了当球体的球体半径厚度为5%时,数据维数大约为400维,球体的外壳将包含超过90%的体积。想象一下,我们在球体中心(0%半径)和95%半径之间有数据样本。在这种情况下,我们覆盖了半径范围的95%,但我们只覆盖了不到10%的体积。显然,在这种情况下很难获得代表性样品。
幸运的是,维度灾难并不意味着我们无法建立有效的模型。通常我们对数据有一些平滑性保证,数据空间不能如此密集地填充或减少维度(机器学习研究的很大一部分)。也许最好的例子是所有可能的64x64 RGB图像的空间。数据的维度为64x64x3 = 12288。如果我们考虑一个超球面的例子,这显然是一个问题。但实际上,大多数像素的各种组合对于任何类型的分类都没有意义。此外,计算机视觉方法有许多有用的先验决策,这使得问题更容易解决。
-
Transformer中的Layer和heads到底是什么?
2020-08-02 17:57:16上图是Transformer中编码器的部分,谷歌发布的BERT模型中有一个是chinese_L-12_H-768_A-12 分别表示的意思是: 12个transformer-block 768 embedding-dimension(字向量)的维度=768 12注意力机制头的个数
上图是Transformer中编码器的部分,谷歌发布的BERT模型中有一个是chinese_L-12_H-768_A-12
分别表示的意思是:
12个transformer-block(也称为12层)
768 embedding-dimension(字向量)的维度=768
12注意力机制头的个数 -
TensorFlow中什么是Tensor?
2018-11-22 10:56:58Tensor意思为张量,张量是什么?张量具有维度,或者可有称作为他的秩:Rank/Order 我们以数组为对比,展示张量维度的概念: 在上图中,当在零维的时候,称为标量; 当在一维的时候,就是我们经常提的向量; ... -
关于欧氏距离和余弦相似度的使用场景
2018-06-06 08:32:58如向量的维度是3,有三段文本a、b、c,文本向量化之后的结果假如如下:a=(1,0,0)、b=(0,1,0)、c=(10,0,0)。 我们知道doc2vec的每一个维度都代表一个特征,观察向量的数字,主观看来a和c说的意思应该相似,阐述的都是... -
r-net:machine reading comprehension with self-matching networks
2019-03-01 12:40:00我觉得这篇文章的文笔真的有点不敢恭维,首先向量矩阵的维度不说清楚还能脑补,但是这边前后不同层之间用一样的变量名是什么意思啊(这么说出来会不会被MSRA鄙视,以后的简历都过不了了,ORZ),本文中尽量避免这种... -
Matlab 学习笔记
2019-05-24 10:43:101 matlab中 [m,n]=size(A{:,1});这句话什么意思 size命令的作用是提取矩阵的行列数;...size()函数返回值是一个矩阵或者向量的维度向量,比如对于一个2行3列的矩阵r,N=[2,3]; a = N(1); 对于一个向量... -
python numpy dtype object_关于Numpy数据类型对象(dtype)使用详解
2020-12-03 11:46:51什么是数组的维度,python 的ndim的使用...numpy中直接用 * 即可表示数与向量的乘法,参考python 2.7的一个例子:inport numpy as np a = np.array([1,2,3,4]numpy用dtype构建数组,输出含b是什么意思例如代码如下: ... -
你必须知道的495个C语言问题
2015-10-16 14:14:283.20 “semanticsof‘’changeinANSIC”的警告是什么意思? 3.21 “无符号保护”和“值保护”规则的区别在哪里? 第4章 指针 基本的指针应用 4.1 指针到底有什么好处? 4.2 我想声明一个指针并为它分配一些空间... -
你必须知道的495个C语言问题.[美]Steve Summit(带详细书签).pdf 压缩版
2018-04-08 02:26:503.20 “semantics of‘>’change in ANSI C”的警告是什么意思? 71 3.21 “无符号保护”和“值保护”规则的区别在哪里? 71 第4章 指针 74 基本的指针应用 74 4.1 指针到底有什么好处? 74 4.2 我想声明一个... -
你必须知道的495个C语言问题(中文高清版)
2013-03-20 13:28:283.20 “semanticsof‘’changeinANSIC”的警告是什么意思? 3.21 “无符号保护”和“值保护”规则的区别在哪里? 第4章 指针 基本的指针应用 4.1 指针到底有什么好处? 4.2 我想声明一个指针并为它分配一些... -
机械优化设计第一章
2019-03-02 22:02:032、点距准则判定结束:||X(K)-X(K-1)||小于设定整数(精度)时结束迭代,解释一下|| ||是什么意思,因为X不是一个数,而是一个vector,所以是有很多维的,用两栋的意思是两个X向量对应维度差的和再开根号,例如X(1)... -
[你必须知道的495个C语言问题]人民邮电出版社
2012-08-18 19:02:28保护规则 3.20 “semanticsof‘’changeinANSIC”的警告是什么意思? 3.21 “无符号保护”和“值保护”规则的区别在哪里? 第4章 指针 基本的指针应用 4.1 指针到底有什么好处? 4.2 我想声明一个指针并为... -
《你必须知道的495个C语言问题》
2010-03-20 16:41:183.20 “semantics of‘’change in ANSI C”的警告是什么意思? 42 3.21 “无符号保护”和“值保护”规则的区别在哪里? 42 第4章 指针 45 基本的指针应用 45 4.1 指针到底有什么好处? 45 4.2 我想声明... -
你必须知道的495个C语言问题(高清版)
2010-03-31 16:24:093.20 “semantics of‘’change in ANSI C”的警告是什么意思? 42 3.21 “无符号保护”和“值保护”规则的区别在哪里? 42 第4章 指针 45 基本的指针应用 45 4.1 指针到底有什么好处? 45 4.2 我想声明... -
[学习日志]自然语言处理-斯坦福 绪论
2021-02-04 16:27:34缺点:向量维度会很高,且向量不包含词间关系的信息 分布语义 - Distributional semantic 大体意思就是如果做完形填空能分出对错,你就算认识这个词了。 比如词嵌入 Word2Vector 似乎是个很牛逼的算法,把NPL推向... -
你必须知道的495个C语言问题.pdf
2013-01-20 14:30:543.20 “semantics of‘’change in ANSI C”的警告是什么意思? 3.21 “无符号保护”和“值保护”规则的区别在哪里? 第4章 指针 基本的指针应用 4.1 指针到底有什么好处? 4.2 我想声明一个指针并为它分配一些空间... -
axis
2018-07-26 19:15:44张量的阶数有时候也称为维度,或者轴,轴这个词翻译自英文轴线。譬如一个矩阵[[1,2],[3,4],是一个2阶张量...要理解“沿着某个轴”是什么意思,不妨试着运行一下下面的代码: >>> import n... -
[你必须知道的495个C语言问题]人民邮电出版社.扫描版.pdf
2011-10-01 21:39:523.20 “semantics of‘’change in ANSI C”的警告是什么意思? 3.21 “无符号保护”和“值保护”规则的区别在哪里? 第4章 指针 基本的指针应用 4.1 指针到底有什么好处? 4.2 我想声明一个指针并为它分配一些空间... -
两个vector对应元素相加_2.3 vector
2021-01-26 04:52:32导图vectorvector是什么东东呢?就是它字面意思,向量。怎么理解呢?高中数学中我们学了能表示二维平面的中某一点的向量<x,y>,以及三维空间中表示某一点的向量<x,y,z>。到了大学,我们更加了解到<>... -
c++ vector 初始化_2.3 vector
2020-11-25 09:39:55导图vectorvector是什么东东呢?就是它字面意思,向量。怎么理解呢?高中数学中我们学了能表示二维平面的中某一点的向量<x,y>,以及三维空间中表示某一点的向量<x,y,z>。到了大学,我们更加了解到<>... -
自然语言处理--短消息二元分类LDA 模型:垃圾消息过滤器(原理实现)
2021-01-10 18:57:12什么意思呢? 我们要将数据在低维度上进行投影,投影后希望每一种类别数据的投影点尽可能的接近,而不同类别的数据的类别中心之间的距离尽可能的大。 下面,我们给出了 LDA 的一个简单的实现版本,模型训练有 3 个... -
Tensorflow学习笔记1:Get Started
2018-04-09 17:19:42从Tensorflow名字的字面意思可以拆分成两部分来理解:Tensor+flow。Tensor:中文名可以称为“张量”,其本质就是任意维度的数组。一个向量就是一个1维的Tensor,一个矩阵就是2维的Tensor。Flow:指的就是图计算中的... -
tensorflow:get started
2018-02-11 09:35:35从Tensorflow名字的字面意思可以拆分成两部分来理解:Tensor+flow。Tensor:中文名可以称为“张量”,其本质就是任意维度的数组。一个向量就是一个1维的Tensor,一个矩阵就是2维的Tensor。Flow:指的就是图计算中的...