人工智能,已经跌入到两三年前大数据风口上,全民皆“数据科学家”的套路里了。

到底做什么,算是入行AI?

这个话题其实在笔者之前的几个chat里面已经反复提到过了,在此再说一遍:工业界直接应用AI技术的人员,大致可以分为三个不同角色:算法、工程,和数据。

现在各种媒体上,包括 GitChat 中有大量的文章教大家怎么入行AI,怎么成为具体某个领域的工程师,告诉大家要在某领域内发展需要掌握的技术栈是什么,等等……

我们不说怎么能够成为XXX,我们先来看看成为XXX之后要做什么事情,而做这些事情,需要什么样的能力,在拥有了这些能力、做上了这件事情之后,又能向什么方向发展。

换言之,本文中,我们将从直观的角度,管窥承担不同角色工作所需要具备的素质,日常工作的状态,和职业发展路径。

做算法

1.1 日常工作

所有人都想做算法,那么,说到底,在工业界做算法倒是干什么?

真正的算法工程师(也有公司叫科学家),最基本的日常工作其实是:读论文&实现之——确认最新论文中的阐述是否真实可重现,进一步确认是否可应用于本企业的产品,进而将其应用到实践中提升产品质量。最后,如果你的时间不是很紧张,并且又想快速的提高,最重要的是不怕吃苦,建议你可以联系:mengy7762 ,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~

1.2 必备能力

既然日常工作首先是读别人论文。那么,必不可少,作为算法工程师得具备快速、大量阅读英语论文的能力。

有一个网站,所有有志于算法的同学必须要知道:https://arxiv.org ——这里有多个学科(包括computer science)大量的最新论文。

现在许多科学家、学者、研究人员和博士生在论文刚刚完成,尚未在正式期刊会议上发表时就先将论文发布在此处,为的是在尽量短的时间延误下对外传播自己的成果。

传统的正规渠道,从论文完成到正式发表之间存在短则三四个月,长则一年半载的延迟。这对一些传统学科,还勉强可以接受。

但计算机科学,尤其是人工智能、机器学习、深度学习这几个当今世界最热门的主题,大家都在争分夺秒地抢占制高点,几个月的耽搁根本不能容忍。

因此,对于AI的学术性文献而言,arxiv.org 实际上已经成为了当前的集大成之地。

如果要做算法,平均而言,大致要保持每周读一篇最新论文的频率。

也许这就是为什么,到目前为止,笔者所听闻和见过的算法工程师都是名校相关专业博士的原因。

经过几年强化学术研究训练,这些博士们,就算英语综合水平不过 CET-4,也能读得进去一篇篇硬骨头似的英语论文!

1.3 自测“算法力”

但当然不能说硕士、学士或者其他专业的有志之士就做不成算法了。人都不是生而知之,不会可以学嘛。

但是到底能不能学会,其实也并不需要三年五载的时间,花费几万十几万金钱在各种培训或者付费阅读上才能够知道。

有个很简单的验证方法:现在就去https://arxiv.org找一篇论文(比如这篇:Dynamic Routing Between Capsules),从头到尾读一遍。

现在不懂没关系,至少先试试在不懂的情况下能不能把它从头到尾一字不漏的读完,有不认识的字查字典。

如果这都做不到,还是当机立断和“算法”分手吧。既然注定无缘,何必一味纠缠?

1.4 学术实践能力

如果,碰巧你喜欢读论文,或者就算不喜欢也有足够强大的意志力、专注力压迫自己去强行阅读论文。那么恭喜你,你已经跨上了通往算法山门的第一级台阶。最后,如果你的时间不是很紧张,并且又想快速的提高,最重要的是不怕吃苦,建议你可以联系:mengy7762 ,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~

下面一级是:读懂论文。

既然要读论文,读最新论文,而且阅读的目的是指导实践,那么自然要读懂。拿起一篇论文就达到懂的程度,至少需要下面这三种能力:

1.4.1 回溯学习能力

