程序员们,AI来了,机会来了,危机也来了
程序员们,AI来了,机会来了,危机也来了
1.人工智能真的来了
纵观古今,很少有计算机技术能有较长的发展寿命,大部分昙花一现,比如:昔日的DOS、windows3.2、foxpro、delphi、80x86汇编,还有很多技术也在艰难地挣扎,比如:VB、PB、Sqlserver,甚至连微软的.NET也被来自全球强大的开源力量逼到了死角, 以至于不得不开放源码,向LINUX投出橄榄枝,才得以继续发展壮大。比如下面这条关于微软的新闻:
早在2016年,当微软宣布SQL Server将很快在Linux上运行时,这一消息对用户和权威人士来说都是一个巨大的惊喜。在过去的一年中,微软对Linux(总之就是开源的操作系统)的支持已经十分重视,公司的使命似乎已经变成了只要哪里有用户,哪里就必须得有SQL Server工具。微软近期发布了SQL Server 2017的第一个候选版本,这将是第一个在Windows、Linux和Docker容器上运行的版本。仅Docker容器就已经吸引了超过100万的申请,因此毫无疑问,会有很多人对这款新版本非常感兴趣。尽管新版本有很多需要改进的地方,但SQL Server 2017支持Linux仍然是这个版本最重要的突破。
2013年深秋,一个秋高气爽的日子,此时的大数据在中国已经开始蠢蠢欲动,HADOOP作为离线计算的大数据平台开始悄然风靡,机器学习开始在中国播下种子,但这些仅局限于大公司和高校内部,中国的大地上并没有充满人工智能的气息, 我应机械工业出版社的邀请,写了《机器学习实践指南》(该书已于2014年出版,目前是第二版)。写完这本书后,我有一种强烈的预感:人工智能与机器学习未来肯定必火,而且它肯定会成为计算机技术发展史上最长寿的技术,可能长达几百年甚至几千年,以至于人类移民到了其它星球,人工智能仍会繁荣昌盛~,但是,我万万没想到,出书不到3年,人工智能已经在中国四处开花,硕果累累,其发展速度,超出我的想象,吴恩达公开的辞职信已经说明了人工智能在中国的发展现状。
“正如百年前电电能改变的了很多行业一样,人工智能也正在改变着医疗、交通、娱乐、制造业等主要行业,丰富充实着无数人的生活。对于人工智能将带领我们前往何方,我比以往都要兴奋和期待。我很荣幸能够从两大人工智能强国,中国、美国的人工智能界都学习过。美国擅长创造新的技术和理念,而中国擅于将人工智能技术用于开发出好的产品。我很高兴自己能够有机会既为中国也为美国的人工智能发展崛起作出努力和贡献”
--前百度首席科学家吴恩达
注意上述信件内容“中国是人工智能大国”,作为程序员们,机会来了,为中国的AI技术发展作出自己的贡献,同时开辟自己新的职业生涯。
机器学习技术在国外得到了海量应用和深入发展。2015年11月,谷歌开源了全新的TensorFlow机器学习系统,该系统更快、更智能,也更具有弹性。2015年1月,机器学习平台 GraphLab改名为Dato,并获得了 1850 万美元的新融资(投资方为 Vulcan Capital 、Opus Capital 、New Enterprise Associates、Madrona Venture Group),此前他们曾获得 680 万美元的融资。2015年8月,Facebook推出了“M”,Facebook认为人类不仅会回答人工智能所不能回答的问题,而且从长远来看,人类也会帮助改善人工智能技术,“M”除了能做到回答问题、查阅信息等基本功能外,还可以帮助用户完成如购买商品、餐厅定位、安排旅行计划等操作。在2015年12月召开的“2015年神经信息处理系统”(NIPS)会议上,微软研究人员和工程师公开了20多篇机器学习新研究成果的论文。此外,微软还宣布,机器学习正在成为Windows 10的一部分:Skype翻译可以将口语几乎实时地翻译成其他语言,就像《星际迷航》中的通用翻译器那样,可以做到面对面的交流。Cortana个人数字助理在与用户的互动中不断学习与改进,从而帮助用户管理日历、跟踪快递,甚至能与用户聊天和讲笑话,实现真正的个性化互动体验。Clutter是微软Office 2016的成员,通过学习它可以识别出哪些电子邮件对用户来说重要,并自动将不重要的邮件重定向到一个单独的文件夹中,从而保持用户收件箱的整洁。2015年9月,美军军队医疗中心指挥官少将Steve Jones在美军陆军的一次会议上发言表示,未来可以让智能机器人代替人类上战场运送伤员,美国军方甚至高调宣布:未来战场上机器人救起的可能不是人,而是机器人,因为智能机器人军团将代替人类出征。
在本节的结束,我也展望一下人工智能的未来:
不久的将来,人类也许该思考:在未来的世界里,机器人将充当什么样的角色,会不会代替人类呢?人类与智能机器之间应如何相处?
人类开始着手研究,如何才能更好地实现下面三大定律:
第一,机器人不可伤害人;
第二,机器人必须服从人的命令;
第三,机器人可以在不违背上述原则的情况下保护自己。
2. 人工智能与大数据
大数据时代已经到来,这个已经成为事实。但随着hadoop、spark、storm的高度普及,大数据技术成为软件开发和编程的普通领域,技术门槛越来越低,越来越多的人涌入这个行业,历史证明没有一个长久发展的技术领域必定是昙花一现,大数据技术也会这样吗?答案是:不!因为有人工智能的参与,大数据是基于数据分析与挖掘技术的应用,是机器学习算法和数据存取技术的结合,利用机器学习提供的统计分析、知识发现等手段分析海量数据,同时利用数据存取机制实现数据的高效读写。
提示:在此普及一下两个概念:
1. 数据挖掘是识别出巨量数据中有效的、新颖的、潜在有用的、最终可理解的模式的非平凡过程。
2. 数据分析是指用适当的统计方法对收集来的大量第一手资料和第二手资料进行分析,以求最大化地开发数据资料的功能,发挥数据的作用,它是为了提取有用信息和形成结论而对数据加以详细研究和概括总结的过程”无论是数据分析还是数据挖掘,都是帮助人们收集、分析数据,使之成为信息,并作出判断。
3. 人工智能与模式识别
程序员们,人工智能不是一门编程技术,也不是数据结构与算法,人工智能是编程、数据结构、算法与数学的结合 。
我们开始来谈模式识别,它是起源于工程领域,而机器学习起源于计算机科学,这两个不同学科的结合带来了模式识别领域的调整和发展。模式识别研究主要集中在两个方面:一是研究生物体(包括人)是如何感知对象的,属于认识科学的范畴;二是在给定的任务下,如何用计算机实现模式识别的理论和方法,这些是机器学习的长项,也是机器学习研究的内容之一。
模式识别的应用领域广泛,包括计算机视觉、医学图像分析、光学文字识别、自然语言处理、语音识别、手写识别、生物特征识别、文件分类、搜索引擎等,而这些领域也正是机器学习的大展身手的舞台。
4 . 数学来了!危机来了
1) 微积分
微积分的诞生是继欧几里得几何体系建立之后的一项重要理论,它的产生和发展被誉为“近代技术文明产生的关键之一,它引入了若干极其成功的、对以后许多数学的发展起决定性作用的思想”。微积分学在科学、经济学和工程学领域有广泛的应用,解决了仅依靠代数学不能有效解决的问题。微积分学建立在代数学、三角学和解析几何学的基础上,包括微分学、积分学两大分支,包括连续、极限、多元函数的微积分、高斯定理等内容。
微积分在天文学、力学、化学、生物学、工程学、经济学、计算机科学等领域有着越来越广泛的应用,比如:在医疗领域,微积分能计算血管最优支角,将血流最大化;在经济学中,微积分可以通过计算边际成本和边际利润来确定最大收益;微积分可用于寻找方程的近似值;通过微积分解微分方程,计算相关的应用,比如,宇宙飞船利用欧拉方法来求得零重力环境下的近似曲线等。
在机器学习和数据分析领域,微积分是很多算法的理论基础,如:多层感知器神经网络算法。多层感知器是一种前馈人工神经网络模型,算法分为两个阶段:正向传播信号、反向传播误差。
正向传播信号阶段是对样本的学习阶段,输入的信息从输入层传入,经各个隐层计算后传至输出层,计算每个单元的实际值,向各层各单元分摊产生的误差;反向传播误差阶段通过网络输出与目标输出的误差对网络进行修改审查,将正向输出的误差再传播回各层进行权重值调整,直到误差最小化或达到规定的计算次数。微积分理论在多层感知器模型中运用较多。
2)线性代数
线性代数是高等数学中的一门成熟的基础学科,它内容广泛,不但包含行列式、矩阵、线性方程组等初等部分,而且包括线性空间、欧式空间、酉空间、线性变换和线性函数、λ-矩阵、矩阵特征值等更深入的理论,线性代数在数学、物理学、社会科学、工程学等领域也有广泛的应用。
线性代数理论是计算技术的基础,在机器学习、数据分析、数学建模领域有着重要的地位,这些领域往往需要应用线性方程组、矩阵、行列式等理论,并通过计算机完成计算。
3) 概率论
概率论是研究随机性或不确定性现象的数学,用来模拟实验在同一环境下会产生不同结果的情况。下面这些概率理论是概率论的基础。
(1)古典概率
(2)条件概率
(3)概率公理
公理1:0≤P(A)≤1(A∈S)
公理2:P(S)=1
公理3:P(A∪B)=P(A)+P(B),如果A∩B=0
(4)概率分布
包括二项分布、几何分布、伯努利分布、泊松分布、均匀分布、正态分布、指数分布等。样本空间随机变量的概率分布可用累积分布函数和概率密度函数进行分析。
概率论在机器学习和数据分析领域有举足轻重的地位,比如马尔可夫链理论。马尔可夫链对于现实世界的很多现象都给出了解释,泊松过程是连续时间离散状态的马尔可夫链,布朗运动是连续时间连续状态的马尔可夫链等。
马尔可夫链在计算数学、金融经济、机器学习、数据分析等领域都有重要的应用,马尔可夫链是数学中具有马尔可夫性质的离散时间随机过程,在给定当前知识或信息的情况下,仅使用当前的状态预测将来,在马尔可夫链的每一步,系统根据概率分布,从一个状态变到另一个状态或保持当前状态。
4)统计学
统计学是收集、分析、表述和解释数据的科学,作为数据分析的一种有效工具,统计方法已广泛应用于社会科学和自然科学的各个领域。统计学与概率论联系紧密,前者以后者为理论基础。统计学主要分为描述统计学和推断统计学。描述统计学描绘或总结观察量的集中和离散情形,基础的数学描述包括了平均数和标准差等;推断统计学将资料中的数据模型化,计算它的机率并且做出对于母群体的推论,主要包括假设检定、对于数字特征量的估计、对于未来观察的预测、相关性预测、回归、变异数分析、时间序列、数据挖掘等。
无论是描述统计学还是推断统计学都是数据分析技术的基础。通过描述统计学方法,数据分析专家能对数据资料进行图像化处理,将资料摘要变为图表,分析数据分布特征。此外,还可以分析数据资料,以了解各变量内的观察值集中与分散的情况等。通过推断统计学方法,对数据未知特征做出以概率形式表述的推断,在随机抽样的基础上推论有关总体数量特征。
5) 离散数学
离散数学是数学的几个分支的总称,研究基于离散空间而不是连续的数学结构,其研究内容非常广泛,主要包括数理逻辑、集合论、信息论、数论、组合数学、图论、抽象代数、理论计算机科学、拓扑学、运筹学、博弈论、决策论等。
离散数学广泛应用于机器学习、算法设计、信息安全、数据分析等领域,比如:数理逻辑和集合论是专家系统的基础,专家系统是一类具有专门知识和经验的计算机智能程序系统,一般采用人工智能中的知识表示和知识推理技术,模拟通常由领域专家才能解决的复杂问题;信息论、数论、抽象代数用于信息安全领域;与信息论密切相关的编码理论可用来设计高效可靠的数据传输和数据储存方法;数论在密码学和密码分析中有广泛应用,现代密码学的DES、RSA等算法技术(包括因子分解、离散对数、素数测试等)依赖于数论、抽象代数理论基础;运筹学、博弈论、决策论为解决很多经济、金融和其他数据分析领域的问题提供了实用方法,这些问题包括资源合理分配、风险防控、决策评估、商品供求分析等。
以上是机器学习需要的核心数学知识,但不是全部知识。随着今后人类对机器学习的深入研究,将有更多的数学分支进入机器学习领域。因此,仅掌握大学数学知识是不够的,还需要向更高层次进军,对于非数学专业毕业的朋友来说,还应该学习其他数学分支理论,比如说泛函分析、复变函数、偏微分方程、抽象代数、约束优化、模糊数学、数值计算等。
建议各位购买以下数学书籍,随时翻阅参考。
Finney,Weir,Giordano.《托马斯微积分》.叶其孝,王耀东,唐兢译.第10版. 北京:高等教育出版社 2003-1
Steven J.Leon.《线性代数》.张文博,张丽静译.第8版.北京:机械工业出版社
William Mendenhall等.《统计学》. 梁冯珍,关静译.第5版.北京:机械工业出版社
Dimitri P. Bertsekas等.《概率导论》.郑忠国,童行伟译.第2版.北京:人民邮电出版社
Kenneth H.Rosen等.《离散数学及其应用》.袁崇义,屈婉玲,张桂芸译.第6版.北京:机械工业出版社
Eberhard Zeidler等.《数学指南:实用数学手册》.李文林译.北京:科学出版社
它们都是机器学习所涉及的经典数学书,可以考虑将它们和《设计模式》、《算法导论》、《深入理解计算机系统》等经典算法书放在一起,作为案头必备书。
历数这么多,只是人工智能需要懂得的数学的冰山一角。危机是来了,可是程序员们,为了AI,还是拼一把,好好学习数学吧~
一位MIT的牛人在BLOG中曾提到,数学似乎总是不够的,为了解决和研究工程中的一些问题,不得不在工作后,重新回到图书馆捧起了数学教科书。他深深感到,从大学到工作,课堂上学的和自学的数学其实不算少了,可是在机器学习领域总是发现需要补充新的数学知识。看来,要精通机器学习知识,必须在数学领域学习、学习、再学习,这一切都是很艰苦的。要学好机器学习必须做好艰苦奋斗的准备,坚持对数学知识的追求。
5.程序员的看家本领出场了
(1)TensorFlow QueueRunners:TensorFlowOnSpark利用TensorFlow的file readers和QueueRunners直接从HDFS文件中读取数据。Spark不涉及访问数据。
(2)Spark Feeding :Spark RDD数据被传输到每个Spark执行器里,随后的数据将通过feed_dict传入TensorFlow图。
5、caffe on spark:CaffeOnSpark被设计成为一个Spark深度学习包,CaffeOnSpark API支持dataframes,以便易于连接准备使用Spark应用程序的训练数据集,以及提取模型的预测或中间层的特征,用于MLLib或SQL数据分析。
6.AI的核心
7.结束语
8.最后的甜点
第二,优化特征提取
第三,调整参数
程序员们,AI来了,机会来了,危机也来了的更多相关文章
- 人才需求之Java程序员与AI程序员
据100offer报告显示:2018年Java人才市场「高开低走」的动荡局势.整体求职难度变大,且全年波动更剧烈,淡旺季区别明显.企业发出的Java面邀总数几个季度连续下跌,Q4 甚至比去年同期下降了 ...
- 程序员体验AI换脸就不要用ZAO了,详解Github周冠军项目Faceswap的变脸攻略
本文链接:https://blog.csdn.net/BEYONDMA/article/details/100594136 上个月笔者曾在<银行家杂志>发文传统银行如何引领开放 ...
- 社群公会GangSDK:程序员入行AI领域需要哪些技能?
作为一名Android开发工程师,身边总有些同行很焦虑,看着人工智能越来越火,总是担心Android要不行了,所以,我们需要转行么?Android还能走多久?其实,无论是对于Android还是iOS开 ...
- Java技术开发程序员如果在2019年立足
2019年的互联网环境相对以往来说要更复杂一些,互联网领域也正在经历从消费互联网向产业互联网转型的阵痛期.其实不少公司从2018年开始已经在陆续进行结构化调整,这些调整中的重要内容就是岗位调整,而岗位 ...
- 程序员眼中的UML
--克服用例图的恐惧 在实际工作中,大部分程序员很少接触到需求分析,即使有需求分析,也是草草了事,没有用正规的方式来表达,所以一般程序员使用用例图的机会是不多的.但是却又常常在各种媒体上看见用例图,于 ...
- 2017年 Java 程序员,风光背后的危机
不得不承认,经历过行业的飞速发展期,互联网的整体发展趋于平稳.为什么这么说?为什么要放在 Java 程序员的盘点下说? 的确,对于进可攻前端,后可守后端大本营的 Java 程序员而言,虽然供应逐年上涨 ...
- 程序员的出路在哪里?挣钱的机会来了续-福利来了,仿QQ界面,放出全部源码,打造创业框架及实现思路
上一篇:程序员的出路在哪里?挣钱的机会来了!, 原来搞技术,挣钱,不一定非得要多高精尖,有时候抓住小白用户,解决他们一个很小但是很常用的功能,也是一条很好的出路. 其实很多软件产品,要实现出来没有你想 ...
- 程序员的福音,AI可以自动修复bug了!
人工智能完全学会自己编程,可能说起来还有一种科幻感,但 AI 帮程序员找 bug 这件事,已经达到了不错的水平. 北京大学.微软亚洲研究院和中国电子科技大学就一起尝试着让 AI 找 bug.微软亚洲研 ...
- [置顶]
AI大行其道,你准备好了吗?—谨送给徘徊于转行AI的程序员
前言 近年来,随着 Google 的 AlphaGo 打败韩国围棋棋手李世乭之后,机器学习尤其是深度学习的热潮席卷了整个IT界.所有的互联网公司,尤其是 Google 微软,百度,腾讯等巨头,无不在布 ...
随机推荐
- yum安装mysql5.6
1.检查系统是否安装其他版本的MYSQL数据 yum list installed | grep mysql yum -y remove mysql-libs.x86_64 2.安装及配置 wget ...
- subprocess和struct模块
subprocess import subprocess obj = subprocess.Popen('dir',shell=True, stdout=subprocess.PIPE, stderr ...
- Codeforces Round #468(div2)
A Friends Meeting 题意:有两个人在数轴上的不同位置,现在他们需要到一个位置碰面.每次每人只能向左或向右走1个单位,轮流进行.每个人第一次走时疲劳度+1,第二次走时疲劳度+2,以此类推 ...
- Python3.x:获取登录界面校验码图片
Python3.x:获取登录界面校验码图片 实例代码: # python3 # author lizm # datetime 2018-06-01 18:00:00 # -*- coding: utf ...
- Google揭露SHA-1碰撞,加速数据重删字节对比
原创 架构师技术联盟 近期,Google和道荷兰阿姆斯特研究者宣布攻破了世界上第一例公开的SHA-1哈希碰撞实例,业界一片哗然.当两组不同的数据(文件.一段数据)计算出相同的Hash值时,即视为二者 ...
- java判断集合list是为空
if(null == list || list.size() ==0 ){ } list.isEmpty()和list.size()==0 没有区别 isEmpty()判断有没有元素而size()返回 ...
- Effective C++ 条款11:在operator=中处理"自我赋值"
"自我赋值"发生在对象被赋值给自己时: class Widget { ... }; Widget w; ... w = w; // 赋值给自己 a[i] = a[j]; // 潜在 ...
- Eclipse 添加JSP模板
0.环境 Eclipse IDE for Java EE Developers (4.3.2) win8.1系统 1.原因 Eclipse自带新建JSP为: <%@ page language= ...
- Listview_简单使用_(Virtual)
1.代码来自于“C:\Program Files (x86)\Borland\Delphi7\Demos\Virtual Listview” 1.1.是使用 ListView来显示数据 1.2.自己管 ...
- [日常训练]Z国特色社会路
Description 小$W$非常喜欢社会主义,这天他开始研究它的优越性. 他发现它们国家十分乐于修建特色的社会主义道路.具体的说,$Z$国有$n$座城市,由$m$条有向边连接,城市从$1$编号. ...