作者 | Chilia

整理 | NewBeeNLP

循环神经网络 (RNN) 是一种流行的「序列数据」算法,被 Apple 的 Siri 和 Google 的语音搜索使用。RNN使用内部存储器(internal memory)来记住其输入,这使其非常适合涉及序列数据的机器学习问题。

本文介绍引入RNN的问题--Language Model,并介绍RNN的重要公式,作为Stanford cs224n lecture6的总结和补充。

1. Language Model

在介绍RNN之前,我们先介绍最初引入RNN的问题---「Language Modeling」

「定义:」 Language Modeling就是预测下一个出现的词的概率的任务。(Language Modeling is the task of predicting what word comes next.)

即:

1.1 统计学方法:n-gram language model

简化:一个词出现的概率只和它前面的n-1个词有关系,这就是"n-gram"的含义。因此有:

n-gram model 是不使用深度学习的方法,直接利用「条件概率」来预测下一个单词是什么。但这个模型有几个问题:

  • 由于丢弃了比较远的单词,它不能够把握全局信息。例如,“as the proctor started the clock” 暗示这应该是一场考试,所以应该是students opened their 「exam」. 但如果只考虑4-gram,的确是book出现的概率更大。

  • sparsity problem. 有些短语根本没有在语料中出现过,比如"student opened their petri-dishes". 所以,petri-dishes的概率为0. 但是这的确是一个合理的情况。解决这个问题的办法是做拉普拉斯平滑,对每个词都给一个小权重。

  • sparsity problem的一个更加糟糕的情况是,如果我们甚至没有见过"student open their",那么分母直接就是0了。对于这种情况,可以回退到二元组,比如"student open".这叫做backoff

  • 存储空间也需要很大。

1.2 neural language model

想要求"the students opened their"的下一个词出现的概率,首先将这四个词分别embedding,之后过两层全连接,再过一层softmax,得到词汇表中每个词的概率分布。我们只需要取概率最大的那个词语作为下一个词即可。

「优点:」

  • 解决了sparsity problem, 词汇表中的每一个词语经过softmax都有相应的概率。

  • 解决了存储空间的问题,不用存储所有的n-gram,只需存储每个词语对应的word embedding即可。

「缺点:」

  • 窗口的大小还是不能无限大,不能涵盖之前的所有信息。更何况,增加了窗口大小,就要相应的增加「权重矩阵W」的大小。

  • 每个词语的word embedding只和权重矩阵W对应的列相乘,而这些列是完全分开的。所以这几个不同的块都要学习相同的pattern,造成了浪费。

2. RNN

正因为上面所说的缺点,需要引入RNN。

2.1 RNN模型介绍

「RNN的结构:」

  • 首先,将输入序列的每个词语都做embedding,之后再和矩阵 做点乘,作为hidden state的输入。

  • 中间的hidden state层: 初始hidden state 是一个随机初始化的值,之后每个hidden state的输出值都由前一个hidden state的输出和当前的输入决定。

  • 最后的输出,即词汇表V的概率密度函数是由最后一个hidden state决定的

「RNN的优势:」

  • 可以处理任意长的输入序列

  • 前面很远的信息也不会丢失(这样我们就可以看到前面的"as the proctor start the clock",从而确定应该是"student opened their exam"而不是"student opened their books").

  • 模型的大小不会随着输入序列变长而变大。因为我们只需要 和 这两个参数

  • 对于每一步都是一样的(共享权重),每一步都能学习 ,更加efficient

「RNN的坏处:」

  • 慢。因为只能串行不能并行

  • 实际上,不太能够利用到很久以前的信息,因为梯度消失。

2.2 RNN模型的训练

  • 首先拿到一个非常大的文本序列 输入给RNN language model

  • 对于每一步 t ,都计算此时的输出概率分布 。(i.e. predict probability distribution of every word, given the words so far)

  • 对于每一步 t,损失函数 就是我们预测的概率分布 和真实的下一个词语 (one-hot编码)的交叉熵损失。

  • 对每一步求平均得到总体的loss:

2.3 Language Model的重要概念--困惑度(perplexity)

我们已知一个真实的词语序列 ,

即,困惑度和交叉熵loss的指数相等。

2.4 基础RNN的应用

(1)生成句子序列

每一步最可能的输出作为下一个的输入词,这个过程可以一直持续下去,生成任意长的序列。

(2)词性标注

每个隐藏层都会输出

(3)文本分类

其实RNN在这个问题上就是为了将一长串文本找到一个合适的embedding。当使用最后一个隐藏状态作为embedding时:

当使用所有隐藏状态输出的平均值作为embedding时:

一起交流

想和你一起学习进步!『NewBeeNLP』目前已经建立了多个不同方向交流群(机器学习 / 深度学习 / 自然语言处理 / 搜索推荐 / 图网络 / 面试交流 / 等),名额有限,赶紧添加下方微信加入一起讨论交流吧!(注意一定要备注信息才能通过)

本文参考资料

[1]

