Closed MingleiLI closed 4 years ago
对于一个层次分类问题来说,模型训练既可以用层次方法解决,也可以用Flat方法解决。对于模型预测来说也是一样,层次分类问题既可以用层次的metric,也可以用flat的metric来评估。 hierar_penalty是训练时候的策略。is_flat是评测时候的策略。 在section 3中,比较的是训练时候的策略(不是评测的策略,readme里的是is_flat=true,其实也可以是is_flat=false,这时候就需要有多个层级的指标对比了)
也遇到这个问题,我用的是框架内的TextRCNN,在RCV1数据集来进行实验,发现hierar_penalty越高,模型的micro和macro都会随之降低,也就是说recursive_regularize没有带来什么提升,无法复现文中hierarchical的0.8313 | 0.6047,使用默认的1e-6也不行,不过flat的结果和文中基本一致。
我测试也遇到这个问题,一切设置按照代码中的默认,然后只是hierarchical=True/False的区别,基本没有提升,是哪里设置的不对吗? 另外请问readme的实验结果是代码中提供的数据吗? 还是官网提供的特殊过的数据?还是需要申请的原始文本的rcv1 ?
工具里提供的只是rcv1的一个采样数据,作为工具的示例数据,仅是为了跑通工具作用。 rcv1数据大家去自行下载完整版。
工具里提供的只是rcv1的一个采样数据,作为工具的示例数据,仅是为了跑通工具作用。 rcv1数据大家去自行下载完整版。
可否提供示例数据的指标结果?
示例数据没必要提供提供指标效果,因为量级太小,受模型、输入配置影响很大。仅为了作为示例数据跑通工具的作用。
对于一个层次分类问题来说,模型训练既可以用层次方法解决,也可以用Flat方法解决。对于模型预测来说也是一样,层次分类问题既可以用层次的metric,也可以用flat的metric来评估。 hierar_penalty是训练时候的策略。is_flat是评测时候的策略。 在section 3中,比较的是训练时候的策略(不是评测的策略,readme里的是is_flat=true,其实也可以是is_flat=false,这时候就需要有多个层级的指标对比了)
这个是需要层级信息确定的情况下是吧
说的层次分类,前提是各层级信息已经给定了是吧?
“更层级信息”指的是类目体系吗?这个肯定是先人工定义好的。
各层级信息,对,先人工定义好的,OK。
示例数据没必要提供提供指标效果,因为量级太小,受模型、输入配置影响很大。仅为了作为示例数据跑通工具的作用。
@liqunhit 你好,我也测试了这里面的数据和代码,发现也无法复现。我看这里提供的rcv1数据集,训练集和验证集是完整的,只是测试集不完整,按理说应该不会差很吧?
我的复现方法,下载代码,一点不改,直接运行如下两条命令:
python train.py conf/train.json
python eval.py conf/train.json
显示
Performance is precision: 0.809085, recall: 0.671724, fscore: 0.734034, right: 17401, predict: 21507, standard: 25905.
我看 conf/train.json 里的默认配置就是使用层次分类,模型是 TextCNN,按照 3. Hierarchical vs Flat 里提供的指标,TextCNN 的 Micro-F1 应该在 0.77,这里只有 0.73。
是否我只要换一个完整的测试集就能得到 0.77 的结果?还是我哪里操作有误了?
谢谢!
示例数据没必要提供提供指标效果,因为量级太小,受模型、输入配置影响很大。仅为了作为示例数据跑通工具的作用。
@liqunhit 你好,我也测试了这里面的数据和代码,发现也无法复现。我看这里提供的rcv1数据集,训练集和验证集是完整的,只是测试集不完整,按理说应该不会差很吧?
我的复现方法,下载代码,一点不改,直接运行如下两条命令:
python train.py conf/train.json python eval.py conf/train.json
显示
Performance is precision: 0.809085, recall: 0.671724, fscore: 0.734034, right: 17401, predict: 21507, standard: 25905.
我看 conf/train.json 里的默认配置就是使用层次分类,模型是 TextCNN,按照 3. Hierarchical vs Flat 里提供的指标,TextCNN 的 Micro-F1 应该在 0.77,这里只有 0.73。
是否我只要换一个完整的测试集就能得到 0.77 的结果?还是我哪里操作有误了?
谢谢!
@liqunhit 我又使用了全量测试数据,结果仍然差不多(0.73),不知道我这里的步骤时候搞错了?
示例数据没必要提供提供指标效果,因为量级太小,受模型、输入配置影响很大。仅为了作为示例数据跑通工具的作用。
@liqunhit 你好,我也测试了这里面的数据和代码,发现也无法复现。我看这里提供的rcv1数据集,训练集和验证集是完整的,只是测试集不完整,按理说应该不会差很吧? 我的复现方法,下载代码,一点不改,直接运行如下两条命令:
python train.py conf/train.json python eval.py conf/train.json
显示
Performance is precision: 0.809085, recall: 0.671724, fscore: 0.734034, right: 17401, predict: 21507, standard: 25905.
我看 conf/train.json 里的默认配置就是使用层次分类,模型是 TextCNN,按照 3. Hierarchical vs Flat 里提供的指标,TextCNN 的 Micro-F1 应该在 0.77,这里只有 0.73。 是否我只要换一个完整的测试集就能得到 0.77 的结果?还是我哪里操作有误了? 谢谢!
@liqunhit 我又使用了全量测试数据,结果仍然差不多(0.73),不知道我这里的步骤时候搞错了?
你好,请问你可以成功复现了吗
,请问你可以成功复
使用 glove 后有提升
我使用自己的dataset (size > 10000 samples), 也覺得 recursive_regularize沒有什麼幫助
In section 3 of readme, the table shows the reuslt of hierarchical vs flat. Here does hierarchical mean that model has hierarchical regularization or just mean the evaluation value is the value with is_flat False in the code? Does flat means that the model does not have hierarchical regularization (hierar_penalty=0) or just mean that the evaluation value is caculated with is_flat True in the code?