为什么人工智能工程师被戏称为“调参侠”?

  • A+
所属分类:浩瀚星途
摘要

确实,现在做人工智能方向的工程师,有不少被称为“调参侠”,但也并不全是。以我自己为例,我做cv方向(计算机视觉)的,调参在我日常工作中占的比例并不大。在CV这块,除了超参数外,影响模型效果的主要还是要网络结构、数据和损失函数,这三方面确定下来后,调参基本花不

确实,现在做人工智能方向的工程师,有不少被称为“调参侠”,但也并不全是。

以我自己为例,我做cv方向(计算机视觉)的, 调参在我日常工作中占的比例并不大。

在CV这块,除了超参数外,影响模型效果的主要还是要网络结构、数据和损失函数,这三方面确定下来后,调参基本花不了多少时间。

回归正题!

调参侠,到底调什么参?

在人工智能里面,参数大致可分为2大类:

  1. 参数(parameters)/模型参数:由模型通过学习得到的变量,比如权重w和偏置b,这个多半是不能调节的,它是由神经网络自己学习出来的。

  2. 超参数:在机器学习中,超参数是在神经网络训练之前设置值的参数,而不是通过训练得到的参数数据。常见的有学习率、迭代次数、隐藏层的层数、每层神经元的个数等。通常情况下,需要对超参数进行优化,给学习机选择一组最优超参数,以提高学习的性能和效果。这一般是根据经验进行设定,影响到权重w和偏置b大小的数值。

为什么会被称为“调参侠”?

主要原因有以下2个:

  1. 多半是刚入门的算法工程师做的事情,他们不是很懂神经网络的结构、数据分布等等,只能通过调整超参数,以期望获得较好的结果,这样有时候是可行的;

  2. 更重要的原因是,GitHub上开源了很多模型,并附上了预训练参数,如常用的检测、分割、分类等等,这些模型都非常成熟,大部分直接调用就可以,然后根据自己的训练数据,稍加修改,就可以得到非常好的结果。公司只要结果,不要求创新,开源项目已经可以做到这点了,所以大多数只要调参即可。

怎么避免成为“调参侠”

目前AI人才竞争越来越激烈,“调参侠”的时代已慢慢过去,这些事情其实根本不需要AI工程师来做,未来的研发工程师就可以承担这些了! 几年前如果熟练使用TensorFlow,同时掌握基本的AI算法就可以很容易找到一份高薪的工作,但现在不一样了,AI岗位的要求越来越高,对知识的深度也提出了更高的要求。

要想跟上时代,得武装自己,才能不被淘汰。

对于真正的人工智能工程师而言,他们往往是从数据和特征下手的,同时还需要丰富的行业经验。一定要记住一句行业内的谚语,数据和特征才决定算法 的上限,而选择的算法和参数只是决定了已逼近这个上限的速度

调参并不可耻,好的调参侠,非常厉害

算法工程师技术上讲,基本上只和数据和模型打交道。模型就是一个黑色魔法盒,而这个黑盒子就是通过数据和调参而来。

模型中有两类参数,一类我们叫权重,可学习的参数;一类叫超参,需要不停地实验,来确定下来。所谓调参就是调教的后者。当然这些实验,需要专业的设计技巧,不在本文范围之内,感兴趣的可以找吴恩达老师的书看看。

很多人说算法工程师是调参侠,没技术含量。同样都是xgb,为什么有人能拿冠军有人只能很弱?或许你会说特征工程做的好。但换到图像和文本领域,模型的基本就是搭积木,这种搭积木也算是超参,模型的层数,模型的维度。

一项超分辨率比赛,韩国某支队伍获冠军,把大家都认为理所当然的批标准化去掉,意外获得了冠军。

实践很重要,调参不可耻。调的好,可以拿冠军。甚至可以将调参经验写成一篇论文。谷歌当时就有一篇论文,暴力的将各种函数尝试了一遍,发表一篇论文。

有时候是先走实践,再猜测或推测出来的理论。对不对?别管黑猫白猫,能抓耗子就是好猫。目标为导向。

并不是所有的调音师能超出美妙的音乐。虽然就那么几个音符。调参技巧弄得好,可以发论文,可以提升业务指标,带来利润。

大道朝天,可能就两条路:从理论到实践,或从实践道到理论

  • 要么理论深,可以发各种论文。通过理论指导建模,获得更好的效果。
  • 要么实践牛逼,可以拿各种数据比赛冠军。
  • 要么,都牛逼,那就是天才。比如通过实践发现一种好的方法,然后再通过理论来证明他。

不幸的是,大多数人一种都做不到。

厉害的调参侠,也不是那么容易当的。关键是思考,善于思考反思的人,无论是从理论还是实践,都会比机械重复的拿来主义进步快,更容易成为大侠。

本来就是,有几个能提出来新模型,新思路的,太难了,都是炼丹师,也很难解释为什么

这…

第一次看到这个称呼,不过人工智能领域确实是有点这种问题。

我们举一个简单的例子,就拿现在比较火热的人工智能方法:深度神经网络来说吧。

