灵魂拷问:机器学习、深度学习专业已经沦为调包专业了吗?
共 3509字,需浏览 8分钟
·
2021-05-19 17:35
有硕士同学问:小弟现在正在高校读硕士,目前跟着导师做自然语言处理的研究,虽说听起来高大上,但是做过的都知道,例如深度学习框架跑起来就是各种调包,运气好凑个模型出来发发论文,技术含量就比较稀少了,感觉现在的工作随便找个由点编程经验的培训一下就能上手了。
所谓外练筋骨皮,内练一口气,想请教一下各位大佬:你认为计算机专业真正的价值在哪呢?把编程部分剔除之后,计算机真正该研究的是什么呢?它的气又在哪儿?
本文来源:知乎
回答一
作者:演奏代码的程序媛
链接:https://www.zhihu.com/question/327494084/answer/1641774776
目前来看,起码在计算机视觉和自然语言处理领域确实是这样。
深度学习当前最主要的两个应用也就是计算机视觉和自然语言处理。
其一,这两个领域在专家们搞不清楚内部原理的情况下,就用不断堆叠的网络层数已经颠覆了传统算法。
对于论文作者来说,你又说不出个具体原理,大家凭什么相信你的这个结构能达到自己论文说的精度?只能发论文的时候开源代码,留给大众检验。看当前深度学习论文有没有用,先得看他敢不敢开源。
所以,现在大多数好用的深度学习算法都开源,包括目标检测的rcnn系列,yolo系列,ssd等。
其二,也正因为说不出什么道理,真正深入研究各种深度学习算法和网络结构的大牛,要不通过实验室里强大的计算资源来试凑各种有效的框架(非常烧钱)——比如谷歌提出的inception系列网络结构就是试出来的;
要不就是凭借对深度学习的深刻理解和强大的创新能力,提出了新颖的深度学习算法——比如提出反向传播和玻尔兹曼机的Hinton,以及提出卷积神经网络和将深度学习引入图像识别的Yann LeCun(这里说的提出不是拍脑袋一想就瞎说的,人家是靠数学硬生生推导出来的),这种天才百年难遇。
而工业界又需要借助人工智能的东风提高自己公司的竞争力。但是大多数公司却没有能力自己设计好用的网络结构和算法,只能照着大牛的论文来包装。不会改只会用,这样就造成了算法少、需求多的局面。现在大牛提出的很多著名的深度学习算法,基本都被实现遍了。
其三,当前深度学习程序普遍用Python语言编写,Python以包多、调包方便而闻名,在机器学习方面有著名的scikit-learn包,在数据处理方面有Pandas、图像处理有skimage、pillow等,更别说主流的深度学习框架Tensorflow、Pytorch、keras等都主要运行在python下,copy别人的代码复用简单,只要你能找得到。
所以。在以上三个原因结合之下,目前起码在这两个领域,整个工业界都是在调包、调参。
做一个小的比喻:目前深度学习好比做中餐,师傅(论文作者)告诉你做包子要加入适当的盐、大料、味精。虽然你不明白这个适当到底是多少,但是他顺带给你把馅儿和皮儿都准备齐全了,你需要做的就是按照自己的喜好把包子形状捏一下。
再说说人才供求方面,目前做自然语言处理和图像处理的,对应于企业的岗位是「算法工程师」。通过前边所述,目前这个听起来高大上的「算法工程师」,其实技术含量并不比开发高多少(甚至只会更低),学学吴恩达的课,就自称算法工程师的不在少数。
但是目前大多数公司给的岗位工资比开发还高不少。
长久来看,只会调包肯定是没有竞争力的,当大量「调包侠」涌入这个行业,挤掉行业泡沫的时候,算法工程师这个职位总会洗去铅华,做一些更有难度和挑战性的工作。
对于有志于未来进入这个行业的学生来说,我的建议有两条路:
对于以后想做语音识别和计算机视觉的同学来说:
为了完成工作可以调包,但是趁着现在有大量的时间,最好可以自己亲手实现一下主流的算法(虽然这个过程比较难),一来提高自己的动手编能力,二来深入理解算法设计思想,实在不行以后做开发也用的到编程能力。
对于以后没有明确目标,只想从事人工智能的同学来说:
建议了解一下强化学习相关内容。强化学习算法才有可能制造出真正的人工智能,alpha go下围棋那么厉害,起决定性作用的决策算法也是采用了强化学习的思想,更重要的是,强化学习算法对于数学要求更高,进入门槛也更高。
回答二
作者:霍华德
链接:https://www.zhihu.com/question/327494084/answer/721135096
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
我想你可能做了虚假的AI,虚假的AI有以下特点:
从不自己收集、处理、清洗、标注数据,而是找一个现有的数据集,疯狂 过拟合数据集。
科研idea主要来自于各种模块的花式排列组合,包含但不限于:各种CNN,各种RNN,各种attention,各种transformer,各种dropout,各种batchNorm,各种激活函数,各种loss function
而不是从实际问题和自然语言的现有挑战出发来思考idea
总是指望靠一个算法、一个模型可以解决所有问题
想做好真实AI,必须:
不断反馈,分析,改进。据说谷歌的搜索质量负责人Amit Singhal博士每天要看20个以上的不好搜索结果,然后持续不断的迭代改进。
面对真实环境中获取数据难,数据标注成本高,数据脏难清洗等问题
从实际问题和自然语言的现有挑战出发,设计针对问题最适合合理有效的模型
从不指望一个算法和问题可以解决所有问题,所有遇到的问题会做出合理的分析和拆解,针对各个难点设计最优解决算法,各个击破。
回答三
作者:zibuyu9
链接:https://www.zhihu.com/question/327494084/answer/723626230
我当年读博的时候,机器学习和自然语言处理的好用开源软件很少,新发表论文也没有开源代码的习惯,复现别人工作总是最费时、费神、折磨人的环节。从那个时期过来的,我觉得现在开源之风大盛,能让大家方便地站在巨人肩膀上登高望远,是多么幸福的事情。
所以,在工具成熟之后,就给人更多选择的可能性,有的人满足于熟练使用现有工具,有的人致力于更好地做创新研究,各取所需而已。这就像微软等软件企业,致力于研制改进各类软件工具,而更多的人使用这些工具,整个生态就是这样慢慢成熟起来。相信未来机器学习领域也会慢慢诞生微软这样的企业,有人研制,有人使用。
回答四
作者:万盛中路摇滚乐队
链接:https://www.zhihu.com/question/327494084/answer/702810200
调参是 ML 这一领域不可避免的,但 ML 并不只是调参。
学习 ML 这一方向,最重要的,个人认为是搞懂基本数学原理。尤其是在当前各种包极大丰富的情况下。
就比如线性回归,你需要搞懂,数学公式当中,哪些部分是学习出来的,哪些部分是固定的,每一部分的“物理意义”是什么,一个公式里面,绝不会有无缘无故多出来的东西,每个东西都有其存在的意义。
然后才是尝试去写代码,比如要实现一个线性回归,你会怎么实现(这个可以看现有包的源代码)。进而可以推广到其他的模型方法。
你是做 NLP 的,那你应该至少会看 ACL / EMNLP / NAACL / COLING 的文章吧。找到自己感兴趣的文章,反复阅读。
看文章的重点在于,
搞清楚文章要解决什么问题。
当前这个问题存在的现状是什么样的,为什么会存在,现有的解决方法是什么。
现有解决方法的不足是什么。
作者提出的解决方法是基于什么思想,这一步非常重要。
作者的模型是怎么做的。
从我的学习经历来看,这其中,5可能是最不重要的。而搞清楚 4 直接可以推出各种不同的5。我之前有实验室的哥们,分析了某一篇文章的4,然后在那篇文章的5上加了不到20行代码,效果提升了20%。
如果你对机器学习还是很有热情的,那你可以多专心思考一下机器学习当中一些脱离了编码的本质问题。多看论文,多写代码,写一些脱离了现有包的代码。这有助于你培养很好的问题分析 insight。
如果你对机器学习感到绝望,请像我一样,转方向吧。之所以感到绝望,是因为穷,买不起显卡。
参考
链接:https://www.zhihu.com/question/327494084
End
声明:部分内容来源于网络,仅供读者学术交流之目的。文章版权归原作者所有。如有不妥,请联系删除。