motefly / DeepGBM

SIGKDD'2019: DeepGBM: A Deep Learning Framework Distilled by GBDT for Online Prediction Tasks
647 stars 135 forks source link

代码中的两个问题 #15

Closed ysl2007 closed 4 years ago

ysl2007 commented 4 years ago

你好!代码中有两个问题: 1,models/deepgbm.py中36-40行的if语句,根据参数num_model的不同取值对self.gbdtnn进行初始化,而在forward函数第62行的else分支中,因为此时self.gbdtnn为None,63行应该会报错,不过这个一般来说没什么关系。 2,我真正想问的问题其实是这个:deepgbm.py中的67行,这里的 != 是否应该是 == ?根据论文,当num_model == ‘gbdt2nn' 时,模型输出不应该是gbdt2nn+deepfm两部分的输出吗?为何第70行的分支将deepfm的输出忽略了? 谢谢!

motefly commented 4 years ago

1、这里确实不够鲁棒,给定正确的num_model取值问题不大。 2、这个没错,不是忽略了deepfm的输出,是初始化为1/0(因为deepfm是随机输出的值,gbdt2nn是训好的,我们发现将deepfm的输出结果权重初始化为0,gbdt2nn的为1,后续效果最好)

ysl2007 commented 4 years ago

哦哦,这两个也是模型学习的参数,我跟论文里面计算loss的超参alpha和beta搞混了。。。 谢谢!