[Редактировать: исправить ответ: оригинал не был точным, благодаря Мартин]
1-слой Н.Н. питает вход особенности в слой NN (все возможные взаимодействия), которые затем подают в выходном слое ,
Чтобы добавить сквозные функции как есть, без взаимодействия, вы должны добавить опцию --inpass
.
Вы можете посмотреть на модели, созданной с помощью --invert_hash
, чтобы получить читаемую модель на небольшой примере:
$ cat dat.vw
1 | a b
2 | a c
# default linear model, no NN:
$ vw --invert_hash dat.ih dat.vw
...
$ cat dat.ih
...
:0
Constant:116060:0.387717
a:92594:0.387717
b:163331:0.193097
c:185951:0.228943
# Now add --nn 2 (note double-dash in long option)
# to use a 1-layer NN with 2 nodes
$ vw --nn 2 --invert_hash dat-nn.ih dat.vw
...
$ cat dat-nn.ih
...
:0
Constant:202096:-0.270493
Constant[1]:202097:0.214776
a:108232:-0.270493
a[1]:108233:0.214776
b:129036:-0.084952
b[1]:129037:0.047303
c:219516:-0.196927
c[1]:219517:0.172029
выглядит как a[N]
является вкладом a
к скрытому слою NN узлу N
(начиная с основанием/нулевой индекс, по-видимому, автономная нотация a
немного запутанна).
При добавлении --inpass
вы получаете дополнительный вес на функции (индекс [2]):
$ vw --nn 2 --inpass --invert_hash dat-nn-ip.ih dat.vw
...
$ cat dat-nn-ip.ih
...
:0
Constant:202096:-0.237726
Constant[1]:202097:0.180595
Constant[2]:202098:0.451169
a:108232:-0.237726
a[1]:108233:0.180595
a[2]:108234:0.451169
b:129036:-0.084570
b[1]:129037:0.047293
b[2]:129038:0.239481
c:219516:-0.167271
c[1]:219517:0.139488
c[2]:219518:0.256326
Спасибо так много для работы на диаграммах. Это делает все яснее. Маркировка краев NN-графа с соответствующими весами в моделях 'wF [N]' (которые, как упоминал Мартин в комментариях, не все представлены на выходе '--invert-hash'), сделают его еще более понятным. 'wF [N]' - это вес от функции 'F' до уровня узла' N'. Массы от скрытого слоя до выходного узла, по-видимому, не отображаются в '--invert-hash'. – arielf