mogazi 2022. 9. 26. 05:25

 

  •   큐-러닝(Q-learning)

 

큐-러닝은 모델 없이 학습하는 강화 학습 기법 중 하나이다. 

큐-러닝은 마르코프 결정 과정에서 최적의 정책을 찾는 데 사용된다.

 

 

큐-러닝은 에이전트가 주어진 상태에서 행동을 취했을 경우 받을 수 있는 보상의 기댓값을 예측하는 큐-함수(Q-function)를 사용하여 최적화된 정책을 학습하는 강화 학습 기법이다. 

 

 

즉, 큐-러닝은 여러 실험(episode)을 반복하여 최적의 정책을 학습한다.

 

 

 

 

 

 

매 실험에서 각 상태마다 행동을 취하는데, 이때 행동은 랜덤한 선택을 한다. 

그 이유는 가 보지 않을 곳을 탐험하면서 새로운 좋은 경로를 찾으려고 하기 때문. 

 

 

이렇듯 새로운 길을 탐험하는 것을 말 그대로 탐험이라 정의하고, 욕심쟁이(greedy) 방법을 이용하여 수행합니다. 

 

 

0~1 사이로 랜덤하게 난수를 추출해서 그 값이 특정 임계치(threshold)( 0.1)보다 낮으면 랜덤하게 행동을 취한다. 

그리고 임계치는 실험이 반복되면서(학습이 진행되면서) 점점 낮은 값을 갖는다. 

 

 

따라서 학습이 수만 번 진행되면 임계치 값은 거의 0에 수렴되고, 행동을 취하고, 보상을 받고, 다음 상태를 받아 현재 상태와 행동에 대한 큐 값을 업데이트하는 과정을 무수히 반복한다.

 

 

 

 

 

 

 

경험으로 학습하는 강화 학습에서 최단 시간에 주어진 환경의 모든 상태를 관찰하고, 

이를 기반으로 보상을 최대화할 수 있는 행동을 수행하려면 활용(exploitation)과 탐험(exploration) 사이의 균형이 필요하다.

 

 

 

그럼 활용이란 무엇일까? 

활용이란 현재까지 경험 중 현 상태에서 가장 최대의 보상을 받을 수 있는 행동을 하는 것이다. 

이러한 다양한 경험을 쌓기 위한 새로운 시도를 탐험이라고 한다. 

 

 

탐험을 통해 얻는 경험이 늘 최상의 결과를 얻는 것은 아니기 때문에 시간과 자원에 대한 낭비가 발생한다. 

 

즉, 풍부한 경험이 있어야만 더 좋은 선택을 할 수 있지만, 경험을 쌓기 위한 새로운 시도들은 시간과 자원이 낭비되기 때문에 이 둘 사이의 균형이 필요하다.

 

 

 

 

 

 

 

 

  • 딥 큐-러닝(Deep Q-learning)

 

딥 큐-러닝은 합성곱 신경망을 이용하여 큐-함수를 학습하는 강화 학습 기법이다. 

이때 합성곱층을 깊게 하여 훈련할 때, 큐 값의 정확도를 높이는 것을 목표로 한다.

 

 

 

 

 

 

 

 

  딥 큐-러닝 특징

 

 

강화 학습을 위한 시뮬레이션 환경을 제공(참고로 강화 학습은 주로 게임에서 사용한다.

강화 학습을 위한 시뮬레이션 환경을 구현하는 데 중요한 함수가 세 개 있다.

 

 

 

- reset() 함수: 환경을 초기화할 때 사용한다. 

에이전트가 게임을 시작하거나 초기화가 필요할 때 reset() 함수를 사용하며, 초기화될 때는 관찰 변수(상태를 관찰하고 그 정보를 저장)를 함께 반환한다.

 

 

 

- step() 함수: 에이전트에 명령을 내리는 함수입니다.

따라서 가장 많이 호출되는 함수로, 이 함수로 행동 명령을 보내고 환경에서 관찰 변수, 보상 및 게임 종료 여부 등 변수를 반환한다.

 

 

 

- render() 함수: 화면에 상태를 표시하는 역할을 한다.

 

 

 

 

 

 

  타깃 큐-네트워크 (target Q-network)

 

 

큐-러닝에서는 큐-함수가 학습되면서 큐 값이 계속 바뀌는 문제가 있었는데, 딥 큐-러닝에서는 이 문제를 해결하기 위해 타깃 큐-네트워크를 사용한다. 

 

즉, 큐-네트워크 외에 별도로 타깃 큐-네트워크를 두는 것이 특징. 

 

 

 

두 네트워크는 가중치 파라미터만 다르고 완전히 같다. 

DQN에서는 수렴을 원활하게 시키기 위해 타깃 큐-네트워크를 계속 업데이트하는 것이 아니라 주기적으로 한 번씩 업데이트한다.

 

 

 

- 딥 큐-러닝 네트워크 상세 구조

 

 

 

 

훈련을 수행할 때의 손실 함수로는 MSE를 사용한다. 

네트워크 두 개가 분리되어 있으므로 각 네트워크에서 사용되는 파라미터 θ의 표기가 다른 것을 확인할 수 있습니다.

 

 

 

 

 

 

 

 

 

 

 

  리플레이 메모리(Replay memory)

 

 

리플레이 메모리는 에이전트가 수집한 데이터를 저장해 두는 저장소이다. 

큐-러닝에서는 데이터들 간의 상관관계로 학습 속도가 느려지는 문제가 있었는데, 딥 큐-러닝에서는 리플레이 메모리를 도입하여 해결하고 있다. 

 

 

즉, 에이전트 상태가 변경되어도 즉시 훈련시키지 않고 일정 수의 데이터가 수집되는 동안 기다린다. 

 

 

나중에 일정 수의 데이터가 리플레이 메모리(버퍼)에 쌓이게 되면 랜덤하게 데이터를 추출하여 미니 배치를 활용해서 학습합니다. 

이때 하나의 데이터에는 상태, 행동, 보상, 다음 상태가 저장됩니다.