Домой / Группы / Скоро каждый сможет создать собственную нейросеть. Как создать нейронную сеть без навыков программирования

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

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

И тут возникает собственно самое важное, что вам для этого потребуется: ДАННЫЕ. Много примеров задач, которые будут подаваться на вход нейросети, и правильные ответы на эти задачи. Нейросеть будет на этом учиться самостоятельно давать эти правильные ответы.

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

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

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

Также нужно представлять себе, как грамотно организовать процесс обучения, чтобы сеть не оказалась переученной. Сложность сети нужно выбирать исходя из размерности данных и их количества. Часть данных нужно отложить для теста и при обучении не использовать, чтобы оценить реальное качество работы. Иногда различным объектам из обучающего множества нужно приписать различный вес. Иногда эти веса полезно варьировать в процессе обучения. Иногда полезно начинать обучение на части данных, а по мере обучения добавлять оставшиеся данные. В общем, это можно сравнить с кулинарией: у каждой хозяйки свои приемы готовки даже одинаковых блюд.

Соответственно, нейронная сеть берет на вход два числа и должна на выходе дать другое число - ответ. Теперь о самих нейронных сетях.

Что такое нейронная сеть?


Нейронная сеть - это последовательность нейронов, соединенных между собой синапсами. Структура нейронной сети пришла в мир программирования прямиком из биологии. Благодаря такой структуре, машина обретает способность анализировать и даже запоминать различную информацию. Нейронные сети также способны не только анализировать входящую информацию, но и воспроизводить ее из своей памяти. Заинтересовавшимся обязательно к просмотру 2 видео из TED Talks: Видео 1 , Видео 2). Другими словами, нейросеть это машинная интерпретация мозга человека, в котором находятся миллионы нейронов передающих информацию в виде электрических импульсов.

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

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

Для чего нужны нейронные сети?

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

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

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

Распознавание - в настоящее время, самое широкое применение нейронных сетей. Используется в Google, когда вы ищете фото или в камерах телефонов, когда оно определяет положение вашего лица и выделяет его и многое другое.

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

Что такое нейрон?


Нейрон - это вычислительная единица, которая получает информацию, производит над ней простые вычисления и передает ее дальше. Они делятся на три основных типа: входной (синий), скрытый (красный) и выходной (зеленый). Также есть нейрон смещения и контекстный нейрон о которых мы поговорим в следующей статье. В том случае, когда нейросеть состоит из большого количества нейронов, вводят термин слоя. Соответственно, есть входной слой, который получает информацию, n скрытых слоев (обычно их не больше 3), которые ее обрабатывают и выходной слой, который выводит результат. У каждого из нейронов есть 2 основных параметра: входные данные (input data) и выходные данные (output data). В случае входного нейрона: input=output. В остальных, в поле input попадает суммарная информация всех нейронов с предыдущего слоя, после чего, она нормализуется, с помощью функции активации (пока что просто представим ее f(x)) и попадает в поле output.


Важно помнить , что нейроны оперируют числами в диапазоне или [-1,1]. А как же, вы спросите, тогда обрабатывать числа, которые выходят из данного диапазона? На данном этапе, самый простой ответ - это разделить 1 на это число. Этот процесс называется нормализацией, и он очень часто используется в нейронных сетях. Подробнее об этом чуть позже.

Что такое синапс?


Синапс это связь между двумя нейронами. У синапсов есть 1 параметр - вес. Благодаря ему, входная информация изменяется, когда передается от одного нейрона к другому. Допустим, есть 3 нейрона, которые передают информацию следующему. Тогда у нас есть 3 веса, соответствующие каждому из этих нейронов. У того нейрона, у которого вес будет больше, та информация и будет доминирующей в следующем нейроне (пример - смешение цветов). На самом деле, совокупность весов нейронной сети или матрица весов - это своеобразный мозг всей системы. Именно благодаря этим весам, входная информация обрабатывается и превращается в результат.

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

Как работает нейронная сеть?


В данном примере изображена часть нейронной сети, где буквами I обозначены входные нейроны, буквой H - скрытый нейрон, а буквой w - веса. Из формулы видно, что входная информация - это сумма всех входных данных, умноженных на соответствующие им веса. Тогда дадим на вход 1 и 0. Пусть w1=0.4 и w2 = 0.7 Входные данные нейрона Н1 будут следующими: 1*0.4+0*0.7=0.4. Теперь когда у нас есть входные данные, мы можем получить выходные данные, подставив входное значение в функцию активации (подробнее о ней далее). Теперь, когда у нас есть выходные данные, мы передаем их дальше. И так, мы повторяем для всех слоев, пока не дойдем до выходного нейрона. Запустив такую сеть в первый раз мы увидим, что ответ далек от правильно, потому что сеть не натренирована. Чтобы улучшить результаты мы будем ее тренировать. Но прежде чем узнать как это делать, давайте введем несколько терминов и свойств нейронной сети.

Функция активации

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

Линейная функция


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

Сигмоид


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

Гиперболический тангенс


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

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

Тренировочный сет - это последовательность данных, которыми оперирует нейронная сеть. В нашем случае исключающего или (xor) у нас всего 4 разных исхода то есть у нас будет 4 тренировочных сета: 0xor0=0, 0xor1=1, 1xor0=1,1xor1=0.

Итерация

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

Эпоха

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


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

Ошибка

Ошибка - это процентная величина, отражающая расхождение между ожидаемым и полученным ответами. Ошибка формируется каждую эпоху и должна идти на спад. Если этого не происходит, значит, вы что-то делаете не так. Ошибку можно вычислить разными путями, но мы рассмотрим лишь три основных способа: Mean Squared Error (далее MSE), Root MSE и Arctan. Здесь нет какого-либо ограничения на использование, как в функции активации, и вы вольны выбрать любой метод, который будет приносить вам наилучший результат. Стоит лишь учитывать, что каждый метод считает ошибки по разному. У Arctan, ошибка, почти всегда, будет больше, так как он работает по принципу: чем больше разница, тем больше ошибка. У Root MSE будет наименьшая ошибка, поэтому, чаще всего, используют MSE, которая сохраняет баланс в вычислении ошибки.

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

Если вы опытный футболист, который читает защитные схемы так же легко, как вывески на улице, или кинозвезда, чье имя само по себе может сделать кассу фильму, или биржевой маклер, знающий свое дело лучше Уоррена Баффетта, то наши поздравления: вас будут ценить так же, как специалиста по обработке данных или инженера по машинному обучению с докторской степенью Стэнфорда, Массачусетского технологического или Университета Карнеги-Меллон. Каждая компания Кремниевой долины – и все больше компаний в других регионах – стремится заполучить таких специалистов, участвуя в некоем подобии игры на захват флага, только в области кадровой политики. Компании все больше понимают, что их конкурентоспособность зависит от использования машинного обучения и , и количество вакансий для специалистов в этих областях значительно превышает то, что нужно , и другим супердержавам.

Но что если бы вы смогли получить преимущества использования ИИ без необходимости нанимать этих редких и дорогостоящих специалистов? Что если этот порог входа можно понизить с помощью умного ПО? Можно ли использовать глубинное обучение с менее разнообразным набором кадров?

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

На Конференции разработчиков искусственного интеллекта О’Райли в Нью-Йорке генеральный директор Bonsai Марк Хаммонд провел презентацию своей компании. (Также он объявил о раунде инвестиций на сумму в $6 млн – не такие уж большие деньги, учитывая тот факт, что в этом году размер венчурных инвестиций в сферу ИИ уже 1,5 млрд.) Презентация включала повторение одного из самых известных достижений элитных разработчиков глубинного обучения: прохождение алгоритмом DeepMind старых игр для компьютеров Atari в реальном времени. В частности, игра под названием Breakout («Теннис»), в которой платформа отбивает квадратный «мяч», разбивающий мерцающие блоки. (Игра, выпущенная в 1976 году, была прорывом для своего времени – над ней работал сам )

37 строчек кода – вся структура нейросети, которая обучается через классическую игру Atari. Источник: Bonsai

Вариант, предложенный DeepMind, был создан лучшими в мире специалистами по ИИ, которые обучали нейросеть основам игр от Atari, и результат их работы был достоин научных публикаций мирового класса. Версия от Bonsai является упрощением. Все начинается с системы развития, которая загружена в облако. Всего один программист, пусть даже тот, кто вообще не обучался основам ИИ, может в общих чертах описать игру, а система сама выберет подходящий алгоритм обучения, чтобы задействовать нейросеть. (Бедным докторам наук из DeepMind приходилось писать эти алгоритмы самостоятельно). На этом этапе программисту нужно всего лишь за пару минут заложить основные принципы игры – например, «ловить мяч на платформу» - а затем Bonsai сама займется развитием нейросети и ее оптимизацией для получения наилучшего результата. А нейросеть на выходе уже сама будет играть в «Теннис».

Версия игры, написанная Bonsai, укладывается всего в 37 строчек кода. Но эта простота обманчива. Когда Хаммонд объясняет, что находится в основе алгоритма, он показывает рисунок с демонстрацией того, как его система строит нейросеть, способную соперничать с одним из лучших творений Google. Самому программисту даже не пришлось вникать в тонкости машинного обучения. Смотри, мам, я могу без рук докторской степени!


Так играет в «Теннис» нейросеть, обученная системой Bonsai. Источник: Bonsai

Впечатляющий трюк. «Обычно меня трудно удивить демонстрацией, - рассказывает Джордж Уильямс, научный сотрудник Курантовского института математики Нью-Йоркского университета. - Однако то, что показал мне Марк, было вполне реально и в то же время потрясающе. Он взял все достижения машинного интеллекта и создал инструменты, которые позволят разработать новое поколение систем ИИ».

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

Bonsai была рождена на пляже. Хаммонд, бывший инженер и евангелист разработки ПО, уже какое-то время раздумывал над возможностями искусственного интеллекта. После ухода из Microsoft в 2004 году он стал заниматься нейробиологией в Йеле, затем в 2010 году недолгое время проработал в Numenta – стартапе по разработке ИИ, которым владел Джефф Хокинс (сооснователь компании Palm, производителя КПК). Затем Хаммонд открыл еще одну компанию в совсем другой сфере, которую он затем продал.

Тогда, в 2012 году, Хаммонд приехал в Южную Калифорнию навестить друзей. Его маленький сын устал, и все пошли обратно к машине. Пока жена Хаммонда болтала с друзьями, а сын засыпал у него на руках, он провел мысленный эксперимент. В основе этого эксперимента лежал популярные мем из мира ИИ – концепция «мастер-алгоритма». Профессор Вашингтонского университета Педро Домингес в одноименной книге написал, что этот еще не созданный алгоритм мог бы стать панацеей для всех проблем отрасли. По идее, когда этот алгоритм все-таки изобретут, с его помощью можно будет методически внедрять системы ИИ куда угодно.

Хаммонд заключил, что нужно создать систему, которая позволит даже самому заурядному разработчику использовать инструменты ИИ

Но Хаммонд видел один изъян в этой идее. «Допустим, мы нашли этот мастер-алгоритм, – говорил он себе, пока 18-месячный сын дремал у него на руках – кто станет внедрять его в бесчисленном множестве возможных сценариев?» На данный момент использовать такие инструменты под силу только настоящим адептам машинного обучения. Возможностей использования ИИ будет слишком много для ограниченного числа этих людей. Так он пришел к заключению, что нужно создать систему, которая снизит порог входа и позволит даже самому заурядному разработчику использовать эти инструменты. Такой системе не нужны будут инженеры крайне узкой специализации для обучения нейросетей. Программисты смогут сами обучать их для получения желаемого результата.

Пока Хаммонд обдумывал свои идеи, он провел аналогии с историей программирования. Изначально операторам компьютеров приходилось кропотливо писать код, который обеспечивал работу оборудования. Затем программисты взяли на вооружение набор стандартных инструкций, который был назван языком ассемблера и ускорил процесс – но вам все еще нужно было иметь очень высокий уровень подготовки, чтобы довести дело до ума. Прорыв случился, когда инженеры создали компилятор – программу, которая преобразовывала код на более удобных, так называемых языках «высокого уровня» (от самых первых BASIC и LISP до нынешних Python и C), в код на языке ассемблера. Только после этого создание мощных приложений стало доступно даже профессионалам относительно низкого уровня. Хаммонд считает, что сейчас, благодаря инструментам вроде TensorFlow от Google, системы ИИ вышли на уровень языка ассемблера, то есть инженерам уже становится легче создавать нейросети, но это все равно остается доступным тем, кто действительно понимает принцип их работы. Хаммонд хотел создать аналог компилятора, чтобы упростить все еще больше.

