1、梯度下降
在进行梯度下降的时候,容易陷入局部最小值,还有一种情况是陷入鞍点。所以可以在梯度下降中加入动量Momentum。
普通的梯度下降的一般算法流程是:
update = step * gd
parameters = parameters - update
收敛速度会变慢,有时甚至陷入局部最优;
加入动量:
update = step * gd
velocity = previous_update * momentum
parameter = parameter + velocity - update
在学习率较小的时候,适当的momentum能够起到一个加速收敛速度的作用;
在学习率较大的时候,适当的momentum能够起到一个减小收敛时震荡幅度的作用。
2、怎么评价词向量模型的好坏
内部任务评价
1、词类比
W
(
"
w
o
m
a
n
"
)
−
W
(
"
m
a
n
"
)
=
W
(
"
a
u
n
t
"
)
−
W
(
"
u
n
c
l
e
"
)
W("woman")-W("man")=W("aunt")-W("uncle")
W("woman")−W("man")=W("aunt")−W("uncle")
W
(
"
w
o
m
a
n
"
)
−
W
(
"
m
a
n
"
)
=
W
(
"
q
u
e
e
n
"
)
−
W
(
"
k
i
n
g
"
)
W("woman")-W("man")=W("queen")-W("king")
W("woman")−W("man")=W("queen")−W("king")
2、词相似度
s
i
m
(
w
o
r
d
1
,
w
o
r
d
2
)
=
c
o
s
(
w
o
r
d
v
e
c
1
,
w
o
r
d
v
e
c
2
)
sim(word1,word2)=cos(wordvec1,wordvec2)
sim(word1,word2)=cos(wordvec1,wordvec2)
外部任务评价
外部任务评价比如命名实体识别、文本分类等。
3、词向量如何可视化
如果得到一个词向量是300维,想要看一下词向量的分布,应该怎么解决?可以通过降维,降维到2维空间中,这样就可以看到词向量之间的关系。
4、通过词向量怎么表示一个句子向量(词组向量)
每一个词都有一个向量,有的时候需要一个词组的向量甚至是一句话的向量。最简单的方法就是将词的向量加起来进行平均。
5、思考题
1、查询词的时间复杂度(树、索引等树结构)
2、给一个词,求其最相似的词,时间复杂度是多少,有可能有优化空间吗?(数据结构KD TREE)
3、词向量单机内存放不下怎么办,硬盘放不下怎么办?(大数据)