作为一名Android开发工程师,身边总有些同行很焦虑,看着人工智能越来越火,总是担心Android要不行了,所以,我们需要转行么?Android还能走多久?其实,无论是对于Android还是iOS开发者而言,我们更应该做的是稳固提升自己的技术,活到老学到老,时刻与不断发展的框架、标准和范式保持同步。同时,还要能活学活用,在工作中使用最合适的工具,以提高工作效率。随着机器学习在越来越多的应用程序中寻得了一席之地,越来越多的程序员加入AI领域,那么,入行AI领域需要哪些技能呢?

人工智能到底有多火

我相信大家之所以能来看这篇文章,也间接说明了人工智能这几年的火爆。在开发一个App越来越方便的今天,聊天可以用环信SDK,推送可以用Jpush,地图可以用百度和高德,集成社群公会系统可以用GangSDK……开发的门槛越来越低,多方位SDK的集成已经给我们省去了大量的时间人力成本,拔高和学习,我们需要从哪些方面入手?

自从基于深度学习技术的算法2012年在ImageNet比赛中获得冠军以来,深度学习先是席卷了整个学术界,后又在工业界传播开来,一瞬间各大企业如果没有AI部门都不好意思对外宣传了。BAT中,百度宣布“All In AI”,阿里建立了达摩院及AI实验室,腾讯也在前不久会议上宣布“Ai In All”,并具有腾讯优图、AI Lab和微信AI实验室。2017年7月20日,国务院发布《新一代人工智能发展规划》,将人工智能上升为国家战略,为中国人工智能产业做出战略部署,对重点任务做出明确解析,抢抓重大机遇,构筑我国人工智能发展的先发优势。

技术的发展往往遵循一个可预期的模式,先是萌芽,然后炒作,而后幻灭,接着才是技术成熟后的稳步爬升,最后到达应用高峰。研究分析机构Gartner每年都会推出这样一个分析新兴技术发展趋势的技术炒作周期报告。前段时间,Gartner发布了2017年的新兴技术炒作周期报告,报告聚焦了前端、后端与平台发展的三大趋势,提出了AI将无所不在(人工智能),体验将透明化和沉浸式(AR、VR),以及平台全面数字化(区块链)的观点,建议企业架构师和对技术创新有追求的人员应该积极探索和关注这三大趋势,从而了解掌握这三大趋势对自己公司和自己职业发展的未来影响。简单来说这三大趋势分别对应于括号中我备注的大家平时耳熟能详的词语。从曲线图可以看出,物联网、虚拟助手、深度学习、机器学习、无人车、纳米电子、认知计算以及区块链正处在炒作的高峰。实际上AR、VR属于计算机视觉,也可以归于人工智能范畴,因此总体上来说,未来人工智能将无处不在。

Gartner把深度学习、强化学习、常规人工智能、无人车、认知计算、无人机、会话式用户接口、机器学习、智能微尘、智能机器人、智能工作环境等均列为AI技术范畴。在人机大战等吸引眼球的活动助推下,很多AI技术目前正处在炒作的高峰期。比如深度学习、机器学习、认知计算以及无人车等。对比2016年的炒作周期曲线可以发现,有些太过超前的概念仍然不愠不火,比如智能微尘。有些概念因为炒作过高已经迅速进入到了幻灭期,比如商用无人机去年还处在触发期,今年就已经接近幻灭期边缘了。相对而言,正处在炒作高峰的深度学习和机器学习技术有望在2到5年内达到技术成熟和模式成熟。

除了人工智能这么火之外,对于软件工程师,尤其是移动端开发工程师,有一点我们更要关注,那就是移动端深度学习逐渐成为新的深度学习研究趋势。未来会有越来越多的基于深度学习的移动端应用出现,作为开发者的我们了解深度学习更有助于我们开发出优秀的应用,同时提升自身能力,积极抓住机会,应对未来各种变化。

什么是机器学习(Machine Learning,ML)?

深度学习的基础是机器学习,事实上深度学习只是机器学习的一个分支。因此我们要入门深度学习就要先了解一些机器学习的基础知识。机器学习最基本的做法,是使用算法来解析数据、从中学习,然后对真实世界中的事件做出决策和预测。与传统的为解决特定任务、硬编码的软件程序不同,机器学习是用大量的数据来“训练”,通过各种算法从数据中学习如何完成任务。

有人曾举过一个例子,很形象生动,当你使用手机的语音识别进行唤醒时,有没有想过实现这一功能的全部内部流程呢?我们日常交互的大部分计算机程序,都可以使用最基本的命令来实现,但是基于机器学习的程序却没有那么简单,想象下如何写一个程序来回应唤醒词,例如“Okay,Google”,“Siri”,和“Alexa”。如果在一个只有你自己和代码编辑器的房间里,仅使用最基本的指令编写这个程序,你该怎么做?不妨思考一下……这个问题非常困难。你可能会想像下面的程序:

