国内 Top2 高校研一在读,为什么感觉深度学习越学越懵?

来源丨知乎问答

编辑丨极市平台

本文转自知乎问答,仅作学术分享。若侵权,请联系后台作删文处理。

问题背景:近日,有一位开发者在知乎进行提问,说自己目前国内top2研一在读,方向是AI和NLP。本科没有怎么接触过科研,这学期刚刚开始在实验室搬砖。他在阅读了DL相关书籍和资料,如李航老师的《统计学习方法》后,对深度学习方面的理论知识理解感到困难,花书也不太读的懂。那么对于如题主这样的初次接触科研的学生来说,为什么会产生深度学习越学越懵的感觉?是不是对知识结构的掌握不够,亦或是学习的方法上存在问题?

01

作者:薛天凡

题主你所经历的困惑其实是很多ML研究员多会经历的。你正处于知其然但不知其所以然的这一阶段,所以感到困惑。你知道每个算法是如何实现的,但可能还没完全理解这个算法如何发展而来,根本上要解决一个什么问题。当知道这个,这些算法就会自然而然在你脑子中串成一张网。

就以你提到vae,cvae,生成模型来说。这些最初的基础是ae(auto encoder)算法,就是用一个encoder把一个原始高维向量(图片,文字,语音)投影到一个低维的向量(隐变量),再用一个decoder将原始向量从隐变量中恢复出来。从此引出

1)能够通过sample隐变量来生成新的图像/文字/语音。这就有了vae,就是在ae的基础上加上kl divergence loss使得隐向量可以被sample。

2)进一步,如果想sample特定种类的图片/文字/语音,例如只生成男人的图像,或者小孩子的声音。这就引出了conditional sample,也就是cvae。

3)再进一步,vae大部分使用l2 loss,而l2 loss通常会使生成的图片变得模糊。为了解决这个问题,就需要一种更靠近我们感知的loss,也就引出了GAN模型中的learned loss function。

举这个例子就是想说当你明白了每个算法到底在解决一个什么问题是,就很容易串起来。另外,对于算法的理解每个人也并不相同,所以也不必局限于一本书中所说的知识架构。能够建立起自己的知识架构,才是真正懂这个领域。

要想做到这一点,就是要多看,多想,多讨论。多看,就是要读更多书,有时也不如直接去看一下原始的论文,书毕竟是加工后的信息。多想,就是不要书或论文怎么说就怎么信,而是自己想想其中的逻辑。一个很好的思维训练就是,可以在看到一篇论文提出的解决方案之前,先自己想想如果是你会怎么解决,再看论文中的方法是否合理。多讨论就是把你的想法和同行说说,看看其他人怎么理解的。题主其实已经在正确的道路上,看了不少书籍,多想想多与人讨论讨论,慢慢就会越学越清晰。

去完全理解一个算法的发展,真正理解这个领域,需要去建立起自己的知识架构。要到达这个境界就需要大量的阅读和思考,下面两位答主就介绍到该如何通过有效的阅读书籍以及阅读论文的方式去加深对深度学习的理解。

02

作者:棒棒糖

尽管你是top2研一,但是你还是会发现周围的全是调参侠和启发式带师。

如果真想做下去,而不是研究生毕业去找工作,看完一遍花书(第九章之前),然后就可以把花书当工具去查了。(花书,即goodfellow写的deep learning一书,中文名是深度学习)

花书的问题是它有些机器学习的基础(被绝大部分顶会论文所忽略的东西)略过不谈,但是在描述深度学习的时候又不由自主的用了这些东西,所以初学者读起来云里雾里的。

而这些基础,从西瓜书里可以看到,从统计学习方法里可以看到,但你不会去注意,因为你并不认为它关键,一掠而过。这是现在很多深度学习者所面临的致命问题。

我的方法是兴趣广泛的读论文,读那些试图去解释神经网络的论文,包括NTK这些企图用线性代数和动力学的,用特征和矩阵分解的,用优化理论的,用编码的,等等。然后去做实验,思考你该怎么在不断波动的测试结果中选择填进论文里的数据,你很快就会意识到偏差,方差,过拟合,欠拟合,early stop等等词语和你最开始理解的东西完全不一样。思考那些看似合理的曲线在各种各样的理论里扮演着怎么样的角色,深度学习背后的幽灵会在那些曲线里露出马脚。

