美文网首页我爱编程
人工智能简述2

人工智能简述2

作者: 陈伯龙 | 来源:发表于2018-05-28 12:02 被阅读0次

    第二次入门培训,重点介绍人工智能中经典算法和深度学习在自然语言的应用。

    1.  经典算法:逻辑回归Logistic Regression。

    2. 深度学习: 基于循环神经网络RNN的自然语言处理NLP,词嵌入word2vec和情感识别。

    1. 概述

    前一章算法层面,划分为传统机器学习算法和深度学习算法,回顾下:

    左侧是传统的机器学习算法,包括逻辑回归、k-means、支持向量机SVM等(听不明白没关系),核心在于人工抽取特征。

    右侧是深度学习算法,(听不明白没关系)以神经网络(neural network)为代表的多层感知机MLP、循环神经网络RNN(又称递归神经网络)和在此基础上的长短期记忆单元(LSTM),火爆的卷积神经网络CNN。

    2. 经典算法:逻辑回归

    逻辑回归Logistic Regression,是很经典的算法,监督学习中解决分类classification问题非常直接有效。该方法也是各类神经网络的算法基础。

    假设有一些数据,特征为x1,x2,并知道标签(绿色/红色),如何建立一个模型,当知道x1,x2时,预测属于那个标签(绿色/红色)?

    逻辑回归模型实现数据分类

    简单来说就是通过建立一个公式(模型):

    y=θ(1)*x(1)+θ(2)*x(2)+....+θ(0)    简化为

    y=θ'X    θ是权重,X是输入的特征

    详细的算法实现参见:https://www.jianshu.com/p/9e298238a6f9 (可不看)。

    2.1 重点

    重点说几点:

    1.  输入*权重=猜测值,实际基准-猜测值=误差

    2. 减少误差 代价函数costFunction 或者是loss function。机器一开始很笨的随机设置权重,不断的求解减少误差cost/loss.

    3. 激活函数,由于逻辑回归是一个分类问题,需要一个开关,将输入数据进行足够/不足够(开/关)处理。常见的激活函数为sigmoid或者tanh,还有relu等。

    激活函数sigmoid和tanh

    4. 求解cost/loss误差不断缩小的过程,就是求解斜率(求导)过程,一般使用梯度下降(Gradient Descent)笨笨的计算。

    2.2 应用

    如果能够抽取良好的数据特征,就可以做很多数据的预测,与我们自身有关的是:

    1. 用户活跃预测,在我们运营里面,根据用户注册的信息、邮箱(企业邮箱/普通邮箱),手机(是否绑定)、微信(是否绑定)、团队用户数、使用信息(应用数、事件数、关键页面点击)等特征,根据以往的活跃用户,可以进行逻辑回归计算,判断24小时内新注册用户成为活跃用户的可能性。

    2. 事件根源预测,根据用户发过来的消息事件,通过人为标记的是否为根源故障/事件的方式,通过学习,再有新事件就可以预测是否为根源。

    逻辑回归简单易用,适合作为基准算法,也就是说快速原型demo,得出准确率accuracy、精准率precision和召回率recall。之后再使用更复杂算法去优化计算,例如神经网络NN多层感知机MLP、循环神经网络RNN等。

    3 深度学习

    3.1 概述

    深度学习概念上没有一个特准确说法,简单起见,超过2层隐层的神经网络都可以说是深度学习。

    可以理解为多个逻辑回归LR的组合

    神经网络NN最经典的算法是多层感知机MLP,如上图所示,可以理解为一堆的逻辑回归组成,一个逻辑回归不准确,用一堆来搞~

    神经网络有很多的延伸:

    (1)多层感知机MLP,经典神经网络,可以理解为多个逻辑回归叠加,准确度比逻辑回归LR大幅提升。详细内容参见https://www.jianshu.com/p/b9251c866344 (可不看)。

    (2)卷积神经网络CNN,一般用于视觉处理,如图形识别,用在文本自然语言处理NLP的较少(http://www.aclweb.org/anthology/D14-1181).

    (3)循环神经网络RNN,跟我们相关度很高,特别是自然语言处理NLP方面。常见的诸如情感分析,单词预测(输入法)、对话机器人(谷歌助手、小米小爱)、自动写作文、自动写歌曲等。下面重点说说这个RNN。

    3.2 循环神经网络RNN

    这里不展开具体算法,只说用途和大概思路。循环神经网络(又称递归神经网络)属于序列模型,跟我们AIOps中的时间序列数据很类似,如监控数据、股票数据、音频、自然语言等等,这都是序列数据。与卷积神经网络CNN处理图片这些数据有些差异~

    序列数据有很强的上下文关系,例如在AIOps中寻找监控数据异常点,如业务访问量异常,什么是异常?多高算高,什么时间(高峰/低谷)都是问题,依赖之前的历史数据。

    而在人机对话中,今天天气怎么样?晴天。多少度呢?这些都是序列,依赖上下文,否则一句话:多少度?很难理解了。我们看看循环神经网络示例:

    吴恩达《深度学习工程师》-《序列模型》

    可以看到声音识别、自动谱写音乐(无输入)、语句情感分析、DNA序列分析、机器翻译、视频识别、实体标注等等。有一个显著特点:输入和输出是不一定对等的。

    吴恩达《深度学习工程师》-《序列模型》

    RNN的特点是,有很多的输入x<1>,每次输入会得到一个中间值a<1>,和一个预测输出值y<1>,可以不断的循环反复。举例来说:x<1>=今,x<2>=天, x<3>=天,x<4>=气,x<5>=怎。。。。

    序列模型的前向传播FP

    我们先不纠结具体的实现,从计算公式上看,历史的数据结果会传递到后面,今天天气怎么样?晴天。多少度?26度,温度适宜。人机对话就可以实现上下文的信息记录和处理了。

    3.3 语句情感分析

    举例说明,RNN在自然语言中处理的一个常见应用:语句情感分析。用户评价以及评分(1-5),常用于电商、视频(电影/电视剧)等评分,以及微博/微信舆论预测分析。通过大量有标注结果(评分)数据进行学习,训练出一个模型,当有新的语句的时候,可以预测结果(评分)。

    虽然有点贵,不是很修身,但颜色很亮,布料摸起来挺舒服的,图案也好看,挺喜欢的。  5分

    虽然折扣很大,颜色很亮,图案也好看,但是布料摸起来一般的,容易掉色,果然是一分钱一分货。  2分

    与我们相关的就是,标签标注和根源分析,例如一个告警事件过来,文本形式,如何识别是否是根源问题,可能性多大。具体的标签(业务、网络、主机、应用)是什么样?进行根源预测和自动化打标签,这样运维运营人员,就能快速识别重要问题和业务影响。

    吴恩达 《深度学习工程师》《序列模型》

    输入数据是x,x是一系列的单词组成的数据流(序列),结果是评分y,这是多输入单输出(many to one)模式。

    吴恩达 《深度学习工程师》《序列模型》

    处理过程是将每个单词的词向量(e8928、e2468。。。)进行相加,求平均,再通过一个算法(softmax)进行概率统计,预测评分(正面/负面)。

    假设有大量的数据进行训练,那么是可以建立起一个数据公式(模型),当有新的数据的时候,就可以进行预测了。貌似很简单,有两个问题:

    (1)词向量是什么?一个词数字化后的向量,(不懂没关系),引出了下面词嵌入word embedding,word2vec。

    (2)简单向量相加,没有语义理解。假设出现, the desert is excellent,but 。。。。的时候,其实含义完全相反了,所以需要使用到循环神经网络RNN,记录之前的单词和顺序。

    通过RNN实现情感分析

    3.4 自然语言NLP 词嵌入word2vec

    与其他的数据,可以数字化不同,文本不是数字;所有机器学习计算都是数学计算,所以都是数字化的,数据预处理和转化对自然语言来说是必不可少的。

    词嵌入word embedding,有很多解释。我用一个比较形象的比喻,就是猕猴桃或者是西瓜,西瓜里面的每一个籽,就是一个词,整个西瓜是一个3维空间,词嵌入到西瓜里面。那么西瓜就代表了一个语言集合(中文/英文小说集):

    (1) 相类似的词,可能会聚在一起,西瓜籽比较集中。(男人和女人、国王和皇后, 西瓜和苹果)

    (2)词语之间的距离,就是空间距离。男人和女人很近,西瓜和苹果很近,男人和西瓜就很远了~。

    嗯,那为啥是词嵌入呢?早期有一种表示方法是one-hot编码,我们看看其特点。假设中文/英文合计有10000个词,每个词占一位。 “男人”=[0 0 0 0 0 0 0 1 0 0 0 0 .....0],是不是就可以解决语言的表示问题呢?可以解决,但是词与词没有任何的关系,完全割裂开。

    one-hot单词没有关联

    通过向量空间的方式,通过训练学习,建立起一个N维(如300维)的空间,实现词语有序的组织起来。他们的词语之间的距离,一般用夹角(余弦cosθ)进行表示,如果夹角很小,cosθ很大,说明很相似。中国:北京和美国:华盛顿 可以等同,中国和美国很近(都是国家)。

    建立300维属性的词频

    假如针对各个单词,建立300维属性,如性别、高贵、年龄、食品...等属性,判断这些单词归属这些属性的可能性(概率),那么就可以得到一个矩阵,词语之间就有关联了。之后把西瓜拍遍后,就会看到词语处于不同的位置上:

    300维降到2维 t-sne

    我们看到,男人和女人很相似,夹角很小,苹果、橙子很近,相似度很高,所以从向量的物理位置(夹角就很小,cosθ大)。

    word2vec是谷歌提出的一个词嵌入算法,通过RNN的计算方式可以训练出一个模型“词嵌入矩阵”,当要计算一个语句的时候,将语句进行分词,获取每个词对应的向量值,也可以进行比较了(计算余弦cosθ)。

    根据“我喜欢喝苹果汁”,预测:“我喜欢橙子(  汁 )”而不是橙子(泥)。

    3.5 AIOps应用

    OneAlert应用AI技术,处理文本事件数据时,基本处理流程:

    (1)建立自己的word2vec模型,基于目前应该是国内最大(时间最长)的监控告警事件库,通过过滤、分词、建模过程实现词嵌入模型。

    (2)基于词嵌入模型,进行机器学习处理,包括聚类(cluster)关联故障事件、监督学习根源分析、标签标注等。

    相关文章

      网友评论

        本文标题:人工智能简述2

        本文链接:https://www.haomeiwen.com/subject/gteijftx.html