ChatBot模型基础

word2vec

!(http://www.cnblogs.com/neopenx/p/4571996.html)( 是个巨佬) !(https://blog.csdn.net/itplus/article/details/37969817 )

概率语言模型

概率语言模型

预测字符串概率,考虑动机,考虑计算方式

  • Unigram models(一元文法统计模型)

  • N-gram 语言模型(N元模型

N元模型

$P( w1,w2,…,w_m) = i…m() P(w_i|w1,…,w_(i-1)) = i…m() P(w_i|w_(i-n+1),…,w_(i-1))$

注:

n大于3时基本无法处理,参数空间太大.另外它不能表示词与词之间的关联性

神经概率语言模型

在论文《A neural probabilistic language model》中提出的一种模型.该模型的重要工具是词向量

词向量:

对词典D中的任意词w,指定一个固定长度的实值向量$v(w)\in R^m$v(w)就称为w的词向量,m为词向量的长度

概述

训练样本:

(Context(w),w) 包括前n-1个词分别的向量,假定每个词向量大小m

投影层:

(n-1)*m 首尾拼接起来的大向量

输出:

输出是一棵二叉树,它以语料中出现过的词当做叶子节点.以各词在语料中的出现次数当做权值垢找出来的Huffman树

y_w = (y_w1,y_w2,y_w3,…y_wN,)

表示上下文为Context(w)时,下一个词恰好为词典中的第i个词的概率

归一化:

$$p(w|Context(w)) = \frac{e^{yw,iw}}{\sum^{N}_{i=1}e^{yw,iw} }$$

哈弗曼树

最优二叉树,节点会有权重,指示词的常用频次

使用哈弗曼树

把高频词放在距离根节点近的地方,在测试时,我们每次预测每一层的正概率和负概率

CBOW

根据上下文的词语预测当前词语的出现概率的模型

$$L = \sum_{w\in c}logp(w|Context(w))$$

词向量=哈弗曼编码,经过不断地训练,哈弗曼编码不断改变

权重参数=通过每层的概率计算,最终指向这个词会有一个似然函数,其中的某个参数,就是sigmod函数中的theta

对最终的似然函数求最大==>最大化问题–>梯度上升

Negative Sampling

为了解决,树空间过大

思想:

  1. 保证频次越高的词,越容易被采样出来

  2. 不使用哈弗曼树进行预测,使用负采样,降低计算复杂度

Skip-gram

seq2seq

seq2seq是一个Encoder-Decoder结构的网络,它的输入是一个序列,输出也是一个序列

  • Encoder中将一个可变长度的信号序列变为固定长度的向量表达

  • Decoder将这个固定长度的向量变成可变长度的目标的信号序列

  • 输入序列和输出序列的长度是可变的

  • 可以用于翻译,聊天机器人,句法分析,文本摘要

encoder 过程

  • 取得输入的文本,进行enbedding

  • 传入到LSTM中进行训练

  • 记录状态,并输出当前cell的结果

  • 依次循环,得到最终结果

decoder过程

  • 在encoder最后一个时间步长的隐藏层之后输入到decoder的第一份cell里

  • 通过激活函数得到候选的文本

  • 筛选出可能性最大的文本作为下一个时间步长的输入

  • 依次输入,得到目标

decoder和encoder过程

注意力机制

注意力机制是在序列到序列模型中用于注意编码器状态的最常用方法,它同时还可用于回顾序列模型的过去状态

  • 注意力机制不仅能用来处理编码器或前面的隐藏层,它同样还能用来获得其他特征的分布

为什么需要注意力机制

  • 减小处理高纬度输入数据的计算负担,通过结构化的选取输入的子集,降低数据维度

  • 让任务处理系统更专注于找到输入数据中显著的与当前输出相关的有用信息.从而提高输出的质量

  • Attention模型的最终目的是帮助类似编解码器这样的框架,跟好的学到多种内容模态的相互关系,从而更好的表示这些信息,克服其无法解释从而很难设计的缺陷

只有seq

seq加上注意力机制

聊天机器人根据对话的产生方式

  • 基于检索的模型

  • 基于生成式的模型

基于检索的模型

  • 在数据库中存储问答对

  • 使用语句匹配的形式查找答案

  • 答案相对固定,且很少出现语法错误

  • 不会出现新的语句

基于检索

基于生成式模型

  • 不依赖预先设定的问答库

  • 通常基于机器翻译技术

  • 需要大量的语料进行训练

  • Encoder-Decoder模式

混合模式

  • 兼具检索模式和生成模式

  • 检索模式产生候选数据集

  • 生成模式产生最终答案

我们的系统架构


CC BY-NC 4.0

chromedriver-安装
C++ 小记

Comments