Искусственный интеллект: обучение с подкреплением на языке Python

Введение и план курса

Здравствуйте, это LazyProgrammer, и я вновь здесь, чтобы рассказать вам о своём последнем курсе «Искусственный интеллект: обучение с подкреплением на языке Python».

Данный курс будет гораздо больше предыдущих и его статьи соответственно!

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

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

В 2016 году мы увидели, как Google AlphaGo победила чемпиона по игре в го. Мы увидели, как ИИ играет в видеоигры вроде Doom и SuperMario. Самодвижущиеся автомобили начали ездить по настоящим дорогам без водителей и даже перевозить пассажиров, и всё это – без помощи человека. И если это уже кажется удивительным, то приготовьтесь – закон ускорения отдачи гласит, что это развитие будет только расти по экспоненте.

Овладениемашинным обучением с учителем и без – это не такое и маленькое достижение. Так,на сегодняшний день у меня уже более шестнадцати курсов, посвящённым толькоэтой тематике.

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

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

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

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

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

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

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

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

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

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

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

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

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

Наоборот,обучение с подкреплением отстоит от них очень далеко. В обучении с учителем и безучителя мы всегда представляем один и тот же интерфейс, созданный по подобиюбиблиотеки Sci-Kit Learn. Так, в интерфейсе обучения с учителем у нас, какправило, есть функция fit, принимающая в качестве аргументов входные данные X и целевые переменные Y, и функция predict, принимающая вкачестве аргумента входные данных X ипытающаяся как можно точнее спрогнозировать Y:

class SupervisedModel:

    def fit (X,Y): …

    def predict(X):…

Винтерфейсе обучения без учителя у нас, как правило, есть только функция fit, которая в качестве аргумента принимает тольковходные данных X– не забывайте, что в машинном обучении без учителя целевых переменных нет.Кроме того, иногда у нас есть функция transform, принимающаянекоторые входные данные X и преобразующая их в другой вид, обычнообозначаемый через Z. Метод главных компонент, автокодировщики иограниченные машины Больцмана являются примерами способных на это алгоритмов.Наоборот, методы вроде k-среднего, кластеризации и гауссовых моделейсмешения имеют функцию fit, но непреобразовывают данные. Вместо этого параметры подобранной модели освещаютданные, например к какому кластеру принадлежит та или иная точка данных иликакова дисперсия кластера:

class UnsupervisedModel:

    def fit(X):…

    def transform(X):…

Общимздесь является то, что они взаимодействуют лишь с учебными данными. Мы берёмнекоторые случайные учебные данные – либо X и Y, либо просто X – и вызываем функцию fit.В случае обучения с учителем возможно делать прогнозы по поводу будущих данных,что само по себе может быть полезно. Представьте, что вы написали приложение,где можно отсканировать сделанную в супермаркете фотографию, классифицироватьизображение на ней и получить информацию о питательной ценности продукта.

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

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

Расширимэто понятие цели. Формулировка целевой функции с точки зрения достижения целейпозволяет нам решать гораздо более широкий спектр задач. Целью AlphaGo является выигрыш в игре го. Целью ИИ ввидеоигре является или максимально быстрое прохождение, или достижениемаксимального количества очков. Любопытно, что при рассмотрении животных иособенно людей эволюционные психологи высказывают утверждения об эгоистичностинаших генов, чьё единственное «желание» – создать побольше себе подобных. И этодействительно любопытно, поскольку, как и в случае AlphaGo,нашлось множество невероятных обходных путей для достижения этой цели – экспертыотметили, что AlphaGo использовало ряд удивительных инеобычных методов. К примеру, у вас может быть желание заработать много денег иразбогатеть, но задумывались ли вы когда-нибудь, почему оно у вас возникло?Возможно, те, у кого был специфический набор генов, связанных с желаниемразбогатеть, в конце концов стали более заметными в нашем генофонде вследствиеестественного отбора. А возможно, наличие богатства привело к улучшениюмедицинского обслуживания и повышению социального статуса, что, в свою очередь,помогло генам максимизировать их главную цель – создать больше себе подобных. Ихотя сумма на вашем банковском счету, с точки зрения законов физики, не имеетпрямого отношения к продолжительности вашей жизни или интенсивности размноженияваших генов, это является новым подходом в решении проблемы.

Стремлениеи успех в процессе зарабатывания денег – лишь случайный пример, пришедший мнена ум. Вы можете поменять его на любой другой, например, «быть здоровым исильным» или «иметь мощные аналитические способности». Знание точных факторов –дело социологов, а нам просто интересен тот факт, что есть лишь одна главнаяцель, которую необходимо достичь, и различные способы её достижения. При этомвсе факторы меняются с течением времени. Были времена, когда поиски как можнобольшего количества сахара приносили энергию и помогали выжить; в нынешниевремена мы сохраняем эту привычку, поскольку эволюция протекает очень медленно,но в современном мире эта привычка на самом деле лишь убивает нас. Наши гены вкачестве способа максимизации своего вознаграждения используют мутацию иестественный отбор, а это происходит медленно. Но метод максимизациивознаграждения ИИ – обучение с подкреплением – происходит быстро.

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

Рассмотрим простой пример. Представьте себе поле для игры в крестики-нолики. Сейчас совершенно не важно, кто выиграет, мы просто будем размещать крестики и нолики на поле. Мы начинаем с пустого поля и ставим крестики и нолики до тех пор, пока поле не заполнится (если вы не знаете, как играть в крестики-нолики, то можете поискать в Google и даже самостоятельно сыграть прямо в окне отображения результатов поиска). Не забывайте, что поле для игры в крестики-нолики – 3×3. Каково общее количество состояний в этой среде? Я дам вам минуту на размышления, а затем можете возвращаться к просмотру лекции.

