程序员如何转型人工智能(机器学习)
本文是为了准备IAS2017互联网架构峰会而作,我将主持本次大会中《如何转型为一个人工智能工程师?》圆桌论坛的讨论,欢迎大家围观。
我是一个工作时间比较久的全栈工程师,做过web开发,前端,后端,移动端,HTML5的开发。2016年底开始学习机器学习,做深度学习大概不到半年。目前在研究手机端侧人工智能。在人工智能技术方面我肯定没有研究人工智能很多年的人有经验,但在怎样转型人工智能方面我还是有些体会的。
一个很小的卷积神经网络的结构图学习人工智能为什么比学习其他的编程技术要困难
-
首先是人工智能整个领域特别大
我们常说的深度学习是机器学习的一个小分支,而机器学习又只是人工智能的一个小分支。但目前深度学习比较热,因此很多人就把深度学习当成人工智能了。具体到业务领域,就有计算机视觉,语音识别,自然语言处理等,每一个领域都很专业,会用到机器学习的各种方法。后面的内容主要是说深度学习和机器学习。 -
其次人工智能是不确定性的
思维模式和传统编程不一样,我们平常接触的编程语言无论前端,后端还是移动端,都是确定性的,确定性是什么意思呢?例如你要修改个传统系统的bug,你弄明白了逻辑,就可以修改代码改掉bug。但做人工智能不一样,它是不确定性的,目前深度神经网络可能会有几百层,几千万个参数,我们没有严格的数学逻辑确定这些参数的意义,只能根据经验和一些原理进行调参,修改数据集等优化结果,过程中充满了不确定性。 -
第三,学习人工智能对于数学和英语有一定要求
特别是做模型优化的时候。数学方面需要知道一些微积分,线性代数,概率论的知识,英文方面需要能够比较顺利的看懂一些英文的资料和论文,例如很多著名模型的结构相关的论文都发表在arxiv上,需要能大概看懂这些论文。 -
第四,学习深度学习对于计算机有一定要求
模型训练在GPU上做能够明显加快速度,例如在Imagenet2012数据集上训练InceptionV3模型, 大概有130万张图片, 在一个nVidia Tesla P100 GPU上训练到95%的召回率需要3天,在普通CPU上训练可能需要几个星期。如果你学习一个东西,几星期后才能知道结果那肯定是让人崩溃的。万幸的是,现在Amazon,Goolge,阿里云,腾讯云等都有GPU服务器可以租用。
程序员学习人工智能的三个阶段
学习人工智能的三个阶段是 应用,优化,和定义问题,这个观点是我在某大牛的一篇文章中看到的,然后我针对程序员的学习特点做了一些优化。
应用应该是学习的第一步,就是想怎么样才能把人工智能应用到你的业务中,在这一步之前你需要对人工智能的现状有个基本清晰的认识,抛弃不实际的想法。具体的做法大概是针对自己的问题,收集数据,建立模型,可以用传统模型或深度学习模型。这一块程序员去做还是有一定优势的, 做到这一步需要对机器学习和深度学习有一定了解, 熟悉python, 能用tensorflow做一些模型训练。举个应用的例子,人工智能跨界农业实现“桃脸识别”,用人工智能实现桃子的智能筛选。
优化是学习的第二步,这一步就有些难度了,需要对卷积神经网络的原理和计算过程很清楚,需要对tensorflow,caffe,pyTorch等框架比较熟悉,需要对Inception,Resnet等经典模型的结构有一定研究,能够看懂论文和代码,并能够结合数据进行分析和实验,对模型结构,参数等不断进行优化,达到提高识别率等目的, 这个优化过程需要耗费大量的时间。
定义问题是学习的第三步,能够做到这一步应该是大神级的存在了,例如谷歌大脑,AlphaGO,百度大脑等顶级团队和学术界的科学家和资深工程师等。这一步的难点是如果用数学语言定义清楚问题,并能够用工程上可行的机器学习算法进行优化求解。做到这一步是很难的,能够做到这一步的人应该是很少的,大部分都是大公司某个方向的领军人物。
应该怎样转型人工智能
对于想转型人工智能的程序员, 我觉得首先要想清楚,自己想不想做这样一个不确定性的事情,自己的学习能力,数学和英语基础怎么样,不能看到行业热工资高就盲目转行。其实无论是前端,后端还是移动端,只要技术做到一定深度,收入都会不错,互联网行业的高薪还会持续很多年,做好技术可以有个不错的收入。
当然,学习和了解一些人工智能技术总是没有坏处的,可以先在自己感兴趣的领域尝试应用下人工智能技术,试试有没有这方面的兴趣和能力。毕竟IT行业变化很快,说不定几年后无论做什么开发都需要懂一些人工智能知识呢?
在人工智能这个热门的行业,早起的鸟有虫吃,但前提是鸟才行。
大会介绍
“架构迎接未来变化”这是本届互联网架构峰会(Internet Architecture Summit,简称IAS)的主题思想,我们将以全新的“互联网结构视角”来看待当前发生着的一切,其中包括互联网的技术性范式和组织性范式。伴随着年初NJSD全球软件大会(NJSD Global)的脚步以及本次APSEW亚太软件工程周的技术节,12月初的南京,我们又将迎来一个引领行业发展的技术交流高峰!