My Blog

강화학습(벨만 방정식)


벨만 방정식의 정의

강화학습에서 벨만 방정식은 미래에 얻을 수 있는 보상의 가치를 추정하는 데 사용됩니다. 이 방정식은 현재의 상태에서 취할 수 있는 행동이 미래에 어떻게 보상을 가져올지 계산하는 데 핵심적인 역할을 합니다. 강화학습의 목표는 최대한의 보상을 얻는 것이므로, 벨만 방정식은 이를 달성하기 위한 중요한 도구입니다. 벨만 방정식은 어느 한 시점 t에서의 밸류(가치)와 그 다음 시점 t+1에서의 밸류 사이의 관계를 다루고 있고, 또한 가치함수와 정책함수 사이의 관계도 다루고 있으므로, 벨만 방정식을 공부하게 되면 가치함수와 정책함수의 의미를 좀더 정확히 이해하는 데 도움이 될 것입니다. 벨만 방정식은 두 가지 주요 형태가 있습니다: 가치 함수를 위한 벨만 기대 방정식과 최적 가치 함수를 위한 벨만 최적 방정식입니다.

재귀함수

벨만 방정식은 재귀 함수를 사용하는데, 재귀함수는 자기 자신을 호출하는 함수입니다. 이러한 함수는 대개 문제를 더 작고 관리하기 쉬운 하위 문제로 나누어 해결하는 분할 정복 전략을 사용합니다. 재귀함수의 가장 중요한 특징은 두 가지인데, 하나는 자기 자신을 호출하는 부분이고, 다른 하나는 재귀 호출을 멈추게 만드는 종료 조건입니다. 재귀함수는 코드를 간결하고 이해하기 쉽게 만들 수 있지만, 잘못 사용하면 메모리 사용이 과도해지거나 성능 문제를 일으킬 수 있습니다. 따라서 재귀를 사용할 때는 종료 조건이 명확해야 하며, 함수의 호출 횟수에 주의해야 합니다. 피보나치 수열은 재귀함수를 이해하기 좋은 예시입니다. 피보나치 수열에서 각 수는 바로 앞의 두 수를 합한 것과 같습니다. 이 수열은 0과 1로 시작하며, 다음 수는 앞의 두 수의 합으로 계속 이어집니다. 예를 들어, 처음 몇 개의 피보나치 수는 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55,... 과 같습니다. 피보나치 수열을 생성하는 재귀함수는 대략적으로 다음과 같이 작성할 수 있습니다: 종료 조건: 수열의 첫 번째 수(0)와 두 번째 수(1)는 각각 0과 1로 정의됩니다. 재귀 단계: n번째 피보나치 수를 구하기 위해서는 (n-1)번째와 (n-2)번째 피보나치 수의 합을 구해야 합니다. 이런 식으로 피보나치 함수는 자신을 두 번 호출하여 각각의 더 작은 피보나치 수를 계산하고, 이 결과를 합쳐 원래 문제의 해결책을 제공합니다. 이는 재귀적 사고방식의 아름다움을 잘 보여주는 예입니다. fib(n) = fib(n-1) + fib(n-2) 하지만 이 방식은 큰 n값에 대해서는 매우 비효율적일 수 있습니다. 왜냐하면 동일한 계산을 여러 번 반복하기 때문입니다. 실제 사용에서는 이를 개선하기 위해 동적 프로그래밍(dynamic programming) 기법을 사용하거나, 계산된 값을 저장하는 메모이제이션 기법을 적용할 수 있습니다.

벨만 기대 방정식 (Bellman Expectation Equation) vs 벨만 최적 방정식 (Bellman Optimality Equation)

이 벨만 기대 방정식은 특정 정책(policy) 하에서 상태의 가치를 평가합니다. 여기서 상태의 가치란, 그 상태에서 시작하여 정책에 따라 행동을 취했을 때 얻을 수 있는 예상되는 누적 보상을 의미합니다. 이 방정식은 현재 위치에서 어떤 정책(규칙 또는 전략)을 따랐을 때 기대할 수 있는 미래의 보상을 계산합니다. 예를 들어, '집에서 출근하는 최적의 경로 찾기' 문제에서, 각 경로마다 걸리는 시간, 교통상황 등을 고려하여 가장 효율적인 길을 선택하는 상황을 생각해 볼 수 있습니다. 벨만 기대방정식을 사용하면, 각 경로를 따라갔을 때 평균적으로 예상되는 시간 소요나 편안함 등을 계산하여, 어떤 경로가 가장 좋은지 판단할 수 있습니다. 이 방정식은 모든 가능한 행동을 고려해서, 그 행동을 취했을 때 받을 수 있는 보상과 그 다음 상태로 넘어갔을 때의 가치를 함께 고려하여, 현재 상태의 가치를 계산합니다. Vπ(s)=∑a π(a∣s)∑s' ,rP(s',r∣s,a)[r+γVπ(s′)] Vπ(s): 상태 s에서 정책 π를 따랐을 때의 가치 π(a∣s): 상태 s에서 행동 a를 선택할 정책의 확률 rP(s′,r∣s,a): 상태 s에서 행동 a를 취했을 때 상태 s'으로 이동하고 보상 r을 받을 확률 r: 보상 γ: 감가율(discount factor), 미래 보상의 현재 가치를 결정 s′: 다음 상태 벨만 기대방정식에서 구하고자 하는 값은 Vπ(s)입니다. Vπ(s)는 현재 상태 s의 밸류(가치)는 리턴(반환되는 값)의 기대값입니다. 이번엔 벨만 최적 방정식 (Bellman Optimality Equation)에 대해 알아보겠습니다. 최적의 행동을 찾기 위해 사용되며, 최적의 정책 하에서 각 상태의 최대 가치를 나타냅니다. 이 방정식은 가능한 최고의 결과를 얻기 위해 어떤 행동을 취해야 하는지 계산합니다. 같은 '집에서 출근하는 경로 찾기' 문제에서, 벨만 최적방정식을 사용하면 모든 가능한 경로 중에서 출근 시간을 최소화하거나 가장 적은 교통 체증을 만나는 최적의 경로를 찾아줍니다. 간단히 말해서, 벨만 기대방정식은 주어진 정책에 따라 어떤 상황에서 얼마나 좋은 결과를 기대할 수 있는지를 계산하는 반면, 벨만 최적방정식은 모든 가능한 선택지 중에서 최고의 결과를 가져올 선택을 찾아내는 데 사용됩니다. 정리하자면, 벨만 최적방정식은 현재 상태에서 가장 좋은 행동을 선택했을 때 얻을 수 있는 '최대 보상의 가치'를 계산합니다. 이 방정식은 모든 가능한 행동 중에서 최고의 보상을 주는 하나의 행동을 찾아내서, 그 행동을 했을 때의 보상과 그로 인해 바뀌는 다음 상태의 가치를 함께 고려합니다. 생활에서의 예로, "집을 구입할 때 최고의 선택을 하는 상황"을 생각할 수 있습니다. 여러 집을 보며 각 집의 위치, 가격, 크기, 환경 등을 평가하여, 전체적으로 가장 가치가 높은 집을 선택합니다. 벨만 최적방정식은 이처럼 가능한 모든 선택 중에서 '최고의 가치'를 주는 선택을 찾아내는 데 도움을 줍니다. V∗(s)=max a ∑s′,r P(s′,r∣s,a)[r+γV∗(s′)] V∗(s): 상태 s에서 최적의 정책을 따랐을 때의 가치 나머지 변수는 위(벨만 기대 방정식)와 동일합니다. 벨만 기대방정식이 Vπ(s), qπ(s,a)에 대한 수식이라면 벨만 최적 방정식은 V스타(s), q스타(s,a)에 대한 수식입니다. 벨만 기대방정식에는 정책이 파이로 고정되었을때의 밸류(가치)에 대한 함수였다면, v스타, q스타는 최적 밸류(optimal value) 최적가치에 대한 함수입니다. 어떠한 MDP가 주어졌을 때 그 환경 안에 존재하는 모든 정책 파이들 중에서 가장 좋은 파이를 선택하여 계산한 밸류가 곧 최적밸류라는 뜻입니다. 쉽게 말하면 MDP에서 가능한 정책의 집합을 파이1, 파이2,,,로 표현한다면 여기서 각각의 정책을 따랐을 때 상태 s의 밸류를 정의할 수 있습니다. 그런 다음 이 값들을 나열합니다. 이 중에서 각 정책마다 최고의 밸류 값이 있을 것이고 이것이 최적 밸류가 됩니다. 그런데 연속적인 상태 s의 상태별로 가장 높은 밸류를 주는 정책이 모두 다르다면, 각 상태 s, s1, s2,,,마다 각기 다른 최고 밸류를 선택하면 되고, 이렇게 만들어진 정책이 우리가 알고자 하는 최적 정책이 됩니다. 모든 상태에서 최적 밸류를 갖게하는 정책이 최소 1개 이상 존재하고 이 정책을 따르면 모든 상태에서 대새 그 어떤 정책보다도 높은 밸류를 얻게 됩니다. 이러한 정책을 우리는 최적 정책(optimal policy)라고 부릅니다. 쉽게 말하면 최적 정책은 모든 정책들 중 가장 좋은 정책을 뜻하고, 다른 정책에 따를때보다 최적의 정책을 따를때 얻는 보상의 총합이 가장 크다는 의미가 됩니다.

모델 프리 vs 모델 기반

