2014-09-16 3 views
2

Продолжая некоторые эксперименты here Мне было интересно, как продолжить обучение модели VW.Vowpal Wabbit Continuing Training

Я впервые запустил это и сохранил модель.

vw -d housing.vm --loss_function squared -f housing2.mod --invert_hash readable.housing2.mod 

Изучение читаемый модели:

Version 7.7.0 
Min label:0.000000 
Max label:50.000000 
bits:18 
0 pairs: 
0 triples: 
rank:0 
lda:0 
0 ngram: 
0 skip: 
options: 
:0 
^AGE:104042:0.020412 
^B:158346:0.007608 
^CHAS:102153:1.014402 
^CRIM:141890:0.016158 
^DIS:182658:0.278865 
^INDUS:125597:0.062041 
^LSTAT:170288:0.028373 
^NOX:165794:2.872270 
^PTRATIO:223085:0.108966 
^RAD:232476:0.074916 
^RM:2580:0.330865 
^TAX:108300:0.002732 
^ZN:54950:0.020350 
Constant:116060:2.728616 

Если я затем продолжать тренировать модель, используя еще два примера (в housing_2.vm), который, заметим, имеет нулевые значения ZN и ЧАС:

27.50 | CRIM:0.14866 ZN:0.00 INDUS:8.560 CHAS:0 NOX:0.5200 RM:6.7270 AGE:79.90 DIS:2.7778 RAD:5 TAX:384.0 PTRATIO:20.90 B:394.76 LSTAT:9.42 
26.50 | CRIM:0.11432 ZN:0.00 INDUS:8.560 CHAS:0 NOX:0.5200 RM:6.7810 AGE:71.30 DIS:2.8561 RAD:5 TAX:384.0 PTRATIO:20.90 B:395.58 LSTAT:7.67 

Если сохраненная модель загружена и обучение продолжается, коэффициенты, по-видимому, теряются из этих нулевых значений. Я делаю что-то неправильно или это ошибка?

vw -d housing_2.vm --loss_function squared -i housing2.mod --invert_hash readable.housing3.mod 

выход из readable.housing3.mod:

Version 7.7.0 
Min label:0.000000 
Max label:50.000000 
bits:18 
0 pairs: 
0 triples: 
rank:0 
lda:0 
0 ngram: 
0 skip: 
options: 
:0 
^AGE:104042:0.023086 
^B:158346:0.008148 
^CRIM:141890:1.400201 
^DIS:182658:0.348675 
^INDUS:125597:0.087712 
^LSTAT:170288:0.050539 
^NOX:165794:3.294814 
^PTRATIO:223085:0.119479 
^RAD:232476:0.118868 
^RM:2580:0.360698 
^TAX:108300:0.003304 
Constant:116060:2.948345 

ответ

2

Если вы хотите продолжить обучение из сохраненного состояния в гладком образом вы должны использовать опцию --save_resume.

Есть 3 принципиально различных типа «состояния», которые могут быть сохранены в файл в vw «модели»:

  1. вес вектора (регрессора) очевидно. Это сама модель.
  2. инвариантные параметры, такие как версии vw (для обеспечения бинарной совместимости, которые не всегда сохраняются между версиями), числом бит в векторе (-b) и типа модели
  3. состояния, которая динамически изменяется в процессе обучения. Это подмножество включает такие параметры, как скорость обучения и распада, которые постепенно меняются во время обучения с каждым примером, сами номера примеров и т. Д.

--save_resume сохраняет последнюю группу.

--save_resume не по умолчанию, потому что у него есть накладные расходы, и в большинстве случаев использования он не нужен. например если вы один раз сохраните модель, чтобы сделать много прогнозов и не учиться (-t), нет необходимости в сохранении третьего поднабора состояния.

Итак, я верю в ваш конкретный случай, вы хотите использовать --save_resume.

Возможность ошибки всегда существует, тем более, что vw поддерживает так много опций (около 100 в последнем счете), которые часто взаимозависимы. Некоторые комбинации вариантов имеют смысл, другие - нет. Выполнение проверки работоспособности примерно на 2^100 возможных комбинаций вариантов немного нереалистично. Если вы обнаружили ошибку, откройте проблему github. В этом случае, пожалуйста, обязательно используйте полный пример (полная информация &), поэтому ваша проблема может быть воспроизведена.

Обновление 2014-09-20 (после того, как проблема была открыта на github, спасибо!): Причина для 0 признанных функций «исчезающих» (не совсем из модели, но только из вывода --invert_hash) состоит в том, что 1) --invert_hash никогда не был разработан для нескольких проходов, поскольку сохранение оригинальных имен функций в хэш- таблица, несет большую служебную нагрузку 2) Недостающие функции - это те, которые имеют нулевое значение, которые отбрасываются. Сама модель должна по-прежнему иметь любую функцию с любым , предшествующим, пропускающим ненулевой вес. Устранение этой непоследовательности слишком сложное и дорогостоящее по соображениям реализации, и будет идти против основной мотивации быстро сделать vw, особенно для самых полезных/распространенных прецедентов. В любом случае, спасибо за отчет, я тоже узнал от него что-то новое.

+0

Я не знал об этом флаге (что он сделал). Огромное спасибо! –

+0

Я действительно думаю, что есть проблемы - возможно, только поверхностно, и если я смогу выяснить, как открыть проблему и добавить данные, я отправлю. –

Смежные вопросы