讨论:对于神经网络,不需要弄明白原理,只需要应用,是这样吗?

技术讨论 hello_uncle ⋅ 于 1个月前 ⋅ 170 阅读

​作者丨知乎
来源丨机器学习初学者
编辑丨极市平台

一位CV领域的硕士问:一直弄不懂神经网络原理,看了很多教程博客还是弄不懂,我想是不是不需要弄懂啊?个人觉得:不懂原理能做些应用,但是想出成果就难了。可以参考下网友的讨论。

网友的讨论

1

作者:zyhu
链接:https://www.zhihu.com/question/433274875/answer/1613600102有几种程度的“弄懂神经网络的原理”:

  1. 知道loss function的作用,知道sgd minimize loss function的过程就是神经网络(包括传统机器学习)的学习过程。知道loss function,optimizer背后的优化原理
  2. 知道CNN的一些trick,怎么调结构,调超参数,背后的直觉是什么,这个直觉就是原理
  3. 研究overparameterized neural network的generalization原理

这些原理的重要性:

  1. 这是大二数学,学习人工智能必备的。如果这都不懂,建议回炉重造
  2. 这是成为一名工程师必备的技能。这个搞不懂不建议从业人工智能
  3. 这是优秀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

作者:金海峰
链接:https://www.zhihu.com/question/433274875/answer/1662351913以现在开源工具的发展水平来看,你即便是“只需要应用”也要搞懂一些原理,否则连应用都做不出来。你做应用至少还需要理解问题,根据问题选择合适的模型,并且调调超参数。针对特定问题,找到合适模型。这一步就需要你能看懂模型的适用范围与优缺点。想要做到这点,就需要你对其背后的原理有一定的了解。调超参数就更需要根据实验反馈结果定位哪个超参有问题了。这需要对模型和数据有更深刻的理解才行。所以,做应用就需要懂原理。但是,这是基于现有机器学习工具的发展水平来说的。也许有一天,会出现一个基于Keras的开源软件,自动帮你选模型调参呢。到时候你做应用可能就真的只会应用就行了,真的好期待这一天哦

5

作者:可乐
链接:https://www.zhihu.com/question/433274875/answer/1625527052显然不是。即使只是应用神经网络的话,也需要理解常见的组件/模型结构的意义,它们为什么work/不work。例如batch normalization 的作用,skip-connection的作用,各种优化器的优缺点等知识点需要非常熟悉。不然你调参数的效率是会显著低于有经验的算法工程师的,而且当你遇到神经网络不收敛、loss降不下去、疯狂过拟合等各种各样的问题时你是没有办法知道怎么去解决的。上面举例的知识点掌握起来其实并不难,而且应用的话学到这种程度就足够了。至于背后深入的数学原理,神经网络可解释性的问题过于前沿了,现在不去了解也没有什么关系。

总结

绝大部分回答都是认为需要了解神经网络的原理,但是否深入,看你的需求了。

大叔

成为第一个点赞的人吧 :bowtie:
回复数量: 0
暂无回复~
您需要登陆以后才能留下评论!