讨论:对于神经网络,不需要弄明白原理,只需要应用,是这样吗?
Posted Python遇见机器学习
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了讨论:对于神经网络,不需要弄明白原理,只需要应用,是这样吗?相关的知识,希望对你有一定的参考价值。
一位CV领域的硕士问:一直弄不懂神经网络原理,看了很多教程博客还是弄不懂,我想是不是不需要弄懂啊?
个人觉得:不懂原理能做些应用,但是想出成果就难了。可以参考下网友的讨论。
网友的讨论
1
有几种程度的“弄懂神经网络的原理”:
-
知道loss function的作用,知道sgd minimize loss function的过程就是神经网络(包括传统机器学习)的学习过程。知道loss function,optimizer背后的优化原理
-
知道CNN的一些trick,怎么调结构,调超参数,背后的直觉是什么,这个直觉就是原理
-
研究overparameterized neural network的generalization原理
这些原理的重要性:
-
这是大二数学,学习人工智能必备的。如果这都不懂,建议回炉重造
-
这是成为一名工程师必备的技能。这个搞不懂不建议从业人工智能
-
这是优秀PhD研究的内容。这个搞不懂对找工作毫无影响。
2
绝大部分所谓机器学习从业者,包括知乎上的,都对神经网络的原理一知半解。不指望所有从业者搞明白神经网络里面的数学,只希望能让大家不要觉得所谓的deep learning就是无脑调参。个人觉得即使不懂原理也可以找一个不错的工作,但在工作/科研中一定会受到局限。
关于神经网络原理有很多工作,大范围的比如说Neural Tangent Kernel 的一系列工作。
https://arxiv.org/pdf/1806.07572.pdf
关心CNN的话对于residual connection也有很多理论解释
https://arxiv.org/pdf/1909.04653.pdf
对于GAN,尤其是GAN的generalization bound也有不少人尝试
https://arxiv.org/pdf/1703.00573.pdf
以上都是冰山一角。
还有很多关于神经网络的optimization的工作可以看Princeton的Jason Lee和UW的Simon Du 杜少雷。
3
不懂原理,我觉得跑demo。做应用。写毕业论文甚至发论文可能都可以。但我觉得你找工作就比较困难了。
4
以现在开源工具的发展水平来看,你即便是“只需要应用”也要搞懂一些原理,否则连应用都做不出来。你做应用至少还需要理解问题,根据问题选择合适的模型,并且调调超参数。针对特定问题,找到合适模型。这一步就需要你能看懂模型的适用范围与优缺点。想要做到这点,就需要你对其背后的原理有一定的了解。调超参数就更需要根据实验反馈结果定位哪个超参有问题了。这需要对模型和数据有更深刻的理解才行。所以,做应用就需要懂原理。
但是,这是基于现有机器学习工具的发展水平来说的。也许有一天,会出现一个基于Keras的开源软件,自动帮你选模型调参呢。
到时候你做应用可能就真的只会应用就行了,真的好期待这一天哦!
5
显然不是。即使只是应用神经网络的话,也需要理解常见的组件/模型结构的意义,它们为什么work/不work。
例如batch normalization 的作用,skip-connection的作用,各种优化器的优缺点等知识点需要非常熟悉。不然你调参数的效率是会显著低于有经验的算法工程师的,而且当你遇到神经网络不收敛、loss降不下去、疯狂过拟合等各种各样的问题时你是没有办法知道怎么去解决的。
上面举例的知识点掌握起来其实并不难,而且应用的话学到这种程度就足够了。至于背后深入的数学原理,神经网络可解释性的问题过于前沿了,现在不去了解也没有什么关系。
总结
绝大部分回答都是认为需要了解神经网络的原理,但是否深入,看你的需求了。
重磅!
Python遇见机器学习交流群已成立!
额外赠送福利资源! 邱锡鹏深度学习与神经网络,pytorch官方中文教程,利用Python进行数据分析,机器学习学习笔记,pandas官方文档中文版,effective java(中文版)等20项福利资源 获取方式:进入群后点开群公告即可领取下载链接
注意:请大家添加时修改备注为
[学校/公司 + 姓名 + 方向]
例如 —— 哈工大+张三+对话系统。
号主,微商等广告请自觉绕道。谢谢!
推荐阅读
•
•
•
•
•
•
•
•
•
•
•
以上是关于讨论:对于神经网络,不需要弄明白原理,只需要应用,是这样吗?的主要内容,如果未能解决你的问题,请参考以下文章