Найпростішим рішенням є просто зробити кожну дію "законною", але здійснити послідовне, детерміноване відображення від потенційно протизаконних дій до різних юридичних дій. Щоразу, коли реалізація РРО, яку ви використовуєте, вибирає протизаконну дію, ви просто замінюєте її на юридичну дію, на яку вона відображається. Ваш алгоритм РРО може все-таки оновити себе так, як ніби було обрано протизаконну дію (протизаконна дія просто стає схожою на ... "прізвисько" для легальної дії.
Наприклад, у ситуації, яку ви описуєте:
- 2 дії (0 і 1) завжди доступні
- 2 дії (2 і 3) доступні лише тоді, коли Internal_state == 0
- 1 дія (4) доступна лише тоді, коли Internal_state == 1
У випадках internal_state == 0
, якщо, якщо 4
було обрано дію (незаконна дія), ви завжди можете замінити її на одну з інших дій і грати на неї. Насправді не важливо (теоретично), який саме ви обираєте, доки ви послідовно ставитеся до цього. Алгоритм не повинен знати, що він обрав протизаконну дію, кожен раз, коли він повторює ту саму незаконну дію в майбутньому знову в подібних станах, він послідовно буде заміщений на ту саму юридичну дію, тому ви просто підкріплюєте відповідно до такої поведінки.
Описане вище рішення є дуже простим, мабуть, найпростішим у виконанні, але, звичайно, воно ... "пахне" трохи "хакі". Більш чітке рішення передбачає крок в Мережі, який встановлює ймовірні результати незаконних дій до , а реорганізує решту, щоб підсумовувати ще раз . Для цього потрібно набагато більше уваги, щоб переконатися, що ваші оновлення навчання все-таки виконуються правильно, і, ймовірно, набагато складніші для впровадження поверх існуючих рамок, таких як Tensorforce (якщо вони вже не якось підтримуються там, де не виходить).01
Для першого "рішення" я писав вище, що "теоретично" не має значення, як ви обираєте картування. Я абсолютно очікую, що ваш вибір тут вплине на швидкість навчання на практиці. Це тому, що на початкових етапах вашого навчального процесу ви, швидше за все, будете вибирати близькі до випадкових дій. Якщо деякі дії "з'являться декілька разів" у висновках, вони матимуть більшу ймовірність бути обраними при початковому виборі дій закриття tor-andom. Отже, це вплине на вашу початкову поведінку, що вплине на досвід, який ви збираєте, що, в свою чергу, також вплине на те, що ви дізнаєтесь.
Я, безумовно, сподіваюся, що це буде корисно для продуктивності, якщо ви зможете включити функцію введення internal_state
змінної.
Якщо можна визначити деякі юридичні дії, які якимось чином "семантично близькі" до певних протиправних дій, це також може бути корисним для виконання, щоб спеціально з'єднати ті "подібні" дії в "відображенні" від незаконних до законних дій, якщо ви вирішите піти з це рішення. Наприклад, якщо у вас є дія "стрибок вперед", яка стає незаконною в штатах, де стеля дуже низька (тому що ви б'єте головою), можливо, буде краще відобразити цю дію на дію "рухатися вперед" (яка як і раніше схоже, вони обидва йдуть вперед), ніж було б відобразити це на дію "рухатись назад". Ця ідея "подібних" дій буде застосовна лише для певних доменів, хоча в деяких областях може не бути подібних дій між діями.