[강화학습 기초 5] 함수 근사: 표 대신 신경망으로 가치를 표현한다
미분, 그래디언트, 경사하강법, SGD를 짚고, 신경망으로 가치함수를 근사하는 방법과 MC · TD 갱신식을 정리합니다.
강화학습 기초 시리즈 · 12편 중 10번째 글
연재 목차 보기
대표가 쓴 『개발자답게 코드로 익히는 강화학습』(프리렉, 2025)의 내용을 블로그에 맞게 정리해 연재합니다.
3장의 Q러닝은 Q값을 표에 담았습니다. 그런데 로봇 관절 각도처럼 상태가 실수라면 표를 만들 수 없습니다. 이때 표 대신 신경망으로 가치함수를 흉내 내는 것이 함수 근사입니다. 함수 근사를 이해하려면 미분과 경사하강법이 필요하니, 필요한 만큼만 짚고 가겠습니다.
미분: 한 점에서의 기울기
자동차가 a시점부터 b시점까지 간 거리를 시간으로 나누면 평균 속도(평균 변화율)입니다. 과속 단속 카메라는 한 지점에서의 속도를 재야 하니, 구간을 0에 가깝게 줄여 순간 속도(순간 변화율)를 구합니다. 이것이 미분입니다.
공식은 필요할 때 찾아 쓰면 됩니다. 이 연재에서 기억할 것은 하나입니다. 미분값의 부호가 함수가 커지는 방향을 알려 준다는 것입니다. f(x) = x²이면 f′(x) = 2x이고, x = 1에서 기울기 2(오른쪽으로 갈수록 커짐), x = −1에서 −2(왼쪽으로 갈수록 커짐)입니다.
편미분과 그래디언트
변수가 여러 개인 함수에서 한 변수만 움직이고 나머지는 고정해 미분하는 것이 편미분입니다. f(x, y) = x² + xy + y²를 x로 편미분하면 2x + y이고, (1, 1)에서 3입니다.
모든 변수에 대한 편미분을 한데 모은 것이 그래디언트(∇f)입니다. 그래디언트는 크기와 방향을 가진 벡터로, 함수 값이 가장 빨리 커지는 방향을 가리킵니다.
| f(x, y) = 2x² + 2y² | ∇f = (4x, 4y) | 뜻 |
|---|---|---|
| (−2, −2)에서 | (−8, −8) | x, y를 줄이는 쪽으로 가면 f가 빠르게 커짐 |
| (1, 1)에서 | (4, 4) | x, y를 키우는 쪽으로 가면 f가 커짐 |
경사하강법
함수가 오차를 나타낸다면, 우리는 가장 작은 지점을 찾아야 합니다. 그래디언트의 반대 방향으로 조금씩 움직이면 됩니다.
J(w)는 오차 함수, w는 신경망의 모든 가중치, α는 한 번에 움직이는 크기(학습률)입니다. 강화학습 자료(특히 데이비드 실버 교수의 강의 자료)에서는 이 표기를 많이 쓰니 익숙해지면 좋습니다. 식 앞에 1/2이 붙어 있는 경우가 있는데, 제곱을 미분할 때 나오는 2를 없애려는 계산상의 편의입니다.
확률적 경사하강법(SGD)은 전체 데이터 대신 일부를 무작위로 뽑아 그래디언트를 구합니다. 한 번은 덜 정확하지만 훨씬 빨라서 여러 번 고칠 수 있습니다. 강화학습에서는 이 "샘플로 평균을 대신한다"는 성질이 아주 유용합니다.
함수 근사: 표 대신 신경망
상태와 행동의 수가 적으면 Q값을 표(배열)에 담을 수 있습니다. 섬 4개, 각 섬에서 행동 3개라면 12칸이면 됩니다. 하지만 상태가 실수이거나 너무 많으면 표를 만들 수 없습니다. 그래서 가중치 w를 가진 신경망으로 가치함수를 흉내 냅니다.
신경망의 입력은 상태, 출력은 행동별 Q값으로 둘 수 있습니다. 출력을 정책이나 상태가치로 둘 수도 있는데, 그 방식은 정책기반 알고리즘에서 다룹니다.
오차를 정하고 경사하강법으로 줄인다
참 가치와 신경망 예측의 차이를 제곱해 평균 낸 것(MSE)을 오차 함수로 정합니다.
여기에 경사하강법을 쓰고, 기댓값(𝔼)은 SGD처럼 샘플 하나로 대신하면 다음 갱신식이 나옵니다.
문제는 참 가치 vπ를 모른다는 것입니다. 그 자리에 3장에서 배운 목표값을 넣습니다.
| 방법 | vπ(S) 대신 넣는 값 |
|---|---|
| MC | 에피소드가 끝난 뒤의 반환값 Gt |
| TD | Rt+1 + γ v̂(St+1, w) |
Q함수도 똑같이 근사할 수 있습니다. 목표값에 Q러닝의 R + γ max Q(S′, a′)를 넣고 신경망으로 Q를 학습하면, 그것이 다음 장의 DQN입니다.