0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Теги: stateful, greedy decoding, dec, bos, eos, декодер, sequence-to-sequence, data science, big data, энкодер, финальный вектор контекста, категориальное распределение, суммарная вероятность генерации последовательности слов</p>
1
<p>Теги: stateful, greedy decoding, dec, bos, eos, декодер, sequence-to-sequence, data science, big data, энкодер, финальный вектор контекста, категориальное распределение, суммарная вероятность генерации последовательности слов</p>
2
<p>Ключевая идея модели заключается в том, что мы рассматриваем входные данные (предложение на языке А) и выходные данные (предложение на языке Б) как последовательности слов.</p>
2
<p>Ключевая идея модели заключается в том, что мы рассматриваем входные данные (предложение на языке А) и выходные данные (предложение на языке Б) как последовательности слов.</p>
3
<p>Таким образом, алгоритм перевода состоит из следующих основных этапов:</p>
3
<p>Таким образом, алгоритм перевода состоит из следующих основных этапов:</p>
4
<p>1) Энкодер (enc) последовательно считывает входное предложение и выдает вектор контекста "С". На рисунке передаче вектора контекста от энкодера к декодеру соответствует стрелка<strong>h4 → dec1</strong>.</p>
4
<p>1) Энкодер (enc) последовательно считывает входное предложение и выдает вектор контекста "С". На рисунке передаче вектора контекста от энкодера к декодеру соответствует стрелка<strong>h4 → dec1</strong>.</p>
5
<p>2) Получив компактное описание входного предложения в виде "С", декодер (dec) генерирует слова на другом языке последовательно. Отдельным "словом" в словаре языка Б обозначим начало предложения "BOS" и конец предложения "EOS".</p>
5
<p>2) Получив компактное описание входного предложения в виде "С", декодер (dec) генерирует слова на другом языке последовательно. Отдельным "словом" в словаре языка Б обозначим начало предложения "BOS" и конец предложения "EOS".</p>
6
<p>Схематично этот процесс представлен на рисунке.</p>
6
<p>Схематично этот процесс представлен на рисунке.</p>
7
<h2>Рассмотрим декодер подробнее</h2>
7
<h2>Рассмотрим декодер подробнее</h2>
8
<p>Его можно представить в виде следующей функции:</p>
8
<p>Его можно представить в виде следующей функции:</p>
9
<p>Здесь ht - вектор скрытого состояния декодера на шаге t (можно сказать, что декодер - такая "stateful" функция от предыдущего слова), pt - распределение по словам на шаге t, w(t-1) это слово, которое выбрано в качестве основной гипотезы исходя из распределения p(t-1) на шаге "t-1".</p>
9
<p>Здесь ht - вектор скрытого состояния декодера на шаге t (можно сказать, что декодер - такая "stateful" функция от предыдущего слова), pt - распределение по словам на шаге t, w(t-1) это слово, которое выбрано в качестве основной гипотезы исходя из распределения p(t-1) на шаге "t-1".</p>
10
<p>Для энкодера аналогичное уравнение выглядит следующим образом:</p>
10
<p>Для энкодера аналогичное уравнение выглядит следующим образом:</p>
11
<p>Обратите внимание, что в качестве финального вектора контекста C выбирается последнее скрытое состояние энкодера, в данном случае h4. В случае более сложных подходов (например, с добавлением механизмов т.н. "внимания") схема чуть усложнится.</p>
11
<p>Обратите внимание, что в качестве финального вектора контекста C выбирается последнее скрытое состояние энкодера, в данном случае h4. В случае более сложных подходов (например, с добавлением механизмов т.н. "внимания") схема чуть усложнится.</p>
12
<h2>В чем преимущество такого подхода?</h2>
12
<h2>В чем преимущество такого подхода?</h2>
13
<p>Прежде всего тем, что количество параметров модели не зависит от длины предложения: одни и те же модели (enc и dec) работают на всех шагах по времени.</p>
13
<p>Прежде всего тем, что количество параметров модели не зависит от длины предложения: одни и те же модели (enc и dec) работают на всех шагах по времени.</p>
14
<p>В завершение, вернемся к вопросу выбора правильной последовательности слов w1,w2,...wn, учитывая что декодер выдает только вероятности слов p1,p2,...pn.</p>
14
<p>В завершение, вернемся к вопросу выбора правильной последовательности слов w1,w2,...wn, учитывая что декодер выдает только вероятности слов p1,p2,...pn.</p>
15
<p>Мы можем выбрать любое слово w(t-1) из категориального распределения p(t-1) над словарём, получить новое скрытое состояние ht и новое распределение pt. Выбору этого слова будет соответствовать определённая вероятность, которую будем обозначать p(t-1) (w(t-1)).</p>
15
<p>Мы можем выбрать любое слово w(t-1) из категориального распределения p(t-1) над словарём, получить новое скрытое состояние ht и новое распределение pt. Выбору этого слова будет соответствовать определённая вероятность, которую будем обозначать p(t-1) (w(t-1)).</p>
16
<p>Выполняя на каждом шаге такую процедуру, получаем суммарную вероятность генерации последовательности слов:</p>
16
<p>Выполняя на каждом шаге такую процедуру, получаем суммарную вероятность генерации последовательности слов:</p>
17
<p>Простейший способ генерировать последовательность - выбирать на каждом шаге самое вероятное слово wt из распределения pt ("<strong>greedy decoding</strong>"). Это, однако, не гарантирует нам, что мы найдём именно ту последовательность слов, которая максимизирует P(w1,w2,...wn) для заданного энкодера и декодера.</p>
17
<p>Простейший способ генерировать последовательность - выбирать на каждом шаге самое вероятное слово wt из распределения pt ("<strong>greedy decoding</strong>"). Это, однако, не гарантирует нам, что мы найдём именно ту последовательность слов, которая максимизирует P(w1,w2,...wn) для заданного энкодера и декодера.</p>
18
<p><a>Дополнительные материалы</a></p>
18
<p><a>Дополнительные материалы</a></p>
19
<p><em>Есть вопрос? Напишите в комментариях!</em></p>
19
<p><em>Есть вопрос? Напишите в комментариях!</em></p>
20
20