WaveNet không thực sự là một tổ hợp giãn nở, phải không?


10

Trong bài báo gần đây của WaveNet , các tác giả đề cập đến mô hình của họ là có các lớp kết hợp giãn nở. Họ cũng tạo ra các biểu đồ sau, giải thích sự khác biệt giữa các kết cấu 'thông thường' và các kết luận giãn.

Các cấu trúc thông thường trông giống như Convolutions không giãn Đây là một tổ hợp có kích thước bộ lọc là 2 và sải chân là 1, được lặp lại cho 4 lớp.

Sau đó, họ cho thấy một kiến ​​trúc được sử dụng bởi mô hình của họ, mà họ gọi là các cấu trúc giãn. Có vẻ như thế này. Kết cấu giãn nở của WaveNet Họ nói rằng mỗi lớp có độ giãn tăng dần (1, 2, 4, 8). Nhưng với tôi điều này trông giống như một tổ hợp thông thường với kích thước bộ lọc là 2 và sải chân là 2, được lặp lại cho 4 lớp.

Theo tôi hiểu, một tích chập giãn, với kích thước bộ lọc là 2, sải chân 1 và tăng độ giãn của (1, 2, 4, 8), sẽ giống như thế này. Kết hợp giãn nở thực tế

Trong sơ đồ WaveNet, không có bộ lọc nào bỏ qua đầu vào khả dụng. Không có lỗ hổng. Trong sơ đồ của tôi, mỗi bộ lọc bỏ qua (d - 1) các đầu vào khả dụng. Đây là cách giãn nở được cho là không hoạt động?

Vì vậy, câu hỏi của tôi là, (nếu có) của các đề xuất sau đây là chính xác?

  1. Tôi không hiểu kết luận giãn và / hoặc thường xuyên.
  2. Deepmind không thực sự thực hiện một phép chập giãn, mà là một phép chập có sải, nhưng sử dụng sai sự giãn nở từ.
  3. Deepmind đã thực hiện một tích chập giãn, nhưng không thực hiện đúng biểu đồ.

Tôi không đủ thông thạo mã TensorFlow để hiểu chính xác mã của họ đang làm gì, nhưng tôi đã đăng một câu hỏi liên quan trên Stack Exchange , trong đó có chứa đoạn mã có thể trả lời câu hỏi này.


Tôi thấy câu hỏi và câu trả lời của bạn dưới đây khá thú vị. Vì bài viết trên WaveNet không giải thích được sự tương đương của tốc độ sải chân và tỷ lệ giãn nở, tôi đã quyết định tóm tắt các khái niệm chính trong một bài đăng trên blog: theblog.github.io/post/. Bạn có thể thấy thú vị nếu bạn vẫn làm việc với thần kinh tự phát mạng
Kilian Batzner

Câu trả lời:


8

Từ giấy của 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."

Các hình ảnh động cho thấy một bước cố định và yếu tố giãn nở tăng lên trên mỗi lớp. Hoạt hình Hình 3 từ bài đăng trên blog wavenet của Google


6

Đồng xu chỉ rơi vào cái này cho tôi. Trong 3 mệnh đề đó, một mệnh đề đúng là 4: Tôi không hiểu bài viết về WaveNet.

Vấn đề của tôi là tôi đã diễn giải sơ đồ WaveNet dưới dạng một mẫu duy nhất, để được chạy trên các mẫu khác nhau được sắp xếp theo cấu trúc 2D với 1 chiều là kích thước mẫu và kích thước khác là số lượng lô.

Tuy nhiên, WaveNet chỉ chạy toàn bộ bộ lọc đó trong chuỗi thời gian 1D với bước tiến là 1. Điều này rõ ràng có dung lượng bộ nhớ thấp hơn nhiều nhưng hoàn thành điều tương tự.

Nếu bạn đã cố thực hiện thủ thuật tương tự bằng cách sử dụng cấu trúc sải chân, kích thước đầu ra sẽ sai.

Vì vậy, để tóm tắt, thực hiện theo cách sải bước với cấu trúc lô x mẫu 2D cho cùng một mô hình, nhưng với mức sử dụng bộ nhớ cao hơn nhiều.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.