链接:https://www.zhihu.com/question/433274875
编辑:深度学习与计算机视觉
声明:仅做学术分享,侵删
作者:匿名用户
https://www.zhihu.com/question/433274875/answer/1725421509
美国某非CS的工程专业top5在读博士来答一下
因为近些年AI、ML的兴起,我们专业的经费分配也大幅度往这相关研究方向转移了,为此组内老板就各种推荐、怂恿、强迫学生做相关课题,甚至课题方向毫不相关的博三学生都被要挟停止funding来做所谓的side project好让他拉funding,就是变相压榨学生让你多当一两年廉价劳动力。
扯远了,扯回来。
为什么我和其他同学非常抗拒做神经网络之类的课题呢?因为我们完全不懂原理,不知道哪种方法更适合我们专业领域内的研究问题。读文献也只能停留在哪一些方法可能可以产生所期待的结果,而根本讲不出来为什么这些方法可以应用于我们这一领域或者如何改进现有方法。因为原理层面上的知识缺失,我们专业在做这种课题的时候如果缺少前期积累,多半变成把机器学习等方法当成黑匣子使用。如此操作并非完全无研究价值,但你真的想以这样的课题当做你的博士课题吗?
作者:知乎用户
https://www.zhihu.com/question/433274875/answer/1872308662
先搞明白你说的“原理”指的是什么。
如果指的是典型入门课程(比如吴恩达Deep Learning或CS224N)中会讲到的基础知识,例如常见损失函数的性质和应用,反向传播的基本原理等,这些显然都是必须滚瓜烂熟的。一方面掌握这些知识本身并不困难,另一方面没有这些知识基础的话连调参侠都做不好,找工作100%会面试一面挂。
而如果指的是各种“为什么神经网络Work”之类的理论研究,那么显然没必要——目前学术界自己都没整明白这玩意呢……
作者:胡紫怡
https://www.zhihu.com/question/433274875/answer/1613600102
有几种程度的“弄懂神经网络的原理”:
知道loss function的作用,知道sgd minimize loss function的过程就是神经网络(包括传统机器学习)的学习过程。知道loss function,optimizer背后的优化原理
知道CNN的一些trick,怎么调结构,调超参数,背后的直觉是什么,这个直觉就是原理
研究overparameterized neural network的generalization原理
这些原理的重要性:
这是大二数学,学习人工智能必备的。如果这都不懂,建议回炉重造
这是成为一名工程师必备的技能。这个搞不懂不建议从业人工智能
这是优秀PhD研究的内容。这个搞不懂对找工作毫无影响。
作者:叶小飞
https://www.zhihu.com/question/433274875/answer/1866586190
我从工业界面试的角度来回答下这个问题。我在大厂工作期间面试了不少candidates, 自己也面试过不少岗位, 只会掉包,蒙着头拼积木==失业。过得了简历关你也绝过不了后面N轮面试。那么对于“神经网络的原理”(加引号是因为我觉得神经网络没啥真的原理可言)到底要掌握到什么程度才算合格?
能手撕 前向/反向传播
这应该是每一个做DL的最最最基本的要求。给一个两层的做regression/classification 的neural network,给一个简单的1D vector, 把它的forward propagation写出来,还要用chain rule把back propagation也给推导出来,最好除了公式之外,能现场给个实际的input vector把相应的矩阵运算给算出来。
2. 对常见的loss function和激活函数要如数家珍,并且知道大概的优势/劣势。举个简单的例子,softmax和sigmoid有什么联系, relu相对tanh优势是啥。
3.对非常经典的论文要有较好的了解,并且有自己的“insight”在里头。举个例子,ResNet很经典大家都知道,那么它到底为什么用简简单单的结构做出了惊人的效果?再比如,虽然你是做图像分割的,但如果我问道Yolo的巧妙构思之处在哪你却连Yolo里面是啥都不清楚,基本也要被我挂了。这说明你做东西钻地太窄,失去了应有的广度。
4.对你自己专精的领域要有很深的认知,知道近期sota的设计理念,能大概说一说它们本身可能存在的缺陷。
5. 加分项:如果你对matrix本身有些基础的理解,比如Gauss-Jordan求逆怎么做,SVD大致步骤之类的会加分不少。另外如果你对传统图像处理,像sift, hog这些还有了解也会大大加分。
上述这几点从我近来几年的观察来看,可以说是大厂偏research岗位的基本要求,其实用一句话概括就是:知其然,更要知其所以然。所以回到你的问题,硕士博士不懂神经网络原理是否能行,撇开你是否能发论文不说,搁到工业界面试这边等于凉凉凉。
讲实话,我没想到还有些从业者觉得上述前四个算是面试造航母,现在大家的水准这么参差不齐了吗 ?搞我们这行的难道不应该对经典论文(一共也没多少篇,手指头都能数得过来)如数家珍,对自己深耕领域了如指掌?不然你自己闷着头写自己的算法吗 你可以完全不care我说的这几条,但等到你找大厂CV/DL工作的时候我觉得95%概率凉凉。
作者:cycloid
https://www.zhihu.com/question/433274875/answer/1867205336
我倒是很想问问在这个回答下冷嘲热讽的人,你们理解的原理是什么?
是像Arora,Simmon Du,Jason Lee和Taiji他们做的理论工作?那我觉得在座大部分人可以闭嘴了,大陆搞dl theory的组可能两只手数得过来。
还是像Kaiming He那样的开创性工作?那我觉得在座也没有多少人能够做到这样充满洞察力的工作呀?
如果你是说应该怎样更好地搭lego?那我觉得其实我们也没有多理解所谓的原理呀?你们嘲笑提问者这不是五十步笑百步嘛。
这个回答没有别的意思哈,只是昨晚转了一圈看到一大堆嘲讽的回答有点不爽。
平心而论,我也是所谓的调参侠(尽管应该以后不会做这个方向了),身边的朋友有做神经网络应用的有做可解释性的有做数学理论的,但是我们不会把这种从其他网络结构得来的灵感称为“原理”,我们会把它称为工程性的“直觉”。无论是用数学理论来刻画神经网络的性质的理论家,还是在大量工程中积累直觉的工程师,都是十分值得尊敬的。
在我看来,原理这种东西,起码要做到像是SVM或者是boosting这样比较完善的泛化理论,才能称之为原理吧?到时说不定真的能用类似的margin理论来刻画神经网络的泛化性。(没记错的话COLT2020已经有人做了一个用某种margin maximization来刻画神经网络的隐式偏向了)要是这些不同的模型都能用某一种“大一统”理论来刻画,那才是真正的原理吧?
作者:知乎用户
https://www.zhihu.com/question/433274875/answer/1646076545
你首先要搞清楚你是做什么的。
神经网络的原理,应该是指神经网络背后的数学原理以及不同构架的理论性证明,这些东西你如果不是做机器学习理论的工作,可以不了解,只要大概知道不同架构可以做什么就行了。
但是,你如果是应用机器学习到其他领域,那么你需要了解你所做的领域的原理,比如你做cv的,那么基本的信号处理,图像处理的理论你应该了解;做nlp的,你需要去了解语言学的理论。
不要简单地把cv,npl和机器学习画等号。
作者:金海峰
https://www.zhihu.com/question/433274875/answer/1662351913
以现在开源工具的发展水平来看,你即便是“只需要应用”也要搞懂一些原理,否则连应用都做不出来。
你做应用至少还需要理解问题,根据问题选择合适的模型,并且调调超参数。
针对特定问题,找到合适模型。这一步就需要你能看懂模型的适用范围与优缺点。想要做到这点,就需要你对其背后的原理有一定的了解。
调超参数就更需要根据实验反馈结果定位哪个超参有问题了。这需要对模型和数据有更深刻的理解才行。
所以,做应用就需要懂原理。
但是,这是基于现有机器学习工具的发展水平来说的。也许有一天,会出现一个基于Keras的开源软件,自动帮你选模型调参呢。
到时候你做应用可能就真的只会应用就行了,真的好期待这一天哦!
作者:匿名用户
https://www.zhihu.com/question/433274875/answer/1618395833
这个问题比较矛盾,首先不懂原理肯定是不行的(好歹把一些optimization, high dimension probability 之类学了吧),但目前关于深度学习的理论并没有决定性的进展,所以弄不明白也正常。。。。
楼上有人说了simon du和jason lee的工作,还有这几年icml的generalization workshop,dl theory and physics等等都是目前比较前沿的理论结果。但说实话我觉得这些还是过于“理论领域”了,目前只适合专门从事dl theory的人看,未必适合题主。
作者:知乎用户 https://www.zhihu.com/question/433274875/answer/1610287913
神经网络在图像分割领域应该算是应用非常广泛的基础技术,如果不弄明白的话,以后你很难更好地去理解更复杂的东西,所以打好基础非常重要,难的还在后面.....
看不懂的话就反复地看,总会理解的。
作者:捕梦网
https://www.zhihu.com/question/433274875/answer/1863416541
看你说的是啥原理了,如果是optimizer到底是基于啥设计的,为啥加weight decay这样的,你如果不知道,那就别做神经网络了。但是,如果你说,来给我分析一下非线性情况下,这个神经网络是不是有更小的generalization loss。那么,实际上你能想到的绝大多数理论模型基本都是胡扯不work的。
做神经网络没有足够的试错是不行的。因为你试错了之后,你才会发现人类对神经网络的了解有多么少。见过一些搞统计的教授,半途搞deep learning,他们组里的学生可痛苦了。因为教授自以为自己很懂(不就是我们统计玩剩下的么),实际上并没有一手经验,很多预判都不太对。
欢迎添加群助手微信,邀请您加入大佬云集-计算机视觉交流群!
???? 长按识别添加,邀请您进群!