«Я очень рано понял разницу между знанием названия чего-либо и знанием чего-либо».

― Ричард Фейнман

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

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

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

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

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

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

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

Рисунок 9.2 — Отсутствующая информация, которую определит алгоритм

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

Обучение без учителя

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

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

Обучение с подкреплением

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

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

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

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

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

Другая проблема с алгоритмами обучения с подкреплением заключается в том, что они зависят от агента, взаимодействующего с окружающей средой, чтобы выяснить вознаграждение и соответствующие действия для максимизации вознаграждения. Это не обязательно относится к людям в реальном мире. Никому не нужно съезжать с обрыва тысячи раз, чтобы научиться водить. Люди могут вычислить вознаграждение от наблюдения.

Алгоритмы подкрепления

Следующие два шага определяют алгоритмы подкрепления:

  • Добавьте случайности в действия агента, и
  • Если результат оказался лучше, чем ожидалось, делайте то же самое в будущем.

Добавление случайности к действиям гарантирует, что агент ищет правильные действия для выполнения. И если результат ожидаемый, то агент пытается сделать то же самое в будущем. Однако агент не обязательно повторяет одни и те же действия, но он пытается сделать больше таких же действий в будущем, чтобы он не продолжал делать что-то только одним способом и мог исследовать лучшие действия. Несмотря на то, что алгоритмы подкрепления можно легко объяснить, обучение с подкреплением не обязательно работает для всех проблем. Чтобы обучение с подкреплением работало, ситуация должна иметь вознаграждение, и не всегда легко определить, что следует или не следует вознаграждать.

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

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

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