ifinput_command=='Okey,Google':

run_voice_assistant()

但实际上,你能拿到的只有麦克风里采集到的原始语音信号,可能是每秒44,000个样本点。怎样才能识别出语音内容?或者简单点,判断这些信号中是否包含唤醒词。

如果你被这个问题难住了,不用担心。这就是我们为什么需要机器学习。

虽然我们不知道怎么告诉机器去把语音信号转成对应的字符串,但我们自己可以。换句话说,就算你不清楚怎么编写程序,好让机器识别出唤醒词“Alexa”,你自己完全能够 识别出“Alexa”这个词。由此,我们可以收集一个巨大的数据集(dataset),里面包含了大量语音信号,以及每个语音型号是否对应我们需要的唤醒词。使用机器学习的解决方式,我们并非直接设计一个系统去准确地辨别唤醒词,而是写一个灵活的程序,并带有大量的参数(parameters)。通过调整这些参数,我们能够改变程序的行为。我们将这样的程序称为模型。总体上看,我们的模型仅仅是一个机器,通过某种方式,将输入转换为输出。在上面的例子中,这个模型的输入是一段语音信号,它的输出则是一个回答{yes, no},告诉我们这段语音信号是否包含了唤醒词。

如果我们选择了正确的模型,必然有一组参数设定,每当它听见“Alexa”时,都能触发yes的回答;也会有另一组参数,针对“Apricot”触发yes。我们希望这个模型既可以辨别“Alexa”,也可以辨别“Apricot”,因为它们是类似的任务。这时候你大概能猜到了,如果我们随机地设定这些参数,模型可能无法辨别“Alexa”,“Apricot”,甚至任何英文单词。在而大多数的深度学习中,学习就是指在训练过程中更新模型的行为(通过调整参数)。

换言之,我们需要用数据训练机器学习模型,其过程通常如下:

1.初始化一个几乎什么也不能做的模型;
2.抓一些有标注的数据集(例如音频段落及其是否为唤醒词的标注);
3.修改模型使得它在抓取的数据集上能够更准确执行任务;
4.重复以上步骤2和3,直到模型看起来不错。

什么是机器学习算法?从本质上讲,机器学习采用了可以从数据中学习和预测数据的算法。这些算法通常来自于统计学,从简单的回归算法到决策树等等。

什么是机器学习模型?一般来说,它是指在训练机器学习算法后创建的模型构件。一旦有了一个经过训练的机器学习模型,你就可以用它来根据新的输入进行预测。机器学习的目的是正确训练机器学习算法来创建这样的模型。

机器学习已广泛应用于数据挖掘、计算机视觉、自然语言处理、生物特征识别、搜索引擎、医学诊断、检测信用卡欺诈、证券市场分析、DNA序列测序、语音和手写识别、战略游戏和机器人等领域。虽然深度学习技术的发展,也促进了语音和文本领域的发展,但变化最显著的还是属于计算机视觉领域。而且由于作者是做计算机视觉的,因此这里也没法深入介绍语音和自然语言处理领域的过多细节,就简要介绍下计算机视觉领域的技术发展和相关的应用,后续的实验环节,大部分也会是基于深度学习的图像应用为主。

