CS224n 斯坦福深度自然语言处理课 Christopher Manning/ Richard Socher 领衔主讲

开课时间:5月16日开始正式更新,每周更新1个Lecture
开课时长:18讲视频 +3次课间作业+ 终极课程项目
该课程已关闭

传统机器翻译

这还只是传统机器翻译系统的冰山一角,有许多细节没有涉及到,还需要大量的人肉特征工程,总之是非常复杂的系统。其中每个环节都是独立不同的机器学习问题。这些独立的模型各自为政,并不以一个统一的优化目标为最终目标。

而深度学习则提供了一个统一的模型,一个统一的最终目标函数。在优化目标函数的过程中,得到一个end to end的完整的joint模型。传统机器翻译系统与深度学习是截然相反的,对齐模型、词序模型、语言模型……一堆独立的模型无法联合训练。

 LSTM的计算可以分为如下步骤

  1.  New memory generation 与GRU的New memory generation类似。使用当前词语xtxt 和之前的隐状态ht1ht1来生成新的记忆c~tc~t。于是新记忆里面就包含了当前词语x(t)x(t)的属性。

  2. Input Gate 使用当前词语和之前的隐状态决定当前词语是否值得保留来gate新记忆,这个“是否”是通过itit来体现的

  3. Forget Gate 与input gate类似,只不过它不是用来衡量输入单词的有用与否,而是衡量过去的记忆对计算当前记忆有用与否。它接受输入单词和上一刻的隐状态产生输出 ftft

  4. Final memory generation 根据forget gate的建议ftft来遗忘过去的记忆ct1ct−1。类似地,根据input gate的建议itit来gate信的记忆 c~tc~t,然后把两者加起来得到最终记忆 ctct

  5. Output/Exposure Gate 这是GRU中不显式存在的门,用处是将最终记忆与隐状态分离开来。记忆 ctct 中的信息不是全部都需要存放到隐状态中,隐状态是个很重要的使用很频繁的东西,LSTM中每个gate都需要隐状态的参与。Output Gate产生 otot,用来gate记忆的tanh激活值。

[展开全文]

1 语言是连续符号的集合 这些符号承载着语义 所以 一句话的意思可以用不同的符号(语言)来表达 这也就证明了用计算机语言来完成自然语言处理的可能性

2 机器学习的算法是不智能的,因为它需要人类观察数据并手工提特征来提升模型的效率,机器只是做数值上的优化。

“机器学习中,机器实际上学习到了什么呢?其实机器几乎没有学习到任何东西,反而是人类学习到了非常多的知识,因为他们知道了添加哪些特征会提升模型性能”

3 深度学习就很只能。因为在深度学习的算法中,机器只需要数据而已,让计算机自动识别数据的特征,自动计算权重。

4 深度学习取得非常大成功的领域是语音识别,提升了30%的准确率,之后是ImgeNet,提升了1/3的准确率。

5 NLP的难点在于,语义结构不清晰,有歧义。比如:the pope's baby steps on gays。人理解起来都会有歧义,机器更会。

6 在深度学习中,向量是任何知识,信息的载体,把这样的语音,词,句子嵌入到向量中是一项非常伟大的工作,将在下一节课中具体展开。

[展开全文]

skip-gram:从中心词预测上下文

CBOW:从上下文预测中心词

SGD 随机梯度下降

[展开全文]

1、word2vec针对的是一整个语料库,对每个窗口移动去算的每一个lost func 

2、共现矩阵对于count 出x的计算方法

1)一些停用词,设置一个最大值,比如 the 最大为100

2)举例中心词越远,给个衰减,比如m=5之后的词,出现一次,加0.5

3、用svd分解,去给词向量(共现计数)降维度,然后去降维后的前两个值,作图

4、svd分解虽然简单,优化上--> glove

5、skip-gram 不用统计信息

6、woman - man + king 后,与他最大的余弦相似性的词是queue

Paper 一词多义

1、一次多义可认为是多个语义向量线性叠加,可以通过稀疏编码,

