Pull to refresh

Comments 13

Как же хочется начать понимать подобные статьи(((
Десять лет уже родителям настраиваем компьютеры, роутеры и смартфоны. Ничего удивительного, что на их месте мы оказались куда моложе — мир меняется ускоренными темпами) Умение работать с искусственным интеллектом через 10 лет станет жизненно необходимым
Это довольно обширная тема и начать ее действительно глубоко понимать довольно непросто. Что еще осложняется тем, что практически все теоретические работы в данной области сделаны и делаются на Западе, поэтому и вся литература тоже не на русском.

Если вкратце, то существуют 3 парадигмы в машинном обучении: обучение с учителем (supervised learning), обучение без учителя (unsupervised learning) и обучение с подкреплением (reinforcement learning). Последнее используется в случаях, когда обучение ИИ по тем или иным причинам должно идти методом, во многом подобным методу проб и ошибок, когда за каждое выполненное действие агент (тот, кто выполняет действия и обучается) получает определенное вознаграждение. Например, у людей на разных полюсах шкалы вознаграждений находятся боль (низкий уровень вознаграждения) и наслаждение (высокий уровень). Конечная цель агента — максимизация суммарно полученного вознаграждения. В данной статье речь идет как раз о таком методе. Он же используется в Alpha GO, Giraffe и многих других приложениях, где агент познает «мир вокруг себя» самостоятельно и так же самостоятельно учится взаимодействовать с ним с максимальной выгодой для себя.
Спасибо за разъяснения, не могли бы вы объяснить еще пару моментов?

А эта Universe от open.ai — она сама рисует для агента шкалу вознаграждений, или надо изначально предусмотреть?

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

Опять же, за что вознаграждают машину? За приобретаемый опыт (хорошие выстрелы, минимум столкновений машин), или за достижение заложенных в нее целей?

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


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

RL — он скорее о тренировке "рефлексов", необходимых для победы в игре, а не о глубоком понимании самой игры. Т.е. агент скорей обучится совершать какие-то регулярные действия для повышения reward, чем "искать пасхалки".


Опять же, за что вознаграждают машину?

За то-же, за что и игрока. Reward функция, как правило, используется игровая (т.е. очки, жизни и тд и тп), т.е. сделал какое-то действие — получил очков и сеть запомнила такую последовательность действий и тд и тп.

Интересно, если задавать reward руками, то универсальность сразу теряется. У них вроде как смысл в том, чтобы агенты играли во множество игр сразу. Писать для каждой игры в ручную мне кажется большой затратой сил и времени для. Может быть, сейчас — ручками, а потом для игр будут шаблоны, основанные на предпочтениях ИИ-шников, проект же open-source.

А что мешает сделать наградой — собранный объем информации с игры? Создаем хранилище, наполняемое по определенным правилам, чтобы агент изучал окружающий его мир. При чем делаем множество разделов: это и изучение механики действий в игре (например, собрать инструкцию о том, как быть самым добрым в Масс Эффекте*), игровых мест (изучение биомов игры). Эдакий реверс-инженер. Идеальный бета-тестер, кстати.

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

Я вероятно не корректно выразился, у них есть не конкретное рапсределение этой функции, а только его значения в некоторых точках пространства. И суть RL как раз в том, чтобы восстановить это распределение. Ну а как эта обратная связь реализована — это все таки часть специфичная для конкретной игры. Без обратной связи Q-Learning не работает.


А что мешает сделать наградой — собранный объем информации с игры?

А как считать эту меру информации?

Да, наверное я романтизирую. У меня в голове рисуется картинка, как некий бот буквально оживает в игре и начинает учиться.

Оценить обстановку — повертел мышкой — ага, вид от первого лица. Диалог? — водит мышкой, ага, можно выбирать, попробуем это. И параллельно те же самые действия совершает множество агентов. Ага, 90% агентов пошли этим путем, но зачем пошли остальные? Надо изучить. Ага, наш средний результат в этом заезде три минуты на круг, но лидеры рейтинга почему-то используют совсем отличную стратегию от среднячков, давайте изучим

Но это наверное относится уже к сильному ИИ и просто не реализуемо на такого рода платформах?
Грубо говоря, именно так и происходит, как у вас рисуется в голове, если абстрагироваться от вопросов взаимодействия с игровым интерфейсом. :) Боты, в основе которых лежат алгоритмы reinforced learning, учатся на своих ошибках, точно так же, как это делают высшие животные.
Спасибо, прочитал оба комментария, книгу взял на заметку — тема очень интересная и по мере получения ответов на одни вопросы, появляется несколько других) например, что будет, если параллельно с тем, как агент играет сам, он будет смотреть Lets play записи и сравнивать свои поступки с поступками ведущих, либо достигая чекпоинта — сравнивать свои достижения с массивом облачных сохранений на этом месте других игроков.

Представляя миллион таких агентов, удаляющих те или иные свои «копии» за недостаточность награды, не посчитают ли они, что люди вообще к этой награде не стремятся и мешают?)))
В случае Let's play — такой вариант обучения возможен, например, если функция оценки — тоже нейросеть, обученная на реплеях (это будет уже supervised learning), а в случае массива облачных сохранений — скорее нет, чем да, т.к. бот не знает, какие действия привели к какому-то конкретному результату в таблице.

Про миллион агентов — вы сами того не ведая примерно описали генетические методы обучения. Что касается морали ботов — если вы ее не заложите, то ее и не будет, т.е. если бот посчитает, что ему выгоднее заниматься тимкиллом и это разрешено правилами, то он будет заниматься тимкиллом. Если я правильно понял ваш вопрос.
Честно говоря, я лишь вкратце почитал про эту OpenAI Universe и не знаю как она функционирует. Как я понял, это унифицированный интерфейс к различным играм, выступающим в роли тестовых сред. Т.е. это нечто вроде тестовых наборов MNIST, CIFAR10, NISTP и т.д., но для другого класса алгоритмов. OpenAI Universe предназначена в первую очередь для разработчиков алгоритмов и снимает с них заботу о разработке интерфейса взаимодействия с какой-то конкретной игрой из их набора, т.е. позволяет сосредоточиться именно на алгоритме AI, а не на важных, но все же второстепенных вопросах с т.з. разработчика AI.

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

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

В общем, это обширная тема. И если она вас интересует, я рекомендую для начала почитать книгу «Reinforcement Learning: An Introduction», Richard S. Sutton and Andrew G. Barto — она есть в свободном доступе.
Я так и не понял, эта штука может работать только с вшитыми в неё играми, или я, как программист, могу подогнать под неё любую игру найденную в интернете?
Sign up to leave a comment.

Articles