人工智能-RNN

序列模型

适用范围:

  • 语音识别
  • 情感分类
  • DNA序列分析
  • 机器翻译
  • 视频活动识别
  • 实体识别

循环神经网络RNN

结构

 

 

 

 计算过程

前向传播:

一般将a<0>初始化为零向量

 第一个公式一般使用tanh作为激活函数,如果第二个是二分类的话使用sigmoid,多分类使用softmax

第一个公式可以简写成:

 

 

 

 公式中的wa是waawax的水平排列的矩阵

是两个垂直堆叠出来的矩阵,

 

 

 第二个公式也可以写成

 

 反向传播:

以交叉熵损失函数为例

 反向传播流程图:

 顺着红色的箭头,一步一步求偏导数,最终求得dW,db,然后进行梯度下降更新W和b.

普通的RNN的记性不好,是由于梯度消失造成的。

LSTM

让前面的激活值有机会传到后面去,以此来避免梯度消失,其过程满足下列公式:

 

 其中:

 

 

 

这三个变量分别称为更新门、记忆门、输出门,他们使用的激活函数都是sigmoid,所以他们的值大部分都接近0或者1,所以他们控制着激活值是否应该被传到下一个时间步。

对于:

 

 

 

 在某些情况下C<t-1>代表上一个时间步的激活值,所以C<t-1>=a<t-1>,

假设更新门为0,记忆门和输出门都为1,所以等同a<t-1>=C<t-1>,a<t>=a<t-1>,上一步的激活值就传到本时间步。

 多个lstm结构

 

 GRU

 lstm的简化版,

 

 GRU只有两个们,更新门和关联门。

双向循环神经网络BRNN

由两个部分组成,一个前向部分,以后反向部分,注意这里前向和反向都是属于前向传播。他们的区别在于计算激活值的方式不一样而已。

 

 

双向循环神经网络需要计算两组激活值,分别是从左到右计算一组,然后从右到左计算一组。那么y满足

自然语言处理与词嵌技术

词嵌入(Word Embeddiing),一种表示词的方法,就像one-hot编码一样。其优点是让神经网络学会词与词之间的关系。

如何使用?

使用迁移学习+词嵌技术

词嵌入与类比推理

使用词嵌技术可以使神经网络拥有类比推理的能力。

词嵌入向量之间的余弦相似度来度量词语之间的相似性。

 

 获取词嵌矩阵表

通过神经网络训练得到词嵌矩阵表。

word2vector

把单词换成向量模型,常见的有CBOW和skip gram

skip gram

从句子中随机选取一个作为context words ,来进行监督型训练。选取的范围成为窗口(window)

GLOVE模型

是一种词嵌入向量的模型。基于语料库构建词的共现矩阵,然后根据共现矩阵和模型学习词向量。

共现矩阵:

情感分析

SEG2SEQ

指的是sequence to sequence,一般是一个RNN后面接一个RNN,也有可能是CNN后面接RNN。

应用

  • 机器翻译
  • 语音识别

机器翻译

通过一个sequence to sequence 模型来实现。

具体过程是:

首先构建一个RNN,将原文对应的X一个时间一个时间步输入到这个RNN中,将

这个网络称为编码网络

 

 上面的rnn会输出一个向量,这个向量就代表输入的原文,然后将这个向量输入到另一个rnn网络中,也称这个网络为解码网络,每一个时间步都会输出y,也就是译文。

解码网络的输入是编码网络产生的编码向量,它是一个语言模型。基于某种特定的条件,所以也叫条件语言模型。

贪心算法

如果词表有1000个单词,那么解码网络会在每一个时间步输出1000个单词的概率。如果选取概率最大的单词作为当前时间步的最佳翻译,这个就是贪心算法。但是在实际工程中这样做是不合理的。

BEAM搜索

BEAM选择最佳翻译结果

过程:

beam会在某一个时间步选择多个概率最大的单词,这是一个超参数。如果是3,就在当前时间步选择概率第一大、概率第二大、概率第三大的单词。

当然 如果将超参数设置为1的时候,就变成了上文的贪心算法。

注意力模型

语音识别

实现方式

  1. 注意力模型
  2. CTC

 

posted @ 2022-03-17 11:33  qijunL  阅读(125)  评论(0)    收藏  举报