Инжиниринг искусственного интеллекта
Инжиниринг искусственного интеллекта

Полная версия

Инжиниринг искусственного интеллекта

Настройки чтения
Размер шрифта
Высота строк
Поля
На страницу:
5 из 7

Более того, даже если у вас есть суперкомпьютер с тысячами ядер, RNN заставит их простаивать - каждое следующее слово требует результатов предыдущего, и распараллелить этот процесс принципиально невозможно. Это фундаментальное ограничение последовательной архитектуры.


4. Проблема 2: Затухание градиента (Забывчивость)


Это главная техническая боль RNN. Представьте предложение: «В далеком 1991 году, когда шел сильный дождь, а на часах было уже поздно, я ... вышел из дома».

Чтобы понять, что «вышел» относится к «я», нейросети нужно помнить информацию из самого начала предложения.

В RNN информация при каждом шаге умножается на весовые матрицы и проходит через нелинейные функции активации. При обратном распространении ошибки градиенты, соответствующие дальним шагам, многократно умножаются на эти матрицы и экспоненциально затухают (или взрываются). К тому моменту, как мы дошли до конца, вклад слова «я» в градиент становится практически нулевым - модель не может обучиться учитывать далёкие зависимости.


Итог

RNN хорошо помнит последние 5-10 слов, но забывает, что было в начале абзаца. Она страдает от кратковременной памяти.

Инженеры пытались бороться с этим, тщательно подбирая начальные значения весов и используя специальные техники вроде отсечения градиентов (gradient clipping). Но это были лишь костыли - проблема оставалась в архитектуре, и для действительно длинных последовательностей RNN оставались бессильны.


Почему их вытеснили Трансформеры?




RNN

это последовательный процессор, который читает текст по порядку и ведет конспект в блокноте. Но блокнот маленький, и к концу главы он забывает, что было на первой странице. Трансформеры решили эту проблему, отказавшись от последовательного чтения в пользу полного обзора всего текста сразу.


Но инженеры не сдавались так легко. Они придумали, как улучшить память RNN, добавив специальные вентили, которые решают, что забывать, а что помнить. Так появились LSTM - долгая краткосрочная память. О них - в следующем разделе.


2.3 LSTM (Long Short‑Term Memory / Долгая краткосрочная память)


Мы только что увидели главную проблему простых рекуррентных сетей - их короткую память. RNN помнит только последние несколько слов, а всё, что было в начале предложения, безвозвратно теряется. Но инженеры нашли способ научить сеть не забывать важное. Они добавили специальные вентили, которые решают, что выбросить, а что сохранить на долгую память. Так родилась архитектура LSTM.


LSTM - это вариант RNN с вентилями: входным, забывания и выходным. Она решает проблему долгосрочной памяти, но всё так же не параллелится.


LSTM расшифровывается как Long Short-Term Memory - долгая краткосрочная память. В названии уже скрыта суть: это всё ещё рекуррентная сеть с краткосрочной памятью (как RNN), но теперь она может хранить информацию гораздо дольше. Давайте разберёмся, как ей это удаётся.

Чтобы понять, чем LSTM отличается от обычной RNN, представьте, что простая RNN - это человек, который при чтении книги каждый раз переписывает свой блокнот заново, стирая всё старое. LSTM же ведёт себя как опытный читатель: он носит с собой стопку стикеров-напоминалок и периодически выбрасывает те, что уже не нужны, оставляя важное.

Как же устроен этот «умный блокнот»? В LSTM появляется дополнительная «лента конвейера», которая тянется через всю сеть и несёт в себе важную информацию, почти не меняясь. А три специальных вентиля решают, что с этой лентой делать.


1. Проблема, которую решает LSTM


Обычная RNN страдает от кратковременной памяти. Она помнит последние слова, но забывает начало предложения. LSTM ввели специальный механизм - ленту конвейера (cell state) и вентили (gates), которые решают, какую информацию пронести через всю последовательность нетронутой.


2. Как это работает (Три вентиля)


