WaveNet bukanlah konvolusi yang melebar, bukan?

10

Dalam makalah WaveNet baru-baru ini , penulis merujuk pada model mereka yang memiliki tumpukan lapisan konvolusi melebar. Mereka juga menghasilkan bagan berikut, menjelaskan perbedaan antara konvolusi 'reguler' dan konvolusi dilatasi.

Konvolusi reguler terlihat seperti Konvolusi non dilatasi Ini adalah konvolusi dengan ukuran filter 2 dan langkah 1, diulang untuk 4 layer.

Mereka kemudian menunjukkan arsitektur yang digunakan oleh model mereka, yang mereka sebut sebagai pelebaran konvolusi. Ini terlihat seperti ini. Konvolusi Dilatasi WaveNet Mereka mengatakan bahwa setiap lapisan memiliki pelebaran yang meningkat (1, 2, 4, 8). Tetapi bagi saya ini terlihat seperti konvolusi biasa dengan ukuran filter 2 dan langkah 2, diulang untuk 4 lapisan.

Seperti yang saya pahami, konvolusi melebar, dengan ukuran filter 2, langkah 1, dan peningkatan dilatasi (1, 2, 4, 8), akan terlihat seperti ini. Konvolusi Dilatasi Aktual

Dalam diagram WaveNet, tidak ada filter yang melewatkan input yang tersedia. Tidak ada lubang. Dalam diagram saya, setiap filter melewatkan input yang tersedia (d - 1). Ini adalah bagaimana pelebaran seharusnya tidak bekerja?

Jadi pertanyaan saya adalah, mana (jika ada) dari proposisi berikut ini yang benar?

  1. Saya tidak mengerti pelebaran yang melebar dan / atau teratur.
  2. Deepmind tidak benar-benar menerapkan konvolusi dilatasi, melainkan konvolusi langkah, tetapi menyalahgunakan kata dilasi.
  3. Deepmind memang mengimplementasikan konvolusi melebar, tetapi tidak mengimplementasikan bagan dengan benar.

Saya tidak cukup fasih dalam kode TensorFlow untuk memahami apa yang sebenarnya dilakukan kode mereka, tetapi saya memposting pertanyaan terkait di Stack Exchange , yang berisi sedikit kode yang dapat menjawab pertanyaan ini.

Leech Chechy
sumber
Saya menemukan pertanyaan dan jawaban Anda di bawah ini cukup menarik. Karena makalah WaveNet tidak menjelaskan bahwa kesetaraan langkah dan tingkat pelebaran, saya memutuskan untuk merangkum konsep-konsep kunci dalam posting blog: theblog.github.io/post/… Anda mungkin merasa menarik jika Anda masih bekerja dengan saraf saraf autoregresif jaringan
Kilian Batzner

Jawaban:

8

Dari kertas 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."

Animasi menunjukkan langkah tetap satu dan faktor dilasi meningkat pada setiap lapisan. Gambar animasi 3 dari posting blog Google wavenet

rafaelvalle
sumber
6

Uang satu-satunya yang dijatuhkan untuk saya. Dari ketiga proposisi itu, yang benar adalah 4: Saya tidak mengerti makalah WaveNet.

Masalah saya adalah bahwa saya menafsirkan diagram WaveNet sebagai meliputi sampel tunggal, untuk dijalankan pada sampel yang berbeda yang diatur dalam struktur 2D dengan 1 dimensi sebagai ukuran sampel dan yang lainnya adalah jumlah batch.

Namun, WaveNet hanya menjalankan seluruh filter tersebut dalam satu seri waktu 1D dengan langkah 1. Ini jelas memiliki jejak memori yang jauh lebih rendah tetapi mencapai hal yang sama.

Jika Anda mencoba melakukan trik yang sama menggunakan struktur langkah, dimensi output akan salah.

Jadi untuk meringkas, melakukannya dengan langkah sederhana dengan struktur 2D sampel x batch memberikan model yang sama, tetapi dengan penggunaan memori yang jauh lebih tinggi.

Leech Chechy
sumber