5

以下是训练我的大众模型的部分日志。

为什么有些行后面跟着 h?您会注意到最后总结中的“平均损失”行也是如此。我不确定这意味着什么,或者我是否应该关心。

...  
average    since         example     example  current  current  current    
loss       last          counter      weight    label  predict features    
1.000000   1.000000            1         1.0  -1.0000   0.0000       15    
0.500000   0.000000            2         2.0   1.0000   1.0000       15    
1.250000   2.000000            4         4.0  -1.0000   1.0000        9    
1.167489   1.084979            8         8.0  -1.0000   1.0000       29    
1.291439   1.415389           16        16.0   1.0000   1.0000       45    
1.096302   0.901166           32        32.0  -1.0000  -1.0000       21    
1.299807   1.503312           64        64.0  -1.0000   1.0000        7    
1.413753   1.527699          128       128.0  -1.0000   1.0000       11    
1.459430   1.505107          256       256.0  -1.0000   1.0000       47    
1.322658   1.185886          512       512.0  -1.0000  -1.0000       59    
1.193357   1.064056         1024      1024.0  -1.0000   1.0000       69    
1.145822   1.098288         2048      2048.0  -1.0000  -1.0000        5    
1.187072   1.228322         4096      4096.0  -1.0000  -1.0000        9    
1.093551   1.000031         8192      8192.0  -1.0000  -1.0000       67    
1.041445   0.989338        16384     16384.0  -1.0000  -0.6838       29    
1.107593   1.173741        32768     32768.0   1.0000  -1.0000        5    
1.147313   1.187034        65536     65536.0  -1.0000   1.0000        7    
1.078471   1.009628       131072    131072.0  -1.0000  -1.0000       73    
1.004700   1.004700       262144    262144.0  -1.0000   1.0000       41 h  
0.918594   0.832488       524288    524288.0  -1.0000  -1.0000        7 h  
0.868978   0.819363      1048576   1048576.0  -1.0000  -1.0000       21 h  

finished run  
number of examples per pass = 152064  
passes used = 10  
weighted example sum = 1.52064e+06  
weighted label sum = -854360  
average loss = 0.809741 h  
...

谢谢

4

2 回答 2

7

h是打印时

(!all.holdout_set_off && all.current_pass >= 1)

为真(查看输出grep -nH -e '\<h\\n' vowpalwabbit/*.cc并查看代码)。

--holdout_off命令行参数中搜索:

--holdout_off 禁用多遍学习的保持验证。默认情况下,每当 --passes > 1 时,VW 都会保留一个(可控制的默认值 = 1/10)示例子集,并在打印输出上报告测试损失。这用于防止多遍学习中的过度拟合。在行尾打印额外的 h 以指定报告的损失是保留验证损失,而不是渐进验证损失。

于 2014-10-30T19:27:36.837 回答
6

大众使用文件中的样本来训练模型并打印出平均训练损失值(不带“h”后缀)。如果需要对文件进行多次传递(用 指定--passes n)来训练模型,它会保留每个第 k 个示例(可以用 更改--holdout_period k)进行测试,并且不要将它们用于训练。在第二次和进一步的传递中,它估计这些测试示例的损失而不是训练示例,并用“h”打印出损失值。如果您在没有 'h' 的情况下得到非常小的值,而在稍后使用 'h' 得到更大的值,则可能意味着您的模型过度拟合。如果已经确保您的模型不会过度拟合,并且希望对整个数据集使用多次传递进行训练,则应指定--holdout_off. 否则您将丢失 10% 的数据(--holdout_period默认为 10)。

于 2014-11-06T21:03:31.777 回答