EssayAI
Блог
Блог
Математика и алгоритмы

Уравнение Беллмана: принцип оптимальности простыми словами

19 июня 2026Время чтения: 8 минут
#динамическое программирование#уравнение беллмана#обучение с подкреплением#функция ценности#оптимальное управление
Уравнение Беллмана: принцип оптимальности простыми словами

Уравнение Беллмана - это рекуррентное соотношение, которое связывает ценность текущего состояния с ценностью состояний, в которые можно перейти. Его сформулировал Ричард Беллман в 1950-х как ядро динамического программирования: вместо того чтобы перебирать все возможные траектории целиком, мы разбиваем задачу на шаги и решаем её «с конца». Сегодня уравнение Беллмана - фундамент обучения с подкреплением, оптимального управления и многих алгоритмов на графах. Ниже разберём, откуда берётся рекуррентность, чем функция ценности VV отличается от QQ, и как из уравнения получаются рабочие алгоритмы. Если хотите сразу примерить идею на свою задачу - соберите запрос в форме ниже.

Принцип оптимальности - откуда берётся рекуррентность

В основе лежит принцип оптимальности Беллмана: оптимальная траектория обладает тем свойством, что какова бы ни была первая принятая мысль, оставшийся хвост траектории тоже оптимален относительно состояния, в которое мы попали. Иными словами, оптимальное решение целого складывается из оптимальных решений его частей.

Это и позволяет записать рекуррентность. Пусть V(s)V^*(s) - максимальная суммарная награда, которую можно набрать, стартуя из состояния ss и действуя оптимально. Тогда ценность ss равна лучшему из вариантов «получить немедленную награду за действие плюс ценность того состояния, куда мы перейдём». Длинную задачу про всю траекторию мы свернули в локальное соотношение между соседними состояниями.

Состояние s ветвится на действия a, каждое ведёт в следующее состояние со своей наградой и ценностью
Состояние s ветвится на действия a, каждое ведёт в следующее состояние со своей наградой и ценностью

Уравнение Беллмана для функции ценности V

Для марковского процесса принятия решений уравнение Беллмана оптимальности записывается так:

V(s)=maxa[R(s,a)+γsP(ss,a)V(s)]V^*(s) = \max_{a} \left[ R(s, a) + \gamma \sum_{s'} P(s' \mid s, a)\, V^*(s') \right]

Разберём по частям. R(s,a)R(s, a) - немедленная награда за действие aa в состоянии ss. P(ss,a)P(s' \mid s, a) - вероятность оказаться в состоянии ss'. γ[0,1)\gamma \in [0, 1) - коэффициент дисконтирования: он показывает, насколько мы цените будущее по сравнению с настоящим. При γ\gamma близком к нулю агент жаден и смотрит на шаг вперёд; при γ\gamma близком к единице он терпелив и учитывает далёкую перспективу. Сумма по ss' усредняет ценность следующего состояния по всем исходам.

Если среда детерминированная (действие однозначно ведёт в одно состояние), сумма исчезает и уравнение упрощается:

V(s)=maxa[R(s,a)+γV(ss,a)]V^*(s) = \max_{a} \left[ R(s, a) + \gamma\, V^*(s'_{s,a}) \right]

V против Q - две функции ценности

Рядом с VV почти всегда встречается функция ценности действия Q(s,a)Q^*(s, a) - ожидаемая награда, если в состоянии ss выбрать действие aa, а дальше действовать оптимально:

Q(s,a)=R(s,a)+γsP(ss,a)maxaQ(s,a)Q^*(s, a) = R(s, a) + \gamma \sum_{s'} P(s' \mid s, a)\, \max_{a'} Q^*(s', a')

Связь простая: V(s)=maxaQ(s,a)V^*(s) = \max_a Q^*(s, a). Разница в удобстве. VV отвечает на вопрос «насколько хорошо это состояние», но чтобы выбрать действие, нужно знать модель среды PP и RR. QQ сразу хранит ценность по парам «состояние-действие», поэтому оптимальная политика читается без модели: π(s)=argmaxaQ(s,a)\pi^*(s) = \arg\max_a Q^*(s, a). Именно поэтому Q-обучение так популярно в безмодельном обучении с подкреплением.

Полезно держать в голове, что обе функции описывают одно и то же оптимальное поведение, просто с разной «гранулярностью». VV компактнее: на nn состояний приходится nn чисел. QQ хранит n×mn \times m чисел для mm действий, но взамен снимает необходимость заглядывать в модель при выборе хода. На практике выбор между ними диктуется тем, известна ли среда: если модель PP и RR под рукой - работают с VV и планируют; если агент учится из взаимодействия - удобнее QQ.

Сопоставление двух функций ценности: V оценивает состояние, Q оценивает пару состояние и действие
Сопоставление двух функций ценности: V оценивает состояние, Q оценивает пару состояние и действие

Уравнение Беллмана для фиксированной политики

Уравнение со знаком max\max описывает оптимальное поведение. Но иногда нужно оценить уже заданную политику π\pi - например, чтобы потом её улучшить. Тогда максимум заменяется усреднением по действиям, которые выбирает π\pi:

Vπ(s)=aπ(as)[R(s,a)+γsP(ss,a)Vπ(s)]V^\pi(s) = \sum_{a} \pi(a \mid s) \left[ R(s, a) + \gamma \sum_{s'} P(s' \mid s, a)\, V^\pi(s') \right]

Это уравнение Беллмана для оценки политики (Bellman expectation equation). Для конечного числа состояний оно превращается в систему линейных уравнений и решается напрямую. А чередуя оценку политики с её жадным улучшением, получаем классический алгоритм итерации по политике (policy iteration).

Как из уравнения получаются алгоритмы

Уравнение Беллмана - не только формула, но и рецепт вычисления. Поскольку VV^* является неподвижной точкой оператора Беллмана, к ней можно сходиться итерациями. Метод итерации по ценности (value iteration) делает это прямолинейно: начинаем с произвольных V0V_0 и многократно применяем правую часть уравнения как оператор обновления:

Vk+1(s)=maxa[R(s,a)+γsP(ss,a)Vk(s)]V_{k+1}(s) = \max_{a} \left[ R(s, a) + \gamma \sum_{s'} P(s' \mid s, a)\, V_k(s') \right]

Оператор Беллмана является сжимающим отображением с коэффициентом γ\gamma, поэтому последовательность VkV_k гарантированно сходится к единственной VV^*. На практике итерации обрывают, когда максимальное изменение ценности по всем состояниям становится меньше малого порога. Та же идея «разбить на подзадачи и собрать с конца» лежит и в основе алгоритмов на графах - например, в алгоритме Беллмана-Форда для кратчайших путей или в задаче о рюкзаке, где функция ценности - это максимальная стоимость при заданной вместимости.

Итерация по ценности: значения в клетках сетки постепенно подтягиваются к оптимальным от шага к шагу
Итерация по ценности: значения в клетках сетки постепенно подтягиваются к оптимальным от шага к шагу

Маленький пример на пальцах

Возьмём детерминированную среду из трёх состояний в линию: ABCA \to B \to C, где CC - терминальное с наградой за вход +10+10, а переходы ABA \to B и BCB \to C дают награду 00. Пусть γ=0,9\gamma = 0{,}9. Тогда:

V(C)=0V(B)=0+0,9V(C)+10=10V(A)=0+0,9V(B)=9\begin{aligned} V^*(C) &= 0 \\ V^*(B) &= 0 + 0{,}9 \cdot V^*(C) + 10 = 10 \\ V^*(A) &= 0 + 0{,}9 \cdot V^*(B) = 9 \end{aligned}

Ценность AA получилась меньше ценности BB именно из-за дисконтирования: до награды из AA идти на шаг дольше, поэтому будущие +10+10 обесцениваются множителем γ\gamma. Поменяйте γ\gamma - и расклад ценностей сместится: чем терпеливее агент, тем ближе ценности дальних состояний к награде в конце.

Обратите внимание на порядок вычисления: мы посчитали ценности с конца - сначала терминальное CC, затем BB, затем AA. Это и есть динамическое программирование в чистом виде: рекуррентность Беллмана позволяет получить ответ за один проход в обратном порядке, не перебирая траектории. Когда среда содержит циклы и однозначного «конца» нет, прямой проход с конца невозможен - там и выручает итеративный метод: мы применяем оператор Беллмана многократно, пока ценности не перестанут меняться, и сходимость гарантирует сжимаемость оператора.

Частые ошибки

  • Путают VV и QQ. V(s)V(s) оценивает состояние, Q(s,a)Q(s, a) - пару состояние-действие. Чтобы выбрать действие по VV, нужна модель среды; по QQ - нет.
  • Берут γ=1\gamma = 1 в бесконечном горизонте. Без дисконта (или терминальных состояний) сумма наград расходится, и уравнение теряет единственное решение. Для эпизодических задач γ=1\gamma = 1 допустимо.
  • Путают уравнение оптимальности и уравнение оценки политики. Со знаком max\max - про оптимальное поведение, с усреднением по π\pi - про оценку конкретной политики.
  • Считают, что одной итерации хватит. Value iteration сходится в пределе; нужно повторять обновление до стабилизации ценностей, а не применять формулу один раз.
  • Забывают про дисконт в немедленной награде. Множитель γ\gamma стоит только перед будущей ценностью V(s)V(s'), а не перед R(s,a)R(s, a) текущего шага.

FAQ

Чем уравнение Беллмана отличается от принципа оптимальности? Принцип оптимальности - это словесная идея: хвост оптимальной траектории сам оптимален. Уравнение Беллмана - её математическая запись в виде рекуррентного соотношения между ценностями соседних состояний.

Почему в уравнении стоит коэффициент дисконтирования γ\gamma? Он задаёт, насколько агент ценит будущие награды относительно текущих, и одновременно гарантирует сходимость суммы наград в задачах с бесконечным горизонтом. При γ<1\gamma < 1 оператор Беллмана становится сжимающим, что обеспечивает единственное решение.

Как уравнение Беллмана связано с обучением с подкреплением? Q-обучение и SARSA - это способы приближённо решать уравнение Беллмана для QQ по выборкам опыта, без явной модели среды. Обновление Q-значения буквально подтягивает оценку к правой части уравнения Беллмана.

Коротко

Уравнение Беллмана сворачивает задачу про оптимальную траекторию в локальную рекуррентность: ценность состояния равна лучшей немедленной награде плюс дисконтированная ценность следующего состояния. Через функцию VV оно оценивает состояния, через QQ - пары состояние-действие, а как сжимающий оператор задаёт сходящиеся алгоритмы итерации по ценности и по политике. Это общий мостик между динамическим программированием, оптимальным управлением и обучением с подкреплением.

Доверьте текст нейросети EssayAI

Открыть EssayAI

Бесплатно, на русском языке и без VPN

Читайте также