如题,其实这个问题最好是一个反问句才能更好地表达我这段时间的学习体会:难道机器学习有技术含量吗?

正如俗语所云,对一个事物越了解,越感觉到难;反之,作为一个入门级选手,我目前的感觉就是机器学习这些东西很low。

那作为入门选手,我为什么这么认为呢?这东西就像生物科学一样(误,我对生物学科的研究也不太了解,算是想当然吧),实验基本靠猜,说白了是个体力活,不需要什么数学、计算机的知识,只需你看看文档,傻瓜式学习,背熟几个模型的优劣之类的,就可以开搞了,搞不搞得出全凭运气——「嗯,换这个loss函数可能好」「啊,不行,那用SVM可能更好」……

所以,我认为这个东西没有什么技术含量,所谓的「难」也正是因为没有章法,不靠技术。

应该说,目前的机器学习的研究者们在研究什么?他们研究的内容是演算法的改进、某种理论分析,还是在一天到晚坐在电脑前猜测并实验这个模型行不行。


问题的来源

我目前还在大学,电子方向,发现专业里好多研究生导师都在拚命往机器学习方向靠拢(反倒是计算机学院的对这个没有多大热度),我了解了两个研究生所做的内容,我觉得研究生几年不值得花在做这个上……所以才会有这个问题。

强调自己不是计算机、数学等相关专业,是隐约感到自己专业的研究生可能更注重于应用层面而不是背后的演算法研究(做底层的演算法和研究当然是很牛的),这样研究生几年下来,能够学到本领吗?那些研究生的学习是那种充满创造性的研究吗?希望一些类似处境的同学或者了解研究生以及他们毕业后的情况的大佬介绍一下情况和感受吧


怎么说呢,我之前和lz一样,觉得演算法就是无脑用model,眼缘调参+feature engineer,在学校快乐摸鱼加嘲讽。

结果后来打了个比赛,发现不同的model如何调参很难,如何使用更新的工具更难(RL,GAN),或者不同的信息如何融合,新的特征如何添加,这些都是需要对任务和数据集足够了解才能做到的。最后用上复杂的model和有效的参数还是超级畅快的

当然啦,看了上文的描述,感觉lz智商肯定不低,但是如果我上面说的这些快乐lz觉得无感的话,那就说明不太适合这个领域喽


难!难!难!

简单地了解一个演算法很简单。但是了解一个演算法为什么能称之为一个演算法,或者简单点说,为什么能学习,则很难!

举个例子,比如说knn,你觉得没什么技术含量啊!很简单啊!但是基本上所有了解ml原理:可学习性、收敛性以及样本复杂的的人都知道,想要说明白为什么knn可以成功滴学习很难,需要几张纸的证明。(这就是统计学家往往要干的事情,写一些实践人士认为毫无用处的事情。)这样的收敛性包括:是否随著样本的增加,train loss和validation loss都会越来越小(理论证明),需要多少的样本才能让k已知的knn演算法一定会达到好的效果,k与loss之间的关系,以及其他非常实用的部分。(不像计算机学者:做实验!做模拟!理论多困难啊!证明不做!做实验不就知道几个参数和loss之间的关系了嘛!484傻啊!...虽然可能他们连train和validation的loss都分不清...)

Plus,演算法收敛性的定义,以及knn以及其他一些演算法的收敛性你可以从这个里面管中窥豹:https://www.cs.huji.ac.il/~shais/Lectures2014/lecture5.pdf


传统的机器学习还是很有技术含量的;

现在Deep Learning, 视觉那一块堆架构的确实没啥含量。没含量到了什么程度呢,到了Google AutoML组可以自动生成的地步。。


题目描述的意思是不是「用已有的方法解决问题,技术含量不大」?

本科生水平应该是:能学会已有知识,解决一个小问题。 题主水平应该更高,所以觉得简单。

随便来俩科研问题,「如何提升CNN的效率而不丧失性能?」、「如何增加模型的学习能力?」

再来俩工程问题,「图片分类很成熟,那电商上千万种商品,如何让商品图片分类 快、准且省电?」、「语音识别很成熟,如何实现会议现场的精准实时传译?」

