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

И вот мы, наконец, сделали это, мы создали машины, которые обучаются!

Но контролируемое машинное обучение, которое в настоящее время является наиболее широко используемой формой машинного обучения, по-прежнему имеет ограничения.

Контролируемое обучение

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

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

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

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

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

Почему контролируемое обучение не работает для всех

В ситуациях, когда имеется множество помеченных данных, таких задач, как классификация изображений и классификация спама, алгоритм работает очень хорошо! Но есть также много проблем, для решения которых у нас нет огромного количества данных, чтобы обучить эти машины, или мы просто не знаем, как правильно решить проблему. Представьте себе, что робот учится ходить. Вы могли бы сделать так, чтобы он имитировал ходьбу человека, но что, если у него 4 ноги вместо 2, и его распределение веса сильно отличается от собаки или кошки. Или что, если мы хотим научить компьютер побеждать чемпиона мира в классической настольной игре, такой как Го, или в видеоигре, такой как League of Legends, как мы должны это делать, если компьютер обучается с использованием данных, полученных от игроков-людей. Несовершенные игроки-люди! Эти проблемы очень сложно решить, используя методы обучения с учителем, но именно здесь обучение с подкреплением приходит на помощь!

Как работает обучение с подкреплением

Обучение с подкреплением работает, когда алгоритм учится через взаимодействие с окружающей средой. Компьютер получает положительное вознаграждение, если делает что-то хорошее, или отрицательное, если делает что-то плохое. Его цель - максимизировать вознаграждение в долгосрочной перспективе. И эта техника дала безумные результаты !! Еще в 2016 году Deepmind создал алгоритм AlphaGo, разработанный с использованием обучения с подкреплением и некоторого контролируемого обучения, для игры в древнюю китайскую настольную игру. В игре есть примерно 10 м² возможных мест расположения досок.

Это 1 с 172 нулями

AlphaGo победил Ли Седола 4 матча против 1. Ли Седол - один из лучших игроков в го в мире, на его счету 18 международных титулов. Это было невероятным достижением, поскольку из-за сложности го он считался игрой, в которой машины никогда не могли победить людей. После победы AlphaGo многие другие программы обучения с подкреплением смогли сделать невероятные вещи. OpenAI создал бота, который играл в Dota, популярную онлайн-видеоигру. Дота сильно отличается от таких игр, как шахматы или го, потому что алгоритм не имеет полного знания о состоянии. Например, противник может удивить алгоритм, выпрыгнув из куста и напав, в то время как в классических настольных играх все о текущем состоянии известно в любое время. Несмотря на эти проблемы, бот OpenAI смог победить лучшего в мире игрока в Dota в матче 1 на 1. И обучение с подкреплением способно сделать гораздо больше! Как научить роботов ходить и управлять автомобилями. Хотя математика, лежащая в основе обучения с подкреплением, сложна, интуитивно она довольно проста.

Думайте об алгоритме как о ребенке в новой среде, где у него есть 2 варианта: прикоснуться к огню или взять конфету. Ребенок получает положительную награду, когда берет конфету, и отрицательную награду, если дотрагивается до огня, но если он съест более 10 конфет, он получает награду -10. Ребенок сначала, возможно, прикоснется к огню и поймет, что он ему не нравится, затем возьмет конфету, которая, по его наблюдениям, получит положительную награду, поэтому он берет еще одну, и еще одну, пока на 10 конфетах он не почувствует себя действительно плохо и не станет отрицательная награда - 10. Со временем ребенок научится не прикасаться к огню и есть конфеты, но не более 10. Это похоже на то, как компьютер, использующий обучение с подкреплением, учится действовать в окружающей среде.

Некоторые ключевые термины

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

Цель агента - максимизировать общее вознаграждение в долгосрочной перспективе. Это означает, что иногда в ближайшем будущем нужно терпеть убытки, чтобы получить более крупное вознаграждение в будущем, например, пожертвовать пешку, чтобы захватить коня. Меня очень заинтересовала эта концепция, и я хотел сам сделать алгоритм обучения с подкреплением. Поэтому я последовал фантастическому руководству Томаса Симонини, чтобы создать агента, который будет играть в игру OpenAI’s Taxi-v2. Вот видео, объясняющее мою реализацию игры.

Использование Q-таблицы хорошо работает для простых игр, подобных этой, но для более сложных задач нет смысла иметь таблицу, содержащую каждое отдельное состояние и возможное действие, поэтому мы используем нейронную сеть вместо того, чтобы аппроксимировать значение совершить определенное действие в определенном состоянии. Я работаю над алгоритмом, использующим нейронные сети для игры в Atari Space Invaders, и скоро опубликую статью об этом!

Если вам понравилась эта статья, мы очень ценим аплодисменты, и не стесняйтесь обращаться в LinkedIn. Я хотел бы поговорить об искусственном интеллекте и технологиях в целом