3. 대부분의 문제에서는 에이전트에게 주어지는 상태가
정말 다양하고 또한 환경이 시간에 따라서 변한다.
이런 경우에 에이전트가 강화학습을 통해 학습하려면 어떻게 해야 할까?
기존의 강화학습 알고리즘에서는 각 상태에 대한 정보를
테이블 형태로 저장했지만
각 상태의 정보를 근사한다면 상태 공간의 크기가 크고
환경이 변해도 학습할 수 있다.
인공신경망을 이용해 큐함수를 근사한 딥살사 알고리즘과
인공신경망으로 정책을 근사하는 REINFORCE 알고리즘을 살펴보자
4. 다이내믹 프로그래밍과는 다르게 몬테카를로, 살사, 큐러닝은
모델 프리로서 환경에 대한 모델 없이 샘플링을 통해 학습한다.
다이내믹 프로그래밍의 한계는 다음과 같이 세 가지이다.
1. 계산 복잡도
2. 차원의 저주
3. 환경에 대한 완벽한 정보가 필요
5. 몬테카를로, 살사, 큐러닝은 3번의 문제를 해결한 것이다.
현재까지 살펴본 강화학습 알고리즘들은 테이블 형식의 강화학습이다.
즉, 모든 상태에 대해 테이블을 만들어놓고
테이블의 각 칸에 큐함수를 적는 형태였다.
그러므로 근본적으로 상태가 적은 문제에만 적용 가능했다.
상태가 많은 문제에 강화학습을 적용하려면
큐함수를 테이블의 형태로 모든 행동 상태에 대해
업데이트하고 저장하던 방식을 바꿔야 한다.
이 문제는 큐함수를 매개변수로 근사함으로써 해결할 수 있다.
기존의 데이터를 매개변수를 통해 근사하는 함수를 근사함수라고 한다.
상태가 많은 문제를 해결하려면 테이블이 아닌
근사함수로 가치함수를 표현해야 한다.
이때 사용할 근사함수가 바로 인공신경망이다.
6. 살사 알고리즘을 사용하되 큐함수를
인공신경망으로 근사하는 알고리즘을 딥살사라고 한다.
딥살사에서 인공신경망을 업데이트하는데 경사하강법을 사용한다.
경사하강법을 사용하려면 오차함수를 정의해야 한다.
가장 보편적인 MSE를 사용한다.
강화학습은 지도학습이 아니기 때문에 정답이 있지 않다.
하지만 다음 식을 보면 정답의 역할을 하는것과
예측에 해당하는 역할을 하는 것이 있음을 알 수 있다.
다음은 살사의 큐함수 업데이트 식이다.
7. 정답의 역할을 하는 것은 다음과 같다.
예측의 역할을 하는 것은 다음과 같다.
이 정답과 예측을 통해 MSE 오차함수를 만들 수 있다.
큐함수를 근사하고 있는 인공신경망을 이 오차함수를 통해
업데이트하는 것이 학습을 하는 것이 된다.
딥살사의 오차함수는 다음과 같다.
8. 또한 딥살사에서 ε-탐욕정책에 사용되는 ε은 시간에 따라서 감소시킨다.
초반에는 에이전트가 탐험을 통해 다양한 상황에 대해서 학습하고
학습이 충분히 이뤄진 후에는 예측하는대로
에이전트가 움직이게 하기 위해서이다.
ε을 더 빨리 감소시킨다면 점수는 더 빨리 수렴할 수도 있다.
하지만 에이전트가 탐험을 덜 하게 되므로
최적으로 수렴하지 않고 엉뚱한 값으로 수렴할 수도 있다.
따라서 ε을 얼마의 크기로 감소시킬지도 잘 정해야 한다.
9. 정책 기반 강화학습
지금까지 다룬 강화학습 알고리즘을 '가치 기반 강화학습'이라고 한다.
에이전트가 가치함수를 기반으로 행동을 선택하고
가치함수를 업데이트하면서 학습을 하기 때문이다.
하지만 다른 방향에서 순차적 행동 결정 문제에 접근하는 방법이 있다.
바로 '정책 기반 강화학습'이다.
정책 기반 강화학습은 가치함수를 토대로 행동을 선택하지 않고
상태에 따라 바로 행동을 선택한다.
정책 기반 강화학습에서는 정책을 직접적으로 근사시킨다.
딥살사에서는 인공신경망이 큐함수를 근사했지만
정책 기반 강화학습에서는 인공신경망이 정책을 근사한다.
인공신경망은 입력으로 상태를 받고 출력으로 정책,
즉 각 행동을 할 확률을 내보낸다.
10. 강화학습의 목표는 누적 보상을 최대로 하는 최적 정책을 찾는 것이다.
정책 기반 강화학습에서는 정책을 직접적으로 근사한다.
정책신경망을 사용하는 경우에 정책신경망의 가중치값에 따라
에이전트가 받을 누적 보상이 달라진다.
즉, 정책신경망의 가중치값이 목표로 하는
누적 보상이라는 함수의 변수인것이다.
정책신경망으로 정책을 근사하기 때문에
θ라는 정책 신경망의 가중치값이 정책을 표현할 수 있다.
다음과 같이 정책을 표현한다.
11. 누적보상은 최적화하고자 하는 목표함수가 되며
최적화 하게 되는 변수는 인공신경망의 가중치값이다.
목표함수 J(θ)를 최적화하려면 목표함수를 미분해서
그 미분값에 따라 정책을 업데이트하면 된다.
딥살사와는 다르게 오차함수를 최소화하는것이 아니라
목표함수를 최대화하는 것이므로
경사상승법(Gradient Ascent)을 사용한다.
목표함수의 경사에 따라 정책신경망을 업데이트하는 식은 다음과 같다.
위 식과 같이 목표함수의 경사상승법을 따라서
근사된 정책을 업데이트하는 방식을 폴리시 그레디언트라고 한다.
12. 만일 에피소드의 끝이 있고 에이전트가 어떤 특정 상태 s_0에서
에피소드를 시작하는 경우에
목표함수는 상태 s_0에 대한 가치함수라고 할 수 있다.
이때 목표함수를 다음과 같이 정의할 수 있다.
위 목표함수의 미분값은 다음과 같다.
폴리시 그레디언트 정리에 따라 위 식을 다음과 같이 표현할 수 있다.
13. 는 s라는 상태에 에이전트가 있을 확률이다.
에이전트의 정책에 따라 전반적으로
각 상태에 에이전트가 있을 확률이 달라진다.
앞 수식의 의미는 가능한 모든 상태에 대해
각 상태에서 특정 행동을 했을 때
받을 큐함수의 기댓값을 의미한다.
에이전트가 에피소드 동안 내릴 선택에 대한
좋고 나쁨의 지표가 되는것이다.
앞 수식의 우변에 를 곱하고 나눠줘도 식은 똑같다.
14. 이때 는 로그함수의 미분법에 의해 가 된다.
이를 반영하면 목표함수의 미분은 다음과 같은 식이 된다.
기댓값은 (확률X받은값)으로 표현된다.
위 식을 보면 이 식 또한 기댓값의 형태로 표현할 수 있다.
는 에이전트가 어떤 상태 s에서 행동 a를 선택할 확률이다.
그러므로 위 식을 다음과 같이 기댓값의 형태로 표헌할 수 있다.
15. 다른 강화학습 알고리즘과 마찬가지로
폴리시 그레디언트에서도 기댓값은 샘플링으로 대체할 수 있다.
결국 에이전트가 정책신경망으로 업데이트하기 위해 구해야 하는 식은
이다.
이 식을 구한다면 정책신경망의 가중치값은
경사상승법에 의해 업데이트 할 수 있다.
폴리시 그레디언트에서 정책을 업데이트하는 식은 다음과 같다.
16. 하지만 폴리시 그레디언트에서는 행동을 선택하는데 가치함수가 필요하지 않다.
따라서 현재 에이전트는 정책만 가지고 있고
가치함수 혹은 큐함수를 가지고 있지 않기 때문에
에서 를 구할 수 없다.
이 문제를 해결하는 가장 고전적인 방법 중 하나는
큐함수를 반환값 로 대체하는 것이다.
큐함수를 반환값으로 대체하는 것이 REINFORCE 알고리즘이다.
17. REINFORCE 알고리즘의 업데이트 식은 다음과 같다.
에피소드가 끝날 때까지 기다리면 에피소드 동안
지나온 상태에 대해 각각의 반환값을 구할 수 있다.
REINFORCE 알고리즘은 에피소드마다 실제로 얻은 보상으로 학습하는
폴리시 그레디언트라고 할 수 있다.
그래서 몬테카를로 폴리시 그레디언트라고도 부른다.