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
    • 相关性系数
    • update gate
  • 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
  • 情绪分类
    • embedding后多对一的RNN
  • 词嵌入除偏
    • 首先确定想要消除偏见(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,双语评估替代)
    • 替代人类对翻译质量进行评估
  • 注意力模型
    • 没有完全看懂,先过吧
  • 语音识别