Py学习  »  机器学习算法

机器学习中有哪些形式简单却很巧妙的idea?

极市平台 • 4 年前 • 259 次点击  

加入极市专业CV交流群,与6000+来自腾讯,华为,百度,北大,清华,中科院等名企名校视觉开发者互动交流!更有机会与李开复老师等大牛群内互动!

同时提供每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流。关注 极市平台 公众号 ,回复 加群,立刻申请入群~


致歉:

12月11日晚由于小编的操作失误,造成文章内容出现错误,因此删除文章进行了重新发布,对您造成的不便我们感到非常抱歉。


问题机器学习中有哪些形式简单却很巧妙的idea?

AI论文中,有哪些像GAN这种形式简单却功能强大的idea。

https://www.zhihu.com/question/347847220



知乎高质量回答



一、作者:桔了个仔
https://www.zhihu.com/question/347847220/answer/836019446
本文来自知乎问答,回答已获作者授权,禁止二次转载


异常检查算法Isolation Forest(孤立森林)


原理超简单,但检测效果可以说是state of the art。对一个空间进行二分,早划分「孤立」出来的就是很可能异常的。「孤立」指的是这一边只有这一个数据点。因为是二分,我们可以构建一颗二叉树。例如下图的一棵树,第一次二分,左边有数据的a,b,c,右边只有d,那么d大概率就是异常点。为啥?想想你画一条线,把一把米分成了两边,左边只有一粒,那左边那粒很可能是离其他米粒很远。

为了更直观,有更多一步了解,请看下图,直觉上我们就知道xi是普通点, x0是异常点。那么用Isolation tree怎么解释呢?


如果要把xi孤立出来,需要很11次划线,而x0需要的次数要少很多。所以x0比xi更可能是异常点。

一棵树不够可信?没事,记得随机森林random forest不?没错,这里也引进一堆树。如果多数的树都在前几次分割时分出同一个点,那么这个点是异常点的概率就非常高了。
可以看到,树的数量(横轴)超过10时,平均分割次数(纵轴)就收敛了。从这个图我们可以看出,某个点x0被「孤立」前,平均分割次数低于5,那么x0就是异常点。


原理是不是超级简单呢。如果想了解更多数学上的原理,可以参考下面的参考文献:
https://cs.nju.edu.cn/zhouzh/zhouzh.files/publication/icdm08b.pdf



二、作者:苘郁蓁
https://www.zhihu.com/question/347847220/answer/881216785
本文来自知乎问答,仅供学习参考使用,著作权归作者所有


2013年Mikolov的神作word2vec,目前两篇paper的引用量已经达到15669和12670了!


这个工作属于nlp预训练和graph embedding的里程碑,而且思想还贼好理解。


word2vec的思想可以简单的归结为一句话:


利用海量的文本序列,根据上下文单词预测目标单词共现的概率,让一个构造的网络向概率最大化优化,得到的参数矩阵就是单词的向量。


具体来说,对于Skip-Gram模型,就是给定句子中一个特定的词(input word),随机选它附近的一个词,网络的目标是预测选到这个附近词的概率。而对于CBOW模型则相反。

而对于一个单词,先作one-hot,乘以参数矩阵,就得到了单词的向量表示,一图胜千言:


图1 one-hot乘以参数矩阵得到单词向量


更加细致的negative sampling和hierarchical softmax都是针对训练问题的优化,但这一思想的本质就是很简单优雅。

举个简单的例子:词表大小为9的一段文本序列one-hot,乘以一个参数矩阵(蓝色部分),做均值pooling,乘以一个参数矩阵然后经过softmax层得到对应目标单词的概率向量(最后的红色部分),向量维度为词表大小,再根据ground truth反向传播优化参数矩阵,最后得到的就是类似图1的参数矩阵,列为词表大小9,行为词向量的维度4(注意:参数矩阵方向跟图1反过来了)。


图2 一个网络训练的例子



word2vec在nlp领域的应用就不用说了,目前已经成为所有nlp模型的标配步骤

更令我吃惊的是它在其他领域的遍地开花。这里整理一下最近几年在其他领域的embedding工作合集,全部是顶会!全部都有落地!就是这么简单粗暴而优雅!



三、作者:陈林
https://www.zhihu.com/question/347847220/answer/840373803
本文来自知乎问答,仅供学习参考使用,著作权归作者所有


感觉有很多不太复杂但是有意思的idea,立刻能想起来的列举如下。

Online learning 

  1. Flaxman et al. 的gradient descent without a gradient里的one-point estimator,可以在没有梯度的情况下做在线梯度下降(bandit convex optimization最早的文章之一)。
  2. Adversarial bandit里面的 importance-weighted estimator。
  3. Bubeck et al.的Bandit Convex Optimization: \sqrt{T} Regret in One Dimension里引入prior进行线性化,然后用minimax theorem对inf和sup进行换序,可以非构造性地计算minimax regret的界。


Optimization

  1. Lezcano-Casado and Mart´ınez-Rubio的ICML'19的文章Cheap Orthogonal Constraints in Neural Networks: A Simple Parametrization of the Orthogonal and Unitary Group:比如一个优化问题的变量是一个矩阵,约束是要求它是 SO(n)的,这篇文章用exponential map把它变成一个在skew symmetric 矩阵上的可以说是无约束的优化问题。


Submodular optimization

  1. Vondrak的Symmetry and approximability of submodular maximization problems里的symmetry gap:submodular优化的难度和问题的对称性有关。



四、作者:及时物语

https://www.zhihu.com/question/347847220/answer/844085093

本文来自知乎问答,仅供学习参考使用,著作权归作者所有


近邻成分分析NCA

https://mp.weixin.qq.com/s/LGazJxEFWVxUF2KudY5PTA


近邻成分分析(Neighborhood Component Analysis,NCA)是一种非参数的特征选择方法,属于监督学习,其目标是使回归和分类算法的预测精度最大化,但在这个过程的同时,达到降维的目的。即,NCA的降维是和回归和分类的过程交织在一起的。


一、NCA既可以用于分类,又可以用于回归。这里主要讲一下分类算法中的NCA。


我们先从一个简单的随机多类分类器着手,过程及其简单,如下:


1.在数据集中随机选取一个点,我们叫它Ref(x),将它作为点x(点x就是我们需要预测的未知类别的点)的“参考点”。


2.用Ref(x)的类别标签来标注x。


咋样,是不是很简单,也很蠢的方法?因为分类好像完全是随机的。现在我们透过表面看实质,我们发现这个方案有点类似于1-NN分类器(K=1时候的KNN),在1-NN中,“参考点”会选择离x最近的点。而在NCA中,“参考点”是随机选择的,训练集中所有的点都有一定概率被选为参考点。当然,不是完全的随机,当训练集的点xj离x越近时,被选中的几率就会越大,其距离函数dw为

其中wr是“特征权重”,根据上面的思路,我们假设





即P正比于k(dw),其中k是某种相似度函数,只需要满足dw越小,k就越大就行,比如

就是一个很好的选择。为了让所有的P之和正好等于1,让

OK,一个分类器就设计好了,简直比KNN还科学,等等,喂,特征选择在哪里?


确实,以上的分类器已经可以用了,但想达到特征选择的目的,还需要对模型进行训练,这里采用“留一”的策略,并将结合正则化方法。


我们用去掉了xi的集s-i来预测xi的类别,那么,xj(xj不等于xi)被选为参考点的概率应该为:


对于xi,把所有的s-i的点都算一遍,那么这个“留一”法的平均正确率pi为



其中当yi=yj时,yij=1,否则等于0。

那么对于整个分类的平均留一正确率:

以看出,fw式子右边依赖于权重向量w。那么关键来了。NCA的目标即调整w,使fw最大化。这里我们使用正则化的目标函数:


其中λ为正则化参数,会使得许多w中的权重变为0.


