🤖 Навігатор робота — ітерація значень MDP наживо
Спостерігайте, як справжня ітерація значень марковського процесу прийняття рішень наживо поширює значення станів у симульованому світі сітки, збігаючись до справжньої оптимальної політики навігації через оновлення оптимальності Беллмана.
Про цю симуляцію
Цей симулятор реалізує справжній марковський процес прийняття рішень, розв'язаний за допомогою ітерації значень — модельного методу динамічного програмування, що лежить в основі майже кожного іншого алгоритму навчання з підкріпленням. Робот у світі сітки перебуває в одному зі стану; кожна дія, яку він може виконати, має відомий, можливо стохастичний результат, і кожен перехід несе відому винагороду. Замість того, щоб дозволити агенту блукати світом методом спроб і помилок, ітерація значень одразу розмірковує про весь простір станів: кожен синхронний прохід застосовує оновлення оптимальності Беллмана до всіх станів одночасно, поширюючи інформацію про винагороду цілі назад по сітці на один крок за прохід, доки функція значення не перестане змінюватися і оптимальну політику можна буде прочитати безпосередньо з неї.
🔬 Що показано
Сітка станів, кожен з яких відображається як забарвлена клітинка, колір якої кодує її поточну оцінку значення V(s). На кожному проході V(s) ← max_a Σ_s' P(s'|s,a)[R(s,a,s') + γV(s')] застосовується до всіх нетермінальних станів одночасно — це справжнє рівняння оптимальності Беллмана, а не наближення. Живий графік у логарифмічному масштабі показує максимальну зміну значення за прохід, яка зменшується до нуля в міру збіжності проходів. Після збіжності стрілки, накладені на кожну клітинку, показують вилучену оптимальну політику π(s) = argmax_a Q(s,a), а кнопка «Проїхати за оптимальною політикою» надсилає агента з початкової клітинки до цілі, вибираючи фактичний стохастичний перехід на кожному кроці.
🎮 Як користуватися
Налаштуйте коефіцієнт дисконтування γ, надійність переходу P(намічений) (імовірність того, що дія вдається як заплановано, а не відхиляється на 90° ліворуч чи праворуч), вартість кроку та штраф за удар об перешкоду — кожна зміна скидає функцію значення, щоб ви могли спостерігати її нову збіжність під новим MDP. Оберіть готовий варіант перешкод (Розріджений, Стіна, Лабіринт, Випадковий) або клацніть будь-яку клітинку, щоб перемкнути її як перешкоду. Використовуйте «Запустити проходи» для безперервної ітерації, «Крок ×1» для просування на одне оновлення Беллмана за раз та «Проїхати за оптимальною політикою», щоб спостерігати, як робот навігує, використовуючи збіжну політику.
💡 Чи знали ви?
Оскільки оператор оптимальності Беллмана є γ-стисканням у max-нормі, ітерація значень математично гарантовано збігається до єдиної оптимальної функції значення незалежно від початкових значень — симуляція ініціалізує кожне V(s) нулем і все одно доходить до правильної відповіді. Саме ця гарантія збіжності і є причиною, чому ітерація значень (та її близький родич, ітерація політики) залишаються еталонними підручниковими рішеннями, за якими оцінюють безмодельні методи на кшталт Q-навчання.
Часті питання
Що таке ітерація значень марковського процесу прийняття рішень (MDP), якщо точніше?
Ітерація значень — це модельний алгоритм динамічного програмування для розв'язання марковського процесу прийняття рішень (MDP): простір станів S, простір дій A, відома модель переходів P(s'|s,a), функція винагороди R(s,a,s') та коефіцієнт дисконтування γ. Починаючи з довільної функції значення V(s), він багаторазово застосовує оновлення оптимальності Беллмана V(s) ← max_a Σ_s' P(s'|s,a)[R(s,a,s') + γV(s')] до всіх станів одночасно (синхронний прохід). Оскільки це оновлення є стискаючим відображенням при γ<1, повторні проходи доведено збігаються до єдиної оптимальної функції значення V*, з якої безпосередньо можна прочитати оптимальну політику π*(s) = argmax_a Σ_s' P(s'|s,a)[R(s,a,s') + γV*(s')].
Чим це відрізняється від Q-навчання чи іншого безмодельного навчання з підкріпленням?
Ітерація значень є модельною: вона вимагає, щоб імовірності переходів P(s'|s,a) та функція винагороди R(s,a,s') були відомі заздалегідь, і обчислює точне математичне сподівання за кожним можливим результатом кожної дії в кожному стані на кожному проході — жодної симуляції чи дослідження середовища взагалі не потрібно. Q-навчання (розглянуте в окремій симуляції навчання з підкріпленням на цьому сайті) є безмодельним: агент не знає P чи R заздалегідь, тож він повинен реально діяти в середовищі, спостерігати вибіркові переходи (s, a, r, s') і поступово оновлювати Q(s,a) за правилом часової різниці Q(s,a) ← Q(s,a) + α[r + γ·max_a' Q(s',a') − Q(s,a)]. Ітерація значень збігається до точного V* за обмежену кількість проходів за наявності моделі; Q-навчання збігається лише асимптотично, через дослідження методом спроб і помилок, і взагалі не потребує явної моделі переходів. Ця симуляція навмисно реалізує модельний випадок, щоб чітко розрізнити ці два сімейства алгоритмів.
Чому переходи сітки стохастичні, а не детерміновані?
Реальні роботи та фізичні агенти рідко виконують дію ідеально — колеса ковзають, датчики дрейфують, а підлога нерівна. Ця симуляція моделює це класичною стохастичною моделлю переходів: вибір руху в заданому напрямку вдається з імовірністю P(намічений) (можна налаштувати, за замовчуванням 0.80), а решта ймовірності порівну розподіляється між відхиленням на 90° ліворуч і на 90° праворуч від наміченого напрямку. Оновлення Беллмана підсумовує всі три можливі результати, зважені за їхніми ймовірностями, що якраз і робить це справжнім MDP, а не детермінованим пошуком найкоротшого шляху — оптимальна політика мусить враховувати ризик небажаного зісковзування в стіну чи перешкоду.
Як компоненти винагороди (винагорода за ціль, штраф за перешкоду, вартість кроку) формують оптимальну політику?
Три складові винагороди разом визначають R(s,a,s'): невелика негативна вартість кроку (за замовчуванням −0.04), що стягується за кожен нетермінальний рух і підштовхує оптимальну політику до коротших шляхів; штраф за удар об перешкоду/стіну (за замовчуванням −0.75), що стягується щоразу, коли перехід блокується стіною, перешкодою чи межею сітки, і підштовхує політику зберігати запас безпеки навколо перешкод, особливо коли переходи зашумлені; та термінальна винагорода за ціль (+1), отримана при вході в клітинку цілі, що взагалі й робить досягнення цілі вартим уваги. Ітерація значень поширює всі три складові через оновлення Беллмана, тож клітинки поблизу цілі першими набувають високих значень, і цей сигнал високого значення поширюється назад, прохід за проходом, доки кожен досяжний стан не отримає точну оцінку своєї довгострокової очікуваної віддачі.
Як я можу дізнатися, що функція значення дійсно збіглася?
Кожен синхронний прохід записує максимальну абсолютну зміну значення будь-якого стану, max_s |V_new(s) − V_old(s)|, і симуляція будує графік цієї величини в логарифмічному масштабі залежно від номера проходу. Оскільки оператор оптимальності Беллмана є γ-стисканням, ця послідовність максимальних дельт гарантовано монотонно зменшується до нуля; симуляція оголошує збіжність, щойно значення падає нижче 1e-4. У цей момент V(s) перебуває в межах невеликої, обмеженої похибки від справжнього V*(s), а жадібна політика, вилучена з нього, π(s) = argmax_a Q(s,a), є оптимальною політикою для налаштованого MDP.
Чи змінює коефіцієнт дисконтування γ щось більше, ніж просто числові значення?
Так. γ контролює, наскільки на значення стану впливають винагороди через багато кроків у майбутньому: при γ, близькому до 1, віддалені винагороди за ціль поширюються майже без ослаблення по всій сітці, тож оптимальна політика планує далеко наперед і готова робити довші, безпечніші обходи перешкод. При γ, ближчому до 0.5, майбутні винагороди дисконтуються різко, тож політика стає короткозорою — вона може прийняти коротший, але ризикованіший шлях повз перешкоду, бо дисконтована цінність досягнення цілі на кілька кроків пізніше не набагато перевищує цінність досягнення її на крок раніше. γ також контролює швидкість збіжності: менше γ змушує оператор Беллмана стискати швидше, тож нижчі коефіцієнти дисконтування зазвичай збігаються за меншу кількість проходів.
Сітка станів розв'язується синхронними оновленнями оптимальності Беллмана: V(s) ← max_a Σ P(s'|s,a)[R(s,a,s') + γV(s')], зі стохастичною моделлю переходів (80% намічений, 10%/10% відхилення ліворуч/праворуч за замовчуванням) та функцією винагороди з винагороди за ціль, штрафу за перешкоду та вартості кроку. Живий графік збіжності; оптимальна політика вилучається та проїжджається після збіжності.
3D · рушій Three.js / WebGL · ціль 60 FPS · працює повністю на клієнті, без встановлення