机器学习在理论、工程上都有大量问题需要解决,欢迎题主继续深入研究。


机器学习在应用层面的技术含量当然不在于调用别人已经封装好的东西再随便调调参,改改模型结构,效果涨一两个点,这基本是最没意思的事情了,在业界我们通常用它来休息。我老大曾对组里一个人说过「你这个双月在调模型,那不正是做做分析想想整个策略-产品还有什么不足的好时间」。

它在应用层面的技术含量更多的是工程问题:

- 如果数据量上去了,还能保持同样的计算和响应速度吗?可以相信我,样本和特征扩大十倍百倍,原来不是问题的都会变成问题。

- 能保证模型学习效果吗,具体来说在模型出了问题时是否有兜底方案,是否能通过对于原理的了解及时监控到出问题的部分?

- 我手头的这个问题是不是一个可以建立合适的机器学习工程管道的问题,还是本质上就必须靠人工来解决?

- 怎么写出优美的代码使得业务和模型具有可扩展性?

- 模型那么多,研究那么多,api那么多,怎么才好快速阅读,筛选出对手头的场景有用的新成果拿来试试?

同样的,(我理解的)题主可能期待或者理解的技术含量也不在如何应用机器学习层面,而在机器学习模型本身的层面,因为我注意到题主提了几个猜测的机器学习研究方向。 研究者们要做的事情是很多的,比如

- 对于解决问题,有没有什么新颖的想法和洞见?这点极为重要,新颖的想法本身就是一种贡献,就算目前看起来还用不上或者作用不大。举例:比如大家都在逻辑回归的时候提出函数逼近思想下的产物GBDT,比如提供BP通用计算框架的神经网路尽管沉寂20年但如今迎来爆发式增长。这些都是事后看来很简单但其实非常有思想洞见的经典研究。现在也有很多并不火爆但有人默默坚持和耕耘的方向。你觉得「不受外力的物体会保持静止或做匀速直线运动」简单吗?

- 对于已经有的想法,在各种场景下的表现怎么样,有没有理论上的理解或者性质来帮助人们有规律地认识这种表现?「统计机器学习」(注:和传统统计研究的方向和框架还是有较大区别; 普通机器学习材料 or 博客也较少见到这一方向) 就是这一方向的佼佼者。

- 为了实现新颖的想法,每一单独步骤有没有优化的空间?举一些题主应该会知道的经典例子:理论上如最优化问题、随机矩阵问题,实践上如Lightgbm、神经网路的权值共享、word2vec的霍夫曼树等。顺便说一下,这些优化本身就是新颖的思想,只不过解决的问题相对来说不是一个整体问题而是一个局部问题。另外由于机器学习的研究重心有一大部分在业界,所以工程问题的研究确实不少,trick的解决方案也不少,看上去没那么理论; 有一部分也算是在解决通用的应用层面问题吧,比如模型速度优化好了对于使用模型的真-应用层面就可以少关心点这个问题,直接享受到好处。

再有,由于机器学习或者说人工智慧本身是一个过热的热点,许多研究方向都想来蹭蹭热点,用方法解决自身领域的问题,发论文相对容易嘛。有的研究也颇具启发性,但我看过的更多研究还是在水论文...我甚至还见过各种在人文社科历史领域不扎扎实实积累数据、深入理论、文献考证与调查,就想用机器学习蹭热点的事...这点题主完全可以不被蛊惑,可以结合自身的领域知识看看你见到的现象到底是在水还是对解决问题提供启发真有帮助。如果是水,等热潮褪去,他们自然就不搞了。

最后,如果题主觉得自己的整体能力超过常人,那你不妨认识到,大部分普通人就是在熟练地做著技术含金量并不那么高但机器又暂时搞不定的工作,这在每个时代都是一样的,能力所限嘛(比如我自己哈哈哈)。不然码农这个词是怎么来的呢?


恩,所以你能写出一段能战胜围棋一段选手的机器学习代码吗?


推荐阅读:
相关文章