那么什么是深度神经网络呢?

首先要从神经网络说起。

顾名思义,神经网络就是当年科学家们用模拟人类神经元互相协调工作的办法来实现人工智能的一种理论算法。

在此再解释一句,所谓的神经元,就是人类的思维活动的承载零部件,大家在脑中的一些思维活动都需要有神经元的参与。

那什么又叫深度神经网络呢?

说白了就是几层神经网络叠加在一起。更为具体的原理,我在此就不赘述了,这个深度神经网络较为简单的说法,我们可以举一个比较形象的例子来说明:

现在我们需要解决一个问题,就是如何识别照片里的某个动物,是人还是其他的什么动物。

我们现在采用深度神经网络的办法,来对这张图片进行识别。

那么一个人他具有哪些比较醒目的特征呢?

最为常见的,那就是有一个脑袋,有躯干还有四肢。但是这里就要存在一个问题,像平时生活中常见的小猫,小狗也是有一个脑袋,有一个躯干,也有四肢。所以说我们深度神经网络的第1层问题就是需要把这个人的这个轮廓和猫狗之类的轮廓和人类相似的来区分开来。在此不得不又要引出一个概念轮廓相似,这是一个说简单一点就是拓扑学上的含义。在此就不加深入讲述了,感兴趣的话可以自行搜索拓扑学的相关内容。在使用这个深度神经网络第1层判别人和猫狗之间的区别的时候,它就会存在一个神经网络的参数问题,我们需要将这个参数调整到一个适当的程度,才能将人和动物区分开来。

当然有了第1层区分之后,我们可能还有第2层以及更多层区分,比方说这个人是不是穿了衣服,这个人的肤色这个人的毛发,比方说头发是长在头上,而不是浑身上下都有。在这个时候,这一层的神经网络又会涉及到一个参数调整的问题,将参数调整到合适的值才能让机器正确的识别是否穿衣服,毛发是否都长在头上等等等等。

总之呢,我们从这个深度神经网络的识别的这个流程可以看到现在这些人工智能,实际上就是一个对现有模型中的一些参数进行调整的过程,所以说楼主问题中的这个调参侠确实是名副其实。

做人工智能的人,基本都和数据模型打交道,数据模型除了数据外,还有一个就是模型参数,参数是可调节的,我们通常说的超参数就是要进行调节,去适应数据,当然调参也需要数学功底,对算法的理解,所以,简单的说人家是调参也不太礼貌,人家能做的,你未必能做到。

人工智能在工业领域,他们的实际工作是做特定用途的工程化,并不是研究算法本身。

比如,将某分类算法做圈人决策,说人话就是做活动让哪些用户看到。

工作原理是取得一些数据,在数据上加工再运行算法。 这里面显然数据可能变化,但处理数据的方式是不太变的,算法本身也不会变,因为业界就那么几篇论文,拿来用用。中间的微调就是“调参”工作了。

而一般此类公司业务范围相对固定,就需要持续进行相同的算法流程进行优化调整。

这样一来,他们实际工作就变成调整算法工程执行的维护性工程师了,算法工程师现状。

调参侠其实和写程序所说的码农差不多的意味,是对从事这个行业人员的调侃。比如写程序的,刚开始都会接触增删改查的业务,做多了都会说curd一样。从事人工智能还有许多的其他名称,比如调包侠,指标奴。

人工智能的技术和知识还是很广泛的,并不只是调参。还有数据和特征工程,数学算法知识等。

对一般的机器学习模型而言,都有一个或多个参数需要选定。这里面既有离散型的超参数,也有连续型的超参数,甚至还有条件型的超参数。

离散型的超参数是指那些取值个数有限的超参数,连续型的超参数是指那些取值连续的超参数,而条件型超参数则是指那些需要在设定其他某个超参数为某个特定值后才可以进行设定的超参数。

例如,决策树的超参数不纯度就是一个离散型超参数,它可以是gini指数、熵或者方差中的一种。而逻辑回归的超参数学习率则是连续型,因为其取值范围是大于0.0的任意数值。相比之下,条件型超参数不那么常见,只在少数模型中存在,例如sklearn的SVC里,超参数degree仅在kernel为poly时起作用,而在其他时候无效。

如果将深度学习考虑进来,那么条件型超参数就不那么特别了。例如,对于一个深度神经网络来说,第4层隐藏层上所对应的所有超参数(比如神经元个数和激活函数类型)都有一个存在的前提,那就是隐藏层的数量大于等于4。

正因为有这么多的超参数需要调整,而且某些超参数可能会对最终结果产生巨大的影响,所以初级的机器学习从业人员也被戏称(或自称)为“调参侠”,可见调参的重要性及其所需的巨大时间消耗。

人工智能产品开发包括数据采集、预处理、数据探索、选择算法训练模型。训练模型主要选择梯度下降算法,通过调整激活函数、隐藏层、池化层等不同参数,达到最优解。

能做出有效模型的少之又少,剩下的工程师确实就是剩下调教参数,找数据训练!

搞事情!那些不能说的秘密都在这里   关注公众号:ONE知识  

         

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: