Изменения

Перейти к: навигация, поиск

Трансформер

54 байта добавлено, 14:27, 14 июня 2022
м
добавлены уточнения
<math>p_{(i, s)} = \sin \left(i \cdot 10000^{\frac{-2s}{d_{model}}}\right)</math>,
<math>p_{(i, s + \frac{d}{2})} = \cos \left(i \cdot 10000^{\frac{-2s}{d_{model}}}\right)</math>
 
По сути мы свели задачу обработки последовательности (''seq'') к множеству (''set'').
===Self-attention===
Таким образом, новое представление элемента <math>x_i</math> считаем как взвешенную сумму векторов значения: <math>z_i = \mathrm{Attn}(Q x_i, K X, V X) = \sum_{p=1}^n w_{p i} v_p</math>, где <math>X = (x_1, x_2, ..., x_n)</math> {{---}} входные векторы.
По факту ''self-attention'' {{---}} это ''soft-arg-max'' с температурой <math>\mathrmsqrt{sqrtd}(d)</math>. Мы перемешиваем все входные векторы, чтобы получить новые векторы всех элементов, где каждый элемент зависит от всех входных элементов.
===Multi-headed self-attention===
2. Далее идет этап многомерного самовнимания: линейная нормализация и multi-headed self-attention. Особенность в том, что в attention ключи и значения применяются не ко всем векторам, а только к тем, значения которых уже синтезировали (<math>H_t</math>):
<math> h'_t = \mathrm{LN} \circ M H_j \circ \mathrm{Attn}(Q^j h_t, K^j H_t, V^j H_t) </math>, где <math>\circ</math> {{---}} композиция.
3. На следующем этапе мы делаем многомерное внимание на кодировку <math>Z</math>, результат работы компонента кодировщика:
5. Линейный предсказывающий слой:
<math> p(\tilde w|t) = \mathrm{SoftMaxSoft-argmax}_{\tilde w}(W_y y_t + b_y) </math>, <math> W_y </math>, <math> b_y </math> {{---}} обучаемые параметры линейного преобразования. Для каждой позиции <math>t</math> выходной последовательности мы строим вероятностную модель языка, то есть все элементы из выходного словаря получают значение вероятности. Эти значения как раз получаются из векторов <math>y_t</math> из предыдущего пункта, которые мы берем с последнего блока трансформера-декодировщика.
Последний этап выполняется только после того, когда повторились пункты 1-4 для всех декодировщиков. На выходе получаем вероятности классов, по факту решаем для каждого класса задачу многоклассовой классификации, для того, чтобы понять какие элементы лучше поставить на каждые позиции.
В самом конце мы имеем вероятностную порождающую модель для элементов и остается только породить эти элементы. Для простоты мы будем считать, что для каждой позиции просто выбирается самый вероятный элемент. Генерация самих элементов: <math> {\tilde w}_t = \mathrm{arg max}_{\tilde w} p(\tilde w|t) </math>, пока не сгенерируется слово обозначающее конец последовательности. По сути мы свели задачу обработки последовательности (''seq'') к множеству (''set'').
==Источники информации==
23
правки

Навигация