一篇论文拿来一看,一大堆名词术语不懂,它们互相之间是什么关系也不知道。怎么办?去读参考文献,去网上搜索,去书籍中查找……总之,动用一切资源和手段,搞清不明概念的含义和联系。

这种能力是学术研究的最基础能力之一,一般而言,有学术背景的人这一点不在话下。

如果现在没有,也可以去主动培养,那么可能首先需要学习一下学术研究方法论。

1.4.2 数学能力

如果只是本着学习的目的读经典老论文,那么只要清楚文中图表含义,看公式推导明白一头一尾(最开始公式成立的物理意义,以及结束推导后最终形式所具备的基本性质)也就可以了。

但读最新论文就不同。因其新,必然未经时光检验,因此也就没人预先替你验证的它的正确性。

在这种情况下,看公式就得看看推导了。否则,外一是数学推导有错,导致了过于喜人的结果,却无法在实践中重现,岂不空耗时力?

如果目前数学能力不够,当然也可以学。但就与后面要说的做工程用到什么学什么的碎片化学习不同,做算法,需要系统学习数学。

微积分、线性代数、概率统计,是无法回避的。如果在这方面有所缺乏,那还是先从计算机系的本科数学课开始吧,个人推荐北师大教材。

做工程

2.1 日常工作

相对于算法的创新和尖端,做工程要平实得多。

这一角色比较有代表性的一种岗位就是:机器学习工程师(或戏称调参工程师)——他们使用别人开发的框架和工具,运行已有算法,训练业务数据,获得工作模型。

其间可能需要一些处理数据、选取特征或者调节参数的手段,不过一般都有据可循,并不需要自己去发明一个XXXX。

做工程也得读论文,不过和做算法不同,做工程读论文的一般目的不是尝试最新方法,而是用已知有效的方法来解决实际问题。

这就导致了,做工程的,读的经常是“旧”论文,或者相对学术含量低一些(不那么硬)的论文。

而且在阅读时,主要是为了直接找到某个问题的处理方法,因此,可以跳读。

对于其中的数学公式,能够读懂头尾也就可以了。论文阅读频率和学术深度的要求,都比做算法低得多。

当然,既然是有领域的程序员,在专业上达到一定深度也是必要的。

虽然做工程一般要使用现成技术框架,但并不是说,直接把算法当黑盒用就可以做一名合格的“调参”工程师了。

把算法当黑盒用的问题在于:黑盒能够解决问题的时候,使用方便,而一旦不能解决问题,或者对质量有所要求,就会感觉无所适从。

做工程,「机器学习」学到多深够用

当然,既然是有领域的程序员,在专业上达到一定深度也是必要的。

虽然做工程一般要使用现成技术框架,但并不是说,直接把算法当黑盒用就可以做一名合格的“调参”工程师了。

把算法当黑盒用的问题在于:黑盒能够解决问题的时候,使用方便,而一旦不能解决问题,或者对质量有所要求,就会感觉无所适从。

做数据

此处说得做数据并非数据的清洗和处理——大家可以看到做工程的岗位,有一部分工作内容就是 ETL 和处理数据。此处说的做数据是指数据标注。

3.1 标注数据的重要性

虽然机器学习中有无监督学习,但在实践领域被证明有直接作用的,基本上还都是有监督模型。

近年来,深度学习在很多应用上取得了巨大的成功,而深度学习的成功,无论是图像、语音、NLP、自动翻译还是AlphaGo,恰恰依赖于海量的标注数据。

无论是做ML还是DL的工程师(算法&工程),后者有甚,都共同确认一个事实:现阶段而言,数据远比算法重要。

3.2 数据人工标注的必要性

数据标注的日常工作

简单说:数据标注的日常工作就是给各种各样的数据(文本、图像、视频、音频等)打上标签。

【好消息】:数据标注工作几乎没有门槛。一般任何专业的大学毕业生,甚至更低学历,都能够胜任。上手不需要机器学习之类的专业知识。

【坏消息】:这样一份工作,是纯粹的“脏活累活”,一点都不cool,起薪也很低。

打个不太恰当的比喻:

做算法是屠龙,仗剑江湖,天外飞仙;

做工程是狩猎,跃马奔腾,纵酒狂歌;

做数据是养猪,每天拌猪食清猪粪,一脸土一身泥。

所以,虽然这是一件谁都能干的工作,但是恐怕,没几个人想干。

认清形势,脚踏实地

近来一段时间,能明显感到,想入行AI的人越来越多,而且增幅越来越大。

为什么这么多人想入行AI呢?真的是对计算机科学研究或者扩展人类智能抱着无限的热忱吗?说白了,大多数人是为了高薪。

人们为了获得更高的回报而做出选择、努力工作,原本是非常正当的事情。关键在于,找对路径。

寻求入行的人虽多,能真的认清市场当前的需求,了解不同层次人才定位,并结合自己实际寻找一条可行之路的人太少。

人人都想“做算法”,却不想想:大公司里的研究院养着一群高端科学家,有得是读了十几二十年论文始终站在AI潮头的资深研究人员。

下面分享,ShuffleNet算法详解

算法详解:

**ShuffleNet是Face++的一篇关于降低深度网络计算量的论文,号称是可以在移动设备上运行的深度网络。**这篇文章可以和MobileNet、Xception和ResNeXt结合来看,因为有类似的思想。卷积的group操作从AlexNet就已经有了,当时主要是解决模型在双GPU上的训练。ResNeXt借鉴了这种group操作改进了原本的ResNet。MobileNet则是采用了depthwise separable convolution代替传统的卷积操作,在几乎不影响准确率的前提下大大降低计算量,具体可以参考MobileNets-深度学习模型的加速。Xception主要也是采用depthwise separable convolution改进Inception v3的结构。

该文章主要采用channel shuffle、pointwise group convolutions和depthwise separable convolution来修改原来的ResNet单元,接下来依次讲解。

channel shuffle的思想可以看下面的Figure 1。这就要先从group操作说起,一般卷积操作中比如输入feature map的数量是N,该卷积层的filter数量是M,那么M个filter中的每一个filter都要和N个feature map的某个区域做卷积,然后相加作为一个卷积的结果。假设你引入group操作,设group为g,那么N个输入feature map就被分成g个group,M个filter就被分成g个group,然后在做卷积操作的时候,第一个group的M/g个filter中的每一个都和第一个group的N/g个输入feature map做卷积得到结果,第二个group同理,直到最后一个group,如Figure1(a)。不同的颜色代表不同的group,图中有三个group。这种操作可以大大减少计算量,因为你每个filter不再是和输入的全部feature map做卷积,而是和一个group的feature map做卷积。但是如果多个group操作叠加在一起,如Figure1(a)的两个卷积层都有group操作,显然就会产生边界效应,什么意思呢?就是某个输出channel仅仅来自输入channel的一小部分。这样肯定是不行的的,学出来的特征会非常局限。于是就有了channel shuffle来解决这个问题,先看Figure1(b),在进行GConv2之前,对其输入feature map做一个分配,也就是每个group分成几个subgroup,然后将不同group的subgroup作为GConv2的一个group的输入,使得GConv2的每一个group都能卷积输入的所有group的feature map,这和Figure1(c)的channel shuffle的思想是一样的。

pointwise group convolutions,其实就是带group的卷积核为11的卷积,也就是说pointwise convolution是卷积核为11的卷积。**在ResNeXt中主要是对33的卷积做group操作,但是在ShuffleNet中,作者是对11的卷积做group的操作,因为作者认为11的卷积操作的计算量不可忽视。**可以看Figure2(b)中的第一个11卷积是GConv,表示group convolution。Figure2(a)是ResNet中的bottleneck unit,不过将原来的33 Conv改成33 DWConv,作者的ShuffleNet主要也是在这基础上做改动。首先用带group的11卷积代替原来的11卷积,同时跟一个channel shuffle操作,这个前面也介绍过了。然后是3*3 DWConv表示depthwise separable convolution。depthwise separable convolution可以参考MobileNet,下面贴出depthwise separable convolution的示意图。Figure2(c)添加了一个Average pooling和设置了stride=2,另外原来Resnet最后是一个Add操作,也就是元素值相加,而在(c)中是采用concat的操作,也就是按channel合并,类似googleNet的Inception操作。

