Содержание статьи
Что такое нейросеть и как она работает. Объясняем простыми словами
Как обучают нейросети
Optimizer — специальный алгоритм, позволяющий нашей сети находить необходимые параметры, которые минимизируют итоговую ошибку сети. Существует множество алгоритмов оптимизации, например, самые часто встречаемые в литературе это Adam и SGD, в данном курсе мы будем пользоваться первым, но никто не запрещает вам использовать любой другой оптимизатор.
В 1943 году американские учёные — нейрофизиолог Уоррен Маккалок и нейролингвист Уолтер Питтс написали статью о том, как могут работать нейроны. Они первыми предложили термин «искусственный нейрон» и смоделировали рабочую искусственную нейронную сеть на основе электрических схем.
Как и люди, нейросети могут правильно решать новые задачи, опираясь на предшествующий опыт. Эти умные программы анализируют новую информацию, обобщают её и применяют выученные шаблоны к новым задачам. Если дать нейросети примеры «правильной» работы для решения задачи, то она может совершенствовать свою работу дальше.
Настроения в обществе тоже были далеки от оптимизма. Людей пугала мысль, какую власть могут получить «думающие машины», способные программировать сами себя. Писатели-фантасты (Айзек Азимов, Гарри Гаррисон) в своих произведениях размышляли, какое влияние нейросети окажут на общество, и не всегда их прогнозы были радужны. Но программисты продолжали мечтать о компьютере, который мог бы сам исправлять ошибки разработчиков.
По-настоящему нейросети рванули вперёд с 2000-х годов, когда появилась подходящая для них техническая база. Это позволило к 2006 году разработать концепцию глубокого обучения нейросетей — вида машинного обучения на огромных массивах данных, после которого многоуровневые нейросети могли решать задачи без участия человека. Теперь нейронные сети куда эффективнее решают прикладные задачи.
Если вы сейчас готовитесь к ЕГЭ (а если нет, то пора бы уже начать 😏), вы могли заметить задание в профильной части математики — задача с параметром. Там вам давалась некоторая изменяемая функция, для которой мы должны подобрать параметры так, чтобы при всех заданых x выражение было бы истинным.
Нейросеть (англ. neural network) — математическая модель нейронной сети, которая имитирует работу человеческого мозга. Нейросети состоят из множества взаимосвязанных искусственных нейронов, способных обрабатывать большие массивы данных и находить в них сложные закономерности. Возможности нейросетей позволяют ИИ-помощникам понимать речь, генерировать связный текст, распознавать и создавать изображения.
У нашего нейрона есть некоторые входы, по которым поступают данные x , где каждый икс представляет из себя число, отвечающее за конкретный признак. Так, например, если мы хотим предсказывать, пойдет ли сегодня дождь, то признаком x1 может быть текущая температура, x2 — влажность, x3 — облачность и так далее.
ИИ и нейросеть: в чём разница
До сих пор мы не обсуждали, каким образом происходит обучение нейронных сетей. Если вы все еще не забыли, у каждого нейрона имеется набор весов w — это тренеруемые параметры сети. По сути тренировка сети заключается в том, что нам необходимо найти такие параметры для всех нейронов, при которых вся сеть будет работать наиболее качественно.
Самый популярный алгоритм обучения нейросети — метод обратного распространения ошибки. В начале обучения разработчик подаёт на вход тренировочные примеры и правильные ответы. Нейросеть классифицирует данные, затем сравнивает свой результат с ожидаемым и вычисляет, где была ошибка.
Функция ошибки — это некоторое правило, которое мы задаем нейронной сети, так, чтобы она искала параметры, необходимые именно для нашей задачи. В ходе тренировки нейронная сеть пытается минимизировать функцию потерь (она же loss), т.е. получить наименьшую ошибку на тренировочной выборке.
В 1958 году американский психолог Корнеллского университета Фрэнк Розенблатт повторил математическую модель нейросети с помощью компьютерного кода. Его нейрокомпьютер «Марк-1» был построен на идее персептрона — математической модели биологического нейрона. Нейросеть имела один слой (данные от входа сразу шли на вывод), но её уже можно было обучить. Она могла сама относить объекты по категориям. Например, распознавать печатные буквы на карточках.
Пришла пора объединять нейрончики в сеть.
Нейронная сеть состоит из множество нейронов, которые поделены на слои. Нейроны в одном слое никак не связаны между собой, но при этом каждый нейрон следующего слоя соединен со всеми нейронами предыдущего слоя. Таким образом, выходная активация нейронов предыдущего слоя является входными данными для нейронов следующего слоя.
Однако первые успехи нейросетей привели к завышенным ожиданиям, которые они не смогли оправдать. В конце 1960-х правительство США, где проводились основные исследования нейросетей, резко урезало финансирование подобных разработок, посчитав их не оправдывающими себя.
Таким образом мы прогоняем через сеть все батчи, что у нас есть, каждый раз чуть-чуть изменяя веса. Однако может так оказаться, что одного прохода по обучающей выборке не хватает и нужно пройтись еще несколько раз (5, 20, 30 или 100), каждый такой проход называется эпохой. Количество эпох задается заранее исследователем. По своей сути, эпоха — это количество раз, которое мы будем прогонять всю выборку через нашу сеть.