Все, что вы хотите знать о том, зачем требуется предварительное заполнение

Изучая архитектуру LSTM, мы все сосредоточены на воротах «Забыто», «Входных воротах» и «Выходных воротах».

Но когда дело доходит до реализации, перед применением слоя внедрения мы применяем предварительное дополнение к входным данным (последовательность слов).

что мы думаем:

Входные данные ====› Слой внедрения ======› Слои LSTM ===== › Softmax/Sigmoid =====› Выходные данные

Реальность:

Входные данные =====› Предварительное заполнение входных данных ====› Слой внедрения ======› Слои LSTM =====› Softmax/Sigmoid =====› Выходные данные

почему Pre-Padding:

Пример: если у нас есть 3 отзыва (входные данные)

Отзыв1: Этот(w1) фильм(w2)(w3) очень(w4)интересен(w5)

w1= слово 1, w2= слово 2, w3= слово 3, w4= слово 4, w5= слово5

у нас есть 5 слов в отзыве1

Отзыв 2: мне (w1) нравится (w2) не (w3) нравится (w4) этот (w5) фильм (w6)

Аналогично имеем 6 слов в обзоре2

Review3: Я(w1) ненавижу(w2) этот(w3) тип(w4) из(w5) жанра(w6) фильмов(w7)

У нас есть 7 слов в отзыве3

у нас разная длина отзывов

Из-за разной длины сначала мы пропускаем слова Review1 через слой LSTM после завершения слов Review 1, а затем только мы передаем слова Review 2 через слой LSTM. процесс представляет собой не что иное, как SGD (стохастический градиентный спуск) с размером партии = 1.

В реальной проблеме у нас есть миллионы обзоров (входных данных), если мы будем следовать SGD с размером партии = 1, решение займет несколько дней, поэтому мы используем SGD с размером партии = k (k может быть любым числом)

Пример, если k=32, это означает, что мы передаем 32 слова за один временной шаг.

С размером пакета SGD=k мы можем решить проблему в течение значительного периода времени, но для выполнения размера пакета SGD все входные обзоры должны быть одинаковой длины.

len(Review1)=len(Review2)=len(Review3)

где len=длина

Но у нас len(Review1)=5, len(Review2)=6, len(Review3)=7

Таким образом, чтобы получить одинаковую длину отзывов, мы применяем Pre-Padding с нулями к входным данным.

Review1= 0(w1) 0(w2) Этот(w3) фильм(w4) очень(w5) очень(w6) интересный(w7)

Отзыв2=0(w1) Мне(w2) нравится(w3) нет(w4) нравится(w5) этот(w6) фильм(w7)

Review3: Я(w1) ненавижу(w2) этот(w3) тип(w4) из(w5) жанра(w6) фильмов(w7)

Теперь у нас одинаковые по длине отзывы.

len(Review1)=len(Review2)=len(Review3)=7.

Теперь мы можем применить SGD с размером партии = k.

Теперь мы можем решить проблему со значительным временем

Вывод:

Чтобы применить пакетный размер SGD, нам нужно иметь обзоры одинаковой длины (последовательность слов), чтобы получить ту же длину, мы применяем Pre-Padding (нулевое заполнение) к входным данным.