본문 바로가기
IT/[딥러닝]

[자습일지] 강화학습 주요 기법

by Coffee With Me 2020. 8. 27.

출처 : 파이썬과 케라스를 이용한 딥러닝/강화학습 주식투자 - 퀀티랩 지음

 

등장하는 모든 용어는 이전 글에 설명되어 있다.

이전 글 2020/08/26 - [IT/[딥러닝]] - [자습일지] 강화학습 기초

 

[자습일지] 강화학습 기초

강화학습은 머신러닝의 한 종류로 어떠한 환경에서 어떠한 행동을 했을 때 그것이 잘 된 행동인지 잘못된 행동인지를 나중에 판단하고 보상(또는 벌칙)을 줌으로써 반복을 통해 스스로 학습하��

coffee-with-me.tistory.com

몬테카를로 학습

몬테카를로 예측제어예측에서는 샘플링을 통해 상태 가치 함수를 학습해나간다. 충분한 에피소드를 거치고 나면 상태 가치 함수가 정답에 가까워질 것이다. 샘플링한 상태들에 대한 경험을 통해 획득 보상(Gain)을 다음과 같이 정의한다.  

상태가치를 다시 획득 보상으로 표현하면,

이 수식을 보면 이전의 상태 가치 함수와 새로운 획득 보상과의 차이를 더해줌으로써 상태 가치 함수를 업데이트한다. 여기서 이전의 상태 가치 함수Vn(s)몬테카를로 학습

 

몬테카를로 예측과 제어 중 예측에서는 샘플링을 통해 상태 가치 함수를 학습해나간다. 충분한 에피소드를 거치고 나면 상태 가치 함수가 정답에 가까워질 것이다. 샘플링한 상태들에 대한 경험을 통해 획득 보상(Gain)을 다음과 같이 정의한다.  

상태가치를 다시 획득 보상으로 표현하면,

 

이 수식을 보면 이전의 상태 가치 함수와 새로운 획득 보상과의 차이를 더해줌으로써 상태 가치 함수를 업데이트한다. 여기서 이전의 상태 가치 함수 Vn(s) 와 새로운 획득 보상Gn의 차이를 오차라고 한다. 이 오차에 곱해지는 1/n 을 α로 치환해 학습 속도(learning rate)로 여긴다. 최종 수식은 다음과 같다.

딥러닝과 마찬가지로 학습 속도 α를 너무 작게 잡으면 학습이 너무 오래걸리고 크게 잡으면 최적 가치 함수로 수렴이 잘 안된다.

 

몬테카를로 예측에서 사용하는 총 획득 보상 G는 에피소드가 끝나야 알 수 있기 때문에 에피소드 종료 시점에서 상태 가치 함수를 갱신할 수 있다.

 

 

몬테카를로 예측 제어  제어에서는 상태 가치 함수 대신 상태-행동 가치 함수를 사용한다.

이렇게 상태-행동 가치 함숫값이 높은 행동을 선택하고 특정한 확률로 탐험을 진행할 수 있다.

 

 

시간차 학습

시간차 학습 - 예측

몬테카를로 예측에서는 에피소드가 끝나야지 상태 가치 함수를 갱신할 수 있었다. 때문에 학습을 실시간으로 수행하기 어려운 단점이 있다. 시간차 예측(temporal-difference prediction, TD)을 활용하면 타임스탭(time step)마다 가치 함수를 업데이트 할 수 있다.

 

에피소드 도중에 상태 가치 함수를 갱신하므로 시간차 예측TD는 부트스트랩을 사용한다고 할 수 있다. 부트스트랩에 대한 설명은 이전글에 있다.

 

시간차 학습 - 제어

시간차 학습 제어는 On-policy , Off-policy 에 따라 그 이름이 달라진다. 

On-policy TD : SARSA(state-action-reward-state-action) : 상태-행동 가치함수 Q를 사용하는 방법이다. 행동을 결정할 때 어떠한 확률로 탐험을 수행한다. SARSA는 다음 상태에 대한 행동을 알고 있어야 하기 때문에 행동을 결정하는 정책과 학습 정책을 분리할 수 없으므로 On-policy 제어 방식에 해당한다.

Off-policy TD : Q-learning

 

 

Q-learning

 

다음 상태 s'에서 가장 큰  Q 값을 이용해 Q 함수를 갱신한다. 행동을 결정할 때는 Q 값이 높은 행동을 선택하면서도 충분한 탐험을 수행한다. 탐험은 학습 초기에는 많이 하고 학습 후반으로 갈수록 적게 하는 기법을 많이 사용한다.

 

여기서 Q 함수로 심층 신경망을 사용하면 DQN(deep Q-network)이 된다. DQN은 회귀 문제를 푸는 대표적인 강화학습으로 볼 수 있다.

 

 

정책 경사(policy gradient,PG)

정책 경사는 분류 문제를 푸는 강화학습으로 볼 수 있다. 어떤 상태에서 어떤 행동을 결정하는 것이 가장 좋을지를 판단하는 것이다. 어떤 상태에서의 행동에 대한 확률 값들을 인공 신경망으로 모델링한다.

 

Q-learning은 Q 함수를 학습하고 Q 값이 높은 행동을 취하는 방식이고, 정책 경사는 행동의 확률을 학습한다. 정책 경사에서 손실 함수는 다음과 같다. 

 

여기서 Q(s,a)는 장기간의 보상을 고려한 상태 s에서 행동 a를 수행했을 때의 가치이다. 정책 경사사는 다양한 방식으로 손실 함수를 정할 수 있다.

 

 

액터-크리틱

Q-learning과 정책 경사는 단일 싱경망을 이용한 강화학습 방식이다. 액터-크리틱은 두 정책의 하이브리드 강화학습 모델이라고 볼 수 있다. Actor는 정책 경사 모델을 사용해 수행할 행동을 결정하고, 크리틱은 수행한 행동을 비평하기 위해 Q-learning 모델을 사용한다. 이렇게 하면 단일 모델을 사용했을 때 발생하기 쉬운 고분산(high variance) 문제를 피할 수 있다고한다. 

 

이해를 위한 참고 그림 - 책 68페이지.

 

액터와 크리틱이 신경망을 공유하며 강화학습을 수행한다. 손실 함수는 다음과 같다.

여기서 Qc 함수는 크리틱의 신경망 출력이다. 액터-크리틱의 방법에서는 정책 경사로 정책 신경망을 학습하면서 동시에 Q-learning으로 상태-행동 가치 신경망을 학습한다. 다만 효율적인 학습을 위해 두 신경망은 일부를 공유하고 있을 수 있다.

 

 

A2C(advantage actor-critic)

A2C는 액터-크리틱 방법에서 기대 출력을 advantage로 사용하는 방법이다. 여기서 advantage는 상태-행동 가치에서 상태 가치를 뺀 값이다.

 A2C에서는 크리틱을 어드밴티지로 학습한다. 이렇게 하면 어떠한 상태에서 행동이 얼마나 좋은지 뿐만 아니라 ㅇㅓㄹ마나 더 좋아지는지를 학습할 수 있다.

 

 

 

A3C(asynchronous advantage actor-critic)

비동기(Asynchronous : 동시에 일어나지 않는)

A3C는 구글 딥마인드에서 발표한 대표적인 강화학습 방법 중 하나이다. A3C는 A2C에 비동기 개념을 추가한 방법이다.

A3C는 에이전트가 여러 개의 환경에서 동시에 행동을 수행하고 신경망을 학습해 나간다. 이렇게 여러 환경에서 동시에 신경망을 학습하기 때문에 비동기라고 부르는 것이다. 

 

이해를 위한 이미지 확인 존경하는 퀀티랩 블로그 http://blog.quantylab.com/rl.html

 

강화학습(reinforcement learning)이란?

강화학습(reinforcement learning)은 머신러닝의 한 종류로 어떠한 환경에서 어떠한 행동을 했을 때 그것이 잘 된 행동인지 잘못된 행동인지를 나중에 판단하고 보상(또는 벌칙)을 줌으로써 반복을 통�

blog.quantylab.com

 

 

 

 

 

출처 : 파이썬과 케라스를 이용한 딥러닝/강화학습 주식투자 - 퀀티랩 지음