У LSTM есть три хитрых фильтра, которые регулируют поток информации. Снова пример с предложением: «Кот (1) ... (много слов) ... (2) наелся и (3) спит».

Это главное нововведение LSTM. Информация по ней течёт, минуя нелинейные преобразования, проходя только через линейные операции (сложение и умножение на вентили). Благодаря этому градиенты могут распространяться на сотни шагов без затухания.


Вентиль 1: Забывание (Forget Gate) - «Что выкинуть?»


Вопрос:

«Старая информация о коте всё ещё нужна или уже пора её забыть?»

Когда мы дошли до слова «наелся», модель понимает: «Кот всё ещё актуален, ничего не забываем».

А когда дошли до слова «спит», можно чуть ослабить информацию о том, что он «ел», оставив только факт наличия кота.


Вентиль 2: Входной (Input Gate) - «Что записать нового?»


Вопрос:

«Какая информация из нового слова («наелся») действительно важна и её стоит добавить в ленту конвейера?»

Модель решает: «Факт того, что кот сыт, важен. Добавляю его в ленту памяти».


Вентиль 3: Выходной (Output Gate) - «Что показать миру?»


Вопрос:

«Основываясь на всей ленте памяти (кот + сыт), что я должен выдать как результат прямо сейчас?»

На выходе мы получаем новое скрытое состояние (которое пойдет в следующий шаг), но сама лента памяти остаётся нетронутой для будущих шагов.


3. Почему LSTM круче RNN?


Благодаря этим вентилям, LSTM может протащить важную информацию через сотни шагов.

Пример: в начале текста было слово «Она». LSTM держит это в ленте памяти, не перезаписывая. Через 50 слов встречается глагол «пошла». LSTM сверяется с лентой, видит там «Она» и понимает, что нужно использовать женский род. RNN к этому моменту уже забыла бы, о ком речь.


4. Недостатки (Почему и её вытеснили)


LSTM решила проблему забывания, но унаследовала главную проблему RNN - последовательность:


Нет параллелизации

Чтобы обработать 1000-е слово, нужно дождаться результатов обработки 999 предыдущих. На современных видеокартах (GPU), которые любят считать всё одновременно, это очень медленно.


Сложность

Три вентиля делают архитектуру громоздкой и требовательной к ресурсам. Каждый вентиль - это отдельная нейросеть со своими весами, поэтому LSTM требует значительно больше памяти и вычислений, чем простая RNN.


LSTM

это RNN с «умным блокнотом». Вместо того чтобы просто переписывать страницу, она решает, какие старые записи вычеркнуть (forget gate), какие новые внести (input gate) и что сейчас прочитать вслух (output gate). Длинную память это лечит, но скорость работы остаётся последовательной, что в итоге привело к победе Трансформеров.

LSTM решила проблему забывания, но породила новую - сложность и медлительность. Инженерам это не понравилось, и они начали искать способы упростить архитектуру, сохранив её преимущества. Так появилась следующая модель - GRU, которая уволила лишнего менеджера.


2.4 GRU (Gated Recurrent Unit / Рекуррентный блок с вентилями)


GRU

это упрощённая версия LSTM, объединяющая входной вентиль и вентиль забывания в один «вентиль обновления» (update gate). У GRU всего два вентиля вместо трёх, и нет отдельного состояния ячейки - только скрытое состояние. Это даёт примерно на 25–30% меньше параметров и чуть более быстрые вычисления, но на очень длинных последовательностях (сотни шагов) LSTM может показывать slightly better результаты.


это LSTM, который уволил лишнего менеджера. За счёт такого сокращения GRU работает быстрее и требует меньше памяти. Но, как водится, за скорость приходится платить - чуть-чуть качеством на очень длинных последовательностях.

Представьте, что LSTM - это отдел с тремя сотрудниками: один решает, что забыть (forget gate), второй - что записать нового (input gate), третий - что показать на выходе (output gate). GRU оставляет только двоих:


Reset gate - «Секретарь»: решает, какую часть старых записей вообще не брать в расчёт (игнорировать прошлое).


