Vowpal Wabbit可读模型重量解释

时间:2015-04-15 03:58:25

标签: vowpalwabbit

最近我使用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更新鲜,并且非常困惑。

1 个答案:

答案 0 :(得分:0)

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

  • --adaptive(AdaGrad风格更新)
  • 的渐变总和
  • --normalized的每个功能正则化。

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

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

实施中的一个错误

编辑:最后一个奇怪的行为确实是一个错误,它是here