机器翻译&语序
基于计数概率的预测
解决语序问题的办法:根据前面的次来推后面的词
但是在实际应用中不可能知道前面的所有词,只能知道前面的N个词(窗口)
随着计数的增加N,准确度会随之上升,但是内存需求也会爆表
内存利用效率极低,效果不好(在N到达3,4的时候就已经非常低效了)
RNN
细节方面的看英文课会有点听不懂,但是大体上意思就是当前轮次受上次影响
Whh的意思是:当前层对自身下轮次影响的权重 (h层对h层输出的权重)
矩阵串联
损失函数-交叉熵
这里可以看作一个分类任务,即根据前面序列的内容去预测下一个词是哪个
(从词汇表里选出概率最高的一个词)
困惑值(我是真的困惑,太难了)
https://zhuanlan.zhihu.com/p/44107044
梯度消失&梯度爆炸
随着时间的推移(前推或后推),当前轮次对其他轮次的影响会变小或变大
梯度也就会越来越小或越来越大,这就会使得训练无法进行
数学例子:
再利用链式求导规则的时候会发现,除当前轮次的损失值ht以外的,也都被W影响着
所以当前链式也是由很多小链式求和而成的
可以看到随着t(时间轮次)变化,导数会指数级发生变化
那么就会出现消失(范数小于零)或爆炸(范数大于零)
雅可比行列式
雅可比行列式通常称为雅可比式(Jacobian),它是以n个n元函数的偏导数为元素的行列式 。事实上,在函数都连续可微(即偏导数都连续)的前提之下,它就是函数组的微分形式下的系数矩阵(即雅可比矩阵)的行列式。
矩阵范数
梯度剪切:经典笨方法,但是好用,解决梯度爆炸
梯度高于阈值后就不再变大,设一个上限
恒等矩阵初始化+RELU:这个老师提出的一个小窍门
初始权重矩阵设成一个对角线全是1/2的矩阵
乘以输入向量之后,相当于1/2向量
把乱走改成了小步走
Softmax过大问题
比如softmax的输入层有1000维,待选词库有10000个
那么softmax层全连接的话,权重矩阵会非常大,这就会导致效率变低
一个办法就是给待选词库进行分类(根据出现频率)、
然后先预测是哪类,再预测是哪个
理论上分类越细致,效果越好
但是类越多,效率会下降(极限就是又分了10000个类)
双向RNN
深层双向RNN
F1值
https://www.jiqizhixin.com/graph/technologies/82aeeeba-b738-4a05-b9c2-7ec567c401fe