Этой идеей он поделился с Кином Брауном, бывшим коллегой из Microsoft, который недавно продал свой игровой стартап китайской интернет-компании. Идея ему понравилась, так как в то время он как раз пробовал заниматься машинным обучением, используя доступные на тот момент инструменты. «Вообще я человек неглупый, - говорит Браун - я приехал в Китай и выучил их язык, работал программистом в Microsoft, но даже для меня это было слишком». Он согласился стать сооснователем Bonsai. (Название было выбрано, потому что в этом японском искусстве достигается идеальный баланс между естественным и искусственным. Еще одно преимущество появилось, когда владельцы интернет-домена разрешили молодой компании зарегистрировать свой сайт по адресу bons.ai .)

Bonsai – не единственная компания, работающая над решением проблемы нехватки квалифицированных специалистов по ИИ. Некоторые из более крупных компаний поняли необходимость обучения собственных кадров и обучения обычных программистов в мастеров по нейросетям: в Google создали целую серию внутренних программ, а Apple стала обращать внимание на навыки и личные качества программистов, которые помогли бы им быстрее освоить нужные умения. Как уже говорилось выше, Google также выпустила в широкий доступ программу TensorFlow, благодаря которой ее инженерам проще создавать нейросети. Уже доступны и другие наборы инструментов для создания ИИ, и, без сомнения, таких инструментов будет становиться только больше.

«Мы открываем новые возможности для тех, кто не является ученым или программистом»

В то же время другие стартапы тоже трудятся во имя демократизации ИИ. Компания Bottlenose решает проблему нехватки ученых, но для другой целевой аудитории: если Bonsai делает свой продукт в первую очередь для разработчиков ПО, Bottlenose планирует облегчить жизнь бизнес-аналитикам. Однако мотивы те же самые. «Мы открываем новые возможности для тех, кто не является ученым или программистом», - говорит генеральный директор компании Нова Спивак. Некоторые стартапы собираются затронуть еще больше пользователей: презентация компании Clarifai на конференции О’Райли называлась «Как сделать так, чтобы каждый человек на планете мог обучить и использовать ИИ».

Таким образом, хотя Bonsai, похоже, появилась в нужное время в нужном месте, сейчас индустрия ИИ настолько бурно развивается, что у стартапа Хаммонда могут возникнуть трудности с привлечением к себе внимания. Адам Чейер, специалист по ИИ, который участвовал в создании и сейчас занимает пост главного инженера , уже видел продукт Bonsai и остался очень впечатлен. Но он отмечает, что, хотя Bonsai делает ИИ доступным даже новичкам, людям все равно придется совершать умственные усилия, чтобы разобраться в их языке программирования и общем устройстве системы. «Когда новый продукт выпускает большая компания вроде Google, люди со всех ног бросаются его пробовать. Но если такой же продукт делает стартап, привлечь к нему людей намного сложнее. Хватит ли у них сил, чтобы задействовать достаточное количество пользователей и сделать свой инструмент популярным? Получится ли все у Bonsai или нет – сложно сказать прямо сейчас».

Компания создала систему из нескольких компонентов, среди которых Brain, облачная система для создания нейросетей, язык написания скриптов под названием Inkling и Mastermind, «интегрированная среда для разработки», которая предоставляет программистам все необходимые инструменты в одном месте. («Приложение для создания приложений», - объясняет Браун). Система Bonsai доступна для бета-тестирования.

Марк Хаммонд в главном офисе Bonsai в центре Беркли. Фото: Backchannel

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

Так что пока опытные инженеры систем ИИ «тренируют» сеть, сравнивая информацию на выходе с желаемым результатом (например, показывая сети фотографии собак и поощряя ее при выводе подходящих характеристик), Bonsai позволяет вам «научить» систему, просто разбив весь процесс на основные принципы. Если продолжить пример с собаками, то вы могли бы упомянуть такие вещи, как четыре лапы, морда и язык, свисающий изо рта. Вы даете только необходимую базу, а облачный «умный движок» Bonsai, в который входит и «мозг», доводит дело до конца.

Такой подход дает косвенный положительный эффект: ученые, обучившие традиционную нейросеть, часто понятия не имеют, как именно творится магия, потому что такие сети в основном перенастраивают себя сами, организуя все понятным только себе образом. В случае с Bonsai понять принципы мышления сети можно по тем правилам, которые заложил пользователь. «Программное обеспечение не должно быть черным ящиком», - говорит Хаммонд. К примеру, если вы создаете программу для беспилотного автомобиля, и он не остановился в нужный момент, вы должны иметь возможность вникнуть и понять, почему система приняла такое решение. Примерно так же Amazon объясняет , почему та или иная книга появилась у вас в рекомендациях.

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

