赞
踩
这门大课主要知识点有:
1.GRU(Gated Recurrent Unit) —解决语句中后面的单词对前面的输出存在依赖的问题,比如:时态
RNN单元结构图
GRU单元结构图
c
=
m
e
m
o
r
y
c
e
l
l
c = memory\space cell
c=memory cell
c
~
⟨
t
⟩
=
t
a
n
h
(
W
c
[
c
⟨
t
−
1
⟩
,
X
⟨
t
⟩
]
+
b
c
)
(1)
\tilde c^{\langle t \rangle} = tanh(W_c[c^{\langle t-1 \rangle}, X^{\langle t \rangle}] + b_c)\tag{1}
c~⟨t⟩=tanh(Wc[c⟨t−1⟩,X⟨t⟩]+bc)(1)
Γ
u
=
σ
(
W
u
[
c
⟨
t
−
1
⟩
,
X
⟨
t
⟩
]
+
b
u
)
(2)
\Gamma_u = \sigma(W_u[c^{\langle t-1 \rangle}, X^{\langle t \rangle}] + bu) \tag{2}
Γu=σ(Wu[c⟨t−1⟩,X⟨t⟩]+bu)(2)
c
⟨
t
⟩
=
Γ
u
∗
c
~
⟨
t
⟩
+
(
1
−
Γ
u
)
∗
c
⟨
t
−
1
⟩
(3)
c^{\langle t \rangle} = \Gamma_u*\tilde c^{\langle t \rangle} + (1 - \Gamma_u)*c^{\langle t-1 \rangle} \tag{3}
c⟨t⟩=Γu∗c~⟨t⟩+(1−Γu)∗c⟨t−1⟩(3)
2.LSTM–长短时记忆门,主要六个公式(两个输入,三个门,三个输出)
3.Word Embedding(词嵌入)
Word Embedding 这个在术语是运用数学方法来表示一个词,类似于数学中的映射(f: x -> y),但为什么不叫Word Mapping 了?这就要弄明白Embedding的数学意思了。
这个词Embedding,它广泛存在于包括代数、拓扑与几何等诸多数学领域。它主要表征某个数学结构中的一个实例被包含在另外一个实例中,例如一个group它同时又是一个subgroup。
看到加粗的地方我的思路就开始清晰了,嵌入是在强调一个实例被包含到另外一个实例中,而映射是不一定的。自然语言处理技术就是利用数学向量的方法,把我们生活中所遇到的词用低维向量的方式表示输入给机器,这样计算机可以更清晰明确地理解单词的意思。而我们人类社会现在创造的词汇都是已知的,确定的,这个集合对于现在的计算机来说,其实很小,所以我们完全可以创造另外一个实例来包含它,因此把这个概念叫做“Word Embedding”
词嵌入的方法主要有:n-gram、BOW、Word2Vec(Word2Vec分CBOW和skip-gram两种方法)、GloVe
Word2Vec有两种模型:CBOW和Skip-Gram,每种模型都可以使用Hierarchical softmax 或negative sampling 算法
n-gram 是指基于一个假设:第n个词出现与前n-1个词相关,而与其它任何词不相关。整个句子出现的概率等于各个词出现的概率乘积。各个词的概率可以通过语料中统计计算得到。
常见的有:unigrams(一元语法)、 bigrams(二元语法)、 trigrams(三元语法)
假设句子T是由词序列w1, w2, w3…wn组成,用公式N-Gram语言模型如下:
P(T) = P(w1)*p(w2)*p(w3)***p(wn)=p(w1)*p(w2|w1)*p(w3|w1w2)***p(wn|w1w2w3…)
参考资料:
1.N-Gram语言模型
2.自然语言处理中N-Gram模型介绍
3.N-gram模型
给定一些确定的词组训练比如 Man -> Woman,让模型判断King和Queen是不是词义相近的词的算法原理就是计算
e
M
a
n
−
e
W
o
m
a
n
≈
e
K
i
n
g
−
e
Q
u
e
e
n
e_{Man} - e_{Woman} {\approx} e_{King}-e_{Queen}
eMan−eWoman≈eKing−eQueen,如下图所示:
下图是一个单词的词嵌入矩阵的计算方法,比如单词j的嵌入矩阵
e
j
e_{j}
ej
词嵌入学习过程如下两张图所示,模型可以只取当前时刻的前四个的词嵌入矩阵来进行预测输出,也可以通过前后1个单词或者前面一个单词来进行预测输出:
–词嵌入算法模型中softmax的计算量太大,因为下图公式的分母要进行10K次相加,我们可以用Hierarchical softmax classifier来进行减轻计算量,这中分类其类似二叉树的算法,判断预测值是在前5K个单词中还是后5K个单词中,然后再一次二分
以上,所介绍的方法就叫skip-Gram,他的缺点就是计算量太大,softmax要进行100000次相加。
另外一种方法叫“negative sample”,就是应用监督式学习的方法,对于上下文 orange ,我们把juice标定为1,认为orange后面的输出预测,其它随机四个单词比如King book the of 表位0,认为他们不是一个好的预测,这样我们就有四个负样本(一本如果语料库很大的话,我们选2-5个,语料库少的话我们就选5-20个负样本)
负采样算法原理,就是每次迭代我们只计算K+1次逻辑斯蒂计算
P
(
y
=
1
∣
c
,
t
)
=
σ
(
θ
t
T
e
c
)
P(y=1|c,t) = \sigma(\theta_{t}^Te_{c})
P(y=1∣c,t)=σ(θtTec),相比skip-gram要计算整个语料库100000次,大大减少了运算量
-------如何选取负采样样本,如下图所示
–sentiment classification 情绪分类,给一段文字,识别里面表达的情绪
3.2 Word Embedding bias
常见词嵌入的偏差:有性别偏差,种族偏差、性取向偏差等等,消除这些偏差的方法步骤如下:
4.Seq2Seq(sequence to sequence)以及image to sequence
—sequence to sequence 模型如下图所示:
—image to sequence模型如下图所示:
先选出第一个单词中的3个概率最大的,如下图所示,in 、Jane、September,分别以此为基础进行预测第二个输出单词
三组网络都得出最大概率的第二个单词后,继续进行预测第三个单词,
B的取值越大,计算速度越慢,当B=1时,就相当于“贪婪搜索”(Greedy Search)
—Beam Search模型误差分析:
Bleu 给定一个机器翻译结果,它能够自动给出这个翻译结果的分数,以衡量机器翻译的好坏。是一个单一数字指标。
这种评测方法通过对候选翻译与参考文本中的相匹配的n元组进行计数,其中一元组(unigram)比较的是每一个单词,而二元组(bigram)比较的是每个单词对。这种比较是不管单词顺序的。
浅谈用Python计算文本BLEU分数
NLTK提供了一个corpus_bleu()函数来计算多个句子(如段落或文档)的Bleu分数。
from nltk.translate.bleu_score import sentence_bleu
reference = [['this', 'is', 'small', 'test']]
candiate = ['this', 'is', 'a', 'test']
score = sentence_bleu(reference, candiate, weights=(1, 0, 0, 0))
print(score)
输出结果为:
0.75
注意力模型 和 CTC (Connectionist temporal classification)模型
注意力模型原理就是对一层BRNN的每个输出加一个权重值
计算注意力权重的公式如下:
语音辨识是将音频转化成文本类的问题,主要使用“sequence2sequence”,
例如:hey siri , 小爱同学
第一周:
选 A
选A
第六题选B
选C
第二周测验题:
选B
选A
选A,*在Python里是元素级乘法
选A
选AC
选BCD
第三周测验题
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。