Блог

Что такое нейросети и зачем они нужны?

12 сентября 2023
17 мин. 6660
image
image
Юлия Гаврилова редактор
Что такое нейросети и зачем они нужны?
Во все времена люди хотели меньше работать и больше зарабатывать. Когда появились технологии, человечество увидело такую возможность в создании «умных» компьютеров, которые смогут обучаться и принимать решения без вмешательства человека. А чтобы учиться, компьютерам нужны искусственные «мозги» ― нейронные сети.

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

Простыми словами: что такое нейронная сеть?

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

Сегодня используются практически везде:
нейронные сети в соцсетях анализируют, что вам нравится смотреть, и показывают больше такого контента;
алгоритмы в камере смартфона делают так, чтобы вы получались красивыми, когда вы делаете селфи;
генеративные сети как ChatGPT и MidJourney создают для вас текст и картинки, чтобы вы использовали их в работе.
А еще эту технологию используют в медицине, чтобы диагностировать рак и другие заболевания и на производствах ― чтобы оптимизировать процессы. А также в регулировке движения на дорогах, чтобы ловить нарушителей скорости по камерам, и много где еще.

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

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

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

Как работают искусственные нейронные сети?

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

Каждый нейрон имеет свой вес, который определяет, насколько важен этот нейрон для решения задачи. В начале вес нейронов определяется рандомно. В процессе обучения нейронной сети, веса нейронов изменяются, чтобы улучшить ее результаты.
Нейроны организованы в слои:
Входной (input). Данные поступают во входной слой, где они обрабатываются и анализируются.
Скрытый (hidden). Из входного данные передаются по синапсам в следующий слой нейронов ― скрытый. Скрытых слоев может быть от нескольких до сотен тысяч. Магия происходит именно в скрытых слоях.
Выходной (output). Множестве нейронов обмениваются информацией и на выходе приходят к какому-то результату. Этот результат подается через выходной слой.
Например, вы просите нейронную сеть сгенерировать картинку по запросу «носорог с космическом костюме в стиле поп-арт». Мы для наглядности используем нейронную сеть «Шедеврум» от Яндекс. Скачать приложение можно в магазине для Android или iOS.

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

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

В нашем случае получилось вот так:
Классно?

Как учатся нейросети?

Чтобы нейронные сети давали хорошие результаты, важно их правильно обучить.
Сначала нужно собрать данные для обучения: изображения, текст, видео. Например, «Щедеврум» обучили на 240 миллионах примеров картинок с текстовыми описаниями.

Затем данные нужно разметить, то есть добавить метки, которые помогают нейросети ориентироваться в данных. Например, в популярном наборе данных для тренировки моделей компьютерного зрения CIFAR-10 рядом с каждым изображением есть метка, что на нем:
Размечать данные для современных моделей необязательно. Но наличие обучающей выборки помогает делать прогнозы нейросети более точными. Обучающие выборки небольшие в сравнении со всеми данными, которые нужны нейросети ― размечать миллионы примеров слишком долго и дорого.

Оставшиеся данные ― это тренировочные данные, на них система обучается на реальных задачах. Это как сначала посмотреть, как учитель решает пример, а потом решить похожие примеры самостоятельно.

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

Существует несколько видов обучения нейронных сетей:

Обучение с учителем

Учитель ― это программист, который помогает нейросети учиться. Разные типы обучения ― разный уровень вовлечения человека в процесс.

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

Обучение с учителем часто применяется для классификации данных, то есть распределения объектов по классам: нейросеть можно обучить различать Ford и BMW и потом узнавать их на фотографиях.

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

Обучение без учителя

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

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

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

Обучение с подкреплением

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

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

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

Типы нейронных сетей и их особенности

Существует множество типов нейронных сетей. В этой статье поговорим только о самых известных. А на остальные можно полюбоваться в зоопарке нейронных сетей.

Нейронные сети прямого распространения (feedforward)

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

Рекуррентные нейронные сети

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

Сверточные нейронные сети

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

Генеративно-состязательные сети

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

Глубокие нейронные сети

Глубокие нейронные сети могут быть любого из предыдущих типов. Их особенность ―- множество слоев и способность обрабатывать большие объемы данных. Обучать такие нейронные сети сложно, поскольку они требуют огромные объемы данных, но результат того стоит. MidJourney, ChatGPT, DALLE и другие популярные генеративные нейронки ― примеры глубоких нейронных сетей.

Автоэнкодеры

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

Где применяют искусственные нейронные сети?

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

Компьютерное зрение

Нейронные сети используют для распознавания образов и объектов на изображениях, а также для анализа видео-материалов.

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

Распознавание речи и обработка текста

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

Например, Speek. io и похожие сервисы помогают перевести и озвучить ролик на другом языке всего за пару кликов.

Прогнозирование и аналитика

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

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

Оптимизация процессов

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

Также нейронные сети оптимизировать затраты и снизить потребление ресурсов на производствах.

Проблемы и вызовы в применении нейронных сетей

Нейросети ― отличные помощники, но их создание также связано с некоторыми рисками.

Предвзятость и искажения в данных

Одна из главных проблем в применении нейронных сетей ― мы часто не можем объяснить, как они работают и почему дают те или иные результаты. Например, программа COMPAS на основе нейронных сетей должны была помогать судьям предсказывать, насколько тот или иной преступник склонен к рецидивизму.

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

Высокая стоимость

Еще одна проблема ― для обучения нейронных сетей нужно очень много данных. Чем больше данных используется для обучения, тем точнее результат работы сети. Однако, сбор и хранение больших объемов данных ― сложный и затратный процесс. Например, по разным оценкам, одна итерация обучения GPT-3 стоит почти 2 миллиона долларов.

Нарушение конфиденциальности

Проблемы с защитой данных и конфиденциальности также часто возникают с нейронками. Поскольку эти сети обрабатывают большие объемы конфиденциальной информации, они становятся целью для хакеров и злоумышленников.

Фейки

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

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

Вытеснение некоторых профессий

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

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

Расскажите
о вашем проекте