下图就是depthwise separable convolution的示意图,其实就是将传统的卷积操作分成两步,假设原来是33的卷积,那么depthwise separable convolution就是先用M个33卷积核一对一卷积输入的M个feature map,不求和,生成M个结果,然后用N个1*1的卷积核正常卷积前面生成的M个结果,求和,最后得到N个结果。具体可以看另一篇博文:MobileNets-深度学习模型的加速。

Table 1是ShuffleNet的结构表,基本上和ResNet是一样的,也是分成几个stage(ResNet中有4个stage,这里只有3个),**然后在每个stage中用ShuffleNet unit代替原来的Residual block,这也就是ShuffleNet算法的核心。**这个表是在限定complexity的情况下,通过改变group(g)的数量来改变output channel的数量,更多的output channel一般而言可以提取更多的特征。

实验结果:

Table2表示不同大小的ShuffleNet在不同group数量情况下的分类准确率比较。ShuffleNet s表示将ShuffleNet 1的filter个数变成s倍。arch2表示将原来网络结构中的Stage3的两个uint移除,同时在保持复杂度的前提下widen each feature map。Table2的一个重要结论是group个数的线性增长并不会带来分类准确率的线性增长。但是发现ShuffleNet对于小的网络效果更明显,因为一般小的网络的channel个数都不多,在限定计算资源的前提下,ShuffleNet可以使用更多的feature map。

Table3表示channel shuffle的重要性。

Table4是几个流行的分类网络的分类准确率对比。Table5是ShuffleNet和MobileNet的对比,效果还可以。

总结:

**ShuffleNet的核心就是用pointwise group convolution,channel shuffle和depthwise separable convolution代替ResNet block的相应层构成了ShuffleNet uint,达到了减少计算量和提高准确率的目的。channel shuffle解决了多个group convolution叠加出现的边界效应,pointwise group convolution和depthwise separable convolution主要减少了计算量。**最后,如果你的时间不是很紧张,并且又想快速的提高,最重要的是不怕吃苦,建议你可以联系:mengy7762 ,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~

好了,今天的知识就分享到这里,欢迎关注欢迎关注python教程入门学习,私信关键词:学习资料,获取更多学习资源,如果文章对你有有帮助,请收藏关注,在今后与你分享更多学习python的文章。同时欢迎在下面评论区留言如何学习python。