cs224n-2019-lecture06: https://web.stanford.edu/class/cs224n/slides/cs224n-2019-lecture06-rnnlm.pdf

END -

Don't stop pretraining,继续预训练!

2021-10-10

GPT Plus Money!B O O M

2021-10-09

Awesome Efficient PLM Papers

2021-09-29

NLP机器阅读理解:四大任务及相应数据集、比赛

2021-09-24

深度学习基础 | 从Language Model到RNN相关推荐

  1. 深度学习基础 | RNN家族全面解析

    作者 | Chilia 整理 | NewBeeNLP 首先,请阅读先修知识:深度学习基础 | 从Language Model到RNN 1. 梯度消失和梯度爆炸 1.1 梯度消失 [定义]当很多的层都用 ...

  2. 深度学习基础 | NLP大魔王 · BERT

    ‍作者 | Chilia 整理 | NewBeeNLP‍ 首先,请阅读先修知识: 深度学习基础 | 从Language Model到RNN 深度学习基础 | RNN家族全面解析 深度学习基础 | Se ...

  3. 深度学习基础 | 超详细逐步图解 Transformer

    作者 | Chilia 整理 | NewBeeNLP 首先,请阅读先修知识: 深度学习基础 | 从Language Model到RNN 深度学习基础 | RNN家族全面解析 深度学习基础 | Seq2 ...

  4. ​深度学习基础 | Seq2seq+Attention

    作者 | Chilia 整理 | NewBeeNLP 首先,请阅读先修知识: 深度学习基础 | 从Language Model到RNN 深度学习基础 | RNN家族全面解析 1. Seq2seq 1. ...

  5. 深度学习基础之卷积神经网络

    摘要 受Hubel和Wiesel对猫视觉皮层电生理研究启发,有人提出卷积神经网络(CNN),Yann Lecun 最早将CNN用于手写数字识别并一直保持了其在该问题的霸主地位.近年来卷积神经网络在多个 ...

  6. 第三章_深度学习基础

    文章目录 第三章 深度学习基础 3.1 基本概念 3.1.1 神经网络组成? 3.1.2神经网络有哪些常用模型结构? 3.1.3如何选择深度学习开发平台? 3.1.4为什么使用深层表示? 3.1.5为 ...

  7. 五万字总结,深度学习基础。

    文章目录 1 基本概念 1.1 神经网络组成? 1.2 神经网络有哪些常用模型结构? 1.3 如何选择深度学习开发平台? 1.4 为什么深层神经网络难以训练? 1.5 深度学习和机器学习的异同? 2 ...

  8. 《机器学习系列教程》第三章 深度学习基础

    @[第三章 深度学习基础] 第三章 深度学习基础 3.1 基本概念 3.1.1 神经网络组成? 为了描述神经网络,我们先从最简单的神经网络说起. 感知机 简单的感知机如下图所示: [外链图片转存失败( ...

  9. 独家思维导图!让你秒懂李宏毅2020深度学习(三)——深度学习基础(神经网络和反向传播部分)

    独家思维导图!让你秒懂李宏毅2020深度学习(三)--深度学习基础(神经网络和反向传播部分) 长文预警!!!前面两篇文章主要介绍了李宏毅视频中的机器学习部分,从这篇文章开始,我将介绍李宏毅视频中的深度 ...

最新文章

  1. 无标题窗体的移动及其简单美化
  2. 一、什么是hadoop?
  3. WIN10 查看已经连接的wifi的密码
  4. Educational Codeforces Round 73 (Rated for Div. 2)
  5. OpenCV学习笔记(十六):直方图均衡化:equalizeHist()
  6. C语言,利用const常量解决圆的体积和面积。
  7. 撸一串经典的detection tracking
  8. 解决视图状态消息验证代码 (MAC) 错误
  9. 《30天自制操作系统》学习笔记--第8天
  10. linux 命令:userdel 详解
  11. 轻量思考,重拳出击,小牛电动车如何解锁世界
  12. NS3 Tutorial 中文版:第二章 资源
  13. LiveData详解
  14. 行业首选|墨菲安全实力入选《开发安全产品及服务购买决策参考》
  15. 绝望的主妇第一二三季/Desperate Housewives迅雷下载
  16. android 3d成像,android camera 实现3d效果
  17. 范数(简单的理解)、范数的用途、什么是范数
  18. 项目一 Windows Server 2012 R2服务器安装与配置
  19. JWT的基于JJWT在Java中使用
  20. 明天回家,总结一下,提前拜个早年

热门文章

  1. SAP License:AM-资产冻结与停用
  2. 暑假周进度总结报告5
  3. 7.13 Python基础语法
  4. Solr7.2.1环境搭建和配置ik中文分词器
  5. 【洛谷1640】[SCOI2010]连续攻击游戏
  6. Chrome之控制台使用【转载】
  7. charles捕获手机端请求数据
  8. (转)一步一步Asp.Net MVC系列_权限管理之权限控制
  9. jQuery lazyload
  10. 开发smartphone应用,无法生成cab文件?