WaveNet n'est pas vraiment une convolution dilatée, n'est-ce pas?

10

Dans le récent article WaveNet , les auteurs se réfèrent à leur modèle comme ayant des couches empilées de convolutions dilatées. Ils produisent également les graphiques suivants, expliquant la différence entre les convolutions «régulières» et les convolutions dilatées.

Les convolutions régulières ressemblent à Convolutions non dilatées ceci. Il s'agit d'une convolution avec une taille de filtre de 2 et une foulée de 1, répétée pour 4 couches.

Ils montrent ensuite une architecture utilisée par leur modèle, qu'ils appellent des convolutions dilatées. Cela ressemble à ceci. WaveNet Dilated Convolutions Ils disent que chaque couche a des dilatations croissantes de (1, 2, 4, 8). Mais pour moi, cela ressemble à une convolution régulière avec une taille de filtre de 2 et une foulée de 2, répétée pour 4 couches.

Si je comprends bien, une convolution dilatée, avec une taille de filtre de 2, une foulée de 1 et des dilatations croissantes de (1, 2, 4, 8), ressemblerait à ceci. Convolution dilatée réelle

Dans le diagramme WaveNet, aucun des filtres ne saute une entrée disponible. Il n'y a pas de trous. Dans mon diagramme, chaque filtre ignore (d - 1) les entrées disponibles. C'est ainsi que la dilatation est censée fonctionner non?

Donc ma question est, laquelle (le cas échéant) des propositions suivantes sont correctes?

  1. Je ne comprends pas les convolutions dilatées et / ou régulières.
  2. Deepmind n'a pas réellement mis en œuvre une convolution dilatée, mais plutôt une convolution étagée, mais a abusé du mot dilatation.
  3. Deepmind a mis en œuvre une convolution dilatée, mais n'a pas correctement mis en œuvre le graphique.

Je ne maîtrise pas suffisamment le code TensorFlow pour comprendre ce que fait exactement leur code, mais j'ai publié une question connexe sur Stack Exchange , qui contient le peu de code qui pourrait répondre à cette question.

Chechy Levas
la source
J'ai trouvé votre question et réponse ci-dessous assez intéressante. Étant donné que l'article WaveNet n'explique pas cette équivalence de foulée et de taux de dilatation, j'ai décidé de résumer les concepts clés dans un article de blog: theblog.github.io/post/… vous pourriez trouver intéressant si vous travaillez toujours avec des neurones autorégressifs réseaux
Kilian Batzner

Réponses:

9

Du papier de wavenet:

"A dilated convolution (also called a trous, or convolution with 
holes) is a convolution where the filter is applied over an area larger 
than its length by skipping input values with a certain step. It is 
equivalent to a convolution with a larger filter derived from the 
original filter by dilating it with zeros, but is significantly more 
efficient. A dilated convolution  effectively allows the network to 
operate on a coarser scale than with a normal convolution. This is 
similar to pooling or strided  convolutions, but 
here the output has the same size as the input. As a special case, 
dilated convolution with dilation 1 yields the standard convolution. 
Fig. 3 depicts dilated causal convolutions for dilations 1, 2, 4, and 
8."

Les animations montrent une foulée fixe et un facteur de dilatation augmentant sur chaque couche. Fig.3 animée du blog de wavenet de Google

rafaelvalle
la source
6

Le sou vient de tomber sur celui-ci pour moi. Parmi ces 3 propositions, la bonne est 4: je n'ai pas compris le document WaveNet.

Mon problème était que j'interprétais le diagramme WaveNet comme couvrant un seul échantillon, à exécuter sur différents échantillons disposés dans une structure 2D avec 1 dimension étant la taille de l'échantillon et l'autre étant le nombre de lots.

Cependant, WaveNet exécute tout ce filtre sur une série temporelle 1D avec une foulée de 1. Cela a évidemment une empreinte mémoire beaucoup plus faible mais accomplit la même chose.

Si vous tentiez de faire la même astuce en utilisant une structure stridée, la dimension de sortie serait incorrecte.

Donc, pour résumer, le faire de manière accélérée avec un échantillon 2D x structure par lots donne le même modèle, mais avec une utilisation de la mémoire beaucoup plus élevée.

Chechy Levas
la source