深度学习问答模型记录2

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_30362711/article/details/83786025

第一天:

前面采用了LSTM和其几种变体来解决信息提取问题,但是单独的lstm对语句的长度有限制,随着语句长度增加,网络的能力越来越降低。

因此接下来采用attension net来解决。

模型搭好后出现一个警告,即是The graph couldn't be sorted in topological order。即使我忽略这种错误继续训练,训练300epoch也无法得到好的结果,因此第一任务是解决这个警告。

研究了一天,有人说此错误是因为无环图中有环,但是我看了半天里面也没环啊。我run(loss)没有报错,但是 run(optimazation)会报错,因此说明可能计算梯度有问题。
因此先跳过这个问题,看看是不是学习率的问题。之前的多层lstm最好的学习率是0.05,我将其学习率调至1,看其效果,经过少量的epoch直接将loss降低一大截,但是正确率没有多大变化,接下来loss就在那个点做布朗运动。
因此若模型没问题的话,我只需将学习率调大,那么会发生相似的结果,如未发生则说明模型有问题。

并未发现有上面说的情况发生,仔细考虑后,我觉得论文里的算法有问题,两个向量和权重相乘只会得到合并的结果,

但是你无法得到互相有什么影响的结果,因此我考虑既然我要解决的问题是一个问题,那么权重可以类似于卷积就好了,权重不需要改变。

——————————————————————————————————————————————————————————————————————————————————————————————————————————————

第二天:

直接将论文NEURAL MACHINE TRANSLATION BY JOINTLY LEARNING TO ALIGN AND TRANSLATE中的权重部分改成固定的权重,因为我解决的是固定的问题。

而且对于之前的说图中有环,其实我觉得对于求梯度来说确实有环,比如你用a求出a的权重再乘以a,这不是很搞笑吗?

修改之后:

(1)没有报错;(2)仍旧不行

冥思苦想,修改了半天无果。

——————————————————————————————————————————————————————————————————————————————————————————————————————————————

第三天

只能从底层找问题了。首先我发现sigmoid的输出都他妈是0.5,说明其输入都是无限接近于0的小数,而其之前

我采用了relu而不是sigmoid,relu会抹杀一切负输入,我将relu换成sigmoid后,一切结果都不再是0.5。

relu是很有名且有效的,但是其输入和初始值都应该是正的,不然传到后面你的结果只能是0。因为假如你的权重使用了均值是0的话,那么随着层数的增加,每次输出部位0的概率都是百分之50,那么全部都不为0的概率则是0.5^n,n是网络的层数。

将网络修改成和原论文一样,训练一宿回家睡觉,第二天一看竟然正确率99。记录一下具体经过:

[0.51, 0.0006249241158366204,0]

[0.5066666666666667, 0.0006250000496705373,10]

[0.815, 0.0006238108873367309,15]

[0.9533333333333334, 0.0001002981017033259,20]

每epoch是1万4数据,前一百轮基本没什么变化,loss还长了,因此得到经验即是不能急,之前我一般都是训练了一会就停了。而且前期loss不降不代表模型有问题,反正一句话就是要等。

——————————————————————————————————————————————————————————————————————————————————————————————————————————————

猜你喜欢

转载自blog.csdn.net/qq_30362711/article/details/83786025