格物而致知。

这世界上的科学莫过于此。

03

作者:zibuyu9

建议选一本为主进行学习,如李航老师《统计学习方法》,其他参照即可,因为大部分教材的核心内容都大同小异。以我对李航老师教材内容的了解,在掌握微积分、线性代数、概率论、编程等基础知识后,还比较容易读。如果经常卡壳,建议从这些基础知识补起。

另外结合高赞回答(刚发现该回答已删除,不是现在的高赞回答)说几句,现在AI是很火,吸引很多学生,论文成倍增加,也出现很多质量参差不齐的工作。我觉得主要原因是,行之已久的基于“信任”的学术会议同行评审机制,无法应对背后功利暗涌的海量投稿。从论文价值上讲,只要一份工作实验结果和结论是真实的,无论作用大小,对整个领域总是正面的,而且这些科研过程训练学生解决开放能力也是非常有意义的;而从最底线上讲,以我参与的相关学术会议服务的经历,很多学术会议已经开始利用数据挖掘算法检测和打击互bid论文行为,开始探讨如何解决当下的可复现性(reproducibility)问题。

当然这也是因为现在国内还处在数顶会论文的阶段。等后面大家都有顶会论文了,相信又会有人开始刷引用刷其他影响力。只要有一个评价标准,就总会有人走捷径,除非这个领域不火了。但无论怎样,有人也许能通过不合适的手段获益,也不应当成为你这么做的理由。学术研究应当做的是不断追求卓越,而不是反复试探底线。

为什么会对书本的知识无法理解?问题或许在于数学能力较弱。下文中,答主日月讲述到了题主问题的关键所在并给出了简略的解决方法。在基础打牢后,需要动手去书写,马克思也说过,实践出真知。在理论知识丰富的基础上,必须要踏出实操的一步,才能将知识理解的更为透彻。

04

作者:日月

你说的这几本书理论太差了,我不知道你计算机基础如何。如果编程基本的算法能力和系统掌握的不错的话,清北ai的研究生应该具备这个能力才对。你读的这几本书基本都是调api的,人家都给你封装玩了,你光调用一下怎么可能深入理解?

那么,问题就在于你的数学太差了,你疑惑的哪些问题全是数学问题,但是这个时间点,你应该还在学习基础课,其实机器学习是比较高深的课程,学这个之前,数值计算,各种计算机系统课程,优化,统计概率应该先学完再来学机器学习,这时候才能很好的理解那些概念,再实战强化。但是现在很多整ai的,直接跳过了这个过程,我经常碰到做深度学习计算机视觉的,问数学优化算法不会,跟系统相关的东西你让他改点东西不会。太浮躁了。

建议抓紧补数学基础,你数学越硬,后面做研究才能做的更扎实,而不是一个大神整出来什么算法然后喊666在拷贝过来改吧改吧用。

补完数学基础,有空一些写一些机器学习算法,光李航那本书,如果你想用cpp从底层一路打上去实现也要用到很多基础计算机算法和系统知识的。别光用python调包,你都不知道他怎么实现的,你说你理解的有多深刻,自己都不信的。用c++写,不用所有算法都写,但是要写一些,然后改并行分布式。练两个之后再去看一些算法实现的源码,这时候你入门了。再去跑数据集,然后就会有很多idea,你才逐步进入科研。

在对学习的方法了解后,下面这位答主对问题的本质进行了探讨,为什么会产生越学越困惑,似懂非懂的感觉呢,或许有这样感受的不止题主一人。作者分析了目前深度学习几个大发展方向,之所以会让很多人产生困惑的原因,事实上就是黑盒,而且几乎没什么办法打开盒子看,因为打开了就是上亿个参数。虽然可能现在深度学习方面存在大量的灌水,或许某天也能够突然的起飞。

05

作者:匿名用户

本来就是炼丹,你这么觉得完全没错。

