Nrgeup

Results 20 comments of Nrgeup

Sorry for replying so late! Yes, the two examples in Table#5 are indeed two good examples we chose, aiming to show that different modification weights W can control the obviousness...

1. For “the outputs are far from the examples presented in the paper”, the reason is that they are the outputs under two different experimental settings. a. The examples presented...

Sorry to reply to you so late, you can use model.py to reproduce the result. We will update model2.py, and the results are not much improved compared to model.py.

抱歉不常看issues,outputs里的输出是动态的w产生的。具体细节可见Section 3.3 “Dynamic-weight-initialization method”。 my-model-yelp1.txt和my-model-yelp2.txt 是两个不同的超参数 衰减系数the decay coefficient lambda产生的,两个结果差不多所以我就都放这里了。

> 在模型代码model.py 381行中,损失函数使用了KL散度,但是在论文中,损失函数是交叉熵。请问是我理解错了吗? 在代码里为了方便实现,先把原来的target里的0-1形式的分布转换成噪音分布,然后用KL loss算这两个分布(预测分布和含噪target分布)的距离。在paper的公式里,为了更方便理解,我把这两项(原来的0-1形式的target和噪音分布)拆开了。个人感觉这两个应该是一样的。

> 但是根据pytorch的官方文档中关于KLDivLoss的说明,lossn = yn * (log(yn) - xn),n表示分布的第n项,如果按照代码中的使用,y是含噪的正确分布,x就是预测分布;这与论文的表示似乎有比较大的出入,公式没有log(yn) 这项? ![image](https://user-images.githubusercontent.com/17121684/60956916-4c967100-a336-11e9-88dd-e3f35ca1fa6c.png) ![image](https://user-images.githubusercontent.com/17121684/60956951-5b7d2380-a336-11e9-8c11-b446bf7ae73b.png) 你说的没错,KL loss在衡量两个分布的时候确实是比交叉熵多了一项: ![image](https://user-images.githubusercontent.com/17121684/60956123-c0d01500-a334-11e9-8271-a14233bf7a81.png) 前面说到过,我把那个代码里的含噪的正确分布分开成了两项,也就是一个(1-smoothing parameter)权重的target(【0,...,1,...0】)和一个(smoothing parameter)权重的【1,...,0,...1】),所以这里的P(x_i)不是0就是1,所以这一项就是0,所以我写论文的时候为了看上去简洁就去掉了,具体实现还是按代码那样。

> > 但是根据pytorch的官方文档中关于KLDivLoss的说明,lossn = yn * (log(yn) - xn),n表示分布的第n项,如果按照代码中的使用,y是含噪的正确分布,x就是预测分布;这与论文的表示似乎有比较大的出入,公式没有log(yn) 这项? > > 你说的没错,KL loss在衡量两个分布的时候确实是比交叉熵多了一项: > > 前面说到过,我把那个代码里的含噪的正确分布分开成了两项,也就是一个smoothing parameter权重的target(【0,...,1,...0】)和一个(1-smoothing parameter)权重的【1,...,0,...1】),所以这里的P(x_i)不是0就是1,所以这一项就是0,所以我写论文的时候为了看上去简洁就去掉了,具体实现还是按代码那样。 > > 如你上面所说,或者代码所显示,用KL loss算这两个分布(预测分布和含噪target分布)的距离。P(x_i)是含噪的target分布,那么每一项不应该是smoothing parameter或者1-smoothing parameter吗,而非0或者1? 您是对的。

> > 但是根据pytorch的官方文档中关于KLDivLoss的说明,lossn = yn * (log(yn) - xn),n表示分布的第n项,如果按照代码中的使用,y是含噪的正确分布,x就是预测分布;这与论文的表示似乎有比较大的出入,公式没有log(yn) 这项? > > 你说的没错,KL loss在衡量两个分布的时候确实是比交叉熵多了一项: > > 前面说到过,我把那个代码里的含噪的正确分布分开成了两项,也就是一个(1-smoothing parameter)权重的target(【0,...,1,...0】)和一个(smoothing parameter)权重的【1,...,0,...1】),所以这里的P(x_i)不是0就是1,所以这一项就是0,所以我写论文的时候为了看上去简洁就去掉了,具体实现还是按代码那样。 > > 那这个解释还成立吗?P(x_i)的取值是smoothing parameter或者1-smoothing parameter。 抱歉,如果有机会,我会更新那个公式,不拆开来写了,👍

> > 但是根据pytorch的官方文档中关于KLDivLoss的说明,lossn = yn * (log(yn) - xn),n表示分布的第n项,如果按照代码中的使用,y是含噪的正确分布,x就是预测分布;这与论文的表示似乎有比较大的出入,公式没有log(yn) 这项? > > 你说的没错,KL loss在衡量两个分布的时候确实是比交叉熵多了一项: > > 前面说到过,我把那个代码里的含噪的正确分布分开成了两项,也就是一个(1-smoothing parameter)权重的target(【0,...,1,...0】)和一个(smoothing parameter)权重的【1,...,0,...1】),所以这里的P(x_i)不是0就是1,所以这一项就是0,所以我写论文的时候为了看上去简洁就去掉了,具体实现还是按代码那样。 > > 那这个解释还成立吗?P(x_i)的取值是smoothing parameter或者1-smoothing parameter。 > > 抱歉,如果有机会,我会更新那个公式,不拆开来写了,👍 > > 那请问到底是我理解错了,还是您公式写错了?...

> 很多谢您的耐心解答,您的论文令我受益匪浅。另外我在代码中还有一点疑问,就是训练时候每个epoch结束后没有对训练集数据进行shuffle?只是令用pointer这个变量又从第一个batch读起? 倍感惭愧😓。每个epoch训练结束后确实没有进行shuffle,只是把pointer变成0了从头读起,后面我修改下。