Нейронные сети — это математическая модель, а также её программное или аппаратное воплощение, построенная по принципу организации и функционирования биологических нейронных сетей, созданные для моделирования аналитических действий, совершаемых человеческим мозгом.
Нейронные сети относятся к направлению искусственного интеллекта и применяются для распознавания скрытых закономерностей в необработанных данных, группировки и классификации, а также решения задач в области, машинного и глубокого обучения. Первые попытки создания искусственной нейронной сети совершили Уоррен Мак-Каллок и Уолтер Питтс.
Выделяют несколько базовых типов задач, для решения которых могут использоваться нейросети:
Классификация. Для распознавания лиц, эмоций, типов объектов: например, квадратов, кругов, треугольников. Также для распознавания образов, то есть выбора конкретного объекта из предложенного множества: например, выбор квадрата среди треугольников;
Регрессия. Для определения возраста по фотографии, составления прогноза биржевых курсов, оценки стоимости имущества и других задач, требующих получения в результате обработки конкретного числа;
Прогнозирования временных рядов. Для составления долгосрочных прогнозов на основе динамического временного ряда значений. Например, нейросети применяются для предсказания цен, физических явлений, объема потребления и других показателей. По сути, даже работу автопилота Tesla можно отнести к процессу прогнозирования временных рядов;
Кластеризация. Для изучения и сортировки большого объема неразмеченных данных в условиях, когда неизвестно количество классов на выходе, то есть для объединения данных по признакам. Например, кластеризация применяется для выявления классов картинок и сегментации клиентов;
Генерация. Для автоматизированного создания контента или его трансформации. Генерация с помощью нейросетей применяется для создания уникальных текстов, аудиофайлов, видео, раскрашивания черно-белых фильмов и даже изменения окружающей среды на фото.
Принцип работы нейронных сетей
Искусственные нейронные сети состоят из таких слоёв как, входной, скрытый и выходной. В каждом из них есть несколько узлов, которые соединены со всеми узлами в сети с помощью разных связей и имеют свой «вес», влияющий на силу передаваемого сигнала. Такая архитектура позволяет вести параллельную обработку данных и постоянно сравнивать их с результатами обработки на каждом из этапов.
Нейронные сети изначально обучаются на размеченных наборах данных с очевидными закономерностями, а после используют полученные навыки для самообучения и достижения результата. При этом нейросеть может совершать миллионы попыток для достижения таких же результатов, как и предоставленном для обучения примере.
Работа нейронной сети сравнима с действиями человека: сталкиваясь с незнакомым предметом, он узнает его свойства и делает выводы. Аналогичные процессы происходят в узлах нейросетей, когда, решая определенную задачу, они используют полученный опыт для дальнейшего обучения.
Виды нейронных сетей
Есть десятки видов нейросетей, которые отличаются архитектурой, особенностями функционирования и сферами применения. При этом чаще других встречаются сети трех видов:
прямого распространения;
сверточные;
рекуррентные.
Нейронные сети прямого распространения
Нейронные сети прямого распространения – это прямолинейный вид нейросетей, при котором соседние узлы слоя не связаны, а передача информации осуществляется напрямую от входного слоя к выходному. Нейронные сети прямого распространения имеют малую функциональность, поэтому часто используются в комбинации с сетями других видов.
Сверточные нейронные сети
Сверточные нейронные сети — это такой особый вид нейросетей прямого распространения, и под прямым распространением понимается то, что переменные нейроны в этой сети разбиты на группы, называемые слоями. Состоят из слоев пяти типов:
входного;
свертывающего;
объединяющего;
подключенного;
выходного.
Каждый слой выполняет определенную задачу: например, обобщает или соединяет данные. Сверточные нейросети применяются для классификации изображений, распознавания объектов, прогнозирования, обработки естественного языка и других задач.
Рекуррентные нейронные сети
Рекуррентные нейронные сети – это сети, используемые в обработке естественного языка. Они оценивают произвольные предложения на основе того, насколько часто они встречались в текстах, а также языковые модели генерируют новый текст.
Обучение модели на поэмах Шекспира позволит генерировать новый текст, похожий на его произведения. Данные сети используют направленную последовательность связи между узлами. В рекуррентных сетях результат вычислений на каждом этапе используется в качестве исходных данных для следующего. Благодаря этому, рекуррентные нейронные сети могут обрабатывать серии событий во времени или последовательности для получения результата вычислений. Рекуррентные нейронные сети применяют для языкового моделирования и генерации текстов, машинного перевода, распознавания речи и других задач.
Архитектура DALL-E.
В основе архитектуры DALL-E стоит так называемый трансформер, он состоит из энкодера и декодера. Общая идея состоит в том, чтобы вычислить embedding по входным данным с помощью энкодера, а затем с учетом известного выхода правильным образом декодировать embedding. В трансформере энкодер и декодер состоят из ряда идентичных блоков. Основу архитектуры трансформера составляет механизм Self-attention. Он позволяет модели понять, какие фрагменты входных данных важны и насколько важен каждый фрагмент входных данных для других фрагментов.
Первым шагом при вычислении Self-attention является создание трёх векторов для каждого входного вектора энкодера. То есть для каждого элемента создаются векторы Query, Key и Value. Эти векторы получаются путем перемножения значения embedding и трех матриц, которые мы получаем в процессе обучения. Далее используется полученные векторы для формирования Self-attention-представления каждого embedding, что дает возможность оценить возможные связи в элементах входных данных, а также определить степень «полезности» каждого элемента.
Трансформер также характеризует наличие словаря. Каждый элемент словаря — это токен. В зависимости от модели размер словаря может меняться. Таким образом, входные данные сначала превращаются в последовательность токенов, которая далее конвертируется в embedding с помощью энкодера. Для текста используется свой токенизатор, для изображения сначала вычисляются low-level-фичи, а затем в скользящем окне вычисляются визуальные токены. Применение механизма Self-attention позволяет извлечь контекст из входной последовательности токенов в ходе обучения. Следует отметить, что для обучения трансформера требуются большие объёмы (желательно «чистых») данных.
Устройство ruDALL-E.
Глобальная идея состоит в том, чтобы обучить трансформер авторегрессивно моделировать токены текста и изображения как единый поток данных. Однако использование пикселей непосредственно в качестве признаков изображений потребует чрезмерного количества памяти, особенно для изображений с высоким разрешением. Для того, чтобы не учить только краткосрочные зависимости между пикселями и текстами, а делать это более высокоуровнево. Обучение данной модели проходит в 2 этапа:
Предварительно сжатые изображения с разрешением 256х256 поступают на вход автоэнкодера, который учится сжимать изображение в матрицу токенов 32х32. Фактор сжатия 8 позволяет восстанавливать изображение с небольшой потерей качества;
Трансформер учится сопоставлять токены текста (у ruDALL-E их 128) и 32×32=1024 токена изображения (токены конкатенируются построчно в последовательность). Для токенизации текстов использовался токенизатор YTTM.
Пайплайн генерации изображений
Генерация изображений представляет собой пайплайн из 3 частей:
генерация при помощи ruDALL-E;
ранжирование результатов с помощью ruCLIP;
увеличение качества и разрешения картинок с помощью SuperResolution.
При этом на этапе генерации и ранжирования можно менять различные параметры, влияющие на количество генерируемых примеров, их отбор и абстрактность.
Заключение: Главной характеристикой нейронных сетей является то, что они обучаются и это обучение основано на примерах. Процесс обучения искусственным нейронным сетям происходит с использованием специальных алгоритмов, и за последние пару десятилетий он стал намного быстрее и проще. Несмотря на небольшие недостатки, нейронные сети являются мощным инструментом и способны успешно решать самые разные задачи. Именно поэтому технология искусственных нейронных сетей широко востребована в различных сферах жизни общества и в науке. Кроме того, популярность нейронных сетей, несомненно, растет, а сферы их применения расширяются. Таким образом, нейронные сети обещают создание всех новых программ и устройств, способных решать, что пока может делать только человек.
Список использованных источников
ruDALE-E - [Электронный ресурс]. Режим доступа: https://rudalle.ru/kandinsky (Дата обращения: 02.12.2022).
Нейронные сети - [Электронный ресурс]. Режим доступа: https://sbercloud.ru/ru/services/neural-networks (Дата обращения: 02.12.2022).
ruDALL-E: генерируем изображения по текстовому описанию или Самый большой вычислительный проект в России - [Электронный ресурс]. Режим доступа: https://habr.com/ru/company/sberbank/blog/586926/ (Дата обращения: 02.12.2022).
Нейросеть - [Электронный ресурс]. Режим доступа: https://ru.wikipedia.org/wiki/Нейронная_сеть (Дата обращения: 02.12.2022).
Сверточные нейросети - [Электронный ресурс]. Режим доступа: https://postnauka.ru/video/66872 (Дата обращения: 02.12.2022).
Рекуррентные нейронные сети: типы, обучение, примеры и применение - [Электронный ресурс]. Режим доступа: https://neurohive.io/ru/osnovy-data-science/rekurrentnye-nejronnye-seti/ (Дата обращения: 02.12.2022).
Нейросети для генерации изображений по текстовому запросу -[Электронный ресурс]. Режим доступа: https://sbercloud.ru/ru/warp/news/ru-dale-kandinsky-xxl-novosti (Дата обращения: 02.12.2022).
Нейросеть «Сбера» ruDALL-E генерирует изображения по текстовым описаниям - [Электронный ресурс]. Режим доступа: https://3dnews.ru/1052812/neyroset-sbera-rudalle-generiruet-izobrageniya-po-tekstovim-opisaniyam (Дата обращения: 02.12.2022).
Нейронные сети: общие технологические характеристики - [Электронный ресурс]. Режим доступа: https://science-engineering.ru/ru/article/view?id=1236 (Дата обращения: 02.12.2022).