该不该坚持学习Machine Learning

傻大明白 2021-09-18 16:36 234 次浏览 赞 151

最新问答

  • redfishchy

    Machine Learning的前景怎么样?

    Machine Learning作为统计学的一个分支,最近好像特别吃香,请大神们解疑,Machine Learning具体是干什么的,前景什么样?


    正好刚回答过类似的问题,直接引用下吧

    Machine Learning现在是一个很火的研究方向。机器学习是研究计算机怎么模拟人类的学习行为,并且能组织已有的知识构架使之不断完善的性能的学科。 是人工智能的核心,是使计算机具有智能的根本途径。 与其说是统计学的分支,不如说是统计学,计算机科学,信息科学的交叉分科。其涉及的知识面很广,涵盖了工智能、哲学、信息论、生物学、认知科学、计算复杂性等众多领域的专业知识。现在存在的一些计算器系统是没有学习的能力的(或者是有的已有了特别局限的学习能力?),因而是不能满足生产的需求的。随意随着科技的发展,machine Learning肯定会得到长足的发展的。只是,machine Learning也有许多发展方向,不是每个方向都发展的起来。

    附上这篇文章的链接吧:

    挖掘和深度学习(deep learning)哪个更有发展前景?


    我再补充下Machine Learning的研究目标吧:

    认知模型——即是3M认知模型,是人类对真实世界进行认知的过程模型。认知是个系统的过程,其中包含感知,记忆,判断与学习。因而完成这个认知过程,是个一及其艰难和浩大的工程。

    通用学习算法——像是大家熟知deep Learning就是Machine Learning中的一种比较深的算法。 其实很多ML算法都是非逻辑性的,输入的信息通过数学模型而得出一个新的工具,其实可以说是建立一个人工识别号的库。

    构造学习系统的方法(面向任务的)——其实就是研究如何通过 环境向系统的学习环节某些信息。

    先说这么多吧,有空的话做个图解释下ML的方,觉得还是解释比较抽象,多多包涵吧。



    Machine Learning是一门多领域的交叉学科,除了像最常见的统计学、近论、算法复杂度分析理论等,也包括一些与生物领域的科学相关的问题,比如说最常见的人工神经网络中的各类神经元与链接方式都是仿照人脑进行作的、以及遗传算法中模拟基因突变的过程等。

    机器学习主要就是研究计算机如何模型或实现像人一样的思维方式去学习知识,通过对新问题的反馈机制,修改或优化自己已经学习到的知识。其是人工智能的核心,也就是说,人工智能非常依赖机器学习的好坏与优良程度。

    机器学习的方法以及其效果的好坏对于人类未来的发展至关重要,如果效果很高的话,至少可以替代人工做的一些重复的体力劳动,并可以根据特殊情况进行一定的反映。因此,就前景而言还是很好的,尤其是在现在这个大时代,越来越多的人类行为相关被记录在案,为机器学习了基础内容。此外,机器学习所产生的一些成果,已经应用于许多领域,包括挖掘、自然语言处理等等。

    虽然机器学习已经取得了一定的突破,但是还是没有达到人工智能的程度,因此有许多问题是需要研究和发展的,因此,未来的发展也是充满机遇与挑战的。Machine Learning是个不错的领域,如果想要进入的话,建议多学习一些基础思想和编程。




    机器学习已经越来越平民化了(democratizing),数学和算法并非一定要很深厚功力,大多通用算法都是现成的,比如微软Azure Machine Learning平台已经有很多打包的示例,如用来分析customer churn的示例等。至于operationalization(不知道怎么翻译),现在也没这么难了。

    我觉得如果只是应用机器学习来处理现实问题,最难的还是怎么把通用算法和自己公司的现实问题联系起来,比如怎么定feature,用哪种model,另外怎么评价最终效果等等。难的是深入理解企业的实际业务,而非技术和算法。

    个人认为趋势是随着machine learning平台的成熟以及通用场景的算法普及,data scientist这个称号会逐渐平民化甚至消失,最后你搭个回归模型之类的就像使用Excel处理一些这样简单。一个PM或者销经理可以自己做这事而不需要养一个专门的职位。




    机器学习的应用在界需求很高,有过工作经验的人可以很轻松的找到工作,供给远远小于需求,而且需求越来越大。

    但是招 New Grad (PhD 可以考虑) 相对较少。原因很多,简单来说,就是 New Grad 往往工程经验不够,学术能力也不够。界的现状不复杂:大公司搞机器学习的组大、人多、要求高,PhD 是进入的门槛;小公司人少,每个人都要独当一面,因此必须要有过搭建实际机器学习系统的经验。因此如果两边都没有优势的话,自然找工作比较吃力。

    因此,对于有志于做这个方向的同学来说,建议找工作时调整心态,第一份工作尽量找到工作职责与机器学习相关的组,而不必追求一步到位。人生的职业生涯很长,做好3到5年的职业生涯规划,积累实际工作经验,不断学习与强化自己。人与人的差距并不会在第一份工作中体现,而是在前几年逐渐显现出来。




    机器学习早期发展是遵循实用主义糙快猛的路线。基本步骤就是靠直觉构造一个优化目标,然后解这个优化问题。数学工具基本上线性代数和凸优化也就够用了。再深一点涉及博弈论,随机过程,微分方程,测度论,实分析,泛函分析,李等。

    这个学科发展很快,长期处于理论跟不上实践。当前的发展势头,已经到了一个工科那点数学不太够用了的阶段。很需要一批数学大牛来披荆斩棘一下。很多这个领域的人认为过多的数学没必要,其实是因为这些人数学菜。我就看到过用代数几何的方法(resolution of singularity, blow-up)漂亮的解singular model的问题。可惜很少人follow。 总之很多问题是到了需要引入高级数学工具才能漂亮解决的地步了。比如各种不变性和等价性需要黎曼几何,各种ill pose singular问题需要代数几何。

    结局就是:还是好好去学数学吧。。。。。。





    提几个可能的有关机器学习当中的深度学习发展方向,同时也就是尚待解决的问题:

    1.让深度学习自动调超参。

    最近看到有人在一个AI里推广自己的一篇论文《Deep Q-Networks for Accelerating the Training of Deep Neural Networks》,大致是用强化学习的方法训练一个控制器来自动控制学习率以及在一个batch中各个类的样本占比。虽然它那篇论文问题很大,训练出来的控制器极其不通用,只能用在它原本的任务上,但是感觉很容易解决掉,这个另说。想象一下,如果能够训练出一个通用的控制器,对于各类任务都能够自动调整超参(或者只在某个子领域比如图像分类做到通用也好),那我们就再也不用自称调参狗了,同时也可以解放出更多的时间用于设计模型、验证架构,想必深度学习的发展步伐会得到极大加速。

    2.自动学习网络架构。

    其实说起来这个问题也可以归入自动调超参,但是感觉应该还是有很大的不同。说起来无非就是两个方面,一是加法二是减法。加法方面可以参考《Net2Net: Accelerating Learning via Knowledge Transfer》,这篇是让CNN自动根据需要自动拓展架构,包括横向的增加filter和纵向的增加layer。减法方面可以参考各类Network Compression(网络压缩)的论文中的所谓Network Pruning(网络剪枝),比如《Deep Compression - Compressing Deep Neural Networks with Pruning, Trained Quantization and Huffman Coding》,虽然这些论文出发点不在于自动学习网络架构而在于压缩网络规模,而且它们往往是在训练收敛之后才对网络进行裁剪而非边训练边裁剪,但是感觉只需要再跨一步就可以了。我个人觉得,自动学习网络架构需要解决的最根本问题就是“应该在什么时机进行架构变动”以及“应该怎么变”,第二个问题感觉上述论文算是回答得可以了,但是第一个问题似乎还有很多可以探索的地方。对于第一个问题,似乎强化学习就很适合解决,因为显然可以把它看成一个控制问题。

    3.迁移学习。

    众所周知,深度学习的直接训练依赖大量,而transfer和finetune能够有效利用量大的外部任务训练出来特征来迁移到量小的目标任务上,使得目标任务对于量的要求大大减小。现在的问题在于,迁移学习的思想现在大家其实都在用,很多论文中都可以看到finetune的做法,但是对于两个任务之间需要“多像”才能够迁移这么一个问题还没有一个很好的回答。即使我们不奢求能够给出一个严格的数学理论,至少,如果有人能够做一个非常系统的对比实验,总结出一些规律,使得我们有信心说在如何如何这样一个边界内的任务都是基本上可以transfer的,那将会是一个很大的进步。这个问题也可以这么看,如今我们应该有信心说两个图像分类任务可以transfer,但是这个边界太过狭窄,我个人期待的就是能够有一套理论或者方使得这个边界大大拓展,然后在这个边界内我们可以像对两个图像分类任务一样自信满满地用迁移学习。

    4.无监督/半监督学习。

    像LeCun等大佬其实一直在鼓这方面,但似乎还没有搞出像当年CNN(AlexNet)、最近强化学习(阿法狗)这样级别的大新闻来。我理解在这个问题上的努力方向应该是确定“何种representation最有用”。具体来说,就是找到一个指标,然后用深度网络优化这个指标,使得满足这个指标的data representation能够具有非常好的特性。再具体一些,下面举三个实际例子:

    autoencoder以重构损失作为指标来学习一个representation。

    之前听一个讲座,演讲人介绍他的论文《Why Deep Learning Works: A Manifold Disentanglement Perspective》IEEE Xplore Abstract,其中定义了三个指标来描述深度网络每一层中data representation的“蜷曲程度”,并发现,越高层的蜷曲度越低,换言之,越平展。那么无监督学习是否能够直接以这个蜷曲度作为损失函数来学习一个representation呢?

    这篇论文《Context Encoders: Feature Learning by Inpainting》提出通过预测周边上下文像素来无监督学习视觉特征,感觉很像word2vec从一维变成二维。

    除了上述的重构损失、蜷曲度、预测上下文精度,还有没有别的指标学习出来的representation更好呢?个人认为这些问题就是推动无监督/半监督学习进展的关键所在。

    5.基于外部存储(external memory)的模型。

    如果说RNN、LSTM这样的模型属于internal memory / long-term memory的话,那么以神经图灵机(Neural Turing Machine)、记忆网络(Memory Network)为代表的模型就应该称为external memory / really long-term memory了。不过这两个模型刚出来的时候还太过naive,只能做一些很无聊的task,比如序列复制和排序以及非常简单的QA,但是现在已经开始看到它们被用到更加实际的问题上面,例如One-shot Learning:《One-shot Learning with Memory-Augmented Neural Networks》。往大了说,如果未来要实现强AI,这种外部存储的机制肯定是必不可少的。现在的问题在于,神经图灵机和记忆网络用的外部存储虽然比LSTM那样简单的一个hidden state向量更进一步,但也其实就是很简单的一片矩阵,没有任何结构和层次可言,换言之,就是还不够复杂。所以我猜想接下来可能external memory会和知识图谱(Knowledge Graph)结合起来或至少是向知识图谱类似的做法靠拢,因为知识图谱更加结构化。





    咳咳,路过,进来小小的装一下。本人现在大三,所以说在这个话题上可能并没有什么话语权,不过因为最近再跟搞项目,正好是这方面的,戳进来分享一下感受吧。

    第一是:机器学习前景很好。这是真的,最近看了很多论文,有关挖掘分析类别的,里面用到的百分之十都是机器学习,这可能也是人工智能发展的最大需求吧,人工智能无非是模仿人类,而人类最开始也是对世界充满了无知,通过学习才慢慢认知这个世界的,个人感觉这就是为什么机器学习会被提出来吧,像真的实现人工智能就要从根源开始模仿人类,也就是从学习这个技能上入手。

    说完了这个想说的是为什么前景好呢,上面说过的用途和提出愿景好是一方面,另一方面是因为这方面人才还比较少,其实这也是一种发展前景吧。就像前几年计算机刚刚火起来的时候那些最早接触计算机的人突然就变得很出名,然后社会上一大部分人都涌入到这个领域中,这是一个道理。机器学习现在还处在起步阶段,下一阶段怎么发展决定于人们对他的研究深度和重视程度。就目前人工智能不断得到重视来看,应该还是很有发展前景的,说不好会成为继计算机时代后的又一个新的时代。

    以上观点仅仅是个人观点,我觉得至少在短时间内这个研究方向只会更火不会被冷,就像大一样,同样也有人在不断质疑大的发展,不过目前发展的还是很好的不是吗?

    ---------------------------------

    2016 机器学习之路:一年从无到有掌握机器学习

    译者:闻菲



    今天是2016年9月12日AI WORLD 2016世界人工智能大会倒计时 36天启航期5折抢票倒计时 7 天




    【导读】程序员 Per Harald Borgen 在 Medium 刊文,介绍了他在一年的时间里,从入门到掌握机器学习的历程。Borgen 表示,即使没有博士和高深的数学造诣也能掌握机器学习。这一点相信对不少人都挺有吸引力和启发。不过,博士或许真的并非必须,但要掌握机器学习,学再多的数学也不会嫌多。下面就来看 Borgen 不脱产,从菜鸟变熟手提升业绩的。







    第一步:Hacker News 和 Udactiy




    Borgen 对机器学习的兴趣始于 2014 年。跟很多人一样,他最初是看到 Hacker News 的帖子,单纯觉得教计算机学东西很酷。那时候他还只是个业余的编爱好者,连程序员都谈不上。




    于是,Borgen 开始了他的机器学习之路。首先,到 Uadcity 看监督学习的,然后阅读所有能找到的、跟机器学习有关的读物。








    Borgen 总结说,“这给了我一点概念上的理解,不过没有实践技巧。”




    同时,他也十分坦承,Udacity 的 MOOC 他并没有上完——只要是 MOOC,他几乎都没有坚持上完过。这一点,无论怎么说,至少让篇文章的置信度倍增。



    第二步:挂掉 Coursera 机器学习课




    2015 年初,Borgen 为了成为正式的开发人员,参加了 Founders and Coders(FAC)在伦敦的训练营。在 FAC,他和同学一起,每周二晚上会看 Coursera 上机器学习课程的。






    不用说,大名鼎鼎的吴恩达的机器学习课。Borgen 表示课很赞,学了很多,然而他个人觉得这门课不适合新手。至少他自己,就需要反复看才能掌握里面讲的概念——当然,这是 Borgen 的个人感受。不过,Borgen 在 FAC 学的同学也一个个掉队,最终他自己也挂掉了。




    Borgen 总结说,他当时应该学一门用机器学习库编代的课,而不是从零开始建算法,至少应该用他已经知道的编程语言写算法。




    一句话,“对新手来说,一边学语言一遍写机器学习算法代难度是很高的”。这句话有一定的参考价值。




    Borgen 的建议是,可以选择 Udacity 的《机器学习入门》(Intro to Machine Learning),更容易入门,上来就能实践,在提升经验值的过程中,学习的趣味性也会增多。




    【经验】从简单的实践学起,之后再学困难的、偏理论的东西。



    第三步:一周学会机器学习




    Borgen 在 FAC 做的最后一件事情,就是“一周学会机器学习”。他的目标是,一周以后能够实用机器学习解决实际问题,而他也成功做到了这一点。




    具体的经验 Borgen 写在了另一篇文章里。有兴趣进一步了解,可以访问:




    简单说,在一周的时间里,Borgen 做了以下几件事情:




    学会了 Scikit Learn


    在真实世界库跑了一次机器学习


    从零(用 Python )写了一个线性回归算法


    做了一点儿 NLP




    【经验】腾出一周时间来全身心地沉浸到机器学习里面去,效果惊人。



    第四步:挂掉神经网络




    成功在一周的时间里拿下机器学习给了 Borgen 自信。因此,在他结束 FAC 回到挪威时,他计划进行第二次挑战——一周内学会神经网络。




    然而,事实是残酷的。离开 FAC 那种 沉浸式学习环境后,要一天写 10 小时的代可不容易。




    【教训】找一个合适的环境做这种事情。




    不过,Borgen 到底还是学上了神经网络。去年 7 月份的时候,他写完了一个网络的代。虽然很粗糙,但完成比完美重要,对吧?








    下半年,Borgen 换了一份新工作,这在某种程度上影响了他的机器学习学习进展。这一阶段他主要做的是实现神经网络,他把时学的线性代数重新看了一遍。年底时,Borgen 写了篇总结:




    《学习如何编写神经网络代》




    也是在这篇文章里,Borgen 记录了他从零开始写代的过程。这篇文章在 Medium 上点赞的数量接近 600。



    第四步:在 Kaggle 竞赛中实践




    2015 年圣诞节,Borgen 参加了 Kaggle 竞赛。当然,实践的效果是显著的,他得到了通过算法和实际迭代实验的经验,也学会了在做机器学习项目时要相信自己的逻辑,“如果调参或特征工程从逻辑上看有用,那么一般都会有用”。







    第五步:在工作中建立学习的习惯




    2016 年初,Borgen 想将他在去年年底获得的动力持续到工作中,便询问经理是否能在上班时学新的东西——经理答应了。虽然 Borgen 在文中没有多写,实际上,从这个经历中也能学到东西:




    勇于提出需求,它们才有机会得到满足——当然,你的需求需要合理。




    于是,Borgen 就在上班时也能学机器学习啦(拿钱做想做的事情!)。在 2016 年积累了相关经验以后,Borgen 的第一站是 Uadcity 的深度学习课程。然而,事实证明,对于现在的他来说,Udacity 的这门课已经太浅。不过,课后的 Ipython Notebook 作业却太难。Debug 浇灭了他的大部分兴趣。又一次地,一门 MOOC 被他放弃。






    但随后,Borgen 发现了斯坦福的 CS224D,这门课让他获益匪浅。Borgen 总结斯坦福 CS224D 的好处是:




    尽管难,但做题从来没有 debug;


    课程,便于加深理解。




    尽管 Borgen 仍然没有把这门课上完,但他推荐有兴趣的人去学。








    另外,Borgen 在学这门课的过程中,为了完成题目,请了一位家教,时薪 40 美元,这位家教帮他发现了很多问题。因此,他得到了这么一条经验。




    【经验】花 50 美元/时的金额聘请机器学习家教,绝对值得。(如果你有机器学习经验,你可以获得时薪 50 美元的打工机会。)



    学以致用,提高销额




    Borgen 在工作中实践机器学习,他搭建了一个系统,节省了公司销部门同事的很多时间。相关代:




    以上就是 Borgen 在实际工作中一年掌握机器学习的历程。不管带不带感,至少十分真实。Borgen 在文章末尾写道:“如果我做得到,你也做得到。”




    尤其是工作中的程序员,你不想试试吗?

    浏览 152赞 142时间 2022-02-28

该不该坚持学习Machine Learning