Decoder (Transformer) (BG)
Декодер (англ. Decoder, декодировщик) — в машинното обучение и дълбокото обучение това е компонент на невронна мрежа, чиято основна задача е да преобразува кодирано представяне (например контекстен вектор или поредица от скрити състояния, получени от енкодера) в изходна поредица от данни (например текст или изображение). Декодерът генерира изходни данни стъпка по стъпка, обикновено в авторегресионен режим.
В по-широк смисъл, в теорията на информацията, декодерът е всяко устройство или алгоритъм, който преобразува кодирани данни обратно в техния първоначален или разбираем формат.
Концепция и предназначение
Ако енкодерът отговаря за разбирането и компресирането на входните данни, то декодерът отговаря за генерирането и разгръщането на изходните данни. Той взема компактно, богато на информация представяне и последователно го преобразува в желания формат — било то изречение на друг език, текстово описание на изображение или поредица от музикални ноти.
Ключова характеристика на повечето декодери е тяхната авторегресионна природа: за генерирането на следващия елемент от поредицата (например дума или пиксел) те използват както кодираното представяне, така и всички вече генерирани елементи.
Декодерът в различни архитектури
Декодерът в автоенкодера
В архитектурата на автоенкодера декодерът изпълнява задача, обратна на енкодера:
- Енкодерът компресира входните данни в скрито представяне.
- Декодерът взема това скрито представяне и се опитва да възстанови (реконструира) от него оригиналните данни.
Обучението на такава мрежа позволява декодерът да се използва самостоятелно за генериране на нови данни, като на входа му се подават вектори от латентното пространство.
Декодерът в рекурентните невронни мрежи (RNN/LSTM)
В класическите модели за преобразуване на поредица в поредица (seq2seq), базирани на RNN или LSTM, декодерът представлява рекурентна мрежа, която генерира изходната поредица token по token.
- Принцип на работа: Декодерът се инициализира с крайното скрито състояние (контекстния вектор) на енкодера. На всяка стъпка той приема като вход предишния генериран token и своето предишно скрито състояние, след което генерира следващия token и актуализира своето състояние. Този процес продължава, докато не бъде генериран специален token за край на поредицата (`<EOS>`).
Декодерът в архитектурата Transformer
Декодерът, базиран на архитектурата Transformer, също работи авторегресионно, но вътрешната му структура се различава. Той се състои от стек () от идентични слоеве, всеки от които има три основни подслоя:
- Маскирано многоглавно самовнимание (Masked Multi-Head Self-Attention): Този механизъм работи по същия начин, както при енкодера, но с една важна разлика — маскирането. Маската не позволява на всяка позиция да „обръща внимание" към следващите позиции в поредицата. Това гарантира, че предсказването за позиция зависи само от вече известните изходи на позиции , запазвайки авторегресионното свойство.
- Многоглавно кръстосано внимание (Multi-Head Cross-Attention): Това е ключовият механизъм, свързващ декодера с енкодера. Тук заявките (Query) идват от предишния слой на декодера, а ключовете (Key) и стойностите (Value) — от изходните представяния на енкодера. Това позволява на декодера на всяка стъпка от генерирането да се фокусира върху най-релевантните части от входната поредица.
- Напълно свързана невронна мрежа (Feed-Forward Network): Аналогична на тази, използвана в енкодера.
Типове модели на базата на декодер
Модели енкодер-декодер
Това е класическата архитектура, при която енкодерът и декодерът работят в двойка.
- Принцип на работа: Енкодерът създава представяне на входните данни, а декодерът генерира изходните данни, използвайки това представяне.
- Примери: Оригиналният Transformer, T5, BART.
Модели само с декодер (Decoder-Only)
Тези модели, превърнали се в доминиращи в генеративния AI, използват единствено стек от декодери на Transformer.
- Принцип на работа: При такива модели липсва кръстосано внимание към енкодер, тъй като енкодер няма. Моделът работи в чисто авторегресионен режим, предсказвайки следващия token въз основа на всички предишни token-и в същата поредица. Входният prompt и вече генерираният текст се обработват заедно.
- Приложение: Идеални за задачи, при които се изисква продължаване на зададен текст (генериране на текст, диалогови системи, чатботове).
- Примери: Серията GPT, LLaMA, Claude.
Връзка с енкодера
Взаимодействието между енкодера и декодера е фундаментален принцип при задачите за преобразуване.
- Енкодерът компресира информацията за входната поредица в набор от вектори.
- Декодерът използва този набор от вектори, за да генерира последователно нова поредица.
Кръстосаното внимание позволява на декодера на всяка стъпка да „се консултира\" с енкодера, за да разбере върху коя част от изходния текст трябва да се съсредоточи в момента. Например при превод на изречение декодерът, генерирайки немска дума, може да „погледне\" съответстващата ѝ английска дума от входа.
Вижте също
- GPT
Литература
- Vaswani, A. et al. (2017). Attention Is All You Need. NIPS.