人工智能入门,怎么选择脚踏实地的工作岗位?相关推荐

  1. 人工智能未来的九种新兴工作岗位

    人工智能正迅速成为区别业务优劣的因素.下面来看看你即将需要为人工智能精英团队填补的关键职位和技能. 人工智能有望改变各行各业,随之而来许多工作职能会发生巨变.在未来的几年,组织中的许多职位都或多或少在 ...

  2. 人工智能入门学习-人工智能岗位超吃香

    导读:人工智能(Artificial Intelligence),英文缩写为Al.它是研究.顸用于模拟.延伸和扩展人的智能的理论.方法.技术及应用系统的一门新的技术科学. 人工智能是计算机科学的一个分 ...

  3. 【人工智能】2028:AI创造了哪些工作?未来10年21个核心工作岗位 。

    来源:  新智元   新智元编译   来源:cognizant.com 编译:费欣欣 [新智元导读]Cognizant信息技术公司资助进行了一项调查,根据今天可观察到的主要宏观经济.政治.人口.社会. ...

  4. 未来10年,美国47%的工作岗位将被人工智能取代?深入剖析ChatGPT

    送走最后一车货,最后三个工人,老王吃力的关上大铁门.左手从口袋摸出一盒烟,轻轻一颠,滑落一根,右手娴熟的夹住.掏出打火机,点燃,一丝青烟腾起,萦绕在指头. 夕阳穿过玻璃,照射在伤痕累累的旧机器上,空旷 ...

  5. Gartner:到2020年人工智能将创造出230万个工作岗位

    12月15日消息,据<经济时报>报道,研究机构Gartner表示,到2020年,人工智能(AI)将导致180万个工作岗位被淘汰,但届时也将创造230万个工作岗位.根据Gartner的一份统 ...

  6. Forrester报告:人工智能将取代6%的工作岗位

    这个预测准不准呢? 近期,研究机构Forrester发布了一份最新报告,报告内容显示,五年之内,机器人和所谓的智能代理将会削减客服.卡车.出租车服务中6%的工作岗位. "到2021年,一波颠 ...

  7. 人工智能年薪百万的工作岗位,主要有哪些?

    随着深度学习技术的成熟,AI人工智能正在逐步从尖端技术慢慢变得普及.从走在前沿的科技公司,到努力创新的传统行业,几乎每家公司都想把握这个新"风口".而人工智能的核心就是人才,那么对 ...

  8. 入行 AI,如何选个脚踏实地的高薪岗位?

    [Case 1] 居然在一个月里碰到两位在相对传统行业创业的亲友,来打听将AI技术应用到他们所在行业上的问题,例如:是聊天机器人是否可以代替人工客服. 两位亲友居然都动了雇佣一位算法工程师的念头.其中 ...

  9. 智慧城市的发展过程中,最需要的15个工作岗位

    1.机器学习科学家 随着城市越来越多地利用物联网,并能够从现有资源中收集更多关于天气.交通等的数据,随后通过第三方应用程序对数据进行挖掘,数据科学家不仅需要从数据中分析和创造更多价值,还需要连接数据孤 ...

最新文章

  1. 深入浅出Docker(一):Docker核心技术预览
  2. 让Visual Studio 也支持JS代码折叠 [ Visual Studio | #region | #endregion ]
  3. 用Jmeter进行接口测试及乱码问题
  4. Jenkins【环境搭建 01】两种方式+两种环境部署最新版本 Jenkins v2.303.2 WAR包(直接使用 java -jar+使用Tomcat的Web端部署)
  5. 特斯拉对手再秀“肌肉”,Lucid Motors展示电动汽车雪上漂移
  6. Linux内核深入理解中断和异常(7):中断下半部:Softirq, Tasklets and Workqueues
  7. 《那些年啊,那些事——一个程序员的奋斗史》八
  8. Oracle 11g下载及安装
  9. 云计算发展趋势-华为HCIA云计算学习笔记六
  10. 学历证书查询唯一网站
  11. 蚁群算法画图java_[转载]简单蚁群算法 + JAVA实现蚁群算法
  12. Linux搭建部署JDK1.7环境
  13. WinRAR的命令行模式与用法介绍
  14. java计算两个日期的月数
  15. 关于IllegalStateException: Bindings already cleared
  16. Android 图案解锁 9宫格密码解锁
  17. 拼多多猛击阿里,极兔狠怼三通一达,段永平要挑战马云?
  18. 小红书编辑器_校招 | 微软、百度、小红书等校招已开启,尽快投递!
  19. typescript77-在CRA创建支持ts的项目
  20. VB编程:全局变量控件数组实例简单计算器-12

热门文章

  1. mysql drop 权限_MySQL procedure drop权限问题
  2. 所有controller interceptor_filter、interceptor、aspect不知如何选择
  3. jwt重放攻击_JWT+ASP.NET MVC 时间戳防止重放攻击
  4. 学python看书还是视频效率高_学习是看书还是看教学视频更有效率?
  5. Node mysql mvc vue_net MVC +Vue.js+Element UI 笔记
  6. hashmap怎么取值_HashMap?面试?我是谁?我在哪?我会啥?
  7. iphone微信美颜插件_iOS13.5 插件分享
  8. php 多文件上传与下载,php实现文件下载跟多文件上传
  9. UML-基于GRASP对象设计步骤
  10. KITTI数据集的使用——雷达与相机的数据融合