最近我在使用Vowpal Wabbit进行分类,我得到了一个关于readable_model的问题。
下面是我的命令: vw --quiet --save_resume --压缩模型--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的新手,对此感到非常困惑。
发布于 2015-04-24 07:41:50
简单的SGD (随机梯度下降)对于每个特征只需要一个参数,即权重。但是,默认情况下,大众使用--adaptive --normalized --invariant更新。因此,除了权重之外,它还需要为每个特征存储另外两个参数:
用于--normalized.的
--adaptive梯度和(AdaGrad样式更新),只有在提供了--save_resume的情况下,这两个附加参数才会存储在模型中(可读或二进制)。
奇怪的是,如果您运行vw --sgd --save_resume,可读模型仍然包含每个功能的三个参数,尽管--sgd实际上意味着非自适应、非规范化和非不变。我认为这是--readable_model实现中的一个错误。
编辑:这最后一个奇怪的行为确实是一个bug,它是fixed now。
https://stackoverflow.com/questions/29641340
复制相似问题