3

最近我正在使用 Vowpal Wabbit 进行分类,我收到一个关于 readable_model 的问题。

这是我的命令: vw --quiet --save_resume --compressed aeroplane.txt.gzip --loss_function=hinge --readable_model aeroplane.txt

可读的模型文件如下:

Version 7.7.0
Min label:-1.000000
Max label:1.000000
bits:18
0 pairs: 
0 triples: 
rank:0
lda:0
0 ngram: 
0 skip: 
options:
:1
initial_t 0.000000
norm normalizer 116869.664062
t 3984.000051
sum_loss 2400.032932
sum_loss_since_last_dump 2400.032932
dump_interval 1.000000
min_label -1.000000
max_label 1.000000
weighted_examples 3984.000051
weighted_labels 0.000051
weighted_unlabeled_examples 0.000000
example_number 2111
total_features 1917412
0:4.879771 0.004405 0.007933
1:5.268138 0.017729 0.020223
2:0.464031 0.001313 0.007443
3:3.158707 0.083495 0.029674
4:-22.006199 0.000721 0.004386
5:7.686290 0.018617 0.011562
......
1023:0.363004 0.022025 0.020973
116060:0.059659 2122.647461 1.000000

对于每个示例,我有 1024 个特征,并使用 i-1 作为 i 特征的特征名称。我的问题是:为什么我为每个功能获得 3 个权重?不是应该只有1个重量吗?我对 ML 比较陌生并且很困惑。

4

1 回答 1

1

简单的 SGD(随机梯度下降)每个特征只需要一个参数,即权重。但是,大众--adaptive --normalized --invariant默认使用更新。因此,除了权重之外,每个特征还需要存储另外两个参数:

  • --adaptive(AdaGrad 样式更新)的梯度总和,
  • 的每个特征正则化--normalized

这两个附加参数仅在提供时才存储在模型中(可读或二进制)--save_resume

奇怪的是,如果你运行vw --sgd --save_resume,可读模型仍然包含每个特征的三个参数,尽管--sgd实际上意味着非自适应、非标准化和非不变。我认为这是--readable_model.

编辑:这最后一个奇怪的行为确实是一个错误,现在已修复

于 2015-04-23T23:41:49.707 回答