lc222 / seq2seq_chatbot_new

基于seq2seq模型的简单对话系统的tf实现,具有embedding、attention、beam_search等功能,数据集是Cornell Movie Dialogs
143 stars 64 forks source link

这里为什么要反序呢? #6

Closed Jay-Jia closed 6 years ago

Jay-Jia commented 6 years ago

https://github.com/lc222/seq2seq_chatbot_new/blob/8d60e3ec8d122c843476464aeff4d0bf5d8adfd7/data_helpers.py#L52

njames741 commented 6 years ago

同樣有這個問題...稍微查了一下 好像seq2seq很多都會這樣做,尤其在NMT上 似乎論文做的實驗數據都是有reverse效果較好 不知道是不是因為encoder時sequence的第一個字離decoder時的第一個字比較近 所以attention效果更好?

lc222 commented 6 years ago

这个做法来源于NMT那篇论文如果我没记错的话,论文里没有详细说明这么做的好处,只是从实验角度上验证了这么做效果比较好。你可以按照你说的那样理解,就是如果按照原始顺序那么记忆关系应该是1~N,2~N+1...,也就是说每个单词之间的距离都是N,如果反序的话,记忆关系应该是N~N-1,N+1~N-2...,虽然距离会逐渐变大,但整体平均距离还是N。有点类似于和为10的两个数的积,55>64>37>28>1*9一样,所以反序之后效果会好一点,个人理解,不一定准确

JinmingZhao commented 5 years ago

关于反序这个问题: 是不是因为decoder前期(前几个时刻)解码跟encoder的context关系比较大, 而后半部分的解码主要以来decoder这个语言模型, 我准备在你实验基础上做一个对比实验, 在测试的时候只保留句子的前半部分然后再反序, 对比一下性能

njames741 commented 5 years ago

我個人認為是讓序列的前半段離decoder越近越好,因為decoder也是從序列的前半段開始輸出。

jinming notifications@github.com 於 2018年11月2日 週五 下午10:54寫道:

关于反序这个问题: 是不是因为decoder前期(前几个时刻)解码跟encoder的context关系比较大, 而后半部分的解码主要以来decoder这个语言模型, 我准备在你实验基础上做一个对比实验, 在测试的时候只保留句子的前半部分然后再反序, 对比一下性能

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/lc222/seq2seq_chatbot_new/issues/6#issuecomment-435406251, or mute the thread https://github.com/notifications/unsubscribe-auth/AXnX33LkS5fMt4yM7QpTRgfpH75dZ2byks5urFyKgaJpZM4TGq-p .