AI-For-Beginners/translations/ru/lessons/5-NLP/17-GenerativeNetworks
leestott e7369eb9ad 🌐 Update translations via Co-op Translator 2025-08-28 12:35:46 +00:00
..
lab 🌐 Update translations via Co-op Translator 2025-08-26 12:09:18 +00:00
GenerativePyTorch.ipynb 🌐 Update translations via Co-op Translator 2025-08-28 12:35:46 +00:00
GenerativeTF.ipynb 🌐 Update translations via Co-op Translator 2025-08-28 12:35:46 +00:00
README.md 🌐 Update translations via Co-op Translator 2025-08-26 12:09:18 +00:00

README.md

Генеративные сети

Тест перед лекцией

Рекуррентные нейронные сети (RNN) и их варианты с управляемыми ячейками, такие как ячейки долгосрочной памяти (LSTM) и управляемые рекуррентные блоки (GRU), предоставляют механизм для моделирования языка, так как они могут изучать порядок слов и предсказывать следующее слово в последовательности. Это позволяет использовать RNN для генеративных задач, таких как обычная генерация текста, машинный перевод и даже создание подписей к изображениям.

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

В архитектуре RNN, которую мы обсуждали в предыдущем разделе, каждая единица RNN производила следующее скрытое состояние в качестве выхода. Однако мы также можем добавить еще один выход к каждой рекуррентной единице, что позволит нам выводить последовательность (равную по длине исходной последовательности). Более того, мы можем использовать RNN, которые не принимают входные данные на каждом шаге, а просто используют некоторый начальный вектор состояния и затем генерируют последовательность выходных данных.

Это позволяет создавать различные нейронные архитектуры, показанные на изображении ниже:

Изображение, показывающее распространенные шаблоны рекуррентных нейронных сетей.

Изображение из блога Unreasonable Effectiveness of Recurrent Neural Networks Андрея Карпати (Andrej Karpaty)

  • Один-к-одному — традиционная нейронная сеть с одним входом и одним выходом.
  • Один-ко-многим — генеративная архитектура, которая принимает одно входное значение и генерирует последовательность выходных значений. Например, если мы хотим обучить сеть для создания подписей к изображениям, которая будет генерировать текстовое описание изображения, мы можем использовать изображение в качестве входных данных, пропустить его через CNN для получения скрытого состояния, а затем рекуррентная цепочка будет генерировать подпись слово за словом.
  • Многие-к-одному соответствует архитектурам RNN, которые мы описали в предыдущем разделе, например, классификация текста.
  • Многие-ко-многим, или последовательность-к-последовательности, соответствует задачам, таким как машинный перевод, где первая RNN собирает всю информацию из входной последовательности в скрытое состояние, а другая цепочка RNN разворачивает это состояние в выходную последовательность.

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

Мы будем обучать эту RNN генерировать текст шаг за шагом. На каждом шаге мы будем брать последовательность символов длиной nchars и просить сеть сгенерировать следующий выходной символ для каждого входного символа:

Изображение, показывающее пример генерации слова "HELLO" с помощью RNN.

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

Изображение автора

✍️ Упражнения: Генеративные сети

Продолжите обучение в следующих ноутбуках:

Мягкая генерация текста и температура

Выход каждого элемента RNN — это распределение вероятностей символов. Если мы всегда выбираем символ с наивысшей вероятностью в качестве следующего символа в сгенерированном тексте, текст часто может "зацикливаться" на одних и тех же последовательностях символов, как в этом примере:

today of the second the company and a second the company ...

Однако, если мы посмотрим на распределение вероятностей для следующего символа, может оказаться, что разница между несколькими наивысшими вероятностями незначительна, например, один символ может иметь вероятность 0.2, а другой — 0.19 и т.д. Например, при выборе следующего символа в последовательности 'play', следующим символом может быть как пробел, так и e (как в слове player).

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

Изучите, как эта мягкая генерация текста реализована в ноутбуках, указанных выше.

Заключение

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

🚀 Задание

Пройдите уроки на Microsoft Learn по этой теме:

Тест после лекции

Обзор и самостоятельное изучение

Вот несколько статей для расширения ваших знаний:

  • Различные подходы к генерации текста с использованием цепей Маркова, LSTM и GPT-2: статья
  • Пример генерации текста в документации Keras

Задание

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

Отказ от ответственности:
Этот документ был переведен с использованием сервиса автоматического перевода Co-op Translator. Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода.