함수 근사법(Function Approximation)

 

지금까지 구한 가치 함수(Value Function)는 모두 배열로 만들 수 있는 형태였다. 상태와 상태에 따른 행동이 프로그램으로 관리가 가능한 정도로 숫자가 정해져 있었기 때문이다.

항해 환경을 배열 형태로 표현

그림과 같은 항해 환경을 살펴보자. 시작 지점 S에서 출발해, 중간 지점인 R1, R2, R3를 거쳐 도착 지점 F에 도달하는 구조다. 종료 상태인 F를 제외하면 총 4개의 상태(S, R1, R2, R3)가 존재한다. 각 상태에서 선택할 수 있는 행동은 최대 3가지이며, 이에 따라 전체 상태-행동 쌍의 수는 4 × 3 = 12개가 된다.

오른쪽 그림은 각 상태에서의 행동 가치(Action Values)를 배열로 정리한 것이다. 예를 들어 상태 R1에서는 3가지 행동에 대해 각각 0.2, 0.4, 0.4의 가치가 부여되어 있다. 이처럼 모든 상태와 행동의 조합을 배열로 표현할 수 있다면, 프로그램으로 관리하고 계산하는 데 큰 어려움이 없다.

정책(Policy)은 이러한 행동가치함수로부터 만들어진다. 탐욕적(greedy) 정책은 각 상태에서 가장 큰 행동 가치를 가진 행동을 선택하는데, 이를 수식으로 표현하면 argmax가 된다. , π(s) = argmaxa Q(s, a)로 정의할 수 있다.

하지만 로봇이 걷는 것처럼 복잡하고 연속적인 환경에서는 이야기가 달라진다. 로봇의 관절은 정수가 아닌 실수로 표현되어야 하며, 실수는 무한히 많기 때문에 배열로 모든 경우를 저장하는 것이 불가능하다.

이러한 경우에는 함수 근사(Function Approximation)가 필요하다. 함수 근사를 사용하면 무한하거나 너무 많은 상태나 행동을 함수 형태로 간결하게 표현할 수 있다. 그리고 이 함수는 학습을 통해 조금씩 개선된다.

강화학습에서 함수 근사를 구현하는 데 가장 널리 사용되는 방법은 인공신경망이다. 신경망은 복잡하고 연속적인 입력을 받아들이고, 그에 대한 출력을 학습할 수 있어 배열로는 표현이 어려운 상황에서도 효과적으로 사용될 수 있다.

결론적으로, 상태와 행동이 정해진 경우에는 배열을 통해 쉽게 강화학습 환경을 구성하고 정책을 설계할 수 있지만, 복잡하거나 연속적인 환경에서는 근사함수와 인공신경망 같은 도구를 사용해야 강화학습을 효과적으로 적용할 수 있다.

그림과 같은 항해 환경을 살펴보자. 시작 지점 S에서 출발해, 중간 지점인 R1, R2, R3를 거쳐 도착 지점 F에 도달하는 구조다. 종료 상태인 F를 제외하면 총 4개의 상태(S, R1, R2, R3)가 존재한다. 각 상태에서 선택할 수 있는 행동은 최대 3가지이며, 이에 따라 전체 상태-행동 쌍의 수는 4 × 3 = 12개가 된다.

오른쪽 그림은 각 상태에서의 행동 가치(Action Values)를 배열로 정리한 것이다. 예를 들어 상태 R1에서는 3가지 행동에 대해 각각 0.2, 0.4, 0.4의 가치가 부여되어 있다. 이처럼 모든 상태와 행동의 조합을 배열로 표현할 수 있다면, 프로그램으로 관리하고 계산하는 데 큰 어려움이 없다.

정책(Policy)은 이러한 행동가치함수로부터 만들어진다. 탐욕적(greedy) 정책은 각 상태에서 가장 큰 행동 가치를 가진 행동을 선택하는데, 이를 수식으로 표현하면 argmax가 된다. , π(s) = argmax_a Q(s, a)로 정의할 수 있다.

하지만 로봇이 걷는 것처럼 복잡하고 연속적인 환경에서는 이야기가 달라진다. 로봇의 관절은 정수가 아닌 실수로 표현되어야 하며, 실수는 무한히 많기 때문에 배열로 모든 경우를 저장하는 것이 불가능하다.

이러한 경우에는 함수 근사(Function Approximation)가 필요하다. 함수 근사를 사용하면 무한하거나 너무 많은 상태나 행동을 함수 형태로 간결하게 표현할 수 있다. 그리고 이 함수는 학습을 통해 조금씩 개선된다.

강화학습에서 함수 근사를 구현하는 데 가장 널리 사용되는 방법은 인공신경망이다. 신경망은 복잡하고 연속적인 입력을 받아들이고, 그에 대한 출력을 학습할 수 있어 배열로는 표현이 어려운 상황에서도 효과적으로 사용될 수 있다.

결론적으로, 상태와 행동이 정해진 경우에는 배열을 통해 쉽게 강화학습 환경을 구성하고 정책을 설계할 수 있지만, 복잡하거나 연속적인 환경에서는 근사함수와 인공신경망 같은 도구를 사용해야 강화학습을 효과적으로 적용할 수 있다.

인공신경망을 활용한 항해 환경 표현

항해 환경을 인공신경망을 이용해 표현하면 그림과 같은 구조가 된다. 입력층(Input Layer)에는 상태(S)가 들어오고, 출력층(Output Layer)에는 각 행동에 따른 가치, 즉 행동가치함수(Q 함수)가 출력된다.

우리는 지금까지 행동가치함수 Q를 기반으로 정책을 결정해왔다. 다시 말해, 각 행동의 가치를 비교하여 가장 높은 가치를 가진 행동을 선택하는 방식이었다. 그렇기 때문에 신경망의 출력으로 Q함수를 설정한 것이다.

하지만 반드시 Q함수만 출력해야 하는 것은 아니다. 강화학습에서는 정책 함수(π), 상태가치 함수(V), 행동가치 함수(Q) 중 어떤 것도 신경망의 출력으로 설정할 수 있다. 예를 들어, 정책 기반 방법에서는 π를 직접 출력하기도 하고, 가치 기반 방법에서는 V Q를 출력값으로 사용한다.

인공신경망은 이론적으로 모든 함수를 근사할 수 있는 능력을 가지고 있기 때문에, 어떤 출력값이든 학습을 통해 표현이 가능하다. 다만 이를 위해 필요한 것은 올바른 가중치(w)와 편향(b) 값을 학습을 통해 찾아내는 것이다.

그림에서 보이듯이, 입력 상태 S₁는 여러 개의 은닉 노드(Hidden Layer)를 거쳐 최종 출력값 A₁, A₂, A₃으로 연결된다. 이 출력값은 각각의 행동에 대한 가치를 의미한다. 예를 들어 A₁은 행동 1의 가치, A₂는 행동 2의 가치에 해당하며, 이 중 가장 큰 값을 가지는 행동을 선택하는 것이 바로 정책 결정이다.

이러한 구조 덕분에 인공신경망은 단순한 배열로는 표현하기 어려운 복잡한 상태나 행동 공간에서도 효과적으로 작동할 수 있다. 따라서 연속적인 환경이나 고차원 문제에서 인공신경망은 강화학습의 핵심 도구로 활용된다.

이제 수식을 통해 함수 근사법에 대해 알아보자.

인공신경망을 활용한 함수의 근사

우측에 있는 수식은 지금까지 우리가 공부해온 상태가치함수(Vπ(s))와 행동가치함수(Qπ(s, a))를 배열로 표현한 것이다. 이러한 배열 방식은 상태와 행동의 수가 정해져 있을 때는 매우 유용하다.

하지만 강화학습에서는 상태나 행동이 실수 범위처럼 무한하거나 연속적인 경우가 많다. 이런 경우 배열로 표현하기가 어렵기 때문에, 인공신경망을 활용하여 가치 함수를 근사하게 된다.

좌측에 있는 수식은 인공신경망을 활용해 상태가치함수와 행동가치함수를 근사한 표현이다. 여기서 가중치(w)는 신경망의 연결 강도를 의미하며, 신경망의 출력 결과는 이 가중치에 의해 결정된다.

표현을 정리해 보면 다음과 같다:

ž   v̂(s, w): 인공신경망을 이용해 근사한 상태가치함수

ž   q̂(s, a, w): 인공신경망을 이용해 근사한 행동가치함수

이제 우리는 가치함수를 직접 계산하지 않고, 인공신경망이 출력한 결과를 통해 간접적으로 계산한다. 이때 정확한 출력을 얻기 위해 필요한 것은 신경망을 구성하는 가중치(w)와 편향(b)이다.

강화학습에서의 학습이란 결국 이 가중치와 편향을 조금씩 조정해가며 실제 값에 가까운 출력을 만들도록 만드는 과정이라고 볼 수 있다. 따라서 신경망이 올바르게 학습되기 위해서는 이 파라미터들을 얼마나 잘 업데이트하느냐가 핵심이 된다.

평균제곱오차

함수 근사법을 본격적으로 이해하기 전에, 먼저 평균제곱오차(MSE: Mean Squared Error)의 개념부터 살펴보자.

예를 들어, n개의 값으로 이루어진 변수 v가 있고, 이를 근사한 함수값을 v^ (v hat)라고 하자. 이때 평균제곱오차는 실제 값 v와 근사한 값 v^의 차이를 구하고, 그 차이를 제곱한 후 평균을 구하는 방식으로 계산된다.

이 수식은 두 가지 형태로 표현할 수 있다. 첫 번째는 수열의 합 형태로 나타내는 방식이고, 두 번째는 확률적 기대값(E)을 사용하는 방식이다. 어떤 방식이든 핵심은 같으며, 오차의 크기를 제곱해서 평균을 낸다는 점이다.

여기서 제곱을 사용하는 이유는, 오차가 양수인지 음수인지보다는 그 크기 자체가 중요하기 때문이다. 음수와 양수를 그대로 더하면 상쇄되기 때문에, 오차의 절대적 크기를 반영하기 위해 제곱을 사용하는 것이다.

MSE는 인공지능과 머신러닝에서 예측 값의 정확성을 평가하는 데 가장 널리 사용되는 지표이다. 강화학습에서도 마찬가지로, 가치 함수나 정책 함수를 학습할 때 목표 함수를 MSE 형태로 설정하고, 그 오차를 줄이기 위해 학습을 진행한다.

특히 확률적 경사하강법(SGD)을 사용할 경우, MSE를 최소화하는 방향으로 가중치와 편향을 조정하게 된다. , 학습이란 MSE를 점점 줄여가면서 신경망이 실제 데이터에 더 잘 맞는 출력을 하도록 만드는 과정이라 할 수 있다.

함수 근사법

이제 본격적으로 함수 근사법에 대해 알아보자. 정책 π를 따르는 정확한 가치함수 vπ(s), 즉 식 (1)-1과 같은 '신만이 알 수 있는 이상적인 가치함수'가 존재한다고 가정해보자. 우리는 이 이상적인 가치함수를 인공신경망으로 근사하고자 하며, 인공신경망은 가중치 w를 통해 표현된다.

근사한 가치함수의 정확도를 판단하는 기준은 평균제곱오차(MSE: Mean Squared Error). MSE는 실제 가치함수와 인공신경망이 출력한 근사값의 차이를 제곱한 후 평균을 구한 것으로, 이 오차가 최소화되는 지점을 찾는 것이 우리의 목표다.

MSE를 함수 J(w)로 표현하면, 우리는 J(w)를 최소화하는 가중치 w를 찾아야 한다. 이를 위해 사용하는 것이 바로 경사하강법(GD: Gradient Descent)이다. 경사하강법은 함수의 기울기를 따라 조금씩 이동하면서 최소값을 찾아가는 알고리즘이다.

(2)-1은 경사하강법의 일반적인 표현이며, J(w)에 대해 기울기를 계산하는 방식이다. (2)-2의 기본적인 미분 공식을 사용하면 식 (2)-3과 같이 구체적으로 전개할 수 있다. 이 수식은 가치함수와 인공신경망, 그리고 기대값 E로 표현된다는 점에서 중요하다.

하지만 문제는 기대값 E를 실제 강화학습 환경에서 계산하기가 어렵다는 것이다. 기대값은 모든 가능한 상태에 대해 시뮬레이션하고 평균을 구해야 하는데, 이는 현실적으로 매우 비효율적이고 시간이 많이 든다.

이 문제를 해결하기 위해 사용하는 방법이 통계적 경사하강법(SGD: Stochastic Gradient Descent)이다. 기대값은 평균과 같은 개념이며, 모든 데이터를 사용하지 않고 일부 샘플을 사용해 평균과 유사한 결과를 얻는 방식이다. 이러한 접근은 앞에서 살펴본 몬테카를로 방법과도 유사하다.

SGD를 사용하면 전체 데이터를 사용하는 대신 샘플 하나를 통해 계산을 수행할 수 있으며, 기대값 표현을 제거한 최종 수식 (3)을 얻을 수 있다. 이 수식은 실제 강화학습에서 가장 널리 사용되는 형태이며, 효율적인 학습을 가능하게 한다.

MCTD 활용한 함수 근사법

지금까지 살펴본 '참가치함수(true value function)'이다. 참가치함수는 환경에 대한 완전한 정보를 가지고 있을 때 계산 가능한 정확한 가치 함수다.

하지만 실제 강화학습에서는 환경에 대한 정보를 전부 알 수 없는 경우가 많다. 이런 경우를 모델 프리(Model-Free) 환경이라고 하며, 이때는 참가치함수를 직접 구할 수 없다.

이럴 때 사용할 수 있는 것이 바로 함수 근사와 샘플링 기반의 강화학습 기법들이다. 특히 이전에 살펴본 Monte Carlo(MC) 방식과 Temporal Difference(TD) 방식은 모델 프리 환경에서 유용하게 사용된다.

SGD 수식에서 참가치함수 vπ(st)를 직접 사용하는 대신, 다음과 같이 대체할 수 있다:

ž   MC 방식에서는 에피소드 전체를 기반으로 계산한 반환값 Gt를 사용한다.

ž   TD 방식에서는 한 타임스텝 앞의 보상 Rt+1과 다음 상태에 대한 근사값 v̂(st+1, w)를 이용해를 추정한다.

이처럼 참가치함수를 대체함으로써, MC TD 방식 또한 인공신경망을 활용한 학습에 포함시킬 수 있게 된다. , 신경망을 이용해 가치 함수를 근사하면서도, 직접적인 참가치함수가 없어도 학습이 가능하다.

그림의 수식은 다음 세 가지를 비교해서 보여준다:

기본적인 SGD 수식 (정확한사용)

② MC 방식 (Gt 사용)

③ TD 방식 (Rt+1 + v̂ 사용)

이러한 수식들을 통해 강화학습에서는 다양한 방식으로 SGD를 적용할 수 있으며, 특히 신경망과 함께 사용하면 복잡한 환경에서도 효과적으로 학습할 수 있다.

행동가치함수(Q함수)의 함수 근사법

행동가치함수(Q함수)도 상태가치함수(V함수)와 마찬가지로 함수 근사법을 이용해서 인공신경망으로 표현할 수 있다.

Q함수는 상태와 행동의 쌍 (S, A)에 대한 가치를 추정하는 함수이며, 이를 인공신경망으로 근사하면 복잡한 환경에서도 효과적으로 학습할 수 있다.

이 과정에서도 평균제곱오차(MSE)를 최소화하는 것이 목표이며, 경사하강법을 사용해 손실 함수 J(w)의 최소값을 찾는다. 실제 환경에서는 모든 상태와 행동을 고려하기 어렵기 때문에 확률적 경사하강법(SGD)을 사용해 샘플 하나로도 학습이 가능하도록 수식을 간단하게 만든다.

Q함수의 학습에도 MC(Monte Carlo) 방식과 TD(Temporal Difference) 방식을 적용할 수 있다. MC는 전체 에피소드의 반환값 G를 이용하고, TD는 다음 상태에서의 보상과 근사 Q값을 활용한다.

TD 방식을 인공신경망에 적용하여 학습하는 방법이 바로 DQN(Deep Q Network)이다. DQN은 행동가치함수를 인공신경망으로 근사하고, 다음 상태에서의 Q값을 예측해 TD 타깃을 구성하여 학습을 진행한다.

DQN은 한때 강화학습에서 가장 널리 사용되던 알고리즘 중 하나로, Atari 게임에서 인간 수준을 넘어서는 성능을 보이며 큰 주목을 받았다. 그림에서와 같이 수식이 점차 간단해지며 DQN으로 수렴하는 과정을 통해, 이론이 실제 알고리즘으로 어떻게 적용되는지 확인할 수 있다.


댓글 쓰기

Please Select Embedded Mode To Show The Comment System.*

다음 이전