Ordinary day

모두를 위한 머신러닝(RL) - Q-learning 본문

Study/ML 이론

모두를 위한 머신러닝(RL) - Q-learning

minung14 2017. 4. 10. 00:49

강화학습(Reinforcement Learning)

기계학습이 다루는 문제 의 하나로, 어떤 환경 안에서 정의된 에이전트(액터)가 현재의 상태를 인식하여, 선택 가능한 행동들 중 보상을 최대화하는 행동 혹은 행동 순서를 선택하는 방법 이라고 위키에서 정의를 했는데..

쉽게 말하면 경험을 통해 배우고, 보상 혹은 벌(?) 무튼 일종의 피드백을 줌으로써 훈련시키는 데에서 기본 아이디어를 얻어 만든 알고리즘이다.

강화학습 알고리즘은 게임, 로보틱스, E-커머스, 주식시장 등 여러 분야에서 활용할 수 있는 알고리즘으로 사실 굉장히 오래 전(1970년대)에 등장한 알고리즘인데 그 당시에는(몇 년 전까지만 하더라도) 크게 주목받지 못했다.

그러다가 최근 딥마인드에서 관련 연구가 진행되고, 알파고에 이 강화학습 알고리즘이 쓰이면서 많은 사람들이 관심을 가지기 시작했다.


Q-learning


RL에서는  actor(agent)가 action을 취해야만 state가 변하는데, reward는 goal에 도달하기 전까지 0만 반환한다고 했을때,

actor는 어떻게 움직여야 할까? 어떻게 goal에 도달할 수 있을까?

 "Q에게 물어보면 답해줄거야" 라는 것이 Q-learning의 기본 컨셉이다.

다시 말해 state와 action을 Q 에게 주면 Q는 해당 state에서 action을 취했을 때의 reward를 알려주는 것이다.

이게 function에 argument를 대입하면 값이 나오는 것과 같아서 이를 Q-function이라 한다.

예를 들어,

Q(S1, Left)=0, Q(S1, Right)=0.5, Q(S1, Up)=0, Q(S1, Down)=0.3 이라고 할때, 어떤 방향으로 가야할 지 결정하는 것을 policy라고 한다.

이 때, reward가 가장 높은 쪽으로 이동하게 된다.

여기서 Q가 가질 수 있는 최대값(예시에서 Max Q는 0.5)을 maxQ(S1, a), Q를 max로 만드는 argument값(예시에서 arg값은 Left)을 argmaxQ(S1, a)로 표현한다.


그렇다면 이 Q는 어떻게 학습할까?

먼저 s' 상태에서 Q가 있다고 가정을 하자. 그러면 Q(s', a')로 Q(s, a)를 어떻게 표현할까? Q(s, a) = r + maxQ(s', a') 로 표현할 수 있다.

reward에 대해서도 정리를 하면 위와 같은 공식이 나온다.


총 정리를 하자면, Q-learning 알고리즘은

1) 모든 Q를 0으로 초기화

2) 랜덤으로 actor(agent)가 action을 하도록 만듦(goal에 도달하기 전까지 reward는 0)

3) 그러다가 액터가 goal에 도달하면 reward를 1을 줌

4) 이 때 Q 값을 업데이트 시킴

위의 과정을 반복하면 Q를 학습시킬 수 있다. 그리고 이것이 Q-learning 알고리즘이다.




*이 포스팅은 김석훈 교수님의 모두를 위한 머신러닝/딥러닝 강좌를 보고 정리한 것입니다.

Comments