Модель OCC: 22 эмоции, которые можно запрограммировать
Вчера я рассказал, что Persona использует теорию OCC. Сегодня разберу, что это такое, по статье Кристофа Бартнека и соавторов о связи моделей эмоций и ИИ.
Что такое OCC
В 1988 году психологи Ортони, Клор и Коллинз описали эмоции не через физиологию, а через оценку ситуации. Эмоция — это реакция с валентностью («хорошо» или «плохо») на одну из трёх вещей:
- Последствия событий: насколько событие желательно для моих целей. Отсюда радость, огорчение, надежда, страх, облегчение, разочарование, а также чувства за других: злорадство, сочувствие.
- Поступки агентов: насколько поступок похвален по моим нормам. Отсюда гордость, стыд, восхищение, упрёк.
- Свойства объектов: насколько объект привлекателен. Отсюда симпатия и неприязнь.
Комбинации ветвей дают составные эмоции. Например, благодарность — это восхищение поступком плюс радость от его последствий, а гнев — упрёк плюс огорчение. Всего получается 22 категории. Силу эмоции задают дополнительные переменные: вероятность события, неожиданность, привычность.
Почему её любят программисты
По словам авторов статьи, OCC стала стандартной моделью синтеза эмоций у виртуальных персонажей. Причина понятна: это почти готовый алгоритм. Есть конечный набор критериев, дерево решений и чёткие условия для каждой эмоции. Всё это легко записать в коде или формальной логике.
Подводные камни
Бартнек с соавторами предупреждают о нескольких проблемах:
- Модели нужна модель мира. Чтобы оценить «желательность» события, нужно знать цели персонажа, его нормы, отношения с собеседником. Сама OCC эту информацию не даёт, а построить хорошую модель мира — отдельная задача.
- 22 категории — это много. Персонаж часто не умеет выразить столько оттенков: лицо или голос передают меньше. Авторы советуют оставлять только те эмоции, которые персонаж реально может показать.
- Эмоции без истории. Классическая OCC описывает реакцию на одно событие, но не говорит, как эмоции накапливаются и затухают во времени.
Мой комментарий
Все три проблемы я почувствовал на себе. Модель мира в Persona — это слой отношений (шесть величин на контакт), который стоит до оценки и меняет смысл события. Историю дают слой настроения и затухание живых эмоций. А проблему выражения я решаю тем, что внутри эмоций 24, а наружу языковой модели уходит уже сжатый сигнал: тон и пара доминирующих эмоций.
OCC — отличный скелет, но мясо на нём приходится наращивать самому.