보상함수(각 상태에서 액션을 하면 얻는 보상)와 전이확률(각 상태에서 액션을선택하면 다음 상태가 어디가 될지에 관한 확률분포)를 알면 MDP를 안다고 할수 있는데, 위 두가지는 모두 환경의 일부이고, 현실 세계에 적용하고자 할때는 위 두가지를 모르는 경우가 많습니다. 우리가 실생활에서 MDP를 적용하고자 할때 보상함수를 알지 못하기 때문에 실제로 상태 s에서 액션 a를 해보고 경험을 만든 후, 학습해 나가는 수밖에 없습니다. s에서 a1을 했더니 보상 +10을 받더라, s에서 a2를 했더니 보상 -3을 받더라, 하는 경험을 해나간 후, 이를 모아 학습해야 알수 있습니다. 이처럼 MDP에 대한 정보를 모를때 실제로 경험데이터를 쌓아 학습해 나가는 방법을 모델-프리 방식입니다. 모델프리 방식에서는 환경에 대한 명시적인 모델이 없습니다. 즉, 에이전트(agent)는 환경의 동작 방식을 정확히 알지 못하고, 대신 시행착오를 통해 학습합니다. 이 접근 방식에서 에이전트는 행동을 취하고, 그 결과로 보상을 받으며, 이러한 경험을 통해 최적의 행동 전략(정책)을 학습합니다. 모델프리 접근법의 예로는 Q-러닝(Q-Learning)이나 Sarsa 같은 알고리즘이 있습니다. 이 방식은 환경에 대한 사전 지식이 없거나, 환경을 정확히 모델링하기 어려운 경우에 유용합니다. 반대로 보상함수와 전이확률을 안다면 실제로 경험해보지 않고도 머릿속에서 시뮬레이션 해볼수 있고 그것만으로도 강화학습이 가능한 방법을 모델-기반 또는 플래닝 이라고 합니다. 모델기반 접근 방식에서는 환경의 모델을 사용합니다. 여기서 모델이란 환경의 동작 방식을 설명하는 것으로, 이를 통해 에이전트는 다양한 시나리오를 시뮬레이션하여 최적의 행동을 결정할 수 있습니다. 에이전트는 이 모델을 사용하여 미래의 상태와 보상을 예측하고, 이를 기반으로 최적의 행동 전략을 계획합니다. 모델기반 방식은 동적 계획법(Dynamic Programming)이나 몬테카를로 트리 탐색(Monte Carlo Tree Search)과 같은 기법에서 사용됩니다. 이 접근법은 환경에 대한 이해가 비교적 명확할 때, 즉 환경을 모델링할 수 있을 때 잘 작동합니다. 모델프리는 환경에 대한 명시적인 모델 없이 경험을 통해 학습하는 반면, 모델기반은 환경의 모델을 사용하여 미래의 결과를 예측하고 계획을 세우는 방식입니다. 모델프리 방식은 유연하고 구현이 비교적 간단하지만, 때로는 비효율적일 수 있습니다. 모델기반 방식은 환경을 더 잘 이해하고 효율적인 학습이 가능하지만, 정확한 모델을 구축하는 것이 도전적일 수 있습니다. 위 두가지 방법에 모두 사용되는 것이 벨만 방정식입니다. 그래서 강화학습의 핵심인 벨만 방정식을 잘 익혀놓는 것이 중요합니다.

최적의 정책, 최적의 밸류, 최적의 액션 밸류

최적의 정책은 π*(파이 스타)로 표현합니다. 어떠한 MDP라도 최적의 정책은 존재합니다. 최적의 정책이 정의되고 나면 최적 밸류, 최적의 액션 밸류는 다음과 같이 성립합니다. 최적의 밸류는 v*(브이스타)라고 표현합니다. v*(s) = vπ*(s) 최적의 정책 π를 따랐을때의 밸류 최적의 액션 밸류는 q*(큐스타)라고 표현합니다. q*(s,a) = qπ*(s) 최적의 정책 π를 따랐을때의 액션 밸류 다음 장에서는 이들 사이의 재귀적 관계를 나타내는 벨만 최적방정식을 더 자세히 알아보도록 하겠습니다.

벨만 기대방정식과 벨만 최적 방정식의 큰 차이

벨만 기대 방정식은 확률적 요소를 기반으로 하는 기댓값 연산자가 많습니다. 정책과 액션을 선택할 때 확률적 요소, 그리고 환경의 전이확률에 의해 다음 상태를 선택할때의 확률적 요소 이렇게 2개의 확률부분이 들어갑니다. 반면, 벨만 최적 방정식은 이 둘중 정책 파이에 의한 확률적 요소가 사라지고 최대값 max 연산자를 통해 제일 좋은 액션을 선택하게 됩니다. 그래서 확률적 요소가 사라지고 확실한 최댓값 연산자를 사용하게 됩니다.

Blog Home Back to Post List