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

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

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

Https://octaviobomfim.medium.com/predicting-real-soccer-matches-using-fantasy-game-scouts-a3b388edb8aa

Q-Learning

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

Почему Q? И что это за политика?

Буква Q означает качество, а модель обучения основана на таблице Q (таблица качества), которая представляет собой политику действий, которые модель может использовать в среде для каждого состояния. Таким образом, у нас есть таблица [состояние, действие], которая представляет политику, в которой каждое действие имеет значение качества (значение Q) для каждого состояния.

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

При каждом предпринятом действии значение Q обновляется в соответствии с концепцией итерации значений после процесса принятия решений, известного как процесс принятия решений Маркова (MDP) и уравнение Беллмана. Уравнение состоит из старого значения Q для действия, предпринятого вместе с вознаграждением за действие и максимального значения Q для нового состояния, которые вычитаются из «скорости обучения», которая взвешивает качество между текущим значением и новым значением. Следовательно, модель зависит только от [состояния, действия] и вознаграждения, наблюдаемого в действии, совершенном в окружающей среде.

Разработка модели - Код

После ознакомления с концепцией я перейду к части кода и результатам модели. Полный код решения можно найти на моем GitHub по ссылке ниже:



Библиотеки, используемые для разработки, в соответствии с их импортом:

import numpy as np
import matplotlib.pyplot as plt
import pickle
from matplotlib import style
import time
	
import pandas as pd

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

HM_EPISODES = 45000
epsilon = 0.9
EPS_DECAY = 0.9998
LEARNING_RATE = 0.1
DISCOUNT = 0.95
  • Скорость обучения определяет вес вознаграждения в исследовании с обновлением значения качества (Q).
  • Сначала я использовал 45000 эпизодов - это количество итераций, которым будет следовать модель.
  • Распад эпсилона и eps указывает на начальный коэффициент эксплуатации и его уменьшение с итерациями.
  • Скидка представляет собой вес будущего значения Q после действия.

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

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

Создание среды моделирования

Среда моделирования имеет 3 различных функции:

  • action (), который выполняет действие, определенное моделью, путем выбора стратегии и ставки
  • Strategy (), которая получает действие от функции action () и эффективно выполняет ранее определенную стратегию. У нас есть 3 стратегии в этой модели: «Мин», который выбирает команду с наименьшим коэффициентом, «Макс», выбирает наибольший коэффициент, и «ML», который выбирает команду в соответствии с моделью машинного обучения, разработанной в другое время.
  • bet (), которая получает значения action () и strategy () и применяет стратегию в наборе данных с реальными значениями игры, возвращая, таким образом, значение результата ставки, будь то попадание или промах.

Сразу после этого в циклах эпизодов и игр у нас есть определение политики эксплуатации:

if np.random.random() > epsilon:
   action_n = np.argmax(q_table[obs])
else:
   action_n = np.random.randint(0,high=2)

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

j = result[0][0]
	        if j == -1:
	            erros += 1
	            l_tot = 0
	        elif j == 0:
	            l_tot = 0  
	        elif j == 1:
	            l_tot = result[1][0]
	            
	        lucro = (l_tot*invest) - invest        
	        reward = lucro
	

	        lucro0 += lucro
	 

new_obs = (carteira,lucro0) # get new state

Наконец, применение уравнения Беллмана для обновления значения Q для этого состояния.

try:
	  max_future_q = np.max(q_table[new_obs])
except:
	  q_table[new_obs] = [0 for i in range(val)]
	  max_future_q = np.max(q_table[new_obs])
	            
	        
current_q = q_table[obs][action_n] 
	 
new_q = (1 - LEARNING_RATE) * current_q + LEARNING_RATE * (reward + DISCOUNT * max_future_q)

q_table[obs][action_n] = new_q #update actual q

Результаты

Модель была выполнена, и с помощью библиотеки Matplotlib была сгенерирована некоторая графика для отслеживания производительности модели и журнал с результатами совпадений.

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

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

В конце концов, политика модели для этих совпадений была следующей:

['ml', 'max', 'ml', 'ml', 'max', 'max', 'max', 'max', 'ml', 'max', 'max', 'ml', 'min', 'ml', 'min', 'ml', 'min', 'ml', 'ml', 'ml', 'ml', 'ml', 'ml', 'max', 'max', 'ml', 'ml', 'min', 'ml', 'ml']

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

Окончательные результаты были:

Final Wallet: $ 142.15999999999997, Profit: $ 82.15999999999998

В среде моделирования было 30 игр с инвестициями в 2 доллара и начальным портфелем в 60 долларов. Накопленная прибыль составила 82,16 доллара, что составило 136,93% от первоначального портфеля, модель, которая более чем удвоила сумму, инвестированную с помощью этих интеллектуальных ставок!

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

Profit 1.9 Profit ac 1.9 erros 0 action 0 ...............
Profit 4.2 Profit ac 6.1 erros 0 action 0 ...............
Profit 4.4 Profit ac 10.5 erros 0 action 0 ...............
Profit 0.8399999999999999 Profit ac 11.34 erros 0 action 0 .......
Profit -2 Profit ac 9.34 erros 1 action 0 ...............
Profit 13.5 Profit ac 22.84 erros 0 action 1 ...............
Profit -2 Profit ac 20.84 erros 1 action 0 ...............
Profit 4.2 Profit ac 25.04 erros 0 action 1 ...............
Profit 5.0 Profit ac 30.04 erros 0 action 1 ...............
Profit 3.9000000000000004 Profit ac 33.94 erros 0 action 1 ........
Profit 2.3 Profit ac 36.239999999999995 erros 0 action 2 .........
Profit 0.79999999999999 Profit ac 37.03999999999999 erros 0 action 0 
Profit 2.40000000000000 Profit ac 39.43999999999999 erros 0 action 2 
Profit 0.799999999999999 lucro ac 40.23999999999999 erros 0 action 0 
Profit -2 Profit ac 38.23999999999999 erros 1 action 0 ............
Profit 5.0 Profit ac 43.23999999999999 erros 0 action 0 ............
Profit 1.2999999999999 Profit ac 44.539999999999985 erros 0 action 0 
Profit 3.3 Profit ac 47.83999999999998 erros 0 action 0 ............
Profit 3.4000000000000 Profit ac 51.23999999999998 erros 0 action 0 
Profit -2 Profit ac 49.23999999999998 erros 1 action 0 ............
Profit 0.56 Profit ac 49.79999999999998 erros 0 action 0 ..........
Profit 5.4 Profit ac 55.19999999999998 erros 0 action 0 ...........
Profit 2.3 Profit ac 57.49999999999998 erros 0 action 0 ...........
Profit 5.8 Profit ac 63.299999999999976 erros 0 action 1 ..........
Profit 5.0 Profit ac 68.29999999999998 erros 0 action 1 ...........
Profit -2 Profit ac 66.29999999999998 erros 1 action 0 .............
Profit 1.14000000000000 Profit ac 67.43999999999998 erros 0 action 0 
Profit -2 Profit ac 65.43999999999998 erros 1 action 1 .............
Profit 0.72000000000000 Profit ac 66.15999999999998 erros 0 action 0 
Profit 16.0 Profit ac 82.15999999999998 erros 0 action 1 ...........

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

Вывод

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

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

Если вы хотите узнать больше, свяжитесь со мной в LinkedIn! Https://www.linkedin.com/in/octavio-b-santiago/