论文提出了input的顺序影响seq2seq结果 有一些输入本身是无序的怎么去处理呢
作者提出LSTM controller的方式 替代输入的LSTM encode方式
作者实验这种方式对应无序浮点数序列排序效果好于直接seq2seq
N是要排序的数的数目
P = 10 steps 表示 LSTM contorller process 10次
glimpses = 1 表示输出使用attention机制
不过实验复现这个结果不太一致
这里实验结果如下,也许实验细节和论文有出入,比如排序问题
要求输入是set 与顺序无关,那么LSTM的初始 input query是啥?
这里使用了全0向量作为input query实验
另外这个排序训练过程decoder是否使用feed prev?
这里使用feed prev 同时
使用soft attention读取输入作为下一步输入
实验结论:
- Ptr-Net 和作者提出的 set2seq方式
都是收敛有效的 -
Ptr-Net 采用glimplse=1 N=15 使用tensorflow lstm训练,adgrad optimizer,learning rate 0.1初始,
运行10000次的结果
比上图所示要好很多AverageEvals:[0.37186, 0.14407] loss 是0.37186 序列完全预测准确情况的比例是14.4% 远远好于上面提到的4%的结果
-
Set2seq虽然work 但是没有看出比直接ptr-net效果要好。。。
开始几步收敛确实更快
但是后续收敛远远慢于ptr net
选用Step = 20 对比 ptr net
所以是哪里出了问题
没有正确复现?
还是本来sort这个例子 lstm controller相比直接lstm序列encode就没有提升效果呢?
实验地址
https://github.com/chenghuige/hasky/tree/master/applications/set2seq