본문 바로가기

Data & AI

[강화학습] 2. 강화학습은 인생이다.

인생은 선택의 연속입니다. 

살아오면서 많은 선택을 하고 그런 선택들이 현재의 상태를 만들어오는 것 같습니다. 

강화학습은 기존의 지도학습, 비지도학습과는 다르게 
인지심리학에 깊게 관여하며 기원했기 때문에 합리적인 선택을 좋아하는 저에게 참 매력적입니다. 

 

물론 아직 강화학습으로 인생의 모든 문제를 해결할 순 없을 것 같습니다. 
인생은 언제 끝날지 알 수 없고 보상이라고 하는게 돈으로만 단정 지을 수 없기 때문에 답이랄 것도 따로 없습니다. 

그래도 강화학습을 간단하게 설명해보기 위해서 인생보다는 간단한 grid word를 통해 개념을 설명하곤 합니다. 

 

강화학습 개념을 처음 이해할 때는 가치함수를 배열이나 표로 그릴 수 있을 정도로 상태와 행동의 범위가 충분히 적은 상황을 만들어 설명합니다. 이런 제한적 상황이 처음 강화학습을 이해할 때 우리가 찾아야 할 정책과 최적가치함수가 무엇인지 쉽게 생각할 수 있게 합니다. 
그렇다면 이 grid world에서 한 칸에서 우리의 행동은, 가장자리의 칸이 아니라면 4가지의 다중 선택 문제가 됩니다. 대조적으로 bandit-problem이라 불리는 단일 선택문제가 있는데 강화학습은 "다중 선택 문제"를 선택하는데 도움을 줍니다. 

 

우리는 학창시절 학교를 다니며 교과과정을 이수합니다. 선생님을 통해서 지식을 배우는 시기입니다. 
그런데 사회에 나와서도 우리는 학교를 다니진 않지만 배우고 성장한다는 느낌을 받습니다. 우리는 선생님이 아닌 사회, 사회에 존재하는 사람들과 상호작용하면서 나를 돌아보고 배우고 성장합니다.  강화학습도 비슷합니다. 누군가 어떻게 생동하라 지침을 내려주지 않고 스스로 학습하고 평가하면서 성장합니다. 그래서 꾸준한 행동과 평가를 지속해야 합니다. 

 

앞서 강화학습은 다중 선택 문제라고했습니다. 단일 선택 문제라면 선택의 고민이랄 것도 없겠지만 선택지가 여러 가지일 때는 무슨 선택을 하느냐에 따라 결과가 달라지기 마련입니다. 우리가 k개의 선택을 하면서 각 행동을 통해 주어지는 보상을 기대할 수 있는데 이런 값들의 평균을 그 "행동의 가치"라고 합니다.

행동 a가 선택되었을때 얻는 보상의 기대값

 

우리가 선택을 할때마다 선택에 따른 결과를 다 알고 있다면 이건 문제라고 부를 수도 없고 불가능에 가깝습니다. 우리는 선택의 결과를 추정해야 합니다. 여기서 한 가지 재미있는 사실은, 우리는 선택의 가치를 추정하는 것이지 정확히 알 수 없기 때문에 그동안 겪었던 경험에 바탕으로 최고의 보상을 주는 선택만 시도(exploitation)하기보다는 다양한 시도를 하면서(exploration) 선택에 대한 결과를 경험해보아야 합니다. 강화학습을 인생이라고 했던 이유는, 우리의 인생에서 한정적인 경험을 하게 되는데, 경험해보지 못한 것에 대한 평가를 단정 짓기보다 내가 그 선택에 대한 가치를 제대로 알기 위해 우리는 exploration 해보아야 한다고 생각했습니다. 다양한 경험을 통해 유사한 문제에 직면했을 때 어떤 행동이 나에게 최선의 선택이 될지 더 잘 선택할 수 있을 것 같습니다. 

 


우리가 직면한 문제와 선택, 그리고 결과들은 정량적일수도, 정성적일 수도 있지만 우리는 대충이라도 선택의 가치를 비교해 볼 순 있습니다. 강화학습을 진행하는 에이전트에게는 이런 것들을 수치적으로라도 판단할 수 있도록 행동가치방법이란 것을 통해 행동의 가치를 추정하고 추정한 값을 바탕으로 선택을 하도록 합니다.

행동가치에 대한 정의 = 현재상태t이전에 취해지는 행동a에 대한 보상의 합 / 현재상태 t 이전에 행동a를 취한 횟수

우리는 행동을 시도한 number of times a를 통해 표본평균을 구하고 있습니다.

표본평균으로 구해진 행동동들에 대한 가치가 수치적으로 나열이 된다면, 가장 간단한 방법은 그중 가장 높은 수치를 가지는 행동이 가장 합리적이고 greedy 한 선택이 됩니다. 그리고 앞서 말했듯, 우리는 행동가치를 표본평균으로 추정하는 것뿐이지 완벽한 행동에 대한 가치를 알 수 없으니 어느 정도는 다양한 경험(가장 높은 수치의 행동을 선택하지 않는)을 해보아야 합니다. 이런 방식의 알고리즘을 입실론-greedy 알고리즘이라고 부릅니다. 

 

우리가 직면한 문제에서 다양한 시도를 통한 경험이 주는 효과를 시각화해 보겠습니다. 환경에서 선택하는 행동들을 x축에 나열하고 환경과 여러 번 상호작용하여 행동을 선택하는 빈도를 충분히 채워 나타내면 아래와 같습니다.

q*(a)는 행동 a가 선택되었을 때 얻는 보상의 기댓값인데, 행동들의 선택에 따른 보상들이 q*(a)를 평균으로 분포된 확률분포를 그려내고 있습니다. 그렇다면 위와 같은 10개의 행동과 보상분포를 2000번씩 해보는 테스트를 1000번 시도해 본다면 우리가 얻는 보상의 결과가 달라질지 시각화한 자료가 있습니다.

greedy 자체로도 그 local knowledge 한정으론 가장 합리적인 선택이기에 준최적의 결과를 보이고 있습니다. 하지만 우리가 greedy 알고리즘만 사용한다면 장기적으로 다양한 시도를 해본 알고리즘보다 얻는 보상이 적어집니다.