社群公会GangSDK:程序员入行AI领域需要哪些技能?的更多相关文章

  1. 程序员们,AI来了,机会来了,危机也来了

    程序员们,AI来了,机会来了,危机也来了 1.人工智能真的来了 纵观古今,很少有计算机技术能有较长的发展寿命,大部分昙花一现,比如:昔日的DOS.windows3.2.foxpro.delphi.80 ...

  2. Hello World! 我的程序员入坑之旅!

    先说下本文标题,各行各业都有自己的行规和一些内行人玩的梗什么的,这是我开始写技术博客的第一篇,所以它的标题毫无疑问只能是Hello World! 介绍一下我自己 我算是一个少见的科班出身的开发者了,1 ...

  3. [程序猿入行必备]CSS样式之优先级

    专业玩家请移步:http://www.w3.org/TR/CSS2/cascade.html 使用CSS控制页面样式时,常常出现设定的样式被"覆盖",不能生效的情况. 浏览器是根据 ...

  4. IT观察】网络通信、图片显示、数据库操作……Android程序员如何利用开源框架

    每个Android 程序员都不是Android应用开发之路上孤军奋战的一个人,GitHub上浩如烟海的开源框架或类库就是前人为我们发明的轮子,有的轮子能提高软件性能,而有的轮子似乎是以牺牲性能为代价换 ...

  5. 人才需求之Java程序员与AI程序员

    据100offer报告显示:2018年Java人才市场「高开低走」的动荡局势.整体求职难度变大,且全年波动更剧烈,淡旺季区别明显.企业发出的Java面邀总数几个季度连续下跌,Q4 甚至比去年同期下降了 ...

  6. 在培训机构花了好几万学Java,当了程序员还常被鄙视,这是招谁惹谁了?

    在之前的文章中说过,我是非计算机专业,通过参加培训进入程序员这行的. 入了程序员这行后,挺长一段时间在亲戚朋友中,我还是挺有面子的:家族里的第一个程序员,工作不用风吹日晒,收入比其他行业高不少,尤其是 ...

  7. 程序员的“三十而已”,你都30岁了,不会还在XXX吧?

    一部<三十而已>火了 太太们的包包鄙视链出圈了 有人的地方就有江湖 是的,程序员入圈是容易的 不需要4万的LV,更不需要限量版的爱马仕 只需要一件耐躁的格子衫 然而,程序员的30岁, 却说 ...

  8. 2017PHP程序员的进阶之路

    2017PHP程序员的进阶之路 又是一年毕业季,可能会有好多毕业生即将进入开发这个圈子,踏上码农这个不归路.根据这些年在开发圈子总结的LNMP程序猿发展轨迹,结合个人经验体会,总结出很多程序员对未来的 ...

  9. PHP程序员的进阶之路

    第1阶段:初级PHP程序员 重点:把LNMP搞熟练(核心是安装配置基本操作)目标:能够完成基本的LNMP环境安装,简单配置维护:能够做基本的简单系统的PHP开发:能够在PHP中型系统中支持某个PHP功 ...

随机推荐

  1. haproxy + keepalived 实现网站高可靠

    haproxy 1的配置文件,包括 keepalived 和 haproxy 的配置,分别如下: [haproxy 1的keepalived 配置文件]  /etc/keepalived/keepal ...

  2. DevOps之网络

    唠叨话 关于德语噢屁事的知识点,仅提供专业性的精华汇总,具体知识点细节,参考教程网址,如需帮助,请留言. <网络(Network)> 关于网络的网络架构和网络模型:知识与技能的层次(知道. ...

  3. iOS之浅谈纯代码控制UIViewController视图控制器跳转界面的几种方法

    .最普通的视图控制器UIViewContoller 一个普通的视图控制器一般只有模态跳转的功能(ipad我不了解除外,这里只说iPhone),这个方法是所有视图控制器对象都可以用的,而实现这种功能,有 ...

  4. 图论 Warshall 和Floyd 矩阵传递闭包

    首先我们先说下图论,一般图存储可以使用邻接矩阵,或邻接表,一般使用邻接矩阵在稠密图比较省空间. 我们来说下有向图,一般的有向图也是图,图可以分为稠密图,稀疏图,那么从意思上,稠密图就是点的边比较多,稀 ...

  5. ubuntu 14.04 vim YoucompleteMe 代码自动补全工具安装

    安装步骤如下: sudo apt-get install vim ; sudo apt-get install vim-youcompleteme ; sudo apt-get install vim ...

  6. JS中的类型识别

    JS为弱类型语言,所以类型识别对JS而言尤为重要,JS中常用的类型识别方法有4种:typeof.Object.prototype.toString.constructor和instanceof. (1 ...

  7. Awesome Projects (汇聚全球所有🐮项目,你值得拥有)

    Awesome Projects SkySeraph Oct 2017 Email:skyseraph00@163.com 更多精彩请直接访问SkySeraph个人站点:www.skyseraph.c ...

  8. vue.js快速搭建图书管理平台

      前  言 上一期简单讲解了vue的基本语法,这一次我们做一个小项目,搭建一个简单的图书管理平台,能够让我们更深刻的理解这门语言的妙用.   1.DEMO样式 首先我们需要搭建一个简单的demo样式 ...

  9. 解决Python2.7的UnicodeEncodeError:'ascii' codec can't encode characters in position 0-78: ordinal not in range(128)异常错误

    解决Python2.7的UnicodeEncodeError: 'ascii' codec can't encode异常错误 大家都知道,在使用python进行网络爬虫时,最头疼的就是转码问题,下面是 ...

  10. 数据权限设计——基于EntityFramework的数据权限设计方案:一种设计思路

    前言:“我们有一个订单列表,希望能够根据当前登陆的不同用户看到不同类型的订单数据”.“我们希望不同的用户能看到不同时间段的扫描报表数据”.“我们系统需要不同用户查看不同的生产报表列”.诸如此类,最近经 ...