Seq2Seq模型

  • 非端到端的方式(传统)
    Data–>cleaning–>feature engineering(人工设计特征)–>分类器(预测)

怎么让模型自动地学习特征呢?

  • 端到端的模型
    Data–>cleaning–>deep learning(可以理解为自动地从数据中学出特征)[表示学习:representation learning]–>预测

  • RNN

可以表示一些时序类的特征
RNN的每一个隐含层都是一个向量,每一个隐含层的向量都包含了之前出现的所有单词的信息。
RNN模型存在梯度爆炸和梯度消失的现象。

  • LSTM
  • 门:帮你过滤哪些信息是重要的,哪些信息是可以丢弃的。帮我们记住最需要记住的信息。
  • 但是不可以100%解决梯度消失问题。
  • Multimodel Learning(多模态学习)

把不同的数据源拼接在一起,做一些有趣的事情。

  • transformer为啥比RNN好呢?
  • transformer不是一个时序类的模型。
  • 不是时序类的模型,可以并行化处理。
  • Attention
  • 可以让深度学习可视化
  • Seq2Seq训练数据
    <中文1,英文1>
    <中文2,英文2>
    .
    .
    .
    <中文n,英文n>

希望每个batch通过matrix_operation来计算,如果中文1,中文2,中文100长度不一样怎么办。选择每个batch中最长的句子,把剩下的句子用特殊符号进行填充。

Inference Decoding
  • 参数的估计是根据一些训练数据来学习模型的参数
  • Inference/Decoding指的是在给定了已知模型的参数下, 给定一个输入,要计算出它的一个输出值。
  • 在做机器翻译的时候怎么评估模型的性能呢?

不能简单看每个对应位置的单词是否相等,因为针对一句话我们可以用很多种不一样的方式把它表示出来。比如"Weather is good today!"和"Today’s weather is good!"其实都是正确的翻译。那么怎么判断模型的好坏呢?我们可以使用n-gram的方法。

  • 可以数一下两个句子之间有多少个重叠的单词。但是这种方法不是很好。比如真实的翻译应该是"Weather is good today!"。预测的翻译是"Good today is weather!"。显然这个预测的结果不是很好,因为预测的句子不通顺。就是说当我们只考虑每个单词的时候,就编变成了unigram,它不会去考虑单词之间的一些关系。
  • 可以把unigram, bigram,trigram结合在一起。(类似Bleu score)
Exhaustic Search
  • Beam search在Seq2Seq中的应用只是在test阶段使用。

在训练的过程中,每一个decoder的输出都是有正确答案(Seq2Seq也是有监督的学习方式,用聊天机器人打比方,输入的时候是需要question和answer作为输入的;中英文翻译系统,需要输入中文和英文的句子对照)。Beam search是根据decoder预测的每个时序的词的概率分布去搜索最适合的词,这样可以增加输出的正确率。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值