确实,现在做人工智能方向的工程师,有不少被称为“调参侠”,但也并不全是。
以我自己为例,我做cv方向(计算机视觉)的, 调参在我日常工作中占的比例并不大。
在CV这块,除了超参数外,影响模型效果的主要还是要网络结构、数据和损失函数,这三方面确定下来后,调参基本花不了多少时间。
回归正题!
调参侠,到底调什么参?
在人工智能里面,参数大致可分为2大类:
*
参数(parameters)/模型参数:由模型通过学习得到的变量,比如权重w和偏置b,这个多半是不能调节的,它是由神经网络自己学习出来的。
*
超参数:
在机器学习中,超参数是在神经网络训练之前设置值的参数,而不是通过训练得到的参数数据。常见的有学习率、迭代次数、隐藏层的层数、每层神经元的个数等。通常情况下,需要对超参数进行优化,给学习机选择一组最优超参数,以提高学习的性能和效果。这一般是根据经验进行设定,影响到权重w和偏置b大小的数值。
为什么会被称为“调参侠”?
主要原因有以下2个:
*
多半是刚入门的算法工程师做的事情,他们不是很懂神经网络的结构、数据分布等等,只能通过调整超参数,以期望获得较好的结果,这样有时候是可行的;
*
更重要的原因是,GitHub上开源了很多模型,并附上了预训练参数,如常用的检测、分割、分类等等,这些模型都非常成熟,大部分直接调用就可以,然后根据自己的训练数据,稍加修改,就可以得到非常好的结果。公司只要结果,不要求创新,开源项目已经可以做到这点了,所以大多数只要调参即可。
怎么避免成为“调参侠”
目前AI人才竞争越来越激烈,“调参侠”的时代已慢慢过去,这些事情其实根本不需要AI工程师来做,未来的研发工程师就可以承担这些了!
几年前如果熟练使用TensorFlow,同时掌握基本的AI算法就可以很容易找到一份高薪的工作,但现在不一样了,AI岗位的要求越来越高,对知识的深度也提出了更高的要求。
要想跟上时代,得武装自己,才能不被淘汰。
对于真正的人工智能工程师而言,他们往往是从数据和特征下手的,同时还需要丰富的行业经验。一定要记住一句行业内的谚语,数据和特征才决定算法
的上限,而选择的算法和参数只是决定了已逼近这个上限的速度。
--------------------------------------------------------------------------------------------------------------
人工智能领域,还有一群从业者躲在墙角瑟瑟发抖,那就是大家说的调参师。一个神经网络从理论到落地,有这么几个阶段,一个是模型构建,就是把别人论文里的网络搭建起来。然后是模型训练,把自己需要的数据准备好,然后部署到显卡上去跑,这个过程有很多参数要调,很玄,属于老中医看病,全靠经验,妙,不可言。一名调参师的日常是这样的:
调参师接到需求,第一件事就是去github和各种框架的model
zoo上当搬运工。调参师没有设计网络的能力,如果github上没有,就只能看论文动手撸了,不仅费时费力,出了bug还得到处求人。
模型搭好了,调参师开始彻夜整理数据。你果哥有句话常常挂在嘴上,就是有多少人工,就有多少智能。很多时候大家用的模型是一样的,你牛逼就牛逼在有高质量的标注数据。实在没有?威胁老板买买买啊。
数据准备好了,调参师就开始调参了。嗯,先用默认值来一遍,不行,试试小一点的LR呢?不行,换个initializer试试?艾玛,一不小心过拟合了,快快快,加大正则,加大正则还有救。