Чёрный ящик ИИ превратили в логическую программу: новый метод объяснения решений
Учёные предложили способ сделать обученные модели глубокого обучения с подкреплением (deep RL) объяснимыми: они преобразуют нейросеть в исполняемую логическую программу на языке Prolog. Работа опубликована в архиве препринтов arXiv.
Проблема в том, что обученный агент является чёрным ящиком — его решения невозможно проанализировать. Метод решает это в три этапа. Сначала фиксируется обученная политика (PPO-учитель), затем из её решений индуцируется упорядоченный список правил в стиле классического реляционного обучения, и наконец результат выдаётся в виде программы Prolog, которую можно запускать на стандартном логическом движке.
Ключевая особенность — возможность редактировать базу правил. Если после внесения изменений политика не ухудшается, правка принимается. Авторы доказали четыре теоретических гарантии: ограничение на потерю возврата (return-loss bound), монотонное улучшение при расширении и завершаемость цикла редактирования.
Для непрерывных наблюдений показано, что преобразование возможно с любой точностью: при увеличении разрешения B разногласие с исходной сетью падает как O(1/B), а возврат стремится к учительскому. Однако нижняя граница указывает, что в многомерном пространстве число правил растёт экспоненциально.
Эмпирические тесты подтвердили теорию. В задаче с двумя комнатами, дверью и ключом (16 944 достижимых состояний) расширенная Prolog-программа достигла точного оптимального возврата во всех запусках, а при ограниченном бюджете превзошла стохастического учителя в десяти из десяти случаев.
На трёх задачах непрерывного управления — Acrobot, CartPole и LunarLander — программа заменила нейросеть. На Acrobot с 11 правилами результат совпал с учителем в пределах шума, на CartPole восстановлено около 97% возврата. На более сложном LunarLander восстановление оказалось частичным, что соответствует предсказанному экспоненциальному барьеру.
Работа открывает путь к сертифицируемым и объяснимым системам ИИ, где решения можно проверять, редактировать и улучшать как обычный код.