«Я думаю, всегда приходится идти на компромисс, - говорит Лайла Третиков, специалист по ИИ, ранее работавшая главой фонда Wikimedia Foundation и консультировавшая Bonsai. - Результаты будут не совсем такими же, как если задействовать группу ученых. Но я не уверена, что важнее: качество или сама по себе возможность это сделать». Адам Чейер из Viv также предполагает, что код Bonsai может работать не так эффективно, как ПО, оптимизированное под конкретную задачу. «Но это все равно чертовски хороший код, и он позволяет вам не вдаваться в ненужные тонкости», - добавляет он. Чейер также говорит, что в его компании, где как раз работают столь ценные специалисты по ИИ, вряд ли будут пользоваться Bonsai - разве что для создания прототипа какой-либо из идей перед тем, как реализовать ее старым проверенным способом.

Bonsai помогает движению за появление доступа к ИИ у людей, не имеющих специальной подготовки

Хаммонд, в свою очередь, заверяет, что проигрыш в качестве при использовании Bonsai совсем не велик. «Производительность со временем увеличивается, – говорит он – в это просто нужно поверить». Когда-нибудь в это можно будет не только поверить, но и проверить.

У Bonsai большие планы на следующие несколько месяцев. Совсем скоро компания объявит о начале сотрудничества с производителем компонентов Nvidia, и клиенты Bonsai смогут получить более качественные результаты при использовании оборудования этой марки. Также компания опубликует информацию о своем договоре с центром Siemens TTB, который последние несколько месяцев тестировал систему Bonsai в области автоматизации и контроля производства.

Bonsai пытается решить проблемы, которые не смогли решить даже самые могущественные компании. «Мы работаем над многими играми», - добавляет Хаммонд и объясняет, что игры решают ключевые проблемы, которые планируют разрешить в Bonsai. «Некоторые игры не поддаются даже DeepMind. Хотя они научили свой алгоритм играть во множество игр помимо «Тенниса», пока их система еще не способна играть в «Пакмена».

Но намного важнее то, как Bonsai помогает движению за появление доступа к ИИ у людей, не имеющих специальной подготовки. Со временем инструменты высокого уровня будут становиться все мощнее и, в конце концов, станут повсеместными. Дойдем ли мы до того момента, когда каждый человек сможет обучить и использовать искусственный интеллект? Скажем так: очень много денег поставлено именно на этот вариант развития событий.

За последнюю пару лет искусственный интеллект незаметно отряхнулся от тегов «фантастика» и «геймдизайн» и прочно прописался в ежедневных новостных лентах. Сущности под таинственным названием «нейросети» опознают людей по фотографиям, водят автомобили, играют в покер и совершают научные открытия. При этом из новостей не всегда понятно, что же такое эти загадочные нейросети: сложные программы, особые компьютеры или стойки со стройными рядами серверов?

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

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

Что такое нейронная сеть

Идея нейросети заключается в том, чтобы собрать сложную структуру из очень простых элементов. Вряд ли можно считать разумным один-единственный участок мозга - а вот люди обычно на удивление неплохо проходят тест на IQ. Тем не менее до сих пор идею создания разума «из ничего» обычно высмеивали: шутке про тысячу обезьян с печатными машинками уже сотня лет, а при желании критику нейросетей можно найти даже у Цицерона, который ехидно предлагал до посинения подбрасывать в воздух жетоны с буквами, чтобы рано или поздно получился осмысленный текст. Однако в XXI веке оказалось, что классики ехидничали зря: именно армия обезьян с жетонами может при должном упорстве захватить мир.

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

Работает перцептрон проще некуда: он получает несколько исходных чисел, умножает каждое на «ценность» этого числа (о ней чуть ниже), складывает и в зависимости от результата выдаёт 1 или –1. Например, мы фотографируем чистое поле и показываем нашему нейрону какую-нибудь точку на этой картинке - то есть посылаем ему в качестве двух сигналов случайные координаты. А затем спрашиваем: «Дорогой нейрон, здесь небо или земля?» - «Минус один, - отвечает болванчик, безмятежно разглядывая кучевое облако. - Ясно же, что земля».

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

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

