Ordinary day

강화학습 스터디 3주차 본문

Study/ML 이론

강화학습 스터디 3주차

minung14 2017. 9. 28. 01:00

(파이썬과 케라스로 배우는 강화학습을 읽고 요약정리 한 것입니다.)


1. 가치 이터레이션 Value Iteration

이전에 Policy Iteration 에서는 벨만 기대 방정식을 이용했다. 정책과 가치함수가 명확히 분리돼 있었기 때문에.

확률적인 정책을 고려하여 가치함수를 계산하려면 기댓값을 사용할 수 밖에 없고, 그래서 벨만 기대 방정식을 사용했다.

만약 policy를 현재 가치함수가 최적이라고 가정하고 이에 대해 결정적인 형태의 정책을 적용한다면 어떨까?

결과적으로 이 과정은 문제될 것이 없다. (다이내믹 프로그래밍을 이용할 것이므로)

결국 무수히 반복하게 되면 최적의 가치함수에 도달할 것이다.

이렇게 접근하여 계산을 하는 것이 가치 이터레이션 Value Iteration 이다.

가치 이터레이션의 경우에는 정책 이터레이션과 달리 따로 정책 발전이 필요 없다.

벨만 최적 방정식을 통해 문제를 푸는 이 방법은 한 번의 정책 평가 과정을 거치면 최적 가치함수와 최적 정책이 구해지고 MDP가 풀리기 때문이다.

현재 상태에서 가능한 Rt+1 + 𝛾vk(St+1) 값들 중 최고값으로 업데이트 하면 된다.


참고로)

벨만 기대 방정식을 통해 문제를 풀어 나오는 답은 현재 정책을 따라 갔을 때 받을 참 보상 값이고,

1) 가치함수를 현재 정책에 대한 가치함수로 가정

2) 반복적으로 계산

3) 현재 정책에 대한 참 가치함수가 됨

벨만 최적 방정식을 통해 문제를 풀어 나오는 답은 최적 가치함수이다.

1) 가치함수를 최적 정책에 대한 가치함수로 가정

2) 반복적으로 계산

3) 최적 정책에 대한 참 가치함수(최적 가치함수)를 찾음


2. 다이내믹 프로그래밍의 한계와 강화학습

  • 계산 복잡도
    다이내믹 프로그래밍의 계산 복잡도는 상태 크기의 3제곱에 비례한다. 따라서 문제의 규모가 늘어난다면 계산하기엔 한계가 있다.
  • 차원의 저주
    상태의 차원이 늘어나면 상태의 수가 지수적으로 증가할 것이다. 결국 계산하기엔 무리이다.
  • 환경에 대한 완벽한 정보 필요
    보상과 상태 변환 확률은 환경의 모델에 해당하는데 실제로는 이 정보를 정확히 알 수 없다.

이런 한계점이 존재하기 때문에 강화학습이 등장했다.

모델을 정확히 알기 어려운 경우에 두 가지 방법으로 접근할 수 있을 것이다.

1) 할 수 있는 선에서 정확한 모델링을 한 다음 모델링 오차에 대한 부분을 실험을 통해 조정한다.

2) 모델 없이 환경과의 상호작용을 통해 입출력 사이의 관계를 학습한다.

1번의 경우는 '학습'이라는 개념이 들어가지 않고, 예전부터 많이 사용한 방법이지만 문제가 복잡해지고 여려워질 수록 한계가 있다.

2번은 '학습'의 개념이 들어가는데, 학습의 특성상 모든 상황에서 동일하게 작동한다는 보장은 없다. 하지만 복잡하고 어려운 문제에서 모델이 필요없는 것이 장점이다.


3. 강화학습

강화학습은 모델 없이 환경과의 상호작용을 통해 최적 정책을 학습한다. (이 때 예측과 제어의 개념이 나옴)

  • 예측 prediction: 에이전트는 환경과의 상호작용을 통해 주어진 정책에 대한 가치함수를 학습 -> 몬테카를로 예측, 시간차 예측
  • 어 control: 가치함수를 토대로 정책을 끊임없이 발전시켜 나가서 최적 정책을 학습 -> 살사(시간차 제어), 큐러닝(오프폴리시 제어)

강화학습은 계산을 통해서가 아니라 '경험'으로부터 가치함수를 업데이트 한다.

이전의 policy iteration 에서 정책 평가와 정책 발전의 과정이 있는데 강화학습에서 정책 평가는 '예측'이 되고(참 가치함수를 구하는 과정), 예측과 함께 정책을 발전시키는 것을 '제어'라고 한다.


4. 몬테카를로 예측

원의 넓이를 구하는 방정식을 모른다면 원의 넓이는 어떻게 구할 수 있을까? 바로 '몬테카를로 근사 Monte-Carlo Approximation'를 이용하면 된다. 무작위로 샘플을 추출하여 원의 넓이를 추정한다는 것이다. 사실 추정한 값이 정확하진 않겠지만 무수한 양의 샘플을 이용한다면 원래의 값과 동일해질 것이다.

결국 방정식을 몰라도 원래 값을 추정할 수 있다.

  • 샘플링: 에이전트가 한 번 환경에서 에피소드를 진행하는 것
  • 테카를로 예측: 샘플링을 통해 얻은 샘플의 평균으로 참 가치함수 값을 몬테카를로 근사를 사용하여 추정하는 것

몬테카를로 예측을 하기 위해서는 각 상태에 대한 반환값들이 많이 모여야 한다.(반환값들의 평균을 통해 참 가치함수 값을 추정)

따라서 모든 상태에 대해 반복적으로 벨만 기대 방정식(현재 정책에 대해 참 가치함수를 구하는)을 계산한다면 현재 상태 s의 참 가치함수를 알아낼 수 있다. 이 때, 상태변환확률과 보상을 알아야 하는데, 몬테카를로 예측에서는 환경의 모델을 몰라도 가능하다!(이게 장점)

무수히 많이 에피소드를 진행하면 현재 정책을 따랐을 때 지날 수 있는 모든 상태에 대해 충분한 반환값들을 모을 수 있고, 각 상태에 대해 모인 반환값의 평균을 내면 정확한 가치함수의 값을 얻을 수 있다.

결국 정리하면, 원래 가지고 있던 가치함수 값에 오차의 얼마를 더함으로써 가치함수를 업데이트 하는 것이다.

참고로 스텝사이즈는 1/n일 수도, 상수값일 수도 있다.

'Study > ML 이론' 카테고리의 다른 글

강화학습 스터디 5주차  (0) 2017.10.19
강화학습 스터디 4주차  (0) 2017.10.09
강화학습 스터디 2주차  (0) 2017.09.18
강화학습 스터디 1주차  (0) 2017.09.12
모두를 위한 머신러닝(RL) - Q-learning  (1) 2017.04.10
Comments