线性回归
softmax与分类模型
神经网络中,输出为多分类时,使用softmax,使用softmax后只是将值规范在0-1之间,并不会影响值之间的大小关系。
多层感知机
多层感知机(MLP,Multilayer Perceptron)也叫人工神经网络(ANN,Artificial Neural Network),除了输入输出层,它中间可以有多个隐层,最简单的MLP只含一个隐层,即三层的结构。多层感知机层与层之间是全连接的。多层感知机最底层是输入层,中间是隐藏层,最后是输出层。
隐藏层的神经元怎么得来?首先它与输入层是全连接的,假设输入层用向量X表示,则隐藏层的输出就是 f (W1X+b1),W1是权重(也叫连接系数),b1是偏置,函数f 可以是常用的sigmoid函数或者tanh函数:
文本预处理
正则表达式中: [a-z]+ 表示由a-z中的字母组成的长度大于等于1的字符串。
分词,建立字典
语言模型
假设
词
语
w
1
,
w
2
,
.
.
.
,
w
r
是
按
顺
序
生
成
的
,
那
这
个
词
语
序
列
的
概
率
为
:
P
(
w
1
,
w
2
,
.
.
.
,
w
r
)
=
∏
t
=
1
r
p
(
w
t
∣
w
1
,
w
2
,
.
.
.
,
w
t
−
1
)
词语w_1,w_2,...,w_r是按顺序生成的,那这个词语序列的概率为:P(w_1,w_2,...,w_r)=\prod_{t=1}^rp(w_t|w_1,w_2,...,w_t-1)
词语w1,w2,...,wr是按顺序生成的,那这个词语序列的概率为:P(w1,w2,...,wr)=∏t=1rp(wt∣w1,w2,...,wt−1)
举个例子,假设有一个有四个词语的序列<w_1,w_2,w_3,w_4>,则这一序列出现的概率为:
P
(
w
1
,
w
2
,
w
3
,
w
4
)
=
p
(
w
1
)
∗
p
(
w
2
∣
w
1
)
∗
p
(
w
3
∣
w
1
,
w
2
)
∗
p
(
w
4
∣
w
1
,
w
2
,
w
3
)
P(w_1,w_2,w_3,w_4)=p(w_1)*p(w_2|w_1)*p(w_3|w_1,w_2)*p(w_4|w_1,w_2,w_3)
P(w1,w2,w3,w4)=p(w1)∗p(w2∣w1)∗p(w3∣w1,w2)∗p(w4∣w1,w2,w3)
其中每个词语出现的概率可以用词语在语料库中出现的频率表示。
p
(
w
1
)
=
n
(
w
1
)
n
p(w_1)=\frac{n(w_1)}{n}
p(w1)=nn(w1)
条件概率:
p
(
w
2
∣
w
1
)
=
n
(
w
1
,
w
2
)
n
(
w
1
)
p(w_2|w_1)=\frac{n(w_1,w_2)}{n(w_1)}
p(w2∣w1)=n(w1)n(w1,w2)
n元语法:当词语序列长度增加时,我们用上述语言模型来计算词语序列出现的概率耗费的计算和存储会呈指数增长。为了提高计算和存储效率,我们可以引入马尔科夫链来简化模型。马尔科夫链认为:一个词语出现的概率仅仅与其前面的n个词语相关,这也叫n阶马尔科夫链。例如,n=1,那么
p
(
w
3
∣
w
1
,
w
2
)
=
p
(
w
3
∣
w
2
)
p(w_3|w_1,w_2)=p(w_3|w_2)
p(w3∣w1,w2)=p(w3∣w2)。但一般我们使用的马尔科夫链是n-1阶马尔科夫链,即一个词语出现的概率至于其前面n-1个词语有关。
引入n-1阶马尔科夫链,可将原语言模型简化为:
P
(
w
1
,
w
2
,
.
.
.
,
w
r
)
=
∏
t
=
1
r
p
(
w
t
∣
w
t
−
(
n
−
1
)
,
w
t
−
(
n
−
2
)
,
.
.
.
,
w
t
−
1
)
P(w_1,w_2,...,w_r)=\prod_{t=1}^rp(w_t|w_{t-(n-1)},w_{t-(n-2)},...,w_{t-1})
P(w1,w2,...,wr)=∏t=1rp(wt∣wt−(n−1),wt−(n−2),...,wt−1)
此式即为n元语法(n-grams),n-grams是基于n-1阶马尔科夫链的概率语言模型。当n=1、2、3时,我们分别称其为一元语法、二元语法、三元语法。
在原始语言模型中,
P
(
w
1
,
w
2
,
w
3
,
w
4
)
=
p
(
w
1
)
∗
p
(
w
2
∣
w
1
)
∗
p
(
w
3
∣
w
1
,
w
2
)
∗
p
(
w
4
∣
w
1
,
w
2
,
w
3
)
P(w_1,w_2,w_3,w_4)=p(w_1)*p(w_2|w_1)*p(w_3|w_1,w_2)*p(w_4|w_1,w_2,w_3)
P(w1,w2,w3,w4)=p(w1)∗p(w2∣w1)∗p(w3∣w1,w2)∗p(w4∣w1,w2,w3)
在n-1阶马尔科夫链下:
n
=
1
(
即
1
−
g
r
a
m
)
:
P
(
w
1
,
w
2
,
w
3
,
w
4
)
=
p
(
w
1
)
∗
p
(
w
2
)
∗
p
(
w
3
)
∗
p
(
w
4
)
n
=
2
(
2
g
r
a
m
)
:
P
(
w
1
,
w
2
,
w
3
,
w
4
)
=
p
(
w
1
)
∗
p
(
w
2
∣
w
1
)
∗
p
(
w
3
∣
w
2
)
∗
p
(
w
4
∣
w
3
)
n
=
3
(
3
g
r
a
m
)
:
P
(
w
1
,
w
2
,
w
3
,
w
4
)
=
p
(
w
1
)
∗
p
(
w
2
∣
w
1
)
∗
p
(
w
3
∣
w
1
,
w
2
)
∗
p
(
w
4
∣
w
2
,
w
3
)
n=1(即1-gram):P(w_1,w_2,w_3,w_4)=p(w_1)*p(w_2)*p(w_3)*p(w_4) n=2 (2_gram) :P(w_1,w_2,w_3,w_4)=p(w_1)*p(w_2|w_1)*p(w_3|w_2)*p(w_4|w_3) n=3 (3_gram) : P(w_1,w_2,w_3,w_4)=p(w_1)*p(w_2|w_1)*p(w_3|w_1,w_2)*p(w_4|w_2,w_3)
n=1(即1−gram):P(w1,w2,w3,w4)=p(w1)∗p(w2)∗p(w3)∗p(w4)n=2(2gram):P(w1,w2,w3,w4)=p(w1)∗p(w2∣w1)∗p(w3∣w2)∗p(w4∣w3)n=3(3gram):P(w1,w2,w3,w4)=p(w1)∗p(w2∣w1)∗p(w3∣w1,w2)∗p(w4∣w2,w3)
由公式我们可知,n小的时候,结果会不准确,但当n大的时候,需要计算和存储大量词频以及相邻词频。
n元语法的缺点:
(1)参数空间过大。复杂度和词语序列的个数n呈指数关系
(2)数据稀疏。(齐夫定律:很多单词出现的频率很少,甚至根本就不会在语料库中出现,估计出来的概率就会很不准确,出现很多0,另外,有一些词频高的词可能是一些停用词,如“的”“了”之类,其在语料库中应该被删除了,所以计算出的概率可能也为0,计算其他词语与这些词出现的概率,也可能为零(或比较小),数据稀疏问题很严重。)
采样:
使用循环神经网络预测词语的下一个词时,样本序列和标签序列的长度是一样的。假设有一个句子“我想要直升机”,我们设定的输入长度为5,其中一个样本序列就可以是“我想要直升”,那么对应的标签序列是“想要直升机”。
采样的类别:
随机采样:已知batchsize和timestep之后,按照小于timestep的值划分组,这样可以划分为多个组,如果划分之后剩余一些不够一组,就可以舍弃。
随机采样就是每次从分组中选出batch-size的序列。重复此过程,直至分组个数不足batchsize,相邻的两个随机小批量在原始序列中的位置不一定相邻。
相邻采样:相邻的两个随机小批量在原始序列上的位置相邻。
假设batchsize为3,则先将训练序列3等分,红色为第一个batch,绿色为第二个batch,蓝色为第三个batch。
timestep:文本处理中,一个单词称为一个timestep,如果一个样本序列有5个单词,那timestep就是5.