Содержание статьи
Что такое нейросеть и как она работает. Объясняем простыми словами
Data Scientist или Python-разработчик? А может, третий неочевидный вариант? Узнайте, какая IT-специальность подходит вам идеально на бесплатной онлайн-профориентации «IT-рентген».
Больше нейронов. В нашей тренировочной нейросети только один нейрон. Но если нейронов будет больше — каждый из них сможет по-своему реагировать на входные данные, соответственно, на следующие нейроны будут приходить данные с разных синапсов. Значит — больше вариативность, «подумать» и передать сигнал дальше может не один нейрон, а несколько. Можно менять и формулу передачи, и связи между нейронами — так получаются разные виды нейронных сетей.
Нейросеть (англ. neural network) — математическая модель нейронной сети, которая имитирует работу человеческого мозга. Нейросети состоят из множества взаимосвязанных искусственных нейронов, способных обрабатывать большие массивы данных и находить в них сложные закономерности. Возможности нейросетей позволяют ИИ-помощникам понимать речь, генерировать связный текст, распознавать и создавать изображения.
Человеческий мозг состоит из ста миллиардов клеток, которые называются нейронами. Они соединены между собой синапсами. Если через синапсы к нейрону придет достаточное количество нервных импульсов, этот нейрон сработает и передаст нервный импульс дальше. Этот процесс лежит в основе нашего мышления. Мы можем смоделировать это явление, создав нейронную сеть с помощью компьютера. Нам не нужно воссоздавать все сложные биологические процессы, которые происходят в человеческом мозге на молекулярном уровне, нам достаточно знать, что происходит на более высоких уровнях. Для этого мы используем математический инструмент — матрицы, которые представляют собой таблицы чисел. Чтобы сделать все как можно проще, мы смоделируем только один нейрон, к которому поступает входная информация из трех источников и есть только один выход. 3 входных и 1 выходной сигнал Наша задача — научить нейронную сеть решать задачу, которая изображена в ниже. Первые четыре примера будут нашим тренировочным набором. Получилось ли у вас увидеть закономерность? Что должно быть на месте вопросительного знака — 0 или 1?
Так часто происходит в реальных задачах, например, при распознавании предметов. Не у всех из них есть жесткие критерии: скажем, гипертрофированного мультяшного персонажа мы по-прежнему различаем как человека, хотя у него совсем другие пропорции. Нейронную сеть сложно научить похожему — но современные системы могут справиться и с этим.
Однако первые успехи нейросетей привели к завышенным ожиданиям, которые они не смогли оправдать. В конце 1960-х правительство США, где проводились основные исследования нейросетей, резко урезало финансирование подобных разработок, посчитав их не оправдывающими себя.
Еще есть, например, метод обратного распространения ошибки — градиентный алгоритм для многослойных нейросетей. Сигналы ошибки, рассчитанные с помощью градиента, распространяются от выхода нейронной сети к входу, то есть идут не в прямом, а в обратном направлении.
Давайте поймем почему формула имеет такой вид. Сначала нам нужно учесть то, что мы хотим скорректировать вес пропорционально размеру ошибки. Далее ошибка умножается на значение, поданное на вход нейрона, что, в нашем случае, 0 или 1. Если на вход был подан 0, то вес не корректируется. И в конце выражение умножается на градиент сигмоиды. Разберемся в последнем шаге по порядку:
Как и люди, нейросети могут правильно решать новые задачи, опираясь на предшествующий опыт. Эти умные программы анализируют новую информацию, обобщают её и применяют выученные шаблоны к новым задачам. Если дать нейросети примеры «правильной» работы для решения задачи, то она может совершенствовать свою работу дальше.
Как можно улучшить нейронную сеть
Больше мощностей. Нейронные сети работают с матрицами, так что если нейронов много, вычисления получаются очень ресурсоемкие. Известные нейросети вроде Midjourney или ChatGPT — это сложные и «тяжелые» системы, для их работы нужны сервера с мощным «железом». Так что написать собственный DALL-E на домашнем компьютере не получится. Но есть сервисы для аренды мощностей: ими как раз пользуются инженеры машинного обучения, чтобы создавать, обучать и тестировать модели.
Лучше обучение. Искусственные нейронные сети обучаются примерно по тому же принципу, что живые существа. Когда человек часто повторяет одни и те же действия, он учится: ездить на велосипеде, рисовать или набирать текст. Это происходит, потому что веса между нейронами в мозгу меняются: нервные клетки наращивают новые связи, по-новому начинают воспринимать сигналы и правильнее их передают. Нейронная сеть тоже изменяет веса при обучении — чем оно объемнее, тем сильнее она «запомнит» какую-то закономерность.
Например, на вход поступает картинка. Чтобы нейросеть могла понять, что на ней изображено, она должна выделить разные элементы из картинки, распознать их и подумать, что означает сочетание этих элементов. Примерно так работает зрительная кора в головном мозге. Это несколько задач, их не смогут решить одинаковые нейроны. Поэтому нужно несколько слоев, где каждый делает что-то свое. Для распознавания часто используют так называемые сверточные нейросети. Они состоят из комбинации сверточных и субдискретизирующих слоев, каждый из которых решает свою задачу.
В 1943 году американские учёные — нейрофизиолог Уоррен Маккалок и нейролингвист Уолтер Питтс написали статью о том, как могут работать нейроны. Они первыми предложили термин «искусственный нейрон» и смоделировали рабочую искусственную нейронную сеть на основе электрических схем.
По-настоящему нейросети рванули вперёд с 2000-х годов, когда появилась подходящая для них техническая база. Это позволило к 2006 году разработать концепцию глубокого обучения нейросетей — вида машинного обучения на огромных массивах данных, после которого многоуровневые нейросети могли решать задачи без участия человека. Теперь нейронные сети куда эффективнее решают прикладные задачи.
Другие методы и формулы. Чтобы нейроны обучались, нужно задать формулу корректировки весов — мы говорили про это выше. Если нейронов много, то формулу нужно как-то распространить на все из них. Для этого используется метод градиентного спуска: рассчитывается градиент по весам, а потом от него делается шаг в меньшую сторону. Звучит сложно, но на самом деле для этого есть специальные формулы и функции.
Самый популярный алгоритм обучения нейросети — метод обратного распространения ошибки. В начале обучения разработчик подаёт на вход тренировочные примеры и правильные ответы. Нейросеть классифицирует данные, затем сравнивает свой результат с ожидаемым и вычисляет, где была ошибка.
Настроения в обществе тоже были далеки от оптимизма. Людей пугала мысль, какую власть могут получить «думающие машины», способные программировать сами себя. Писатели-фантасты (Айзек Азимов, Гарри Гаррисон) в своих произведениях размышляли, какое влияние нейросети окажут на общество, и не всегда их прогнозы были радужны. Но программисты продолжали мечтать о компьютере, который мог бы сам исправлять ошибки разработчиков.