4 优化进阶:
ill-conditioned
condition number = lambda_max/lambda_min
Ill-conditioned 对优化的影响是需要选择合适的学习率。
ita=(希腊字母)
最大学习率 ita <1/L
L = max_x d^2 f(x) f(x)的最大二阶导数。
为了保证收敛, 学习率ita < 2/L
ill-conditioned 的解决办法
- preconditon, 用hessian 矩阵的逆乘梯度,得到新的一个类单位阵的方阵。
- 平均历史 梯度,如 momentum 动量法。、
momentum 算法:
用这种方法可以用更大的learning rate,从而更快收敛。
precondition 算法:
- AdaGrad: 学习率由越来越低,由累加变量St 来控制。 (*) 表示按位乘, gt 为t时刻随机梯度。
St <- St-1 + gt (*) gt
Xt <- Xt-1 - (ita / (St +e)) (*) gt
问题:随着时间的增进, St会很大,从而导致最后的学习率太小而停滞不前。
增大ita(学习率)可以改善,但是太大的ita会容易发散(特别是在非凸优化问题中)
AdaGrad算法没有使用 指数加权移动平均法
- RMSProp 将小批量梯度按元素平方作指数加权移动平均 Exponential moving average
RMSprop 解决AdaGrad的学习率变得接近0的问题。
- AdaDelta 不需要设定学习率 ita, 由算法自动计算。
St 类似RMPprop的指数加权移动平均。
delta Xt 为自变量的增量
gt <- 根号(( deltaX<t-1> + e )/(St +e)) (*) gt
Adm 算法,集合了动量法和RMSprop的优点。 并对动量变量和累加变量作了偏差纠正。
5. Word2vec
skipgram 跳字模型 : 通过中心字预测背景词
CBOW 连续字袋模型: 通过背景词预测中心词。
二次采样, 当p >0 时,省略,否则 取样。
p = max(1- 根号( t/f(x)), 0),
t 为预设词频阀值 , f(x) 为x的词频。 当f(x) >t 时, 根号(t / f(x))小于1, 从而p >0, 词被跳过(不取样)
当 f(x) < t 时, 根号(t/f(x) 大于1, 则 1-根号(t/f(x)) 小于0, p=0, 从而该词得到保留。
负采样技巧,用来近似模拟 softmax函数。由于字典比较大,如果直接用softmax函数,将导致计算量过大。
损失函数: 采用最大似然会计的对数等价形式定义损失函数。
6. 词向量进阶
Glove = global vector, 具有全局信息的词向量
可以直接从torchtext中加载, 可以用于搜索相似词,与类比词.
搜索类比词与相似词的方法是类似的, 相似词是直接从库中计算与该词的余弦相似值 ,选择top k 下。
计算类比关系时,比如 a ->b , 要找 c->d 中的d, 只需要 用 a+b-c的值 去库查询余弦相似度,找出最相似的那个即可。