'바닥부터 배우는 강화 학습' 7장에는 무수히 많은 MDP를 풀기 위해 딥러닝을 강화학습에 적용하는 방법에 대해서 설명하고 있습니다. 아래 내용은 공부하면서 핵심 내용을 정리한 것입니다.
참고자료
- 도서: 바닥부터 배우는 강화 학습 / 7장 Deep RL 첫 걸음
7.1 함수를 활용한 근사
- 바둑의 경우는 바둑판 $19 \times 19$ 격자의 모든 빈칸이 바둑알을 놓을 수 있는 후보지가 되고 그로 인한 상태의 수가 너무 많음
◦ 체스: $10^{47}$
◦ 바둑: $10^{170}$ - 연속적인 상태 공간(continuous state space): 바둑이나 체스처럼 이산적(discrete)인 형식이 아닌 속도와 같이 연속적인 값을 가질 수 있음.
- 상태의 개수가 너무 많거나 상태 공간이 연속적이면
◦ 상태 테이블을 만들 수 없음
◦상태 테이블을 만들 수 있다 하더라고 모든 상태를 방문해서 업데이트하는데 너무 시간이 많이 걸림
◈ 함수의 등장
- 테이블 대신에 함수를 이용하는 방법
◦ 다음 함수를 가정: $f(x) = ax + b$
◦ 테이블 대신에 함수에 저장
◦ 실제 가치의 근사함수(function approximatior): $f(s) = v_{\hat{\pi}}(s)$ - 데이터가 많은 경우
- 실제 가치의 근사함수의 MSE(Mean Squared Error)를 최소화하는 $a$, $b$를 결정
- $MSE={1 \over 30} \left ( (f(x_1) - y_1)^2 + (f(x_2) - y_2)^2 + ... + (f(x_{30}) - y_{30})^2 \right )$
- 위 그림과 같이 MSE를 최소로 하는 $a$, $b$를 결정
◈ 함수의 복잡도에 따른 차이
- 1차 함수가 아닌 다항 함수(polynomial function)를 사용할 수 있음
$$f(x)=a_0 + a_1x + a_2x^2 + ... + a_nx^n$$
- "함수를 피팅한다"의 의미
◦ 함수에 데이터를 기록한다.
◦ 데이터 점들을 가장 가깝게 지나도록 함수를 그려본다.
◦ 함수 $f$의 파라미터 $(a_0 \sim a_n)$의 값을 찾는다.
◦ 함수 $f$를 학습한다.
- 위 그림에서 고차함수로 갈수록 MSE는 감소하지만 데이터에 노이즈가 석여 있음
- 노이즈: 각각의 에피소드를 경험할 때 얻은 값은 노이즈가 있는 "틀린" 값이고 샘플이 충분히 모였을 때 그 평균이 실제 정답에 가까워짐
◈ 오버 피팅과 언더 피팅
- 오버피팅(over fitting): $f$를 정할 때 너무 유현한 함수를 사용하여 $f$가 노이즈에 피팅해 버리는 것
- 언더피팅(under fitting): $f$의 유연성이 부족하여 주어진 데이터와의 에러가 큰 상황
- 임의의 데이터를 생산하는 함수 $F$를 가정
$$F(x)=cos(1.5 \pi * x) + x$$
- 실제 데이터를 생성하는 함수 $F_{real}(x)$는 $F$에 노이즈 $\varepsilon$을 추가한 함수
$$F_{real}(x) = F(x) + \varepsilon =cos(1.5 \pi * x) + x + \varepsilon, \; \; \; \; \varepsilon \sim N(0, 1) * {1 \over 10}$$
- 위 그림은 다양한 차수의 다항 함수 피팅 결과를 실제 함수와 함께 그린 그래프
◦ 1차 함수: 함수가 유연하지 못해서 $F$와 오차를 줄일 수 없음
◦ 4차 함수: 가장 $F$에 근접한 함수 예측
◦ 16차 함수: $F_{real}$의 노이즈까지 모두 학습
◈ 함수의 장점 - 일반화
- 상태의 수가 많은 경우 테이블에 모든 상태의 밸류를 담을 수 없음. 실제 가치 함수 $v(s)$를 모사하는 함수 $f$를 학습
- 일반화(generalization): 전체를 다 경험하지 못하더라고 일부 샘플만으로 전체를 추정하는 것
- 위 그림과 같이 새로운 데이터가 추가된 경우 새로운 상태에 대해서 테이블 기반의 방법론에서는 추정할 수 없으나 함수를 이용해서 예측 가능
- 위 그림처럼 새로운 데이터에 대해서도 함수를 이용하면 예측 가능
- 만일 함수가 $f(x) = a_0 + a_1x + a_2x^2 + a_3x^3 + a_4x^4$와 같은 4차 함수인 경우 기억해야 할 파라미터는 $a_0, a_1, a_2, a_3, a_4$ 총 5개가 전부임
- 복잡한 문제를 풀기 위해서 "인공 신경망"을 함수로 사용해서 문제 해결 가능
7.2 인공 신경망의 도입
◈ 신경망
- 인공 신경망(Artificial Neural Network): 본질은 매우 유연한 함수
프리 파라미터(free parameter)의 개수를 통해서 함수의 유연성 표현 가능
◈ 신경망 학습 - 그라디언트 디센트
- 손실함수(loss function): 뉴럴넷의 아웃풋이 주어진 데이터로부터 틀린 정도를 나타냄
- 미분(derivative): $L(w)={1 - f_w(s)}^2$의 수식에서 $w$가 $L(w)$에 미치는 영향을 미분으로 구할 수 있음
- 편미분(partial derivative): $w$가 100개의 파라미터 $(w_1, w_2, ..., w_{100})$로 구성되어 있다면 파라미터 각각에 대해서 편미분을 해서 영향을 구해야 함
$$\nabla_wL(s)=\left ( {\partial L(w) \over \partial w_1}, {\partial L(w) \over \partial w_2}, ..., {\partial L(w) \over \partial w_{100}} \right )$$
- 편미분을 통해서 그라디언트(gradient)를 구하고 $w$를 그라디언트 방향으로 아주 조금 이동
- 러닝 레이트(learning rate) or 스텝 사이즈(step size): $w$를 얼마나 이동시킬지 결정하는 아주 작은 상수 $\alpha$
$$\begin{equation}
\begin{split}
w_1'&=w_1 - \alpha {\partial L(w) \over \partial w_1} \\
w_2'&=w_2 - \alpha {\partial L(w) \over \partial w_2} \\
&...\\
w_{100}'&=w_{100} - \alpha {\partial L(w) \over \partial w_{100}}
\end{split}
\end{equation}$$
- 그라디언트 디센트(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 |