В гиде On the Edge, который мы подготовили вместе с Отделом культуры и образования Посольства Великобритании в Москве, профессора из ведущих британских университетов объясняют 15 главных научных тем, которые должен понимать каждый образованный человек. Следите за новостями проекта и будьте на крае науки вместе с нами.

Нам кажется, что нейронные сети — это новая область. На самом деле она довольно старая. Первые исследования нейронных сетей восходят к концу XIX века. Таких работ есть несколько, и первая Нобелевская премия в этой области была присуждена итальянцу Гольджи и испанцу Рамону-и-Кахалю. Это была одна Нобелевская премия по физиологии или медицине, присужденная двум исследователям за дополняющие друг друга работы о нейронных сетях. Испанский ученый проделал большую работу над отдельными нейронами. Итальянец Гольджи, профессор Павийского университета (Рамон-и-Кахаль работал в Мадриде), первым проанализировал структуру нейронной сети: он открыл технику окрашивания тканей мозга, чтобы под микроскопом можно было увидеть детали нейронных сетей. Это были дополняющие друг друга работы.

Кроме того, была парижская работа ученого по фамилии Лапик. Мы и сейчас используем уравнение Лапика, затрагивающее нейронные сети. Его исследование было связано с физиологией, но также и с внешними наблюдениями. Он первым указал, что внутренняя работа нейрона и взаимодействие нейронов между собой основаны на спайках. Спайки — это очень короткие импульсы, в которых потенциал сначала растет, а затем падает. Какими бы ни были процессы, происходящие в нашем мозге, они основаны на обмене спайками. Этим исследованиям уже 120 лет.

Рекомендуем по этой теме:
12
Поиск уязвимостей

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

Описание спайков конца XIX — начала XX века, изучение активности нейронных сетей Гольджи и работы Рамона-и-Кахаля по исследованию индивидуальных клеток, а также работы, проделанные примерно 50 лет спустя Маккалоком, Питтсом и Клини, лежат в основе того, что сегодня мы называем нейронными сетями.

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

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

Существует две фазы: фаза обучения и фаза использования. Фаза обучения — это то, что я описал: вы берете данные и изменяете параметры контура или математического алгоритма, который представляет контур. Вы изменяете параметры так, чтобы они как можно больше соответствовали данным. Когда вы используете сеть, вы поступаете иначе: у вас есть уже обученная сеть, и вы вводите в нее данные, а она выдает вам ответ, очень похожий на то, чему она обучилась. Почему? Потому что она хорошо аппроксимирует непрерывные и ограниченные функции./p>

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

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

Когда речь заходит об играх, где вам нужно выполнять действия в определенной последовательности, вы пытаетесь менять свое поведение так, чтобы на каждом шаге ваше положение было лучше, чем на предыдущем. Вы думаете: «Я поступил вот так, и получилось плохо, а потом сделал вот так, и получилось хорошо. Буду и дальше делать, как в последний раз, потому что так лучше». Это процесс обучения с подкреплением. Оно может быть детальным, его могут поддерживать другие методы — например, уже упомянутое глубокое обучение, градиентный спуск и так далее. Они могут быть дополнением к этому процессу.

Рекомендуем по этой теме:
55171
Простые числа

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

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

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