这里简直和L2正则化的岭回归像极了,也可以看出L2正则化对于w权重衰减为0的作用(对于w衰减的效果和岭回归异曲同工)。后面就仅仅是优化的步骤了,具体步骤这里暂时不写,只列出公式如下。 




二、对于NCA回归,则和NCA分类基本原理相同,用li来度量y之间的距离,公式稍有变化:



最后的目标函数如下,以l代替分类中的p:



三、两个小小的注意事项


1.数据标准化的影响


在NCA中,所有的权重只有一个参数λ,因此要求权重的大小可以互相比较,而当xi的特征尺度相差过大时候,“权重比较”失去意义,因此,和以往一样,当特征尺度产局过大时,需要进行标准化。


2.如何选择正则化参数λ


通常,我们选择不同数量级的λ,在同一个训练集上计算NCA的性能。(直白地说,就是并没有什么好的方法)


NCA是一种较新的技术,由Jacob Goldberger,Sam Roweis,Ruslan Salakhudinov和Geoff Hinton等人于2004年在多伦多大学计算机系创建,近年来才渐渐开始被应用。相比其它传统的特征选择方法,其能同时应用在分类和回归两种问题中,并能在更复杂的系统(如80%干扰特征及诸多离群值数据)中,准确识别出真正有价值的特征。



五、作者:Evan

https://www.zhihu.com/question/347847220/answer/871450361

本文来自知乎问答,仅供学习参考使用,著作权归作者所有


私以为越是基础的方法越是巧妙!!!


比如机器学习和统计里面大家都熟知的数据降维方法主成分分析(Principal components analysis,PCA)。我们都知道很多数据来源如果表示成向量  都非常的高维(比如语音信号、图像信号),而统计分析或者批量地可视化这种高维数据在数学上是比较困难的。


为了解决这种困难,早起(雾,早期)的数学家和统计学家们决定降低它们的维度,通过一种线性变换的方式  。假定   ,那么一般要求  远大于  。PCA的关键就在于如何获取一个合理的矩阵  ,而“合理”的核心其实是我们希望得到什么样的低维数据表达。


一、PCA的一个出发点是希望投影后的数据  在每一维上都能有比较大的散度(也可以理解成方差)。这个思路其实非常的intuitive,设想如果数据给了很多数据在某一维上的值都没什么差别,大概率这一维对后续的任务(比如分类、回归)也没什么帮助。


以  的情况为例,这时候我们可以把  写成  方便理解,如果给定了  个样本  ,我们的目标其实可以写成一个优化问题:


 

(注意方便起见这里假设  )


如果引入一个数据矩阵   ,那么这个优化问题又可以简单写成:


   


有一定矩阵基础的小伙伴这个时候应该知道最优解就是  的第一个特征向量了。偏好数值分析的小伙伴也可以通过引入Lagrange乘子得到同样的结论,具体参照PRML。


二、PCA的另一个经典视角比较几何。其实数据降维可以考虑成从欧式空间到嵌入流型的投影(参考三位空间中将一些点向同一个平面进行投影的例子)。我们当然希望投影之后的点的位置距离他们原始的位置比较近。


那么从这个角度出发,我们又有这样一个优化问题   (这里矩阵  的每一行都是一个单位矢量)进而可以得到同样的基于特征分解的formulation。是不是一颗赛艇?




-End-


*延伸阅读



CV细分方向交流群


添加极市小助手微信(ID : cv-mart),备注:研究方向-姓名-学校/公司-城市(如:目标检测-小极-北大-深圳),即可申请加入目标检测、目标跟踪、人脸、工业检测、医学影像、三维&SLAM、图像分割、姿态估计、超分辨率、嵌入式视觉、OCR 等极市技术交流群(已经添加小助手的好友直接私信),更有每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流一起来让思想之光照的更远吧~


△长按添加极市小助手


△长按关注极市平台


觉得有用麻烦给个在看啦~  

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/51212
 
259 次点击