Як реалізувати обмежений простір дій у навчанні підкріплення?


13

Я кодую навчальну модель підкріплення агентом РРО завдяки дуже гарній бібліотеці Tensorforce , побудованій на вершині Tensorflow.

Перша версія була дуже простою, і тепер я занурююсь у складніші умови, коли всі дії недоступні на кожному кроці.

Скажімо, існує 5 дій, і їх наявність залежить від внутрішнього стану (який визначається попередньою дією та / або новим станом / простором спостереження):

  • 2 дії (0 і 1) завжди доступні
  • 2 дії (2 і 3) доступні лише тоді, коли Internal_state == 0
  • 1 дія (4) доступна лише тоді, коли Internal_state == 1

Отже, доступні 4 дії, коли Internal_state == 0 і 3 дії, коли Internal_state == 1.

Я думаю про декілька можливостей для цього:

  1. Змінюйте простір дій на кожному кроці, залежно від Internal_state. Я припускаю, що це нісенітниця.
  2. Не робіть нічого: нехай модель розуміє, що вибір недоступної дії не впливає.
  3. Робіть - майже все - нічого: негативно впливайте на винагороду, коли модель вибирає недоступну дію.
  4. Допоможіть моделі: включивши ціле число в простір стану / спостереження, який інформує модель, яке значення є внутрішнім станом + точка кулі 2 або 3

Чи є інші способи цього здійснити? З вашого досвіду, хто з них був би найкращим?

Відповіді:


5

Найпростішим рішенням є просто зробити кожну дію "законною", але здійснити послідовне, детерміноване відображення від потенційно протизаконних дій до різних юридичних дій. Щоразу, коли реалізація РРО, яку ви використовуєте, вибирає протизаконну дію, ви просто замінюєте її на юридичну дію, на яку вона відображається. Ваш алгоритм РРО може все-таки оновити себе так, як ніби було обрано протизаконну дію (протизаконна дія просто стає схожою на ... "прізвисько" для легальної дії.

Наприклад, у ситуації, яку ви описуєте:

  • 2 дії (0 і 1) завжди доступні
  • 2 дії (2 і 3) доступні лише тоді, коли Internal_state == 0
  • 1 дія (4) доступна лише тоді, коли Internal_state == 1

У випадках internal_state == 0, якщо, якщо 4було обрано дію (незаконна дія), ви завжди можете замінити її на одну з інших дій і грати на неї. Насправді не важливо (теоретично), який саме ви обираєте, доки ви послідовно ставитеся до цього. Алгоритм не повинен знати, що він обрав протизаконну дію, кожен раз, коли він повторює ту саму незаконну дію в майбутньому знову в подібних станах, він послідовно буде заміщений на ту саму юридичну дію, тому ви просто підкріплюєте відповідно до такої поведінки.


Описане вище рішення є дуже простим, мабуть, найпростішим у виконанні, але, звичайно, воно ... "пахне" трохи "хакі". Більш чітке рішення передбачає крок в Мережі, який встановлює ймовірні результати незаконних дій до , а реорганізує решту, щоб підсумовувати ще раз . Для цього потрібно набагато більше уваги, щоб переконатися, що ваші оновлення навчання все-таки виконуються правильно, і, ймовірно, набагато складніші для впровадження поверх існуючих рамок, таких як Tensorforce (якщо вони вже не якось підтримуються там, де не виходить).01


Для першого "рішення" я писав вище, що "теоретично" не має значення, як ви обираєте картування. Я абсолютно очікую, що ваш вибір тут вплине на швидкість навчання на практиці. Це тому, що на початкових етапах вашого навчального процесу ви, швидше за все, будете вибирати близькі до випадкових дій. Якщо деякі дії "з'являться декілька разів" у висновках, вони матимуть більшу ймовірність бути обраними при початковому виборі дій закриття tor-andom. Отже, це вплине на вашу початкову поведінку, що вплине на досвід, який ви збираєте, що, в свою чергу, також вплине на те, що ви дізнаєтесь.

Я, безумовно, сподіваюся, що це буде корисно для продуктивності, якщо ви зможете включити функцію введення internal_stateзмінної.

Якщо можна визначити деякі юридичні дії, які якимось чином "семантично близькі" до певних протиправних дій, це також може бути корисним для виконання, щоб спеціально з'єднати ті "подібні" дії в "відображенні" від незаконних до законних дій, якщо ви вирішите піти з це рішення. Наприклад, якщо у вас є дія "стрибок вперед", яка стає незаконною в штатах, де стеля дуже низька (тому що ви б'єте головою), можливо, буде краще відобразити цю дію на дію "рухатися вперед" (яка як і раніше схоже, вони обидва йдуть вперед), ніж було б відобразити це на дію "рухатись назад". Ця ідея "подібних" дій буде застосовна лише для певних доменів, хоча в деяких областях може не бути подібних дій між діями.