В реальной работе формулы немного сложнее, но принцип остаётся тем же. Перцептрон умеет выполнять только одну задачу: брать числа и раскладывать по двум стопкам. Самое интересное начинается тогда, когда таких элементов несколько, ведь входящие числа могут быть сигналами от других «кирпичиков»! Скажем, один нейрон будет пытаться отличить синие пиксели от зелёных, второй продолжит возиться с координатами, а третий попробует рассудить, у кого из этих двоих результаты ближе к истине. Если же натравить на синие пиксели сразу несколько нейронов и суммировать их результаты, то получится уже целый слой, в котором «лучшие ученики» будут получать дополнительные премии. Таким образом достаточно развесистая сеть может перелопатить целую гору данных и учесть при этом все свои ошибки.

Первые нейросети

Перцептроны устроены не намного сложнее, чем любые другие элементы компьютера, которые обмениваются единицами и нулями. Неудивительно, что первый прибор, устроенный по принципу нейросети - Mark I Perceptron, - появился уже в 1958 году, всего через десятилетие после первых компьютеров. Как было заведено в ту эпоху, нейроны у этого громоздкого устройства состояли не из строчек кода, а из радиоламп и резисторов. Учёный Фрэнк Розенблатт смог соорудить только два слоя нейросети, а сигналы на «Марк-1» подавались с импровизированного экрана размером в целых 400 точек. Устройство довольно быстро научилось распознавать простые геометрические формы - а значит, рано или поздно подобный компьютер можно было обучить, например, чтению букв.

Розенблатт и его перцептрон

Розенблатт был пламенным энтузиастом своего дела: он прекрасно разбирался в нейрофизиологии и вёл в Корнеллском университете популярнейший курс лекций, на котором подробно объяснял всем желающим, как с помощью техники воспроизводить принципы работы мозга. Учёный надеялся, что уже через несколько лет перцептроны превратятся в полноценных разумных роботов: они смогут ходить, разговаривать, создавать себе подобных и даже колонизировать другие планеты. Энтузиазм Розенблатта вполне можно понять: тогда учёные ещё верили, что для создания ИИ достаточно воспроизвести на компьютере полный набор операций математической логики. Тьюринг уже предложил свой знаменитый тест, Айзек Азимов призывал задуматься о необходимости законов роботехники, а освоение Вселенной казалось делом недалёкого будущего.

Впрочем, были среди пионеров кибернетики и неисправимые скептики, самым грозным из которых оказался бывший однокурсник Розенблатта, Марвин Минский. Этот учёный обладал не менее громкой репутацией: тот же Азимов отзывался о нём с неизменным уважением, а Стэнли Кубрик приглашал в качестве консультанта на съёмки «Космической одиссеи 2001 года». Даже по работе Кубрика видно, что на самом деле Минский ничего не имел против нейросетей: HAL 9000 состоит именно из отдельных логических узлов, которые работают в связке друг с другом. Минский и сам увлекался машинным обучением ещё в 1950-х. Просто Марвин непримиримо относился к научным ошибкам и беспочвенным надеждам: недаром именно в его честь Дуглас Адамс назвал своего андроида-пессимиста.

В отличие от Розенблатта, Минский дожил до триумфа ИИ

Сомнения скептиков того времени Минский подытожил в книге «Перцептрон» (1969), которая надолго отбила у научного сообщества интерес к нейросетям. Минский математически доказал, что у «Марка-1» есть два серьёзных изъяна. Во-первых, сеть всего с двумя слоями почти ничего не умела - а ведь это и так уже был огромный шкаф, пожирающий уйму электричества. Во-вторых, для многослойных сетей алгоритмы Розенблатта не годились: по его формуле часть сведений об ошибках сети могла потеряться, так и не дойдя до нужного слоя.

Минский не собирался сильно критиковать коллегу: он просто честно отметил сильные и слабые стороны его проекта, а сам продолжил заниматься своими разработками. Увы, в 1971 году Розенблатт погиб - исправлять ошибки перцептрона оказалось некому. «Обычные» компьютеры в 1970-х развивались семимильными шагами, поэтому после книги Минского исследователи попросту махнули рукой на искусственные нейроны и занялись более перспективными направлениями.

Эпоха застоя

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

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

1993 год: капча уже морально устарела

