Все, что вы хотите знать о том, зачем требуется предварительное заполнение
Изучая архитектуру 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 (нулевое заполнение) к входным данным.