Update gate - «Руководитель»: сразу решает две задачи - сколько нового взять из текущего слова и сколько старого сохранить (совмещает функции input и forget gate).


Зачем? Меньше сотрудников - меньше зарплата (параметры) и быстрее работа. GRU чуть проще, чем LSTM, и на многих задачах показывает почти то же качество. Но если текст очень длинный и связи сложные, LSTM всё же точнее.


Практическое применение


· Машинный перевод (Google Translate, Яндекс.Переводчик).

· Распознавание речи (Siri, Алиса).

· Генерация текста (автодополнение в поиске, чат-боты).

· Анализ временных рядов (прогноз цен акций, погоды).

· Обработка видео (анализ действий по кадрам).


Главное отличие от LSTM


LSTM чуть точнее на очень длинных последовательностях, но GRU проще, быстрее и часто даёт почти такое же качество, поэтому его часто выбирают, когда важна скорость.

RNN, LSTM, GRU - все они пытались работать с последовательностями шаг за шагом, и все упирались в одну и ту же стену: их нельзя было распараллелить. Нужно было принципиально новое решение, которое смотрело бы на текст сразу целиком. И в 2017 году оно появилось. Революция случилась - на сцену вышел Трансформер.


2.5 Трансформер (Transformer)


Все архитектуры, которые мы рассмотрели до сих пор - CNN, RNN, LSTM, GRU - были великими для своего времени, но у каждой находились фатальные недостатки. CNN не понимали порядок слов, RNN забывали начало предложения, LSTM и GRU были слишком медленными из-за последовательной обработки. Нужен был прорыв.

И в 2017 году команда Google опубликовала статью с громким названием «Attention Is All You Need». Так родился Трансформер - архитектура, которая стёрла все предыдущие с доски лидеров.

Это был не просто очередной шаг в эволюции нейросетей, а настоящая смена парадигмы. Трансформер отказался от последовательной обработки, которая казалась естественной для текста, и предложил смотреть на все слова сразу. Механизм самовнимания позволил каждому токену взаимодействовать с любым другим напрямую, независимо от расстояния, а параллелизация вычислений дала возможность обучать модели с сотнями миллиардов параметров. За считанные годы трансформеры захватили не только обработку текста, но и компьютерное зрение, генерацию изображений и даже анализ молекул.


Что такое трансформер?


Технически

Трансформер - это архитектура нейросетей, основанная исключительно на механизме самовнимания (self-attention). Он позволяет модели вычислять попарные веса важности между всеми токенами последовательности за один проход. Благодаря этому каждый токен может напрямую взаимодействовать с любым другим, независимо от расстояния, а все вычисления легко распараллеливаются на GPU.


Метафора

Представьте, что вы читаете книгу не последовательно, а видите сразу всю страницу целиком. Вы можете мгновенно установить связь между словом на первой строке и словом на последней, потому что они оба перед глазами. Именно так работает трансформер.


Три кита, на которых стоит трансформер


Прежде чем разбирать семейства моделей, запомните три главные идеи, которые сделали трансформер революцией:


1. САМОВНИМАНИЕ (Self-Attention)

Каждый токен “смотрит” на все остальные и решает, кто для него важен. Это как совещание, где каждый слушает каждого.


2. ПАРАЛЛЕЛИЗМ (Parallelism)

Все токены обрабатываются одновременно, а не по очереди. Это как читать все книги в библиотеке сразу, а не по одной.


3. МНОГОСЛОЙНОСТЬ (Multi-layer)

Десятки слоев трансформера строят иерархию понимая:

Слой 1: буквы -> Слой 5: слова -> Слой 15: роли -> Слой 30: смысл


Три основных семейства Transformer

В зависимости от того, какую часть трансформера мы используем - только энкодер, только декодер или оба сразу - получаются модели с совершенно разными способностями.


Визуализация трёх семейств




1. Decoder-only (только декодер)


Как работает