Таккак нас сейчас не интересует победитель, сумевший поставить три крестика илитри нолика в ряд, задача очень проста. Каждая клетка на поле имеет тривозможных состояния – пусто, крестик или нолик. Всего таких клеток 9,следовательно общее количество состояний равно 39.

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

Вобучении с подкреплением есть ещё несколько определений, являющихся основными.Прежде всего это понятие вознаграждения – того, что отличает алгоритмы обученияс подкреплением от других типов алгоритмов машинного обучения. Агент стараетсямаксимизировать не только сиюминутное вознаграждение, но и будущее. Зачастуюалгоритмы машинного обучения находят для этого новаторские способы. Сам я неиграю в го, но известно, что программа AlphaGoобучилась уникальным и непредсказуемым стратегиям, позволившие ей победитьчемпиона мира по этой игре. Такого рода вещи не являются интуитивно понятнымичеловеку, но алгоритмы обучения с подкреплением способны овладеть имиавтоматически.

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

Чтобыдать вам менее глобальный пример того, как и зачем нужно обдуманнопрограммировать вознаграждение, рассмотрим робота, пытающегося пройти лабиринт.Разумным вознаграждением тут может быть простое его прохождение: если робот прошёллабиринт, то получает вознаграждение 1, в противном случае 0. С такойструктурой вознаграждения возможно, что робот просто использует случайнуюстратегию и в конце концов пройдёт лабиринт. Поскольку мы никак не указалироботу, что он должен пройти лабиринт более эффективным способом, чем простоделать случайные движения, пока лабиринт не будет пройден, он всё равно получитвознаграждение. Теперь представим, что мы  добавлять к вознаграждению –1 за каждыйпройденный шаг. Тогда ИИ имеет стимул пройти лабиринт, сделав наименьшееколичество шагов, а потому будет стремиться найти более эффективное решение. Чутьпозже в курсе это будет показано в коде. Заметьте, что отрицательноевознаграждение похоже на штраф, которым оно и является, просто мы всегдаиспользуем термин «вознаграждение». Оно указывает, насколько хорошо или плохомы действуем. Обратите также внимание, что вознаграждение – это всегдадействительное число.

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

Последниетри обсуждавшихся понятия часто рассматриваются как триплет: мы находимся вопределённом состоянии, совершаем определённое действие и получаем определённоевознаграждение. Он называется SAR, от англ. state, action, reward – то есть триплет состояние – действие –вознаграждение, и обозначается (s, a, r).

Времятакже является важным понятием обучения с подкреплением, поскольку каждый раз,играя в игру, мы получаем последовательность состояний, действий ивознаграждений. В рамках этой структуры мы начинаем в состоянии S(t), выполняемдействие A(t), но получаем вознаграждение R(t+1). Таким образом,получаемое вознаграждение всегда зависит от состояния и действия, предпринятогона предыдущем этапе. Это действие также приводит к тому, что мы попадаем вновое состояние S(t+1). Поэтому другим важным триплетомявляется [S(t), A(t), S(t+1)]; он обычнообозначается как (s, a, s’).

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

Где взять код

Весь код из моих курсов по машинному обучению находится в моём репозитарии Github по адресу

https://github.com/lazyprogrammer/machine_learning_examples

Папка для этого курса называется rl.

Команда для загрузки кода – git clone, после которой идёт адрес страницы на Github; его можно скопировать из адресной строки:

git clone git@github.com:lazyprogrammer/machine_learning_examples.git

Ясоветую использовать протокол SSH, чтобы избежать необходимости каждый развводить пароль. Убедитесь также в периодической проверке обновлений илизапустите команду

gitpull

чтобы всегда иметь последнюю версию кода.

Вседанные для курса будут в случае необходимости указаны в соответствующей лекции.

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

Явсегда рекомендую своим слушателям стараться написать код самостоятельно, ноесли вы зашли в тупик или нуждаетесь в помощи, то код в моём репозитарии Github уже проверен на работоспособность и вы можетесравнить его со своим.

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

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

Стратегия прохождения курса

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

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

Машинноеобучение не похоже на курс по физике – тут нет 20 практических задач длярешения в конце каждой главы. Что хорошо в машинном обучении – так это то, чтооно автоматически проверяется само собой: написанный вами код или работает, илинет. Если работает – то это хорошее начало, но он либо ведёт себя, какожидалось, либо нет. Если ведёт, как ожидалось, значит, написанный код хорош иработоспособен.

Отладкапрограммы – это часть программирования. Вы должны быть хорошим отладчиком и неотчаиваться, если сию минуту написанный код содержит ошибку, – это неотъемлемаячасть процесса. Некоторые полагают, что с отладкой можно справиться за час,тогда как на самом деле это может занять всю ночь или даже целые дни. Поэтомуимейте в виду: всё, что мы делаем, проверяется само по себе. Написанный вам кодили работает, или нет, но вы должны стремиться сами заставить его работать. Незабывайте, что код в репозитарии Github уже проверен наработоспособность, поэтому сверяйте свою работу с ним. Вполне возможно даже,что ваш код окажется лучше моего.

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

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

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

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

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

Понравилась статья? Поделить с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: