Анализ данных • 21 декабря 2023 • 5 мин чтения

Глубокие познания: как учатся сложные нейросети

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

Что такое глубокое обучение

Искусственные нейронные сети могут решать сложные задачи вроде распознавания изображений или речи. Для этого им дают алгоритм и данные для обучения, постоянно увеличивая их объёмы. Чем сложнее архитектура нейросети и чем больше данных она обработает, тем эффективнее окажется обучение. Такой процесс называется deep learning, или «глубокое обучение».

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

Deep learning — это подраздел машинного обучения, но принцип работы у него другой. Для машинного обучения признаки данных, на которые алгоритм должен ориентироваться, задаёт человек. Нейросеть deep learning находит их без подсказок.

Как устроены нейронные сети

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

Представим, что мы доверили искусственному нейрону принять за нас решение: выходить из дома или нет. Выбор зависит от нескольких факторов: погоды, настроения и свободного времени. Можно рассуждать категорично: «Если хорошая погода (1), есть час свободного времени (1) и настроение (1), выхожу из дома (1). Если нет (0) — никуда не пойду (0)».

Но три эти фактора не каждый день совпадают, а для кого-то хорошая погода важнее настроения. Важность факта для искусственного нейрона — это его вес. Если умножить фактор на вес, получится его влияние. Теперь мы можем сказать так: «Если влияние погоды, настроения и времени в сумме больше значения „звёзды сошлись для прогулки“, я выйду из дома».

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

Операция, в которой нейрон перемножает факторы с весами и сравнивает со значением (порогом), называется функцией активации. Она помогает нейрону принять решение на основе полученной суммы. У человеческого организма тоже есть свои функции активации. Например, когда мы учимся подтягиваться, сигналы от мышц рук и спины для нас важнее, чем от других частей тела. Если чувствуем нагрузку там, где нужно, не меняем технику. И наоборот — боль в плечах заставляет остановиться и разобраться, в чём ошибка.

Это самая простая нейросеть — в ней всего один нейрон. Если результат больше определённого порога, искусственный нейрон решает идти на прогулку (1), если нет — не идти (0)

Хорошая погода, настроение и свободное время — понятия относительные. Для кого-то отсутствие ливня — уже повод выйти на улицу, а кому-то на прогулку нужно минимум два часа. Вместо категоричных значений 1 и 0 будем использовать проценты, чтобы более гибко принимать решения. Например, «ветра и дождя нет — погода достаточно хорошая» (70%), «настроение не слишком радостное, но и не мрачное» (50%), «есть свободный час» (80%).

Ответ нейрона будет не 0 или 1, а в диапазоне между этими двумя этими значениями. Например: нейтральное настроение, на улице приемлемо, есть достаточно свободного времени, поэтому я скорее выйду, чем нет.

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

● Для прогулки в парке нужно время и хорошая погода, а настроение может улучшиться в процессе.
● Для похода в магазин и на почту главное — время, а погода и настроение могут быть не очень.
● Если хочется поехать в гости, главное — настроение и время, а в ливень можно и такси заказать.

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

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

Теперь представим, что у нейросети сотни слоёв и тысячи нейронов. Нужно, чтобы она принимала другие решения и обрабатывала новые входные данные. Чтобы вручную настроить такую нейросеть, потребуются тысячи часов. Хорошая новость: процесс можно автоматизировать. Такой задачей занимается специалист по Data Science. Он разрабатывает алгоритм глубокого машинного обучения, который нейросеть будет использовать для работы с входными данными. Например, научит её рекомендовать товары на основе предпочтений и заказов покупателя.

Чтобы заниматься Data Science, нужно прокачать математику до уровня «градиентного спуска» и понимать, как работает машинное обучение. Опыт можно получить в открытых конкурсах и хакатонах или пройдя обучение с практикой. На курсе «Специалист по Data Science» студенты сначала практикуются в группе с преподавателями и наставниками, а затем участвуют в проектах для реальных компаний. Например, для «Буше», «Самоката» или Яндекс Маркета.

Как обучают нейросети в Deep Learning

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

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

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

Машинное и глубокое обучение — родственники, но работают с данными они по-разному

Для той же задачи модель глубокого обучения будет использовать другой подход. Ей не нужны структурированные или помеченные данные. Нейросеть прогоняет изображения через несколько слоёв. На каждом из них иерархически собирает признаки, которые могут относиться к яблокам и апельсинам. Начинает с простых, например пятна и чёрточки, и с каждым слоем собирает всё более сложные формы.

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

За каждой умной и независимой нейросетью глубокого обучения стоит специалист по Data Science. Вот как он действует:

1. Собирает данные. Может использовать открытые наборы или датасеты. Например, MNIST для распознавания рукописных цифр, CIFAR-10 для классификации изображений или датасеты на платформах Kaggle и UCI Machine Learning Repository. Если нужны специфические данные компании, их поможет собрать другой специалист — ML-инженер.

2. Определяет структуру нейросети — количество слоёв и их характеристики в зависимости от задачи. Например, свёрточные нейронные сети подойдут для распознавания изображений. Их скрытые слои работают, как ищейки: находят примечательные черты объекта. Рекуррентные сети используют для обработки текста. Их слои передают друг другу по цепочке информацию и таким образом поддерживают «память» модели.

3. Настраивает алгоритм. Выбирает функции активации, которые помогают нейронке учить сложные зависимости в данных. Выбирает функцию потерь — их модель будет минимизировать в процессе обучения. Выбирает оптимизатор для настройки параметров нейросети. Определяет параметры обучения: скорость обучения (learning rate) и количество обучающих примеров (batch size). Data Scientist подбирает настройки на основе опыта, знаний о задаче и эмпирических исследований. Это творческий процесс, и специалист часто экспериментирует, чтобы найти оптимальные параметры для конкретной задачи.

4. Тестирует и перенастраивает. Проверяет, насколько нейросеть успешно справляется с задачей. Если есть ошибки, то Data Scientist может внести корректировки, изменяя параметры нейросети или добавляя больше данных.
После успешного обучения и настройки нейросеть готова к реальным проектам. Например, к распознаванию предметов с помощью камеры телефона.

Инструменты Deep Learning

Для обучения нейронных сетей нужны специальные инструменты. Разберём некоторые из них.

Инструмент

Для чего используют

Python
Основной язык программирования, чтобы передавать модели данные и параметры для обучения.
Веб-приложение, в котором настраивают нейросеть.
TensorBoard и W&B
Инструменты для визуализации метрик обучения, структуры нейросети. Они помогают лучше понимать, как работает модель.
Optuna, Hyperopt, Ray Tune
Фреймворки, которые автоматизируют подбор гиперпараметров нейросети. Это настройки, на которые нейросеть опирается при обучении. Например, количество скрытых слоёв, скорость обучения.

Google Colab, AWS (Amazon Web Services), Microsoft Azure Machine Learning

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

Так может выглядеть учебный класс для нейросети deep learning. Нужно установить Python и Jupyter Notebook, чтобы писать запросы, и библиотеку TensorFlow, чтобы создать и обучить нейросеть

Какие есть алгоритмы глубокого обучения

Для разных задач используют свои модели глубокого обучения. Разберём основные:

Свёрточные нейронные сети (CNN) используют для обработки изображений. Такие сети содержат слои, которые выделяют ключевые признаки из входных данных с помощью математической операции — свёртки. Отсюда и такое название. Сеть учится различать объекты и паттерны в изображениях, что полезно для классификации, обнаружения объектов и сегментации изображений. Например, в изображении кошки свёрточные слои могут выделить морду, уши и полосатый окрас. Подробнее о работе CNN рассказали в статье.

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

Генеративно-состязательные сети (GAN) состоят из двух частей: генератора и дискриминатора. Генератор создаёт новые данные, например изображения или текст, а дискриминатор сравнивает эти данные с реальными. Обучение такой нейросети — это постоянная борьба художника и критика. Генератор стремится создавать всё более реалистичные данные, а дискриминатор — отличать их от настоящих. GAN используют для генерации реалистичных изображений, улучшения качества данных, создания текста и других задач, где нужен контент, близкий к реальности.

Иногда для задачи недостаточно одного алгоритма. Например, чтобы разработать инструмент вроде Midjourney, понадобится GAN, RNN, а также специальные декодеры, которые преобразуют изображение в вектор и обратно.

Где применяется Deep Learning

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

Маркетинг. Благодаря глубокому обучению компьютеры понимают и обрабатывают человеческий язык. Например, ChatGPT и Алиса могут генерировать текст, отвечать на вопросы и даже создавать художественные произведения. Чат-боты, которые общаются почти как человек, можно использовать вместо операторов поддержки в кол-центрах, на сайтах и в приложениях.

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

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

YandexGPT коротко пересказывает статью о глубоком обучении

Безопасность. Глубокое обучение улучшило способность компьютеров видеть и понимать изображения. Deep learning используют системы безопасности с распознаванием лиц в аэропортах или на мероприятиях.

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

Медиа и творчество. Пока к текстам от нейросетей ещё много претензий, но иллюстрации в Midjourney порой не отличить от работ художников. Нейросети используют, чтобы создавать баннеры и плакаты, обложки для журналов, игровых персонажей, видеоролики и комиксы.

Развитие модели Midjourney за 1,5 года

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

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

Совет эксперта

Ян Анисимов

На старте рекомендую не тратить время на создание нейросети с нуля. Лучше адаптировать уже известные SOTA-модели к новой задаче. Термин SOTA (State-of-the-Art) относится к моделям глубокого обучения, которые уже эффективно работают. Чтобы дообучить такую нейросеть, понадобится меньше сил и времени, чем для самодельной модели. Готовую SOTA-модель или набор данных можно найти на платформе Hugging Face. Например, там есть модели для извлечения признаков и классификации изображений, обработки естественного языка.
Статью подготовили:
Ян Анисимов
Образовательная программа Data Science
Руководитель
Яндекс Практикум

Редактор
Полина Овчинникова
Яндекс Практикум

Иллюстратор

Дайджест блога: ежемесячная подборка лучших статей от редакции

Поделиться

Успейте начать учебу в Практикуме до конца ноября со скидкой 20%

Fri Nov 15 2024 12:20:42 GMT+0300 (Moscow Standard Time)