deeplearning course 5笔记
小龙
2022年07月16日
1,124次浏览
第一周 循环序列模型
- 一般商业应用里,NLP的词典大小一般在3-10W,甚至更多
- 为什么不用标准神经网络
- 输入输出长度不固定,zeropad也不是好的解决方案,网络过大
- doesn't share features learned across different positions of text
- 激活函数
- RNN中计算a的激活函数一般是tanh,也有用relu的
- y的激活函数,根据y的输出类型确定
- 网络类型
- 多对多
- 输入和输出一致(每个时间步的x输出一个对应的y)
- 输入和输出不一致(前面encoder,后面decoder,这时候后面的decoder的输入和一对多模型一样?)
- 多对一
- 一对一
- 一对多
- 每一步的输出是词典每个单词的概率(softmax)
- 每一步的输出作为后一步的输入
- 新序列采样
- 字符级的词典 vs 单词级的词典
- 不用担心出现UNK(unknow words)
- 更长的序列,
- 不能捕捉单词的前后依赖关系,句子前面如何影响后面
- 训练成本更高
- 大多数模型都是基于单词级的,但是现在计算力越来越强,有部分特殊的模型开始使用字符级的(如有大量未知词汇或专业词汇)
- RNN的梯度消失和爆炸问题,
- 相比梯度爆炸,消失问题更常见,梯度爆炸问题可以通过梯度缩小来解决
- 神经网络比较深,导致梯度消失问题
- 没有长期记忆,如文章开头的一个单复数影响不到后面使用was还是were
- GRU:Gate Recurrent Unit
- LSTm:long short term memory unit
- update gate:update c
- forget gate: forget c
- output gate: output a
- GRU 和 LSTm:并没有特别的规则应用哪个
- GRU相对简单,更容易建立更大的网络,计算更简单
- LSTm更古老,更强大
- 双向神经网络(Biderectional RNN, BRNN)
- 和LSTm经常一起使用
- 缺点是:需要整个的语义来预测,如语义识别的时候,需要等人说完
- Deep RNN
第二周 自然语言处理与词嵌入(words embedding)
- 词汇表征
- 学习不同词汇的特征
- 和人脸识别的face encoding作用一样
- 方便迁移学习,如在网络上的百亿的词汇的特征学习好后,直接用在RNN中,虽然训练集中可能没有某些词汇,网络依然能够学习出某些特征
- 第一步:在一个大的语料库中学习embedding(1-100B words),不一定是训练集的数据
- 第二步:将embedding迁移到训练集中的语料库中
- 第三步:(可选)当训练语料库较大时,可微调embedding
- 特性:
- 近义词反义词/相关性计算
- cosine 欧式距离计算,cosine用的更多
- 固定窗口预测下一个词汇的模型(neural language model)
- 训练问题,给定一个上下文窗口(如4个词),预测下一个词汇是什么
- word2vec模型:
- skip-gram模型,只用nearby 1 word的context来训练embedding
- 是上面的模型的简化版,只取上下文窗口的1个词
- 训练问题:给定一个词汇(content),预测一个随机长度的上下文(如正负10个单词内),某个位置(如第-3个)的词汇(target)
- 采样并不是完全随机的,也需要考虑词频,防止the of a等高频词汇经常被训练,而其他低频词汇训练不到
- 解决softmax的性能问题,用一个分级分类器(hierarchical softmax classifier)
- 负采样(negative sampling)
- 训练问题:
- 对于每个单词(content word,如orange),在句子中选择一个跟这个单词在给定长度的上下文中的单词(target word,如juice),orange和juice关系标为1
- 随机选择另外几个(k,k=2-20,取决于样本里大小,样本越小,k越大)单词,orange和这些词的关系标为0,即便另外的单词也在上下文中
- 给定的这k+1组词,判断是否每组两个词(content vs target word)是否有关联,x是两个词的词组,y是0或1
- 感觉跟人脸识别的区分函数有点像
- 将skip-gram模型里的softmax变成二分类模型
- GloVe模型(global vectors for word representation)
- 计算content和target同时出现的计数器
- 然后loss计算difference between θi*ej 和 logxij
- 情绪分类
- 词嵌入除偏
- 首先确定想要消除偏见(bias)的direction:取几组有偏见的词汇,然后相减(原论文更复杂,用一个SVU算法啥的)
- neutralize:对于每个不是definitional的单词(如doctor nurse,跟性别关系不大的词),去掉偏见
- equalize paires:boy girl,grandma grandpa之类的词,相对于无偏见的轴,保持对称(距离一致)
第三周:序列模型和注意力机制
- seq2seq model
- 应用于
- 和language mode的区别
- 输入不是随机的或0向量
- 算是conditional language model
- 不是随机生成句子,而是最可能的句子
- greedy search不太管用
- greedy search是先选出最可能的第一个单词,然后选出第二个最可能的单词
- beam search
- 近似搜索,启发式搜索,并不保障能搜出最好的结果
- 只是最开始选出N个前两个单词?
- 数值下溢,概率太小了,电脑可能不能精确计算--取log
- 倾向于取短句子,因为短句子概率较大(相乘后)--除以单词数量的α次方,normalize
- B的选择:
- 越大:可能性越大,结果好的概率更大,计算代价大
- 越小:选择更少,运行更快
- 生产环境10左右,研究领域可达2000
- 误差分析
- 计算标注的翻译结果的概率和计算结果的概率,如果翻译结果概率更高,那么就是beam search的锅,否则就是前面RNN的锅
- bleu得分(bilingual evaluation understudy,双语评估替代)
- 注意力模型
- 语音识别