2

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

Варіанти дизайну, перелічені у запитанні

Ці параметри перераховані тут для швидкого ознайомлення при читанні початкового аналізу нижче.

  • Змінюйте простір дій на кожному кроці, залежно від Internal_state. Я припускаю, що це нісенітниця.
  • Не робіть нічого: нехай модель розуміє, що вибір недоступної дії не впливає.
  • Робіть - майже все - нічого: негативно впливайте на винагороду, коли модель вибирає недоступну дію.
  • Допоможіть моделі: включивши ціле число в простір стану / спостереження, який інформує модель, яке значення є внутрішнім станом + точка кулі 2 або 3

Початковий аналіз

Дійсно розумно змінювати простір дій для кожного ходу. Це, власне, належне уявлення про проблему, про яку йдеться, і нормальний спосіб, коли люди грають в ігри та те, як комп’ютери б'ють людей у ​​Chess and Go.

Очевидна безглуздість цієї ідеї - це лише артефакт прогресу по дорожній карті проекту "Tensorforce" та прогресу в теорії підкріплення, як молодих у більшій картині. Читаючи документацію Tensorforce та поширені запитання, не здається, що рамка створена для підключення до двигуна правил для визначення простору дій. Це не недолік відкритого коду. Здається, не існує жодних робіт, які б пропонували теорію або пропонували алгоритми для прийняття правилами ланцюгового рішення Маркова.

Варіант "нічого робити" - це той, який вписується в існуючі наявні стратегії, представлені в літературі. Мабуть, майже нічого - це, мабуть, той підхід, який створить більш надійну і, можливо, більш негайну бажану поведінку.

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

    a. Represent rule-conditioned learning in nomenclature
    b. Represent convergence mathematically using the new nomenclature
    c. Determining a method of convergence
    d. Proving convergence
    e. Rechecking
    f. Defining a smooth and efficient algorithm
    g. Providing PAC learning information for planning
    f. Peer review
    g. Extending the classes of the library
    h. Proof of concept with the current problem above
    i. Additional cases and metrics comparing the approach with the others
    j. Extending the library flexibility to support more such dev

Розширення систем навчання на предмет обмеженого правила є чудовою ідеєю для кандидатської дисертації і може працювати в науково-дослідних лабораторіях як проектна пропозиція з багатьма можливими заявками. Не дозволяйте всім крокам переконувати дослідника. Вони по суті є переліком етапів будь-якої докторської дисертації або фінансуваного ІІ лабораторного проекту.

Для короткотермінового рішення допомога моделі може спрацювати, але це не є надійною стратегією для просування ідей ШІ на шляху посилення навчання. Як короткострокове рішення певної проблеми, воно може спрацювати чудово. Ідея практично нічого не може бути більш звучною, оскільки вона вписується в докази конвергенції, що призвели до конкретної реалізації, яку, скоріш за все, використовує Tensorforce.

Перейменування його на "майже нічого" для сприяння конвергенції може допомогти виробити правильну перспективу, перш ніж спробувати. Можливо, ви виявите, що вам доведеться послаблювати допомогу, коли ви підходите до конвергенції, щоб уникнути перевиконання так само, як і рівень навчання.


3
Що, наприклад, AlphaGo, полягає в тому, що представлення низького рівня в нейронній мережі представляє дуже великий простір дій, більшість з яких неможливе в поточному стані (це відбувається через обмеження простих NN, які виводять вектори фіксованого розміру ). Потім інша частина коду застосовує фільтр для вибору та нормалізації ймовірностей лише дозволених ходів. Об'єднаний NN і фільтр є частиною агента. Тому справедливо сказати, що агент в цілому "змінить простір дій для кожного кроку" - я не знаю, як цього можна досягти всередині бібліотеки Tensorforce.
Ніл Слейтер

1

Зазвичай набір дій, які може виконати агент, не змінюється з часом, але деякі дії можуть стати неможливими в різних станах (наприклад, не кожен хід можливий у будь-якій позиції гри TicTacToe).

Подивіться як приклад на pice коду https://github.com/haje01/gym-tictactoe/blob/master/examples/base_agent.py :

ava_actions = env.available_actions()
action = agent.act(state, ava_actions)
state, reward, done, info = env.step(action)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.