К середине 1990-х исследователи сошлись на том, что самое полезное свойство нейросетей - их способность самостоятельно придумывать верные решения. Метод проб и ошибок позволяет программе самой выработать для себя правила поведения. Именно тогда стали входить в моду соревнования самодельных роботов, которых программировали и обучали конструкторы-энтузиасты. А в 1997 году суперкомпьютер Deep Blue потряс любителей шахмат, обыграв чемпиона мира Гарри Каспарова.

Строго говоря, Deep Blue не учился на своих ошибках, а попросту перебирал миллионы комбинаций

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

Вторая «оттепель» ИИ случилась, только когда изменилась сама философия программирования.

Нейросети наших дней

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

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

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

Так и произошло третье пришествие перцептронов - на этот раз уже под знакомыми нам названиями «нейросети» и «глубинное обучение». Неудивительно, что новостями об успехах ИИ чаще всего делятся такие крупные корпорации как Google и IBM. Их главный ресурс - огромные дата-центры, где на мощных серверах можно тренировать многослойные нейросети. Эпоха машинного обучения по-настоящему началась именно сейчас, потому что в интернете и соцсетях наконец-то накопились те самые big data, то есть гигантские массивы информации, которые и скармливают нейросетям для обучения.

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

Люди классифицируют информацию с помощью таблиц, но нейросетям незачем ограничивать себя двумя измерениями - поэтому массивы данных выглядят примерно так

В сфере развлечений компьютеры продвинулись не хуже, чем в науке. За счёт машинного обучения им наконец поддались игры, алгоритмы выигрыша для которых придумать ещё сложнее, чем для шахмат. Недавно нейросеть AlphaGo разгромила одного из лучших в мире игроков в го, а программа Libratus победила в профессиональном турнире по покеру. Более того, ИИ уже постепенно пробирается и в кино: например, создатели сериала «Карточный домик» использовали big data при кастинге, чтобы подобрать максимально популярный актёрский состав.

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

«Ты всего лишь машина. Только имитация жизни. Разве робот сочинит симфонию? Разве робот превратит кусок холста в шедевр искусства?» («Я, робот»)

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

Игры с ботами

Развлекаться с недоученными нейросетями очень весело: они порой выдают такие ошибки, что в страшном сне не приснится. А если ИИ начинает учиться, появляется азарт: «Неужто сумеет?» Поэтому сейчас набирают популярность интернет-игры с нейросетями.

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

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

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

Революция откладывается

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

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

Сейчас самой крупной сетью располагает компания Digital Reasoning (хотя новые рекорды появляются чуть ли не каждый месяц) - в их творении 160 миллиардов элементов. Для сравнения: в одном кубическом миллиметре мышиного мозга около миллиарда связей. Причём биологам пока удалось описать от силы участок в пару сотен микрометров, где нашлось около десятка тысяч связей. Что уж говорить о людях!

Один слой умеет узнавать людей, другой - столы, третий - ножи…

Такими 3D-моделями модно иллюстрировать новости о нейросетях, но это всего лишь крошечный участок мышиного мозга

Кроме того, исследователи советуют осторожнее относиться к громким заявлениям Google и IBM. Никаких принципиальных прорывов в «когнитивных вычислениях» с 1980-х годов не произошло: компьютеры всё так же механически обсчитывают входящие данные и выдают результат. Нейросеть способна найти закономерность, которую не заметит человек, - но эта закономерность может оказаться случайной. Машина может подсчитать, сколько раз в твиттере упоминается «Оскар», - но не сможет определить, радуются пользователи результатам или ехидничают над выбором киноакадемии.

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

Сказки про Скайнет


Хотя нам самим сложно удержаться от иронии на тему бунта роботов, серьёзных учёных не стоит даже и спрашивать о сценариях из «Матрицы» или «Терминатора»: это всё равно что поинтересоваться у астронома, видел ли он НЛО. Исследователь искусственного интеллекта Элиезер Юдковски, известный по роману « », написал ряд статей, где объяснил, почему мы так волнуемся из-за восстания машин - и чего стоит опасаться на самом деле.

Прежде всего, «Скайнет» приводят в пример так, словно мы уже пережили эту историю и боимся повторения. А всё потому, что наш мозг не умеет отличать выдумки с киноэкранов от жизненного опыта. На самом-то деле роботы никогда не бунтовали против своей программы, и попаданцы не прилетали из будущего. С чего мы вообще взяли, что это реальный риск?

Бояться надо не врагов, а чересчур усердных друзей. У любой нейросети есть мотивация: если ИИ должен гнуть скрепки, то, чем больше он их сделает, тем больше получит «награды». Если дать хорошо оптимизированному ИИ слишком много ресурсов, он не задумываясь переплавит на скрепки всё окрестное железо, потом людей, Землю и всю Вселенную. Звучит безумно - но только на человеческий вкус! Так что главная задача будущих создателей ИИ - написать такой жёсткий этический кодекс, чтобы даже существо с безграничным воображением не смогло найти в нём «дырок».

* * *

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

Сделай сам


Нейронную сеть можно сделать с помощью спичечных коробков - тогда у вас в арсенале появится фокус, которым можно развлекать гостей на вечеринках. Редакция МирФ уже попробовала - и смиренно признаёт превосходство искусственного интеллекта. Давайте научим неразумную материю играть в игру «11 палочек». Правила просты: на столе лежит 11 спичек, и в каждый ход можно взять либо одну, либо две. Побеждает тот, кто взял последнюю. Как же играть в это против «компьютера»? Очень просто.

  1. Берём 10 коробков или стаканчиков. На каждом пишем номер от 2 до 11.
  2. Кладём в каждый коробок два камешка - чёрный и белый. Можно использовать любые предметы - лишь бы они отличались друг от друга. Всё - у нас есть сеть из десяти нейронов!

Теперь начинается игра.

  1. Нейросеть всегда ходит первой. Для начала посмотрите, сколько осталось спичек, и возьмите коробок с таким номером. На первом ходу это будет коробок №11.
  2. Возьмите из нужного коробка любой камешек. Можно закрыть глаза или кинуть монетку, главное - действовать наугад.
  3. Если камень белый - нейросеть решает взять две спички. Если чёрный - одну. Положите камешек рядом с коробком, чтобы не забыть, какой именно «нейрон» принимал решение.
  4. После этого ходит человек - и так до тех пор, пока спички не закончатся.

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

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

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

Шаг 1. Нейроны и метод прямого распространения

Так что же такое «нейронная сеть»? Давайте подождём с этим и сперва разберёмся с одним нейроном.

Нейрон похож на функцию: он принимает на вход несколько значений и возвращает одно.

Круг ниже обозначает искусственный нейрон. Он получает 5 и возвращает 1. Ввод - это сумма трёх соединённых с нейроном синапсов (три стрелки слева).

В левой части картинки мы видим 2 входных значения (зелёного цвета) и смещение (выделено коричневым цветом).

Входные данные могут быть численными представлениями двух разных свойств. Например, при создании спам-фильтра они могли бы означать наличие более чем одного слова, написанного ЗАГЛАВНЫМИ БУКВАМИ, и наличие слова «виагра».

Входные значения умножаются на свои так называемые «веса», 7 и 3 (выделено синим).

Теперь мы складываем полученные значения со смещением и получаем число, в нашем случае 5 (выделено красным). Это - ввод нашего искусственного нейрона.

Потом нейрон производит какое-то вычисление и выдает выходное значение. Мы получили 1, т.к. округлённое значение сигмоиды в точке 5 равно 1 (более подробно об этой функции поговорим позже).

Если бы это был спам-фильтр, факт вывода 1 означал бы то, что текст был помечен нейроном как спам.

Иллюстрация нейронной сети с Википедии.

Если вы объедините эти нейроны, то получите прямо распространяющуюся нейронную сеть - процесс идёт от ввода к выводу, через нейроны, соединённые синапсами, как на картинке слева.

Шаг 2. Сигмоида

После того, как вы посмотрели уроки от Welch Labs, хорошей идеей было бы ознакомиться с четвертой неделей курса по машинному обучению от Coursera , посвящённой нейронным сетям - она поможет разобраться в принципах их работы. Курс сильно углубляется в математику и основан на Octave, а я предпочитаю Python. Из-за этого я пропустил упражнения и почерпнул все необходимые знания из видео.

Сигмоида просто-напросто отображает ваше значение (по горизонтальной оси) на отрезок от 0 до 1.

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

Но на одних видео далеко не уедешь. Для полного понимания я решил закодить её самостоятельно. Поэтому я начал писать реализацию алгоритма логистической регрессии (который использует сигмоиду).

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

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

Шаг 3. Метод обратного распространения ошибки

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