Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于SGNN在Movielens上运行欠拟合,请问如何解决? #2

Open
love-searcher opened this issue Aug 13, 2021 · 4 comments
Open

Comments

@love-searcher
Copy link

按照本仓库中的参数,SGNN在Movielens上运行出现欠拟合情况,请问为什么出现的原因是什么呢?如何解决比较好?调整学习率?

@Wenhui-Yu
Copy link
Owner

Wenhui-Yu commented Aug 15, 2021

你好,为什么认为出现了欠拟合呢,具体是什么现象?

@love-searcher
Copy link
Author

现象:
在Movielens数据集上, embedding维度都选用64的情况下, 以F1_max做top-10推荐来进行评估, MF进行8次实验结果的均值为0.1399 ; 而SGNN只有0.005812;(在没有调整原代码中超参数的情况下)
而在另一个相对更小的Movielens-100k上运行的时候,SGNN是能有很好的结果.

分析与判断:
相比较而言,在更大的数据集上应该是不会出现过拟合的,所以自己下了欠拟合的判断.
但是是不严谨的,进行了MF和SGNN在训练过程中损失函数的变化情况的比较;发现在Movielens上SGNN运行中的损失函数值绝大多数都为nan, 所以基本上没能进行参数的学习;
(另: SGNN在Amazon数据集上也是可以正常训练的.)

@love-searcher
Copy link
Author

解决方式:
在BPR损失函数计算中,将log处理的数据进行了clip操作,限制到[1e-8,1]区间内.

在其他数据集上为什么没有暴露出这个问题?

@Wenhui-Yu
Copy link
Owner

embeddig纬度和网络层数都是对学习率和正则系数敏感的超参,如果你换emb_dim的话你得对模型关于学习率和正则系数重新调参(当然,为了公平比较,SGNN和baselines都要调),我的代码里有调参工具,main.py中24行换成tuning_method = ['tuning', 'fine_tuning', 'cross_tuning', 'coarse_tuning', 'test'][0]。
如果你换了数据集,那就更得重新调参,你用Amazon或者movielens1M上得到的最优超参在movielens100k上进行比较是没有意义的。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants