‘파이썬과 케라스로 배우는 강화학습’ 세미나 3

3장을 읽고 강화학습의 기초인 다이내믹 프로그래밍에 대해 이해합니다. 2장의 내용을 많은 부분 반복하고 있어 좀 지루한 면도 있기는 하지만 그리드월드를 실제적으로 구현해가기 때문에 흥미도 있습니다.  아무튼 포기하지 않고 끝까지 읽어내는 것이 중요합니다.

p60. 다이내믹 프로그래밍으로 벨만 기대 방정식을 푸는 것이 정책 이터레이션이며 벨만 최적 방정식을 푸는 것이 가치 이터레이션이다.

벨만이 만든 다이내믹 프로그래밍은 이후에 강화학습의 근간이 됐기 때문에 제대로 이해하는 것이 중요하다. 이 다이내믹 프로그래밍의 한계를 극복하고자 하는 학습을 사용하는 것이 강화학습이다.

p61. 벨만 방정식을 통해 순차적 행동 결정 문제를 푸는 방법

  1. 순차적 행동 문제를 MDP를 정의
  2. 가치함수를 벨만 방정식으로 반복적으로 계산
  3. 최적 가치함수와 최적 정책 찾기
정책 이터레이션

p67. 정책은 에이전트가 모든 상태에서 어떻게 행동할지에 대한 정보이다. MDP로 정의된 문제에서 결국 알고 싶은 건 가장 높은 보상을 얻게 하는 정책을 찾는 것이다. 어떤 정책을 시작으로 계속 발전시켜나가는 방법을 사용한다. 보통 처음에는 무작위 행동을 정하는 정책으로 시작한다.

현재의 정책을 평가하고 더 나은 정책으로 발전해야 한다. 정책 이터레이션에서는 평가를 정책 평가라고 하며, 발전을 정책 발전이라 한다.

p68. 가치함수는 현재의 정책을 따라갔을 때 받을 보상에 대한 기댓값이다. 어떻게 하면 보상을 많이 받을 수 있을지를 알아내는 것이 에이전트의 목표이다. 따라서 현재 정책에 따라 받을 보상에 대한 정보가 정책의 가치가 된다.

p69. 정책 이터레이션의 핵심은 주변 상태의 가치함수와 한 타임스텝의 보상만 고려해서 현재 상태의 다음 가치함수를 계산하겠다는 것이다.

p92~93. 정책 이터레이션은 정책과 가치함수가 명확히 분리돼 있다. 정책과 가치함수가 명확히 분리돼 있다는 점은 정책 이터레이션이 벨만 기대 방정식을 이용하는 이유가 된다. 정책이 독립적이으로 결정적인 정책이 아니라 어떤 정책도 가능하다. 대다수 정책은 확률적인 정책이다. 이러한 확률적인 정책을 고려해서 가치함수를 계산하려면 당연히 기대값이 들어갈 수 밖에 없고 따라서 정책 이터레이션은 벨만 기대 방정식을 사용하는 것이다.

p94. 벨만 기대 방정식을 통해 전체 문제를 풀어서 나오는 답은 바로 현재 정책을 따라 갔을 때 받을 참 보상이다. 1) 가치함수를 현재 정책에 대한 가치함수라고 가정하고 2) 반복적으로 계산하면 3) 결국 현재 정책에 대한 참 가치함수가 된다는 것이다.

위의 p94의 정리에서 다이내믹 프로그래밍에 대한 감을 잡아야 합니다. ‘아하!’하고 감이 잡힐 때 까지 곰곰히 생각을 반복해 봅니다. 그런 다음 ‘벨만 기대 방정식의 형태를 보고 이것을 풀려면 다이내믹 프로그래밍을 사용해야겠구나!’까지 나가면 됩니다.

구현 화면에서 평가 버튼과 발전 버튼을 여러 번에 걸쳐 누르는 것과 다이내믹 프로그램밍을 연결해서도 생각할 수 있어야 합니다.

가치 이터레이션

p94. 가치 이터레이션은 명시적으로 정책이 표현되는 것이 아니고 가치함수 안에 내재적으로 포함돼 있다. 가치함수 안에 정책이 내재돼 있으므로 가치함수를 업데이트하면 자동으로 정책 또한 발전되는 것이다.

p94. 벨만 최적 방정식을 통해 전체 문제를 풀어 나오는 답은 바로 최적 가치함수이다. 1) 가치함수를 최적 정책에 대한 가치함수라고 가정하고 2) 반복적으로 계산하면 3) 결국 최적 정책에 대한 참 가치함수, 즉 최적 가치함수를 찾게 되는 것이다.

p95. 벨만 최적 방정식은 벨만 기대 방정식과는 달리 max를 취한다. 따라서 새로운 가치함수를 업데이트할 때 정책의 값을 고려할 필요가 없다.

정책 이터레이션의 구현에서와 마찬가지로 계산 버튼을 여러 번에 걸쳐 누르는 것과 다이내믹 프로그램밍을 연결해서도 생각할 수 있어야 합니다.

다이내믹 프로그래밍의 한계

p105. 다이내믹 프로그래밍의 계산 복잡도는 상태 크기의 3제곱에 비례한다. 상태의 수가 매우 큰 경우 계산만으로 풀어내기에는 한계가 있다.

다이내믹 프로그래밍을 풀 때 보상과 상태 변환 확률을 정확히 안다는(환경의 모델을 정의할 수 있다는) 가정하에 풀기 때문에 환경을 모르는 경우에는 풀기 어렵다.

환경을 모르지만 환경과의 상호작용을 통해 경험을 바탕으로 학습하는 방법이 필요한데 그것이 강화학습이다.

About the Author
(주)뉴테크프라임 대표 김현남입니다. 저에 대해 좀 더 알기를 원하시는 분은 아래 링크를 참조하세요. http://www.umlcert.com/kimhn/

Leave a Reply

*