Вступ до Q-Learning: посилення навчання

Ця стаття є другою частиною моєї серії “Навчання глибокому підкріпленню”. Повна серія буде доступна як на Medium, так і у відео на моєму каналі YouTube.

У першій частині серії ми вивчили основи навчання підкріплення .

Q-навчання - це алгоритм навчання, що базується на цінностях у навчанні на підкріплення. У цій статті ми дізнаємось про Q-Learning та його деталі:

  • Що таке Q-Learning?
  • Математика, що стоїть за Q-навчанням
  • Реалізація за допомогою python

Q-Learning - спрощений огляд

Скажімо, робот повинен перетнути лабіринт і досягти кінцевої точки. Є міни , і робот може рухати лише одну плитку за раз. Якщо робот наступає на міну, робот мертвий. Робот повинен досягти кінцевої точки за найкоротший час.

Система оцінки / винагороди наведена нижче:

  1. Робот втрачає 1 бал на кожному кроці. Це робиться для того, щоб робот пройшов найкоротший шлях і якомога швидше досяг мети.
  2. Якщо робот наступить на міну, втрата очок дорівнює 100 і гра закінчується.
  3. Якщо робот отримує потужність ⚡️, він набирає 1 бал.
  4. Якщо робот досягає кінцевої мети, робот отримує 100 балів.

Тепер очевидне запитання: як нам навчити робота досягати кінцевої мети найкоротшим шляхом, не наступаючи на міну?

Отже, як ми це вирішуємо?

Представляємо таблицю Q

Q-Table - це просто вигадана назва простої таблиці пошуку, де ми обчислюємо максимально очікувані майбутні винагороди за дії в кожному штаті. По суті, ця таблиця допоможе нам здійснити найкращі дії в кожному штаті.

На кожній некрайовій плитці буде чотири дії. Коли робот перебуває в стані, він може рухатися вгору або вниз, або вправо, або вліво.

Отже, давайте змоделюємо це середовище у нашій таблиці Q.

У Q-таблиці стовпці є діями, а рядки - станами.

Кожна оцінка Q-таблиці буде максимально очікуваною майбутньою винагородою, яку робот отримає, якщо виконає такі дії в такому стані. Це ітераційний процес, оскільки нам потрібно вдосконалювати Q-таблицю на кожній ітерації.

Але питання такі:

  • Як ми обчислюємо значення Q-таблиці?
  • Чи доступні чи визначені значення?

Для вивчення кожного значення Q-таблиці ми використовуємо алгоритм Q-Learning.

Математика: алгоритм Q-Learning

Q-функція

Q-функція використовує рівняння Беллмана і приймає два входи: стан ( ів ) і дію ( а ).

Використовуючи наведену вище функцію, ми отримуємо значення Q для клітинок у таблиці.

Коли ми починаємо, усі значення в Q-таблиці є нулями.

Існує ітераційний процес оновлення значень. Коли ми починаємо досліджувати навколишнє середовище , Q-функція дає нам кращі та кращі наближення шляхом постійного оновлення значень Q у таблиці.

Тепер давайте розберемося, як відбувається оновлення.

Представляємо процес алгоритму Q-навчання

Кожна з кольорових коробок - це один крок. Давайте розберемося в кожному з цих кроків детально.

Крок 1: ініціалізуйте таблицю Q

Спочатку ми побудуємо Q-таблицю. Є n стовпців, де n = кількість дій. Є m рядків, де m = кількість станів. Ми ініціалізуємо значення з 0.

У нашому прикладі робота ми маємо чотири дії (a = 4) та п’ять станів (s = 5). Отже, ми побудуємо таблицю з чотирма стовпцями та п’ятьма рядками.

Крок 2 і 3: вибрати та виконати дію

Ця комбінація кроків виконується протягом невизначеного періоду часу. Це означає, що цей крок триває до того часу, поки ми не припинимо тренування, або цикл тренувань не зупиниться, як визначено в коді.

Ми виберемо дію (а) у штаті (штатах) на основі Q-таблиці. Але, як згадувалося раніше, коли епізод спочатку починається, кожне значення Q дорівнює 0.

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

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

На початку показники епсилону будуть вищими. Робот буде досліджувати навколишнє середовище і навмання вибирати дії. Логіка цього полягає в тому, що робот нічого не знає про навколишнє середовище.

Коли робот досліджує навколишнє середовище, швидкість епсилону зменшується, і робот починає експлуатувати навколишнє середовище.

Під час процесу дослідження робот поступово стає більш впевненим в оцінці значень Q.

Для прикладу робота можна вибрати чотири дії : вгору, вниз, вліво та вправо.Зараз ми починаємо навчання - наш робот нічого не знає про навколишнє середовище. Тож робот обирає випадкову дію, скажіть правильно.

Тепер ми можемо оновити Q-значення для того, щоб бути на початку і рухатися вправо, використовуючи рівняння Беллмана.

Крок 4 і 5: оцініть

Тепер ми вжили заходів і спостерігали результат та винагороду. Нам потрібно оновити функцію Q (s, a).

У випадку з роботом-грою, повторити структуру оцінки / винагороди:

  • потужність = +1
  • шахта = -100
  • кінець = +100

Ми будемо повторювати це знову і знову, поки навчання не припиниться. Таким чином Q-таблиця буде оновлена.

Впровадження Python Q-Learning

Поняття та реалізація коду пояснюються в моєму відео.

Підпишіться на мій канал YouTube. Більше відео про AI: ADL .

Нарешті ... давайте підсумуємо

  • Q-Learning - це ціннісний алгоритм навчання, який використовується для пошуку оптимальної політики вибору дій за допомогою функції Q.
  • Наша мета - максимізувати функцію значення Q.
  • Таблиця Q допомагає нам знайти найкращі дії для кожного штату.
  • Це допомагає максимізувати очікувану винагороду, вибираючи найкращі з усіх можливих дій.
  • Q (стан, дія) повертає очікувану майбутню винагороду за цю дію в цьому стані.
  • Цю функцію можна оцінити за допомогою Q-Learning, яке ітеративно оновлює Q (s, a) за допомогою рівняння Беллмана.
  • Спочатку ми досліджуємо довкілля та оновлюємо таблицю Q. Коли Q-таблиця буде готова, агент почне експлуатувати навколишнє середовище і почне вживати кращих дій.

Наступного разу ми попрацюємо над глибоким прикладом Q-навчання .

А до цього часу насолоджуватися ШІ?

Важливо : Як уже зазначалося, ця стаття є другою частиною моєї серії "Навчання глибокому підкріпленню". Повна серія буде доступна як у статтях на Medium, так і у відео на моєму каналі YouTube.

Якщо вам сподобалась моя стаття, натисніть на? t, щоб допомогти мені залишатися мотивованим писати статті. Будь ласка, стежте за мною в Медіумі та інших соціальних мережах:

Якщо у вас є які-небудь питання, будь ласка, повідомте мене про це в коментарі нижче або в Twitter .

Підпишіться на мій канал YouTube, щоб отримувати більше технічних відео.