Некоторое время назад я смотрел видео ИИ от Google DeepMind, который сам научился бегать и ходить. Когда я смотрел это, я знал, что ИИ ничего не делал сознательно - он только оптимизировал, основываясь на свободном наборе правил, - и это меня поразило.

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

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

Как машины учатся

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

Этот процесс обучения эффективен, но в конечном итоге ограничен.

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

Но если бы они были в состоянии, они были бы в геометрической прогрессии более успешными.

У компьютеров нет этой проблемы. Машина может работать 24 часа в сутки 7 дней в неделю и думать в триллионы раз быстрее, чем человек. OpenAI может сжать игры DOTA за сотни лет до нескольких недель, а AlphaGo может играть миллионы раз за тот же период времени. Однако эти ИИ делают все это, даже не понимая, что они делают.

Просто они просто проводят расчеты.

Если мы внимательно посмотрим на то, как OpenAI и Google DeepMind «учатся», они, по сути, разбивают человеческое обучение на факторы, которые можно вычислить:

  1. Награда. Представление о том, что вы приближаетесь к своей цели, - это хорошо. Люди измеряют прогресс во время обучения, и машины тоже. Например, когда ваши родители пригласили вас на пиццу после хорошей успеваемости, вы хотите получить высокую награду.
  2. Действие. Движение рукой. Это векторы, описывающие изменения объектов в окружающей среде. Действия повлияют на состояние.
  3. Состояние. Стоя, сидя. Это векторы, описывающие качества объекта в окружающей среде. Состояние приведет к награде.
  4. Политика. Если есть машина, наверное, переедем. Это тенденции, которым можно научиться в нейронной сети. Политика определяет следующее действие на основе текущего состояния.
  5. Q-значение. Устойчивость лучше спонтанности. Функция Q-значения принимает текущее состояние и текущее действие для вычисления дисконтированной долгосрочной стоимости пары действие-состояние. Ценные состояния - это состояния, которые также приведут к хорошим состояниям в будущем.
  6. Скидка. Ценность сейчас лучше, чем ценность в будущем. Скидка, применяемая к Q-значению, обеспечит приоритет немедленного состояния с высокой наградой за счет уменьшения значения более отдаленного состояния. В результате ИИ предпочел бы максимизировать награду раньше, чем позже.

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

Алгоритм, используемый Unity ML-Agents, называется PPO (Proximal Policy Optimization) и представляет собой современный алгоритм, используемый OpenAI в настоящее время.

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

ИИ не нужно знать, что он делает, ему просто нужно делать что-то, что соответствует правилам.

В этом смысле машины давно превзошли нас в обучении.

Крутая часть

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

Я начал с пятиногой. Вот что получилось:

Когда этот краулер закончил тренировку, мне стало очень любопытно. Я вообразил, что лучший способ ходьбы - это использовать 2 или 3 ноги, чтобы броситься вперед, а затем использовать другие, чтобы поймать себя, но это было другое.

Что выделялось в этом методе, так это то, что почти все время две «задние лапы» скользили вперед после того, как их запускал задняя, ​​сохраняя равновесие. Оставшиеся две ноги затем немного продвинули бы тело вперед.

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

Я подумал, что это круто, поэтому сделал один на 6 ногах:

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

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

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

Я сделал еще один с 7 ногами:

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

Я заметил одну примечательную особенность: при каждом повороте у ползунка была одна нога, которая торчала и вертелась вокруг, чтобы генерировать импульс. Если подумать, ИИ мог прийти к этому решению путем случайных экспериментов после того, как застрял в позиции, в которой больше не было скорости. Было бы легче просто создать импульс, чем найти другой способ продвинуться вперед.

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

Этот сканер сделал 3 миллиона шагов для обучения, более 36 часов на моем скромном ноутбуке, и когда я увидел, что он делает, я издал отчетливое «блин».

У настоящих пауков восемь ног, и, насколько я знаю, пауки не умеют ползать, когда крутятся колесами телеги.

Я знаю я знаю. Очевидно, я не смоделировал все, что касается насекомого, чтобы сделать его реалистичным, но этот «метод ползания», казалось, появился из ниоткуда.

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

Это было безумием.

После небольшого исследования я обнаружил следующее:

Это Cebrennus rechenbergi, паук, обитающий в плоских марокканских пустынях. И он делает колеса телеги, спасаясь от своих хищников.

Страшно, но в то же время круто.

ИИ по сути придумал эволюционную функцию, которая действительно существует.

Заключение

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

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

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

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

Выводы:

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

Спасибо за прочтение! Следуйте за мной, чтобы увидеть больше подобных статей в будущем!