Епсилон-Жадібний Алгоритм
Алгоритм epsilon-greedy (ε-жадний) — це проста, але надзвичайно ефективна стратегія для розв'язання задачі багаторукого бандита. Хоча він може бути не таким стійким, як деякі інші методи для цієї конкретної задачі, його простота та універсальність забезпечують широку застосовність у сфері навчання з підкріпленням.
Як це працює
Алгоритм виконує такі кроки:
- Ініціалізація оцінок значень дій Q(a) для кожної дії a;
- Вибір дії за наступним правилом:
- З імовірністю ε: вибір випадкової дії (дослідження);
- З імовірністю 1−ε: вибір дії з найвищою оцінкою (експлуатація).
- Виконання дії та спостереження за винагородою;
- Оновлення оцінки значення дії Q(a) на основі отриманої винагороди;
- Повторення кроків 2-4 фіксовану кількість разів.
Гіперпараметр ε (епсилон) визначає баланс між дослідженням і експлуатацією:
- Високе ε (наприклад, 0.5) стимулює більше дослідження;
- Низьке ε (наприклад, 0.01) сприяє експлуатації найкращої відомої дії.
Приклад коду
class EpsilonGreedyAgent:
def __init__(self, n_actions, epsilon):
"""Initialize an agent"""
self.n_actions = n_actions # Number of available actions
self.epsilon = epsilon # epsilon
self.Q = np.zeros(self.n_actions) # Estimated action values
self.N = np.zeros(self.n_actions) # Action selection counters
def select_action(self):
"""Select an action according to the epsilon-greedy strategy"""
# With probability epsilon - random action
if np.random.rand() < self.epsilon:
return np.random.randint(self.n_actions)
# Otherwise - action with highest estimated action value
else:
return np.argmax(self.Q)
def update(self, action, reward):
"""Update the values using sample average estimate"""
# Increasing the action selection counter
self.N[action] += 1
# Updating the estimated action value
self.Q[action] += (reward - self.Q[action]) / self.N[action]
Додаткова інформація
Ефективність алгоритму ε-жадібного вибору значною мірою залежить від значення ε. Дві стратегії зазвичай використовуються для вибору цього значення:
- Фіксоване ε: це найбільш загальний варіант, коли значення ε вибирається як константа (наприклад, 0.1);
- Зменшуване ε: значення ε зменшується з часом відповідно до певного графіка (наприклад, починається з 1 і поступово зменшується до 0), щоб заохочувати дослідження на початкових етапах.
Підсумок
Алгоритм ε-жадібного вибору є базовим підходом для балансування дослідження та використання. Хоча він простий, слугує основою для розуміння більш складних стратегій, таких як upper confidence bound (UCB) та градієнтні бандити.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Can you explain the difference between fixed and decaying epsilon strategies?
How does epsilon-greedy compare to other exploration strategies like UCB?
Can you give a real-world example where epsilon-greedy is used?
Awesome!
Completion rate improved to 2.7
Епсилон-Жадібний Алгоритм
Свайпніть щоб показати меню
Алгоритм epsilon-greedy (ε-жадний) — це проста, але надзвичайно ефективна стратегія для розв'язання задачі багаторукого бандита. Хоча він може бути не таким стійким, як деякі інші методи для цієї конкретної задачі, його простота та універсальність забезпечують широку застосовність у сфері навчання з підкріпленням.
Як це працює
Алгоритм виконує такі кроки:
- Ініціалізація оцінок значень дій Q(a) для кожної дії a;
- Вибір дії за наступним правилом:
- З імовірністю ε: вибір випадкової дії (дослідження);
- З імовірністю 1−ε: вибір дії з найвищою оцінкою (експлуатація).
- Виконання дії та спостереження за винагородою;
- Оновлення оцінки значення дії Q(a) на основі отриманої винагороди;
- Повторення кроків 2-4 фіксовану кількість разів.
Гіперпараметр ε (епсилон) визначає баланс між дослідженням і експлуатацією:
- Високе ε (наприклад, 0.5) стимулює більше дослідження;
- Низьке ε (наприклад, 0.01) сприяє експлуатації найкращої відомої дії.
Приклад коду
class EpsilonGreedyAgent:
def __init__(self, n_actions, epsilon):
"""Initialize an agent"""
self.n_actions = n_actions # Number of available actions
self.epsilon = epsilon # epsilon
self.Q = np.zeros(self.n_actions) # Estimated action values
self.N = np.zeros(self.n_actions) # Action selection counters
def select_action(self):
"""Select an action according to the epsilon-greedy strategy"""
# With probability epsilon - random action
if np.random.rand() < self.epsilon:
return np.random.randint(self.n_actions)
# Otherwise - action with highest estimated action value
else:
return np.argmax(self.Q)
def update(self, action, reward):
"""Update the values using sample average estimate"""
# Increasing the action selection counter
self.N[action] += 1
# Updating the estimated action value
self.Q[action] += (reward - self.Q[action]) / self.N[action]
Додаткова інформація
Ефективність алгоритму ε-жадібного вибору значною мірою залежить від значення ε. Дві стратегії зазвичай використовуються для вибору цього значення:
- Фіксоване ε: це найбільш загальний варіант, коли значення ε вибирається як константа (наприклад, 0.1);
- Зменшуване ε: значення ε зменшується з часом відповідно до певного графіка (наприклад, починається з 1 і поступово зменшується до 0), щоб заохочувати дослідження на початкових етапах.
Підсумок
Алгоритм ε-жадібного вибору є базовим підходом для балансування дослідження та використання. Хоча він простий, слугує основою для розуміння більш складних стратегій, таких як upper confidence bound (UCB) та градієнтні бандити.
Дякуємо за ваш відгук!