对比Skip-gram(一次一个窗口,更新的是窗口中涉及到的词的概率) & Glove(先计算所有计数,然后处理计数

Skip-gram & Glove

 

 

[展开全文]

1、wordnet 上位词、同义词,做语义检索的时候很有用,无法区分同义词之间的区别

2、one hot 缺失词之间的联系,词联系nlp中很重要

3、more than one thing we can do about it

4、分布相似性,观察每个出现banking的单词的句子,并通过某种上下文表示统计

5、每一个单词用一个向量表示

6、注意分布式表示和onehot表示是两种词向量的 表示方法,分布式学习,指的是用中心词预测上下文的词的一种理论

7、句向量:1) 计算加权平均的句向量,2)计算向量的第一主成分,然后减去第一主成分的投影

word2vec

1、skip-grams(SG)

选定一个中心词,有且只有一个概率,这个概率就是用来输出上下文单词。

做法:给定一个半径m,行文中的每个词,循环计算它前后各m个词的出现分布。损失函数为

theta就会词向量表示,转化为对数概

sgd方法训练。

2、CBOW

 

 

 

[展开全文]

每一个单词都对应着两个向量:中心向量(center vector)和上下文向量(outside vector或output vector),其中中心向量更多的是表示单词本身的意思,而上下文向量则是表示单词的上下文的意思。

[展开全文]

skip-gram模型试图一次捕获同时出现的一个窗口里词汇上下文的关系。

Glove模型试图捕捉同一个窗口下这些单词的共同出现的词频数关系。

评价词向量的好坏:

1.内部评价。

2.外部评价。

[展开全文]

distributed: 词义分布在向量中,维度低,紧凑。与之对应的是local,局部向量表示词义,如one hot,维度高,稀疏。

distributional:符合分布的词义表示,词义相近,分布距离也近。

skip gram: 每个词有2个向量, 作为上下文的u,和作为中心词的v。

 

[展开全文]

纠错:00:49处翻译有误,what is deep learning,应该是“什么是深度学习”

[展开全文]

交叉熵其实只有一项,就是真实label对应的对数概率。

交叉熵可以理解为KL散度。

[展开全文]

词高维向量没有意义。SVD的坐标没有现实意义。

DL is representation learn. 只需要把数据输入,DL会寻找生成特征

NLP的应用:

1.近义词 similarity

2.词的不同时态Morphology

3.找出句子结构,语法分析

4.句子含义semantics

5.情感分析

6.聊天机器人

7.机器翻译

RNN recurtent neural network

[展开全文]

矩阵很稀疏。

目标函数非凸,初始化很重要。

可以走若干窗口之后,做一次更新。

 

syntactic:句法

semantic:语义

 

Glove中使用两组向量同样是出于优化的考虑。

U和V是可以互换的。

[展开全文]

这节课视频推导里有一个小细节要注意,防止被坑。讲到skip-gram算法的过程图里,中心词与三个不同上下文词做点积运算结果不一样,但实际上应该全部是一样的,因为与中心词做运算的权重举证w'是同一个。他视频讲的也是。最新的课件也更正了这个错误。

http://vedio.leiphone.com/5b03c6334f058.pdf

[展开全文]

Max-margin Objective Funtion是一个powerful的损失函数 

[展开全文]

KL distribution

Regularization for minimizing test error & overfitting

 

[展开全文]

skip-gram:给定中心词,去预测周围的词

损失函数都是非凸的

 

 

 

[展开全文]

1. baby math

2. one_hot coding

3. 几个概念

  • Distributional similarity:分布式相似度,指的是单词在不同的句子中的分布的相似度,

"You shall know a word by the company it keeps" ---J.R.Firth

就是指我们可以通过和该单词搭配的单词来认识这个单词。

 

  • Distributed representation指的是和one-hot编码不同的方式表示一个词汇的含义,即在一个大的向量空间中模糊化词汇的含义。

4.  Basic idea of neural network word embeddings:

p(context|w_t) = ...

loss function: J = 1 - p(w_-t | w_t)

即预测出Word t (中心词汇)周围的词。

这样可以用来预测上下文。 

Directly learning low-dimensional word vectors

5. word2vec:

是一个软件

  • 2个生成Word vectors的算法
  • 2个训练效率中等的训练方法
公式:

Skip-grams(SG)算法:

 

 

[展开全文]

作业1是大量的编程 

skip-gram:中心词预测附近词语

听不懂:negative-sampling

 

[展开全文]

进入小组观看课程

以下为该课程相关学习小组,您可以选择任意小组加入学习课程并交流