Deep Learning for Nature Language Processing --- 第七讲

Overview

传统语言模型

RNNs

RNN 语言模型

一些训练时重要的策略和技巧

梯度消失和梯度爆炸的问题

双向RNNs

其他序列问题中的RNNs

Language Models

语言模型计算的是一连串词的概率:P(w1,w2…wT);其中的w1,w2…wT都是词向量。

这种语言模型有利于机器翻译,例如:

1.词序:p(the cat is small) > p(small the is cat)

2.词的选取:p(walking home after school) > p(walking house after school)

Traditional Language Models

在传统的语言模型中,计算的概率P通常取决于之前的一个包含n个词的窗(window)中的词。

传统语言模型可以理解为一个不准确但是必要的马尔科夫假设:

以基于单个词和两个词为例(一元和二元),估计接下来出现的词的概率:

更高的元(grams)能获得更好结果

单个这样的传统的语言模型存在非常多的n-grams(n元),所以要求巨大的RAM。

目前处于领先地位的研究:

论文题目:Scalable Modified Kneser--‐Ney Language Model Estimation by Heafield et.建立了一个基于126 billion tokens的模型,在140GB的机器上训练了2.8天。

Recurrent Neural Networks!

RNN模型在每一个(时间节点)time step都有一个相应的权重(weights)

RNN模型考虑到了前面出现的所有词

对RAM的需求仅仅是特定数目的词

Recurrent Neural Network Language Model

词向量:x1…xt-1,xt,xt+1…xT

对于单个时间节点(time step):

RNN Language Model的中心思想:在所有的time step上使用同一组weights。而对于每个time step,其计算公式不变:

那么总的y就是基于整个词汇表V的概率分布

交叉熵公式是相同的:

Training RNNs is hard

RNN训练困难,可以体现在以下几点:

1)在每次的前向传播中,都需要乘以一个矩阵W

2)理论上,在RNN模型中,很久以前的time step上的输入也会影响RNN的输出y

3)试试求一下RNN模型中,连续两个time step对的导数

The vanishing gradient problem

在反向传播过程中,对于每一个time step都要乘以同一个矩阵W

剖析造成RNN vanishing gradient problem的原因:

1)每个time step上的计算公式:

2)全局的误差等于每个time step上的误差之和:

3)又因为链式法则:

4)观察下面红色框中的公式:

5)又因为:

原因是之前time step的h会对后面的time step的h产生影响

6)而前面累乘号里面的式子即导数,有事一个雅克比(jacobian)矩阵:

7)要计算雅克比行列式,需要对其中的每个元素进行求导:

8)而梯度则是雅克比矩阵的乘积,这样的话到最后,梯度会变得特别大或者特别小,造成vanishing gradient problem:

理论上,单个time step上的误差error在反向传播时,会影响之前很多time step的改变,所以vanishing gradient 是一个problem:

vanishing gradient problem对问答系统等的影响:对于当前语句涉及到的单词,模型不会考虑离这些单词的很远的time step上的单词。例如:

IPython Notebook with vanishing gradient example

Trick for exploding gradient: clipping trick

伪代码:

这样修改直接改变了梯度公式本身

For vanishing gradients: Initialization + ReLus!

将W初始化为单位矩阵,并且使用max(x,0)作为非线性函数:

这是只有一个节点的RNN的梯度下降图。蓝色实线是没做trick的梯度轨迹,撞到那堵墙后就被弹飞了;做了trick后的轨迹是虚线,同样遇到那堵墙后,新的梯度不会被乱弹。每一步的W会用梯度更新,梯度爆了的话,新W就离老W远很多了,局部性就被打破了

Problem: Softmax is huge and slow

策略:基于类的单词预测

即:

类的数量越多,则复杂性更大,速度也越低。

Sequence modeling for other tasks

分类:

1)NER(命名实体识别,如车辆,地点等等)

2)情感分析

3)观点表达

可以参考下面这篇论文:

Opinion Mining with Deep Recurrent Nets

目标:通过以下两种方法给每个单词进行分类

这两张slides我没有理解,欢迎留言指导讨论

Approach: Recurrent Neural Network

标记:

其中:

1)x代表一个单词(token)所表示的词向量

2)y代表模型输出的label(B,I或者O),上图中的g=softmax

3)h是记忆单元(可以理解为隐含层),是由之前的记忆单元和当前的词向量计算得到,可以说概括了直到这个time step的一段话

Bidirectional RNNs

对于分类问题,如果想要当前的time step包含之前和之后的词的信息,则可以考虑使用双向RNN:

Data

时间: 2024-08-28 16:53:57

Deep Learning for Nature Language Processing --- 第七讲的相关文章

Deep Learning for Nature Language Processing --- 第四讲(下)

A note on matrix implementations 将J对softmax的权重W和每个word vector进行求导: 尽量使用矩阵运算(向量化),不要使用for loop. 模型训练中有两个开销比较大的运算:矩阵乘法f=Wx和指数函数exp Softmax(=logistic regression) is not very powerful softmax只是在原来的向量空间中给出了一些linear decision boundary(线性决策线),在小的数据集上有很好的regu

Deep Learning for Nature Language Processing --- 第八讲

Current statistical machine translation systems 源语言:法语 目标语言:英语 概率公式(利用贝叶斯定理): 在平行语料库(parallel corpora)上训练翻译模型p(f|e) 在英语语料库上训练语言模型p(e) Step1: Alignment 目标:将源语言中的单词或者短语匹配到正确的目标语言中的单词或者短语 假如匹配好了单词和短语,那么又如何给这些单词和短语重新排序呢? After many steps 每个源语言中的单词或者短语,在目

Deep Learning for Natural Language Processing1

Focus, Follow, and Forward Stanford CS224d 课程笔记 Lecture1 Stanford CS224d 课程笔记 Lecture1 Stanford大学在2015年开设了一门Deep Learning for Natural Language Processing的课程,广受好评.并在2016年春季再次开课.我将开始这门课程的学习,并做好每节课的课程笔记放在博客上.争取做到每周一更吧.本文是第一篇. NLP简介 NLP,全名Natural Languag

CS224d: Deep Learning for Natural Language Process

Course Description Teaching Assistants Peng Qi Course Notes (updated each week) Detailed Syllabus Class Time and Location Spring quarter (March - June, 2015).Lecture: Monday, Wednesday 11:00-12:15Location: TBD Office Hours Richard: Wed 12:45 - 2:00,

Deep Learning Libraries by Language

Deep Learning Libraries by Language Tweet Python Theano is a python library for defining and evaluating mathematical expressions with numerical arrays. It makes it easy to write deep learning algorithms in python. On the top of the Theano many more l

Deep Learning for Natural Language Processeing : Convex Optimization

效率爆表的一个晚上,只是因为没带手机,可怕! 今天开启新的课程,http://cs224d.stanford.edu/syllabus.html 第一章是凸优化,convex Optimazition 凸集 Convex Set 定义: A set C is convex if, for any x, y ∈ C and θ ∈ R with 0 ≤ θ ≤ 1,θx + (1 ? θ)y ∈ C. 判别方法:如果一个集合C是凸集,则C中任意两个元素连线上的点都属于C 举例:所有的实数空间:实数

机器学习(Machine Learning)&深度学习(Deep Learning)资料

机器学习(Machine Learning)&深度学习(Deep Learning)资料 機器學習.深度學習方面不錯的資料,轉載. 原作:https://github.com/ty4z2008/Qix/blob/master/dl.md 原作作者會不斷更新.本文更新至2014-12-21 <Brief History of Machine Learning> 介绍:这是一篇介绍机器学习历史的文章,介绍非常全面.从感知机.神经网络.决策树.SVM.Adaboost到随机森林.Deep L

Deep learning的一些教程 (转载)

几个不错的深度学习教程,基本都有视频和演讲稿.附两篇综述文章和一副漫画.还有一些以后补充. Jeff Dean 2013 @ Stanford http://i.stanford.edu/infoseminar/dean.pdf 一个对DL能干什么的入门级介绍,主要涉及Google在语音识别.图像处理和自然语言处理三个方向上的一些应用.参<Spanner and Deep Learning>(2013-01-19) Hinton 2009 A tutorial on Deep Learning

(转) Deep Learning Resources

转自:http://www.jeremydjacksonphd.com/category/deep-learning/ Deep Learning Resources Posted on May 13, 2015 Videos Deep Learning and Neural Networks with Kevin Duh: course page NY Course by Yann LeCun: 2014 version, 2015 version NIPS 2015 Deep Learnin