深度学习搞了这么久,还是个黑盒子,最多就是隐层截几张图片出来搞个“可视化”,搞了一堆没什么用的“万能”逼近理论,结果理论中的结果和现实中的样本量、参数量根本不在一个数量级上。最核心的问题,也就是样本空间的数学结构,因为太过复杂根本没人能讲清楚,也没人想到要去研究。譬如说,手写数字MNIST数据集服从什么分布?

应用上除了CV和NLP也没搞出什么东西。

CV搞出的东西被对抗样本克得死死的。对抗的手段要多少有多少,一个一个去堵是堵不完的。现在已经只要在标识牌上贴个便签条就能把自动驾驶算法给忽悠了,或者戴个纸糊的眼镜就能把基于深度学习的人脸识别算法给骗了,相关的论文你都可以自己去找。

NLP搞出的东西的可解释性就是差,也没有很紧密地和逻辑体系、知识体系相融合,一融合就是贝叶斯,实际上只不过是用贝叶斯公式强行解释神经网络罢了,至于融合上没有不知道。

我读过的每篇论文里都会用贝叶斯公式,仿佛深度学习能和数理统计挂上钩似的。如果真能挂上钩,那么神经网络对应的概率论模型是什么?样本服从什么分布?为什么服从这样的分布?能不能用假设检验来验证这一模型是合理的?等到哪天学术界能够不玩文字游戏地解释清楚这些问题,深度学习才能被解释清楚。如果总是说什么隐变量(隐层神经元)、嵌入(见VAE等)等服从高维正态分布,那也太含混不清了。

VAE那篇开山作品,将MNIST嵌入到二维流形上,生成了一张图片,上面按照不同的嵌入表示不同的数字。依我看来基本逻辑都说不通。应该是每个数字和字母处在一个低维的流形,例如二维或者三维,1就是1,2就是2,每个类所处的流形之间应该存在一个比较清晰的边界。将所有的数字混到一个流形上去是要干什么,而且这个流形居然还是一个二维的正方形,意义不明啊,合着1就是7,3就是5,两两之间傻傻分不清啊。我个人在这个问题上还做过一点科研,用简单的LadderNetwork将MNIST嵌入到二维空间上并且使每个类聚在一起,类与类之间有一定间距。效果一般般,只能说确实能把MNIST嵌入到二维流形上。训练集每个类都聚得很好,测试集就乌七八糟了,过拟合极为明显。

还有什么卷积神经网络的平移不变性、缩放不变性什么的,如果你找一张图片往上边补个黑边,左右平移平移10%、20%、30%,缩放1.1倍、1.2倍、1.3倍,找个state of art的网络喂进去,分类结果绝对精彩。

我看还是搞搞强化学习运用到机器人控制上比较靠谱,毕竟任务简单些。参数超过一万个的网络我是觉得都信不过。机械臂、机械狗的动作轨迹都有比较简单的模型,参数不多,这些模型应该是能做好的,实际上我们也看到包括波士顿动力等一些公司造出了实际的产品。

或者多搞搞对抗样本恶心一下学术界和工业界也不错。

实在不行也可以将深度学习运用到艺术创作上。生成游戏场景贴图、创作音乐、创作抽象艺术,反正是在虚拟的世界里,不会有什么实质的危害,最多也就是恶搞恶搞特朗普罢了。或者用来生成语音,不过这方面科大讯飞已经有比较成熟的产品了。

工业化的应用,例如自动车,我看还是别搞的好,特斯拉已经霍霍死不少人了,不需要再多一家。

事实上工业界里机器学习是很吃香的,应用极为广泛,只不过那些都是模型的内涵被分析得非常清楚的传统的机器学习。

如果没有理想的话,深度学习灌水是很简单的。东拼西凑就能整一篇,但有什么用呢?

顺带说一句,Goodfellow那本Deep Learning的英文版我看过,也就是那样的东西,别搞得跟圣经似的。

原文链接:

【1】https://www.zhihu.com/question/429256719/answer/1639011591

【2】https://www.zhihu.com/question/429256719/answer/1607900416

【3】https://www.zhihu.com/question/429256719/answer/1636624831

【4】https://www.zhihu.com/question/429256719/answer/1565236651

【5】https://www.zhihu.com/question/429256719/answer/1571752656

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

你可能感兴趣的:(算法,概率论,机器学习,人工智能,深度学习)