Использует каузальное внимание (causal attention) - каждое слово видит только предыдущие слова. Это как читать книгу, закрывая рукой ещё не прочитанные страницы.


Зачем

Генерировать текст, предсказывая следующее слово.


Кто использует

Все современные чат-боты - GPT, GigaChat, DeepSeek, LLaMA, Mistral, Grok.


Метафора

Это писатель, который пишет роман последовательно, главу за главой, не заглядывая в будущее.


2. Encoder-only (только энкодер)


Как работает

Использует двунаправленное внимание (bidirectional attention) - каждое слово видит и левый, и правый контекст. Как читатель, который видит всю страницу целиком и может установить любые связи.


Зачем

«Понимать» текст целиком, но не генерировать новые фразы. Анализ, классификация, извлечение смысла.


Кто использует

BERT, RoBERTa.


Метафора

Это литературный критик, который анализирует готовый роман, видит все связи и может ответить на вопросы, но сам писать не умеет.


3. Encoder-Decoder (кодер-декодер)


Как работает

Состоит из двух частей: энкодер читает входной текст (двунаправленно), а декодер генерирует выходной (авторегрессионно).


Зачем

Задачи, где нужно преобразовать одну последовательность в другую: перевод, суммаризация, перефразирование.


Кто использует

T5 (Text-to-Text Transfer Transformer), BART (Bidirectional and Auto-Regressive Transformer).


Метафора

Это переводчик: сначала полностью понимает исходный текст (энкодер), потом пишет перевод (декодер).


Популярные модели: глубокое погружение


Из трёх семейств выросли все современные модели-звёзды. Одни научились глубоко понимать текст, другие - генерировать, третьи - переводить с языка на язык. Познакомимся с самыми известными представителями.


BERT: король понимания


BERT (Bidirectional Encoder Representations from Transformers) - двунаправленный энкодер от Google, который вышел в 2018 году и буквально перевернул мир NLP.


Суть

Предобучается на огромных объёмах текста с двумя специальными задачами: MLM и NSP.


Зачем

Глубокое понимание текста.


Применение

Определение тональности, ответы на вопросы (без генерации), распознавание именованных сущностей, классификация документов.

До появления BERT модели хорошо справлялись с конкретными задачами, но не умели по-настоящему понимать контекст. BERT изменил это, научившись учитывать как левый, так и правый контекст каждого слова. Это позволило ему достичь человеческого уровня в ряде тестов на понимание языка и заложило фундамент для всех последующих энкодерных архитектур.


Визуализация обучения BERT




BERT : детали для инженера


Эволюция: от BERT к RoBERTa


BERT стал настоящей сенсацией, но исследователи быстро поняли, что его можно улучшить. Убрали лишнее, добавили данных, дольше обучали - так родилась его улучшенная версия.

RoBERTa (Robustly optimized BERT approach) - улучшенная версия BERT от Facebook*.

* Деятельность компании Meta (владельца Facebook) запрещена на территории РФ по решению суда.


Что изменили


· Убрали задачу NSP (оказалась не нужна)

· Больше данных (160GB вместо 16GB)

· Дольше обучали (больше шагов)

· Динамическое маскирование (маски меняются каждую эпоху)


Результат

RoBERTa стабильно превосходит BERT во всех тестах.


Тупик понимания: почему BERT недостаточно


Мы разобрали BERT и его улучшенную версию RoBERTa. Это великолепные «читатели». Они идеально подходят для классификации, поиска именованных сущностей или определения тональности. Но у архитектур Encoder-only есть фундаментальное ограничение: они не умеют генерировать текст.

Представьте литературного критика (наша метафора для Encoder-only). Он может написать блестящий разбор романа, найти все символические связи и оценить стиль. Но если вы попросите его написать продолжение этого романа или перевести его на китайский, он растеряется. У него нет механизма «письма», только механизм «чтения».


А что, если наша бизнес-задача – именно генерация? Машинный перевод, суммаризация длинных документов, перефразирование. Нам нужна модель, которая сначала глубоко поймет исходный текст, а затем на основе этого понимания сгенерирует новый.

