You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

91 lines
9.2 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 42 | 模块答疑:软件工程师如何进入人工智能领域?
你好我是李智慧。在大数据算法模块我们一起学习了几种最常用的大数据算法包括KNN分类算法、贝叶斯分类算法、PageRank网页排名算法、关联分析Apriori算法、聚类分析K-means算法、神经网络算法以及几种常见的推荐算法算是对大数据算法有了初步了解。
作为软件工程师,如果想掌握一些大数据算法的背景知识,以便更好地和算法相关团队合作,那么以这个模块讨论的算法为基础,触类旁通,针对公司使用的算法再进一步了解和学习,基本上也就够用了。但是,如果想从软件工程师深入进人工智能领域,那么就还需要系统地学习和掌握机器学习各方面的知识。
下面根据我的经验,给你呈现一个软件工程师进入人工智能领域的“学习路线图”,希望可以帮助到想转型进入人工智能领域的同学。
## 数学基础
机器学习有时候也被称为统计学习,其实就是统计大量历史数据中的规律,构建算法模型,再利用模型对现在的数据进行分类和预测。所以学习机器学习算法,先要复习一下统计学和概率论方面的知识。
很多算法的特征与函数都用向量空间表示很多大数据算法计算也可以转化为矩阵与向量计算。比如PageRank算法就可以将网页间的链接关系表示为一个稀疏矩阵所有页面的PageRank值构成一个向量然后将矩阵与向量不断迭代相乘就可以了。因此你还需要再复习一下线性代数的知识。
专栏前面我们讨论过机器学习的数学原理机器学习算法的推导过程其实就是在模型假设空间寻找使结构风险为极小值的模型而数学上的极小值就是一阶导数为0的值因此还需要复习一下高等数学。
## 机器学习算法
大家普遍认为,系统学习机器学习算法最好的入门级课程是斯坦福大学的[机器学习公开课](http://open.163.com/special/opencourse/machinelearning.html),这门课程由吴恩达讲授,非常经典。还有几本比较经典的书籍可以和公开课相互参照,比如周志华的《机器学习》,俗称“西瓜书”,比较通俗易懂,适合入门;李航的《统计学习方法》,偏数学一些,可以不时翻看。
如果只是单纯学习算法,会比较枯燥,需要不断做一些算法的编程练习,除了学习过程中的一些算法编程练习,还可以参考《集体智慧编程》这本书,书中的例子都比较实用,可以根据书中的数据和代码进行练习。这本书偏重代码和应用,很适合软件工程师进行入门练习,不过这本书缺少算法的原理分析,算法比较少也偏简单。
以上这些书籍或者课程基本上都是大学教材或者相似课程的难度,如果要成为机器学习算法专家,就需要自己寻找一些更专业的书籍和论文来看了,这些资料主要是以英文为主,所以也需要你有不错的英语基础。
## 大数据技术与机器学习框架
在小规模的数据集上做算法练习用Python程序在单机上运行就可以了但是在真正的生产环境中需要面对海量的数据处理计算需求这就需要用到我们专栏前面讨论过的各种大数据技术产品。各种主流大数据产品都有自己的机器学习框架与算法库比如Hadoop上有Mahout、Spark上有MLlib借助这些算法库和工具可以较快速地在大数据平台上开发机器学习应用程序。
Mahout和MLlib主要支持传统的机器学习算法业界还有几款比较知名的深度学习框架TensorFlow、CaffeIntel也开源了基于Spark的深度学习库BigDL。
## 人工智能应用
学了这么多机器学习的知识,最终的目的还是应用,业界其实不缺懂算法的专家,但是却非常短缺能够将机器学习和业务结合,产生实际价值的专家。要想实现人工智能真正落地,一方面需要懂大数据和机器学习算法,另一方面需要深入了解具体的领域知识,能够发现业务中的痛点,并能够选择最合适的算法解决这个痛点。
很多时候解决问题不需要多么高大上的技术和算法,很普通的算法用对地方,也能产生巨大的效果,这才是业界最短缺的,而这也正是从软件开发转型人工智能的技术人员的优势,有多年的领域开发积淀,有技术实现和验证的能力,再加上大数据和机器学习能力加持,几项结合产生化学反应,也许能在自己的企业和行业领域创造出巨大的价值。
根据Gantner发布的2018年人工智能技术成熟度曲线我给你总结一下目前人工智能技术的发展状况供你参考。
![](https://static001.geekbang.org/resource/image/d8/74/d86c9627ed70baac0e69c84c9f580c74.png)
处于上升阶段,即具有长远发展前景的人工智能技术包括:
* 人工智能管理:根据人工智能模型和数据管理企业,包括决策权的划分、组织结构、绩效管理等。
* 通用人工智能:目前的人工智能仅仅在相对封闭、重复的场景中适用,稍稍扩大应用范围,特别是和人类交互的时候,经常表现得非常“弱智”。但是放到更长远来看,通用人工智能,即强人工智能还是值得期待的。
* 知识图谱:将具有各种关联关系的信息通过图的方式组织在一起,自动发现各种信息、数据、资产、商品、人、知识等各种关系并加以利用。
* 神经形态硬件:按照神经网络神经元形态构造硬件,即“芯片大脑”。
* 自然语言生成:根据语境语义自动生成自然语言,既可以生成各种有格式化的报告,也可以生成诗词歌赋等文艺作品。
处于顶部,被众人期待,但是可能有些过热的人工智能技术包括:
* 人工智能平台即服务最近几年各家云服务厂商都在加大云服务平台上人工智能的投入和宣传百度宣布自己All in人工智能阿里云人工智能也占据了云平台的重要板块。
* 深度神经网络专用芯片针对深度学习算法专门设计的芯片拥有比GPU更好的计算性能。
* 智能机器人:不同于工厂流水线上的工业机器人,智能机器人用于酒店、机场、餐厅、医院,与人交互,直接服务人类。
* 语音交互:以语音识别、自然语言理解、语音合成技术为基础的语音交互技术,以智能语音客服为代表的各种聊天机器人、虚拟助理等语音交互产品。
* 智能应用为各种传统软件系统赋能人工智能在ERP、CRM等各种传统应用中集成人工智能特性。
* 图形分析:根据图形分析数据特性,发现数据聚类特性,发现孤立点,还可进行路径优化等。
* 目标分析:通过人工智能优化决策分析,发现达成预定条件目标的首选行动方案。
* 深度学习:应用比较广泛的是卷积神经网络和递归神经网络,在图片、语音、视频等非结构化数据处理方面有良好效果。
* 自然语言处理:传统上自然语言处理的方法是语法与语义分析,但是现阶段越来越多使用深度学习进行自然语言处理。
* 虚拟助理:通过语音交互的形式,为用户订票、订餐、打车等,仿佛一个虚拟的个人助理。
经过泡沫洗礼,关注度下滑,进入冷静期的人工智能技术:
* 计算机视觉:通过获取、分析现实物理世界的图片和视频,提取出有意义的信息。包括机器视觉、光学字符识别、图像识别、模式识别、人脸识别、边缘检测和运动检测等,可应用于自动驾驶、生物识别、虚拟现实各种领域。
* 预测分析:预测将来要发生什么、将来会发生什么,主要基于回归分析、多元统计、模式匹配、预测建模等机器学习技术。很多时候,预测有一定效果,但是距人们的期望还有一定距离。
* 自动驾驶利用激光雷达、摄像头、GPS和地图数据等多种车载传感和定位技术结合机器学习模型实现车辆在无人控制的情况下自动驾驶。从人工智能角度看自动驾驶技术上应该已经趋于成熟但是具体应用看起来还很遥远。
* 增强现实AR将虚拟的文本、图形、视频叠加到现实的视频上起到增强现实的效果。在各种谍战片里特工们戴着炫酷的AR眼镜无所不能但在现实中大规模商用还尚不成熟。
人工智能将会引领下一次科技革命的浪潮,基本已经得到人们的普遍认可,但是越是革命性的事物,道路越是艰难;不过道路越是艰难,收获越是巨大。人工智能对我们生产生活的改造将是全方位的,不管你现在身处什么领域,总能找到和人工智能结合的机会,期待将来人工智能科技革命的浪潮中看到你的身影。
2019年如果你也想进入人工智能领域欢迎你留言和我聊聊你的想法希望你的思考也可以帮助到更多同学。