'바닥부터 배우는 강화 학습' 7장에는 무수히 많은 MDP를 풀기 위해 딥러닝을 강화학습에 적용하는 방법에 대해서 설명하고 있습니다. 아래 내용은 공부하면서 핵심 내용을 정리한 것입니다.
참고자료
- 도서: 바닥부터 배우는 강화 학습 / 7장 Deep RL 첫 걸음
7.1 함수를 활용한 근사
- 바둑의 경우는 바둑판 19×19 격자의 모든 빈칸이 바둑알을 놓을 수 있는 후보지가 되고 그로 인한 상태의 수가 너무 많음
◦ 체스: 1047
◦ 바둑: 10170 - 연속적인 상태 공간(continuous state space): 바둑이나 체스처럼 이산적(discrete)인 형식이 아닌 속도와 같이 연속적인 값을 가질 수 있음.
- 상태의 개수가 너무 많거나 상태 공간이 연속적이면
◦ 상태 테이블을 만들 수 없음
◦상태 테이블을 만들 수 있다 하더라고 모든 상태를 방문해서 업데이트하는데 너무 시간이 많이 걸림
◈ 함수의 등장
- 테이블 대신에 함수를 이용하는 방법
◦ 다음 함수를 가정: f(x)=ax+b
◦ 테이블 대신에 함수에 저장
◦ 실제 가치의 근사함수(function approximatior): f(s)=vˆπ(s) - 데이터가 많은 경우

- 실제 가치의 근사함수의 MSE(Mean Squared Error)를 최소화하는 a, b를 결정
- MSE=130((f(x1)−y1)2+(f(x2)−y2)2+...+(f(x30)−y30)2)

- 위 그림과 같이 MSE를 최소로 하는 a, b를 결정
◈ 함수의 복잡도에 따른 차이
- 1차 함수가 아닌 다항 함수(polynomial function)를 사용할 수 있음
f(x)=a0+a1x+a2x2+...+anxn
- "함수를 피팅한다"의 의미
◦ 함수에 데이터를 기록한다.
◦ 데이터 점들을 가장 가깝게 지나도록 함수를 그려본다.
◦ 함수 f의 파라미터 (a0∼an)의 값을 찾는다.
◦ 함수 f를 학습한다.

- 위 그림에서 고차함수로 갈수록 MSE는 감소하지만 데이터에 노이즈가 석여 있음
- 노이즈: 각각의 에피소드를 경험할 때 얻은 값은 노이즈가 있는 "틀린" 값이고 샘플이 충분히 모였을 때 그 평균이 실제 정답에 가까워짐
◈ 오버 피팅과 언더 피팅
- 오버피팅(over fitting): f를 정할 때 너무 유현한 함수를 사용하여 f가 노이즈에 피팅해 버리는 것
- 언더피팅(under fitting): f의 유연성이 부족하여 주어진 데이터와의 에러가 큰 상황
- 임의의 데이터를 생산하는 함수 F를 가정
F(x)=cos(1.5π∗x)+x
- 실제 데이터를 생성하는 함수 Freal(x)는 F에 노이즈 ε을 추가한 함수
Freal(x)=F(x)+ε=cos(1.5π∗x)+x+ε,ε∼N(0,1)∗110

- 위 그림은 다양한 차수의 다항 함수 피팅 결과를 실제 함수와 함께 그린 그래프
◦ 1차 함수: 함수가 유연하지 못해서 F와 오차를 줄일 수 없음
◦ 4차 함수: 가장 F에 근접한 함수 예측
◦ 16차 함수: Freal의 노이즈까지 모두 학습
◈ 함수의 장점 - 일반화
- 상태의 수가 많은 경우 테이블에 모든 상태의 밸류를 담을 수 없음. 실제 가치 함수 v(s)를 모사하는 함수 f를 학습
- 일반화(generalization): 전체를 다 경험하지 못하더라고 일부 샘플만으로 전체를 추정하는 것

- 위 그림과 같이 새로운 데이터가 추가된 경우 새로운 상태에 대해서 테이블 기반의 방법론에서는 추정할 수 없으나 함수를 이용해서 예측 가능

- 위 그림처럼 새로운 데이터에 대해서도 함수를 이용하면 예측 가능
- 만일 함수가 f(x)=a0+a1x+a2x2+a3x3+a4x4와 같은 4차 함수인 경우 기억해야 할 파라미터는 a0,a1,a2,a3,a4 총 5개가 전부임
- 복잡한 문제를 풀기 위해서 "인공 신경망"을 함수로 사용해서 문제 해결 가능
7.2 인공 신경망의 도입
◈ 신경망
- 인공 신경망(Artificial Neural Network): 본질은 매우 유연한 함수
프리 파라미터(free parameter)의 개수를 통해서 함수의 유연성 표현 가능
◈ 신경망 학습 - 그라디언트 디센트
- 손실함수(loss function): 뉴럴넷의 아웃풋이 주어진 데이터로부터 틀린 정도를 나타냄
- 미분(derivative): L(w)=1−fw(s)2의 수식에서 w가 L(w)에 미치는 영향을 미분으로 구할 수 있음
- 편미분(partial derivative): w가 100개의 파라미터 (w1,w2,...,w100)로 구성되어 있다면 파라미터 각각에 대해서 편미분을 해서 영향을 구해야 함
∇wL(s)=(∂L(w)∂w1,∂L(w)∂w2,...,∂L(w)∂w100)
- 편미분을 통해서 그라디언트(gradient)를 구하고 w를 그라디언트 방향으로 아주 조금 이동
- 러닝 레이트(learning rate) or 스텝 사이즈(step size): w를 얼마나 이동시킬지 결정하는 아주 작은 상수 α
w′1=w1−α∂L(w)∂w1w′2=w2−α∂L(w)∂w2...w′100=w100−α∂L(w)∂w100
- 그라디언트 디센트(gradient descent (경사하강법)): 그라디언트를 계산하여 파라미터를 업데이트하는 방식으로 목적 함수를 최소화해 나가는 과정
◈ 간단한 확인
- 이 부분은 간단한 예를 직접 계산하는 과정이 설명되어 있습니다.
◈ 파이토치를 이용한 신경망의 학습 구현
- 이 부분은 구현에 대한 코드가 설명되어 있습니다.
'강화 학습 > 바닥부터 배우는 강화 학습' 카테고리의 다른 글
바닥부터 배우는 강화 학습 | 09. 정책 기반 에이전트 (0) | 2023.01.28 |
---|---|
바닥부터 배우는 강화 학습 | 08. 가치 기반 에이전트 (0) | 2023.01.21 |
바닥부터 배우는 강화 학습 | 06. MDP를 모를 때 최고의 정책 찾기 (0) | 2023.01.05 |
바닥부터 배우는 강화 학습 | 05. MDP를 모를 때 밸류 평가하기 (0) | 2022.11.29 |
바닥부터 배우는 강화 학습 | 04. MDP를 알 때의 플래닝 (0) | 2022.11.14 |