Для этого инженеры объединили две части трансформера. Так родилась архитектура Encoder-Decoder. Энкодер читает и сжимает смысл, а декодер разворачивает этот смысл в новую последовательность слов. И именно эта архитектура привела нас к одной из самых элегантных идей в истории NLP.



T5: гениальная простота формата «текст в текст»


Модель T5 (Text-to-Text Transfer Transformer) от Google пошла дальше простого объединения энкодера и декодера. Авторы задались вопросом: а зачем придумывать разные архитектуры и функции потерь для разных задач?

Ведь если подумать, почти любую задачу NLP можно свести к одной формуле: на вход подаем текст, на выходе получаем текст.


· Хочешь перевести? Вход: «translate to French: [текст]». Выход: французский текст.

· Хочешь сделать суммаризацию? Вход: «summarize: [статья]». Выход: краткий текст.

· Хочешь определить тональность? Вход: «sentiment: [отзыв]». Выход: текст «positive» или «negative».


Метафора

Если BERT – это узкопрофильный аналитик, который заполняет таблички в Excel, то T5 – это универсальный переводчик-секретарь. Вы даете ему любую инструкцию на естественном языке вместе с данными, а он возвращает результат в виде текста.


Гениальная простота

Превращает все NLP-задачи в единый формат «текст на вход - текст на выход».


Визуализация идеи T5




Проблема T5 и рождение BART

Идея T5 прекрасна, но на практике она сталкивается с реальностью: пользовательские данные часто бывают «грязными». Опечатки, обрывки фраз, пропущенные слова. Модель, которая просто учится преобразовывать один текст в другой, может растеряться, если входная последовательность нарушена.

Инженеры из Facebook* решили усилить эту архитектуру, задав модели более сложную задачу на этапе обучения. Они не просто просили модель перевести или суммировать текст. Они брали хороший текст, намеренно «портили» его (удаляли слова, переставляли предложения, маскировали фрагменты), а затем заставляли модель восстановить исходный, чистый вариант.

* Деятельность компании Meta (владельца Facebook) запрещена на территории РФ по решению суда.

Так появилась модель BART (Bidirectional and Auto-Regressive Transformer).


BART: лучший из двух миров


BART (Bidirectional and Auto-Regressive Transformer) - модель от Facebook*, которая объединила лучшее от BERT и GPT.

* Деятельность компании Meta (владельца Facebook) запрещена на территории РФ по решению суда.


Как устроен

Энкодер как у BERT (двунаправленный) - понимает контекст

Декодер как у GPT (авторегрессионный) - генерирует текст


Гениальность BART в том, что шум можно добавлять практически любой - модель вынуждена учиться понимать структуру языка на всех уровнях: от отдельных слов до общего смысла предложения. Это делает BART особенно устойчивым к искажениям и эффективным в задачах, где входные данные могут быть «грязными» - например, при обработке пользовательского контента или распознавании речи с ошибками.


Как обучается

Берут текст, портят его разными способами (маскируют, переставляют слова, удаляют), а модель учится восстанавливать оригинал.


Сводная таблица: модели на основе трансформера




Важное замечание про современность.


Обратная сторона медали: за что критикуют трансформеры

Было бы нечестно представить трансформер как абсолютное благо и замолчать его недостатки. У этой архитектуры есть три фундаментальные проблемы, над решением которых бьются лучшие инженерные команды мира.


Проблема 1: Квадратичная сложность внимания


Механизм самовнимания требует вычисления попарных связей между всеми токенами. Это даёт сложность O(n²) по памяти и времени - каждый новый токен удорожает обработку квадратично. Для контекста в 10 тысяч токенов это ещё терпимо, но при 100 тысячах вычисления становятся тяжёлыми, а при миллионе - часто просто невозможными без специальных оптимизаций (о которых мы говорили в главе 4). Трансформеры плохо масштабируются на сверхдлинные контексты принципиально, на уровне архитектуры.


Проблема 2: «Вымывание» первых токенов

На страницу:
5 из 7