0%

动手学深度学习打卡笔记3-RNN

这是Datawhale和伯禹学院联合和鲸平台组织的”动手学深度学习“公益学习活动打卡笔记,同时也整理进了一些我平时学习的内容。使用的DIve into DL是pytorch版本,中文网页版链接:https://tangshusen.me/Dive-into-DL-PyTorch/#/

语言处理基础

文本预处理

通常包括四个步骤:

  • 读入文本
  • 分词(token)
  • 建立字典,将每个词映射到一个唯一的索引index
  • 将文本从词的序列转换为索引的序列

能较好帮助英文分词的库:spaCy和NLTK。

语言模型

语言模型的目标是为了判断该序列是否合理,即计算该序列的概率。

语言模型(language model)是自然语言处理的重要技术,用它来预测下一个时刻的输出。自然语言处理中最常见的数据是文本数据。我们可以把一段自然语言文本看作一段离散的时间序列。假设序列w1,w2,…,wT中的每个词是依次生成的,则有
formula

为了计算语言模型,我们需要计算词的概率,以及一个词在给定前几个词的情况下的条件概率,即语言模型参数。

n元语法

n元语法通过马尔可夫假设(虽然并不一定成立)简化了语言模型的计算。这里的马尔可夫假设是指一个词的出现只与前面n个词相关,即n阶马尔可夫链(Markov chain of order n)。n元语法是基于n−1阶马尔可夫链的概率语言模型,其中n权衡了计算复杂度和模型准确性。

循环神经网络Recurrent Neural Networks

由于n的增大使模型参数的数量随之呈指数级增长,故引入循环神经网络。

循环神经网络语言模型是一种用于处理序列数据的神经网络。它是一类自带循环的模型,这个循环使得其具备了记忆功能(非长久记忆)。
rnn
通过BPTT算法训练,“权共享”。

RNN模型种类

rnnmodels

  • one to many :生成领域,AI创作小说、音乐
  • many to one :情感分析、舆情监控、听歌识曲、故障监控、声纹识别
  • many to many(对齐):变声(实时)
  • many to many(不对齐):同传、问答系统

    RNN模型的重要变种——LSTM(Long short-term memory)

    LSTM通过“门”来解决RNN网络在长序列训练过程中的梯度消失和梯度爆炸问题。

左图为普通RNN,右图为LSTM作用模块,有四层运算包含在这个可重复的模块中
LSTM相较于普通的RNN增加了ct(cell state),故它有ht(hidden state)和ct两种状态。 Cell state是LSTM的关键,它传递长期记忆,只有相乘和相加的简单运算。LSTM通过三个“门”来保护和控制cell state ,分别是“遗忘门”、“输入门”、“更新门/输出门”。

lstm

参考:https://colah.github.io/posts/2015-08-Understanding-LSTMs/

LSTM案例:文本生成、命名实体识别

RNN模型的其他变种

深度循环神经网络和双向循环神经网络。

  • 深度循环神经网络通过增加隐藏层来实现。
  • 双向循环神经网络则是nlp中十分常用的一个模型,它能同时兼顾当前时间前和后的数据信息,例如在文本处理时实现对上下文的联想。

NOT AN END

以上这些可以说只是要了解自然语言处理必须知道的一些基本内容。关于nlp的具体相关算法和思想,如word2vec、nagetive sampling等,有待整理!