近期给小伙伴们补充下人工智能方面的知识,人工智能并不是那么虚无缥缈。
自18年起,OneAlert计划全面转型人工智能,通过人工智能机器学习等技术实现IT运营支撑智能化和自动化,提升效率。从整体上了解人工智能,而不是单纯技术,尤为必要。现在将一些培训的材料进行整理,预计3-5期内容分享。本片包括:
1. 概览
2. 算法与技术应用
3. 常见算法示例
预计时间20-30分钟。
1. 概览
1.1 人工智能层次
我们先看看人工智能概览,避免盲人摸象,各执一词。与其他的技术类似,人工智能也是分不同层次的。有些同学老是拿Alpha GO这条狗来怼我,说那才是真正的人工智能,我只能无语~ 毕竟大家的知识体系不同的。
我们程序员最常见的的机器学习、深度学习,更多是算法层面上的说法。例如逻辑回归、贝叶斯、神经网络等。
程序算法依赖于底层基础设施,高性能硬件,分布式大数据技术提供支撑。在硬件领域,针对并行运算高的专用加速GPU;热门的分布式大数据计算的框架应用,如hadoop,spark等都为程序算法提供支撑。
应用算法解决不同的技术问题,就会有不同的技术方向。如视觉、语音、自然语言、规划决策等。我们OneAlert相关的监控异常事件处理,大多是文本类非结构化数据,更多是自然语言的处理,而告警事件电话语音播报则与语音相关。
“看”是人类与生俱来的能力,让计算机“看”就复杂一些。视觉应用方面,包括从早期的车牌识别、相机人脸监测,到现在的人脸识别、机器人、无人车等。
让机器学会听和说,实现人类无障碍交流,一直是人工智能人机交互领域的一大梦想。特别是前些时间Google Assistant的电话语音预约/订餐,流畅自然,惊为天人。而且实际上该系统也通过著名的图灵测试。语音应用方面,作为人机交互非常自然的选择,得到越来越多的关注和实际应用。锤子科技的号称革命性的TNT工作站,就是大量应用语音进行交互。
提起语音,就不得不说自然语言,两者有很大的关联关系。理解人们表达的意思并回应,需要对语言和语义、上下文有深入理解。从早期的机器翻译,度娘翻译、谷歌翻译,到输入法关联提示,再到词性语义、情感分析、评论观点(重点)摘要等高层次应用,再到小米小爱同学、Google Assistant、AWS音响人机交互系统,都是自然语言为基础的技术应用。
规划决策,早期是以游戏类为载体的。从早期的象棋深蓝(DeepBlue),到近期如火爆围棋Alpha Go这些知名技术应用,再到我们平时外卖调度、机器人、无人车都是决策规划。特别是16年,硬件层面出现基于GPU,TPU的并行计算,算法层面出现蒙特卡洛决策树与深度神经网络的结合,AlphaGo打败了李世石。
在此技术应用之上,是一些行业类的方案,往往要整合很多的技术应用,综合应用。例如无人车,就是视觉、决策规划综合,而谷歌助手Google Assistant就是语音和自然语言的技术综合。
所以小伙伴动不动就拿那条狗怼我,是不对的,那已经是神一样的存在~ ,不同层次和技术方向决定了场景和应用的不同。回到我们自身,OneAlert智能事件处理平台AIOps,要解决是使用机器学习算法、结合一些自然语言技术应用,整合成有效方案。实现海量运营异常事件的去重降噪、过滤识别重点、辨别根源,帮助用户更快解决问题。
1.2 人工智能发展历史
了解一门技术和应用,需要从历史发展的角度去看待,梳理因果,我们才能更冷静和清醒的看待这波人工智能行情。首先人工智能并不是新鲜事物,在早期就已经存在,看个图:
从发展上来说,历经了3轮发展浪潮,现在是处在第三波浪潮中:60年代第一波、90年代第二波,10年到现在的第三波。
在消费级互联网领域,这几年人工智能技术应用已经大行其道。而在企业级服务市场,我们所在的行业:IT运营支撑领域ITOM,也引入了新概念AIOps,AIOps将被各大厂家引用,在很快的未来,估摸到18年底AIOps概念和落地产品将越来越多。
与之前相比,现在已经很少有人说人工智能是忽悠了,核心原因是更成熟了。
与以往不同的是,AI人工智能技术的成熟度和实际投产已经与以往不可同日而语了,已经深入到我们生活的方方面面了。准确来说2010年前后,或者是说从2006年hiton的深度学习技术的成熟,加上机器性能大幅增长,当然还有我们前几年常说的互联网大数据,人工智能得以走上复兴路。
14年后,代表计算机智能图像识别最前沿发展水平的Image Net 竞赛,图形识别准确突飞猛进。随着机器视觉领域突破,语音识别、数据挖掘、自然语言处理领域是突飞猛进。而且今天的人工智能更加的接地气,所以我们在不知不觉中已经体验到人工智能带来的便利了~
然而我们也要清晰地认识到,当下的人工智能更多是“数据智能”,现在的智能更多是基于大数据,机器用笨方法,靠着不知疲惫的计算能力去一点点学习。离人类智慧的所谓“智能”差海了去了。可预见人工智能应用更有效方式,就是替代那些需要耗费大量人力、且繁重重复的那些工作/地方。
所以OneAlert的小伙伴们,我们引入AI技术解决海量告警事件异常风暴,将更多IT工程师解脱出来,是有效和有意义的。
2. 算法与技术应用
2.1 算法层
算法机器学习是指利用算法进行数据挖掘,而深度学习是机器学习的子集。
传统机器学习算法,是分步骤进行的,从数据提取,预处理到特征选择,特别是是特征选择,人工选择特征是一种费事费力的做法,还需要经验和运气。但是结果往往不是最优解。而深度学习的是从原始特征出发,自动学习高级特征组合,直接保证最终的输出是最优解,然而中间隐层是黑盒子,还是很难解释和理解的。
然而不代表这传统的机器学习就没有市场,其实传统的机器学习在数据理论和实现上,相对清晰和简洁,而且可解释性强。非常适用于快速建立早期的数据模型,和测试验证效果。作为后续更多算法优化的基础。举例来说常见的传统算法如:分类Classification逻辑回归Logistics Regression,聚类Cluster算法K-Means,数据相对理想情况下,效果还是不错的。
机器学习解决3类典型的问题:无监督学习、监督学习、强化学习。
无监督学习:给定数据,从数据中发现信息。一般就做聚类Cluster,就是将一堆无序的数据,聚拢起来,成为几大类。举个例子:新闻、微博、用户的聚类,假设一堆的新闻文章,自动识别相似度,聚拢为:政治、经济、生活、娱乐等。我们OneAlert将海量的异常事件,通过文本分析,聚类为不同的场景,如数据库类、网络类、业务:订单类、支付类事件,让用户聚焦不同的种类问题(场景),而不是一条条细粒度的事件,这就是聚类;将成千上万的事件划分为数十个场景,方面处理。
有监督学习:给定数据,预测这些数据的标签。例如房价,特征是面积、建设年代、位置等属性,根据历史数据,学习出一个数据模型(函数),就可以预测新的房价了。监督学习典型的应用场景是推荐、预测等相关问题。无人车沿着马路走,可以理解为就是有监督学习,根据以往人为开车的路线图片/视频,学习到一个模式/模型,无人车自行上路时,通过图形识别,应用数据模型,实现无人驾驶。
强化学习,给定数据,选择动作以最大化长期奖励。输入是历史的状态、动作和对应建立、要求输出当前状态下最佳动作。与前面两类不同的是,强化学习是一个动态的学习过程,没有明确的学习目标,所以对结果也没有精确的衡量标准。例如无人机飞行,扫地机、通过各种按键 操作在电脑游戏中赢得分数等决策控制类问题都是强化学习问题(破解跳一跳)。例如假设在午饭时间你要下楼吃饭, 附近的餐厅你已经体验过一部分, 但不是全部, 你可以在已经尝试过的餐馆中选一家最好的(开发,exploitation), 也可以尝试一家新的餐馆( 探索, exploration), 后者可能让你发现新的更好的餐馆, 也可能吃到不满意的一餐。 而当你已经尝试过的餐厅足够多的时候, 你会总结出经验(“ 大众点评” 上的高分餐厅一般不会太差; 公司楼下近的餐厅没有远的餐厅好吃, 等等), 这些经验会帮助你更好地发现靠谱的餐馆。【摘选《人工智能》】
神经网络是机器学习重要的分支,直到Alpha Go才声明远扬。简单来说神经网络是模拟人类大脑皮层细胞,神经元的运行机理的算法。06年后Hinton在深度学习的相关论文掀起新的浪潮,深度学习大幅提升神经网络效果。
简单说下我对神经网络的理解,人类具有很强的适应性,所以从算法角度上,大脑可能存在一个“万能”的算法去解决各类问题。如下图实验所示,通过传感器(sensor),舌头也可以学会“看见”东西。
神经元其实3个核心功能,接受外部传来的数据,经过处理后,输出给(别的神经元)。从程序上来说就是输入,输出和处理。
然而我至今还是很难理解神经元到底在干啥~,而且那么万能,也就是说中间的隐层(Layer2)不断的增加更多层和更多节点,意味着复杂的神经网络,可以去很好的学习输入和输出关系,建立模型(参数),适应起来。神经网络的可解释性不如经典机器学习算法(逻辑回归)那么清晰,但是确实能干很多事情。就跟我们很难解释人类的智能一样,也很难解释神经网络。
我们眼睛的视觉传感器,将数据采集过来,传达置大脑皮层,大脑皮层的神经元细胞,通过复杂的网络结构连接,不断的计算,理解传递多来的数据含义(图片)。假设我们将视觉数据信息通过舌头传递到负责“看”的神经网络结构里面,也能通过舌头“看”到具体的内容。
神经网络深度学习的算法有很多的变化,如经典多层感知机MLP、卷积神经网络CNN、生成式对抗网络GAN等,后面再聊。
2.2 自然语言技术应用
人与人之间语言的交流是非常自然的,让机器理解自然语言的含义,是我们的理想。自然语言的发展历经多年,近期效果非常显著。
智能机器翻译、智能客服机器人、智能助手(Google Assistant)等商业化,意味着技术已经达到较高的层次。与算法一样,我们看看自然语言的层次和类型划分:
如图所示自然语言可以划分为语法层面、语义层面和基础应用几个维度。从上往下,从左往右,成熟度递减。
左侧语法层面好理解一些,右侧语义是指语言的含义。例如命名实体,专有名词的标注,人名、地名、机构组织名。语义组块如动词、介词,来源于左侧的词性标注。而语义角色标注,就是以谓词动词为中心预测语句的各个语法成分语义特征。
通过机器学习方法,将语义组块、语义角色标注等分析结果,转为知识库中的RDF形式,可以用在自动问答系统(实际上比这复杂得多)。
结合我们OneAlert的智能事件处理,首先我们平台接收各类非结构化的文本信息,例如:'192.116.17.233 Free disk space on / (percentage):9.88 %',首先我们要分词:
‘192.116.17.233‘,Free disk space,on, /, (,percentage,),:,9.88 ,%
而不是这样通用的分词方式:
192 , . ,116, ., 17, ., 233, Free ,disk,space, on, /, (,percentage,),:,9.88 ,%
识别命名实体,192.116.17.233是一个主机IP地址,Free disk space是一个指标名称,介词on。这样我们能知道 '192.116.17.213 Free disk space on / (percentage):6.88 %' ,这两条告警信息是相类似,当相近时间产生时,可以作为事件压缩条件。
2.3 视觉技术应用
计算机视觉研究方向,从易到难、商业化从高到低,依次是图形处理、识别监测、分析理解。最难是分析和理解,跟自然语言一样,语义理解是困难的。
图形处理不涉及语义,底层像素处理比较简单,通过大量训练,可以去噪声、去模糊、滤镜处理等。
图形识别监测就复杂一些了,图形的分类、定位、监测、分割,技术也相对成熟,包括人脸识别、识别制定明星等。
图形理解本质上图形和文本的交互,基于文本的图形搜索,图像描述生成、图形问答等。语义的理解和图形技术的结合,未来进入自主理解、决策分析高级阶段,真正能够机器看东西,无人车、智能家居等场景将越来越深入生活。
此外还有更多的技术应用,如语音和决策规划,自己涉猎不多,就不说了~
3. 常见算法示例
下面以一个最常见的线性回归和逻辑回归为例,认识下机器学习算法:
逻辑回归:https://www.jianshu.com/p/9e298238a6f9
假如我们收集到大量标签数据(红色/绿色),通过机器学习构建出一条线(函数)h(x)=a+bx分隔,当有新的数据x来时,能够预测是那个标签分类(红色和绿色)。这就是有监督学习的分类Classification。
假设我们现有一堆数据,没有任何标签(标注),能不能通过算法,将他们聚拢起来分个类Cluster?这就是无监督学习。
从OneAlert的智能事件处理来看,识别事件是否是根源问题,就是一个监督学习,需要用户标注(1/0),有一些数据积累后,系统自动学习。而将大量事件数据自动聚类为数据库、网络、门户、产品、订单不同的类别,方便集中处理几类事情,就是聚类的无监督学习过程。
4 小结
了解人工智能的发展历程和一些概念,有助于全面理解现在自己所做的事情在全局的位置,避免出现只见树木不见森林的情况。就不会出现拿一个具体算法和一个综合应用做对比的尴尬场景。郭德纲曾经说过这么一段话:
“内行要是与外行去辩论那是外行。比如我和火箭科学家说,你那火箭不行,燃料不好,我认为得烧柴,最好是煤,煤最好选精煤,水洗煤不好。如果那个科学家拿正眼看我一眼,那他就输了。”
人工智能涉及的技术很多,作为程序员,我们还要深入去学习。
参考资料
《人工智能》--腾讯研究院和中国信通院互联网法律研究中心
《人工智能:李开复谈AI如何重塑个人、商业与社会的未来图谱》 李开复和王咏刚
《NLP汉语自然语言处理与实践》郑捷
百度AI http://ai.baidu.com