做实验(1)

1)
跑ParlAI,模型很大,估计要改动的地方很多。
过程:
跑了基本的example,IR没有行通。
适用于task-oriented数据集::id": “woz”,,“id”: “Dialogue_QE”,
关于chitchat的。
“id”: “SelfFeedingChatbot”,
“id”: “dialog-bAbI-plus”,
2)
找到DPAC-GAN的代码,继而找到Seq-GAN的代码,跑了SeqGAN,
https://github.com/suragnair/seqGAN/blob/master/main.py

对话太多了点,有一万多个,缩减数据量,,删除到只有1000个对话(chitchat)
数据集修改之后,G_pretrain不错但是G_policygradient很差。
0329
读train_generator_PG,
读北邮同学文章,做出提问。
evaluate的时候使用的sample有问题,是在G的moto_carlo部分,这一部分,对于输出然后现行层转化成id要细看。

Generator的loss是如何计算的,在训练epoch15之后仍然生成乱七八糟的没有逻辑性的句子。
loss = loss_func(pred_dist, tgt_tokens)
loss_func = torch.nn.NLLLoss(ignore_index=pad_id)
((因为RNN 的输出已经取过log 了,所以计算交叉熵只需要选择正确的分类对于的值就可以了,PyTorch 提供了nn.NLLLoss() 函数来实现这个目的,它基本就是实现了loss(x, class) = -x[class]))

3.31号早上
pretrain的结果仍然很差。

因为我大大缩减了对话数据。
使用transformer进行试验-----github相关作者仍在修改,暂且放弃,
pretrain_G修正batch

1)使用transformer进行试验。
大神说的。bert需要很多数据。end-to-end也需要很多数据。所以哪个数据集比较大呢。预计使用MultiWOZ 2.0。先看该数据集的介绍然后看如何实现调用。

2)tensorflow/其他现有的关于任务型的代码。github搜索task-oriented,找到star200的代码。(2.1)Mem2Seq-master.
不知道为什么F1和BLEU都维持在0.7不动;而且每次只训练40epoch。很奇怪。而且Dialog Accuracy: 0.006非常低。大致train了一下效果不好,这个改天再train吧。先放一边。
0401
解决iter大大减少和loss不下降问题。
查看data_loader大类

train_data_loader = pickle.load(dataset.pickle)
train_MLE_data_loader = DPDataLoader(train_data_loader, batch_size=BATCH_SIZE)
  • DPDataLoader是一个class,定义了corpus(DPcorpus,是一个class)dataset(是corpus.get_train_dataset得到,是一个DPDataset。有两个方法一个是len一个是得到每个对话提取出来的context+reply)两个变量。

  • collator = dataset.corpus.get_collator(get_collator得到一个class,DPCollator)。

  • DPcorpus是对dataset.pickle划分train、validation、test(并且将对话变成数字串)。并且建立词典,为什么词典vocabulary_limit是5000???.

  • parser是最开始对于load进来的daily_dialogue进行处理。

  • collator是一个class,对context和reply进行padding处理。
    1)将MLE的输入改成了train_MLE_data_loader.dataset,进行了batch_size处理(具体没看)。
    2)我把原始的数据集重新加载进去了。batch是128,这一次不作了。
    3)真的没有实现batch。

4.2
参考train_generator_PG对于输入数据的类型做了更正。造搬过来。
0403
对于G的pretrain,不同的batch_size差别很大,任务:
1)搞清楚G的输入输出,D的输入输出
2)对于交互时使用evaluaor函数还是不太确定
3)应该怎么交互,本模型怎么交互的,。

改进:
1)在batch_size=64的时候选择gradient clip(到1e-2),可以尝试一下, 无效
G训练5次D训练一次
2)embedding使用外界的训练好的
任务型训练:
3)换数据集,改造成我的task-oriented dialogue

0404
1)为什么要使用GAN(文本),GAN在图像上解释性如何
2)强化学习advantage function
3)实现并行
问题
1)pytorch
跑pytorch的时候,跑着跑着,GPU-Util变成了0,但是Memory-Usage 还占很多
------AND
我在1卡运行的时候0卡也会有我的程序pid。我是程序内部制定了torch.device(‘cuda:1’)
2)为什么加入之后训练就变慢了非常多
3)D在分辨的时候应该使用图片对应的真实图片还是别的真实图片?
对应到我的对话系统,是应该用同一个对话吗?看lijiwei代码。用不用有什么区别呢?
4)有没有什么看论文推送的好用的app

对话问题:
生成重复action。对于关键词识别不完整(slot是两个单词识别成一个)。
之前已经获取的slot,下一个action怎么避免产生重复的询问已获得的slot?
action生成的网络层过于简单
获取到所有的slot,没得到的slot 发起询问,询问的顺序 很重要吗?
simulator + NLU+DM 一起训练,这样,simulator也被学习了,
goal_labels怎么被用的
2)
常用数据集:
liubing,DSTC2
MultiWOZ 2.0 这个数据集很大,而且是EMNLP提出的。
Movie Booking Dataset 这个还不错
自己造数据集
IRL+GAN,MovieTriples dataset(不是完整的对话X-Y-X)

猜你喜欢

转载自blog.csdn.net/yagreenhand/article/details/89011377