AI产品经理基础(三)-序列模型
RNN是什么
RNN即序列神经网络,通常用来处理人类语言、音乐等具有序列属性的任务
人类语言本身作为一种符号并没有意义,只不过是人类对其赋予了意义。而这种意义体现在每个字(语义)以及字的顺序(事物关系)上。RNN相当于在通用神经网络上加入了人类的先验知识,将文本信息按照序列输入的方式处理。
RNN基础结构
RNN通用结构RNN对序列的基本思路是,在序列任务中前面的数据会对当前的计算产生影响。所以前一个cell的激活值会输入到后一个cell中。这样就其实就是对序列数据的特点做了一定程度的设计。
但是随着序列长度变化,激活值不断堆叠后就会损失一些信息,导致序列前面的信息对后面的影响变弱。要知道很多时候语言的头部信息对后面的信息可能有很大的影响。所以目前应用较广泛的是LSTM模型,在RNN基础结构上增加了一条长记忆线C,每个cell的X与A会使得C对信息进行补充或者丢失,而具有序列重要信息的C会对A的激活值具有影响。就像是模型附带了一个小本本,遇到新鲜事儿就记进去,然后在后续判断将小本本的信息加入,产出更有可信度的激活值。
LSTM在RNN应用过程中,逐渐发现有时候当前局部的计算不仅仅与前面的信息相关,也与后面的信息相关(特别是翻译、语音识别等)。所以提出了双向RNN结构,将前面的信息与后面的信息综合起来做判断。
双向RNN
人在进行信息判断时,有时候不仅仅是综合整个序列的信息,有时候更会抓住重点去分析以便快速得到更好的答案,在序列模型中每个输入本身确实有重点,比如吃与食物相关,在分析吃的字词时只需将注意力分配到与食物相关得词上,其他的并不重要,因此提出了注意力模型
如图所示,经过一个双向RNN处理过的输出值y,不同的y分配给不同的权重最终加和起来作为输入,那么该输入附带的信息就会有偏向,从而模型会有更好的效果。
注意力模型
正如前文所说,所有的模型都不完美,在拟合过程中就会出现信息丢失、梯度消失等现象,长短时记忆、双向计算、注意力机制都是典型的将人类知识加入模型中,使得模型负担减少,效果更好。
应用
语言模型
语言模型将语料库通过RNN模型训练后,模型就学会了人话的规律,从而可以在给定条件下判断下一个字是何字的概率,从而在多个场景有所应用:
1、语音识别
当语音通过声学系统编码与解码处理后,最终要生成句子,由于发音的相似性句子不仅仅有一个,这些句子可以通过语言模型来评分,只留下人话概率最高的那个就是我们的模型识别结果。
2、文字/序列生成
经过语言模型训练后,可以从模型中取得话例。比如将0带入第一个输入,我们会得到第一个初始词,再将该词在第二个输入中作为输入值,以此类推最终会生成一个句子,这个句子遵循人话规律。假如用泰戈尔的诗作为训练集,我们输出的就是泰戈尔风格的诗句
同样得方式可以应用在音乐上,如果将音乐也当做一种序列去训练,最终我们也可以获得某种音乐风格的曲子,从而可以实现在文字上以及在音乐上的另类创作。
情感识别
情感识别将RNN模型对接一个softmax输出,就可以对句子进行分类,通常用来判断情感趋向。
除了可以通过分析句子得到情感判断外,分析词语也可以。目前词的使用都是将符号向量映射(Word2Vec算法)到语义空间上,所以词向量本身就具有语义含义,通过训练可以做情感分类。
翻译
翻译模型翻译目前都是用如图所示结构,包含编码器与解码器。相当于将语句A通过RNN编码后灌入另一个模型去解码为另一个语句B,类似于卷积对图片的编码处理,序列模型在编码解码过程中也形成了一个表征语义的矩阵,该矩阵的语义表达与语言工具无关,作为两个语言之间的桥梁实现翻译功能。借鉴人类翻译过程中对前后文重点的读取,翻译模型会用到注意力机制以达到更好的模型效果
实际上前一阵子出现过AI换脸这种生成式的任务在社区火爆,特别是色情网站。其实这种生成任务很多时候也会用到这种编码-解码样式的结构
人机对话
目前人机对话包含应用场景:问答型、聊天型、任务型
问答型在很多客服领域应用广泛,解决了头部高频问题。这类任务更多属于机器学习,对用户的疑问通过关键字检测分类至我们预先设好的问题分类中。
而聊天型机器人最典型的就是微软小冰,要保持这种开放性对话需要系统知识,不断产生新的话题。这类Chatbot的目标是实现《her》中的情感陪伴,但是就目前发展来讲,仍然不够。
任务型机器人目前看起来最具有商业潜力,市面上的智能音箱基本属于这类范畴。目标是识别用户意图后在封闭的话题区间内进行对话直至满足用户需求。
对话业务
在任务驱动型的人机对话中,首先就是获取人的意图。意图的识别属于自然语言理解,属于一种分类任务。很多智能音箱平台会推出一些技能,这些技能实际上就对应意图所对应的领域。通过意图识别后将业务处理逻辑落在这些技能上,技能与技能之间其实已经没有关联,这样的方式减轻了训练难度,使得机器人在特定任务上有更好的表现。
在计算机处理人类请求后,不仅要判断用户的意图分类,还要对请求语进行序列标注(实体识别、实体关系抽取等),分析出该意图下哪些必要信息已经获得,哪些信息没有获得,这些就是填槽的过程。
用户的请求往往是含糊不清的,多轮对话就是为了获取在该意图下所有的必要信息。整个过程需要对话管理的支持,对话管理实际一个决策过程(策略树),系统在对话过程中不断根据当前状态决定下一步应该采取的最优动作(如:提供结果,询问特定限制条件,澄清或确认需求…)从而最有效的辅助用户完成信息或服务获取的任务。对话管理的构建更需要人工设计,但似乎通过强化学习也能得到最佳路径。
DM对话管理过程中可能需要和用户交互,就会用到自然语言生成,将系统语义转化为人类语言。这是个有限集,用模板是一种选择,同样也可以用语言模型、类似翻译的编码解码模型。
最后
总的来说,NLP的研究比计算机视觉的研究似乎更为复杂,NLP也是当今人工智能的发展瓶颈,每个从业人员都明白NLP的发展对人机交互的冲击非常巨大,不亚于图形界面对人机交互的影响。未来世界就在那儿,只是我们不知道何时到来。
image.png