본문 바로가기

강화학습 공부

강화학습 공부 1

우선, 이 모든 목적은 AutoML의 전문가가 되기 위한 초석이라고 생각함.


차근차근히 하나씩 말해보자.


나는 David Silver  교수님의 강의를 들으면서 공부한 내용을 정리할 생각임. 절대 쉽게 보면 안되는 게, 내가 느낀 바로는 지도 학습도 공부해보고 직접 돌려보기도 햇었지만, 솔직히 강화학습이 훨씬 더 어렵다.


내가 번호를 매기는 데, 이거는 각 슬라이드에 대한 설명이니 슬라이드를 보면서 이걸 보면 됨.

내가 다 맞는거 아니니까 그냥 틀리면 댓글로 남겨주세요.

정리목적이라.... 그냥 음슴체나 반말로 하겠음. 다시 말하지만 정리목적임. 그리고 써본 사람은 알겠지만 이거 말 길게 치는 거 은근 귀찮음.

~했습니다 라던지 ~ 했었습니다 이렇게 쓰기에는 너무 길음.  음슴체나 반말로 공부 정리.


강의자료는 알아서 http://www0.cs.ucl.ac.uk/staff/d.silver/web/Teaching.html 여기서 받자. 이거 은근 오래걸리니 컨트롤 키로 10개 다 클릭해서 한꺼번에 다운로드 받는 게 편할듯.


Lecture 1 : Introduction to Reinforcement Learning

이 강의는 일반 개념잡기니까 너무 자세하게 들어가려고 하지말고 그냥 이런게 있구나라고 생각하면 됨. 자세한 것을 대충~ 설명하는 느낌.


// 1.  그냥 제목


// 2. OutLine

대충 읽자. 이런걸 배울것이다.

12345가 있는 데,

1은 그냥 과제 몇 시험 몇 등등 넘어가자

2는 강화학습에 대해 공부할 것이고

3은 강화학습 문제또는 과제들에 대해 볼거고

4. 강화학습 에이전트에 대해 말해보고

5는 강화학습을 통한 문제들? 뭐 무튼 대충 이런게 있따.


// 3. Class Information

넘겨


// 4. Assessment

넘겨


//5. Textbooks

이런 책 있으니 사면 좋음. 이런 기초 공부할때마다 항상 느끼는 거지만, 어떤 사람들은 블로그나 이런거 보고 대충 공부하는 데, 다 알면서 필요한거만 보는 수준 아니면 기초는 책을 사는 거 추천


// Many Faces of Reinforcement Learning

많은 면에서 강화학습이 적용될수도, 많은 분야에 걸쳐있다는 걸 말해줌


// Branches of Machine Learning

머신러닝안에는 대표적으로 세가지가 있다.

Supervised Learning이라는 지도 학습

Unsupervised Learning 이라는 비지도 학습

Reinforccement Learning 이라는 강화학습이 있음.

근데 이거 다 독립된거 아니라 다 서로 연관된 부분도 있음.

앞으로는 그냥 영어를 쓰겠음. 왜냐면 강화학습 볼 정도면 이미 영어가 익숙한 분들이 볼터


// Characteristics of reinforcement Learning

강화학습 특성

다른 머신러닝 알고리즘과 다른 점은

1. Supervised와 달리 선생님이 없음. 즉 답이 없다는 것임. 지도학습에서는 정답을 다 주고 학습을 시켰다면 이건 그런것도 없고 오로지 Reward라는 보상만 잇음.

2. 보상이 즉각적이지 않음. 지도 학습같은 경우에는 어떠한 이미지에 대해 이건 고양이야, 개야 라는 정답을 바로 알려줘서 고친다면 강화학습은 이렇게 바로 안주고 10분뒤에 올수도 있고 바로 올 수도 잇음.

3.  그렇기 때문에 시간이 엄청 중요함.

4. Agent라는 애가 즉 예를 들면 로봇의 행동이 받는 데이터에 영향을 줌. 일정한 데이터가 계속 오는 게 아니라 이 행동을 함으로써 받는 데이터 자체가 다른 게 될 수도 있다는 거임.


// Examples of Reinforcement Learning

강화학습의 예시라는 데, 뭐 이런게 있다는 거. 그냥 읽어보자.

헬리콥터라던지 백가몬 게임에서 세계 챔피언을 이겼다던지 등등


// Helicopter Manoeuvres

넘겨

// Bipedal Robots

넘겨

// Atari

넘겨


// Reward

별표 치자. 중요하다.

reward는 보통 R이라고 하고 밑에 t가 붙는 것은 어떠한 시간(time step)에 있을 때의 보상이라는 의미. 

보상은 여러개의 값 즉 벡터형식이 아님 (ex (0,1,2) ) . scalar 라는 말은 즉 숫자 하나라는 거임. 보상은 숫자 하나.

agent가 t라는 단계에서 얼만큼 잘 했는 지를 표시해주는 거임. 내 글을 읽었다? +1. 안읽었다? -1 뭐 이렇게. 그니까 t step에서 숫자가 주어진다고 보면 됨. 로봇이 넘어지지 않았다 +1, 넘어졌다 -1 이렇게.

agent가 해야할 것은 maximise cumulative reward. 즉. 누적된 보상이 최대화 되면 된다는 것임.

이 말은 즉, 로봇이 넘어졌다 -10, 안넘어짐 +1로 했을 때, 11번 안넘어지다가 1번 넘어졌다고 하면 누적 보상은 딱 1이지만, 그래도 최종적으로 보면 잘 걸은 거임. 마이너스면 대체적으로 못걸었다고 하는 거고. 물론 누적 보상이 높을 수록 좋겠지. 하지만 단 +1이여도 그래도 잘 걸은 것임.

강화학습은 reward hypothesis를 기반으로 한다는 데, 

reward hypothesis : 모든 목적은 누적 보상을 최대화 하는 것으로 묘사될 수 잇다는 이론.


// Examples of Rewards

각종 상황에서의 보상을 말함.

읽어보면 그냥 이해됨. 

보상의 기준을 잘 정해야 한다는 것을 이해


// Sequential Decision Making

시간에 따라서 지속적으로 미래에 받을 보상을 최대로 하는 Action(행동)을 선택하는 것이라는 의미이고 이게 곧 목적이다. 

사람이 Agent의 모든 Action에 대해서 좋은 Action인지 안좋은지 알려줄 수가 없기 떄문에 Agent가 상호작용을 하는 환경에서 나오는 Reward 정보를 효과적으로 이용해서 좋은 Action을 계속 할 수 있도록 학습시키는 방법. 뭐 이 방법론에는 여러가지가 있고 Policy Gradient등등이 있는 데 나중에 얘기할 것이니 일단 목적만 이해하면됨


나머지는 Action은 한번 행동을 하면 결과가 나중에 올 수 있다는 거고, 보상이 지연될 수 있다는 거임.

아까 말한 거임.

어떤 경우는 즉각적인 결과보다 나중에 오는 결과가 더 많이 오는 경우가 있음. 그 아래가 예시. 

쌀 농사를 짓는 다고 하면 지은 것에 대한 결과는 몇 달이나 걸림. 뭐 이런 경우


// Agent and Environment

뇌가 Agent라고 생각하면 됨.

그림을 보면 agent가 t라는 step에서의 action인 At를 함. 그러면 환경에서 거기에 대한 reward인 Rt와 Observation인 Ot를 줌. 반대로 생각할 수도 잇음. 환경으로부터 두개를 받고 action을 할 수도 있음. 근데 당연히 처음에는 action부터 하고 받겠지.

여기서 observation이라는 관찰이라는 것은 음... 바뀐 환경에 대한 것이라고 해도 됨. 예로 들어 너가 행동을 했고 거기에 환경이 이렇게 바뀐걸 내가 보여줄게 하는 것.

게임으로 생각하면 슈퍼마리오에서 우리가 조이스틱이 있고, 모니터가 있고, 게임기가 있지 않나?

우리가 agent 이고, 환경은 게임기 자체.

그러면 우리가 행동할 수 잇는 action은 조이스틱으로 이동할 수 있는 위,아래,왼쪽,오른쪽. 그리고 뭐 a,b버튼이 있겟지.

우리가 오른쪽을 갔어. 근데 떨어져서 죽었어. 그럼 환경은 보상으로 -1을 주겠지. 그리고 observation은 모니터로 너가 죽은 것을 보여준다던가, 나머지 뭐... 목숨이 하나 없어졌다던가 뭐 이런거를 보여준다고 난 이해함. 

무튼 다음


// Agent and Environment 2

t 라는 step에서 agent는 action At를 하고, Ot를 받고, Rt를 받지. 근데 이거 연속적인 거 아니야. 무슨 말이냐면 At를 했기 떄문에 Ot나 Rt를 받는 게 아니야. 그냥 step t에 그 3개를 받거나 한다는 거야. 이걸 했기 때문에 이거를 받는 게 아니야. 

무슨 말인지 모르겠다면 일단 환경을 봐보자.

환경은 At를 받으면 받은 거에 대해서 보상을 주잖아? 근데 환경은 Rt+1을 줘. 즉 한거에 대한 보상과 관찰을 주긴 하는 데, t+1으로 준다고. 어떻게 보면 당연한 얘기지.

그니까 위에서 agent가 받은 Ot나 Rt는 At를 해서 받은 게 아니라 그 전에 At-1를 했을 때 받은 거라는 의미야.

At를 하면 다음 step인 t+1에서 agent는 Rt+1이랑 Ot+1을 받는 다는 거임.

t는 뭐 step마다 증가


// History and State

history는 말 그대로 역사 즉 기록임. 그래서 History를 보면 여태까지 어떤걸 했고 받았는 지 알 수 잇음.

즉 t step의 History인 Ht는 t 스텝까지의 모든 게 들어있겠지. 그니까  Ht = O1,R1,A1, ... At-1,Ot,Rt 임. 

순서가 가만보면 반대인 이유는 마지막 Step에서 agent가 행동을 하고 At-1에서 행동한 거에 대한 Ot와 Rt를 받았을 테니.

agent는 이 역사를 보고 어떤 행동을 해야할 지 선택하고 환경은 어떤 보상과 어떤 관찰을 줄지 선택함. 한마디로 참고하는 거임. 

여기서 중요한 개념이 나오는 데. State라는 상태.

State는 다음에 할 것을 결정해 주기 위한 정보임.  이게 중요.

근데 역사랑 헷갈리지 말자. 밑에보면 state는 history의 함수라고 함.

한마디로 역사를 보고 그 역사를 가공해서 현재 State를 정함. 즉 다음에 어떤 행동을 할 지 참고하는 STate를 만든다는 거임.

아직도 이해가 안갈걸?

예로 들어주면, 너가 해왔던 행동들이 있어. 근데 너가 맛집을 가. 근데 너가 여태까지 가왔던 맛집들이 있어. 근데 다음 맛집을 선택하는 기준은 너가 지금 정한다고 했을 때, 여태까지 가본 맛집중에서 가장 맛있는 집을 가겠다라고 할 수도 있고, 바로 전 집이 맛있었으니 그 집으로 가야겠다라고 할 수 도 있잖아? 그니까 여태까지 간 것을 다 활용하는 지 바로 직전 거만 활용하는 지는 너가 정하는 거잖아. 그래서 history의 함수가 State라고 하는 거야. history는 잘 안쓰이고 state가 많이 쓰인다고 해. 뭐 좀있다가 더 보면 그 느낌이 이해될 거임. 

또 예를 들면, 너가 지금까지 코딩한 것들을 책을 썼어. 근데 너는 다 안보고 최근에 쓴 거만 보고 참고하고 싶어. 뭐 이런 느낌.

아까도 말했듯이 환경도 agent한테 줄 때 역사를 참고한다고 했잖아. agent도 행동 선택을 할 때 참고할 테고. 그래서 State는 딱 하나가 있는 게 아니라 사실 2개가 있을 수 있지. 환경 상태와 agent 상태.


// Environment State

이게 환경 상태

Set라고 표시되어잇지. 이거는 step t에서의 환경 상태를 의미해.

보통적으로 agent한테 잘 안보여. 실제로도 그렇잖아. 너가 유리창을 깬다고 생각해봐. 그럼 어디가 다칠 지 알어? 모르지. 해봐야아는 거지 어디가 어떻게 찢어지고 이런거 모를거 아냐. 그게 환경이라는 거야. 환경이 보인다는 것은 너가 이 유리를 깻을 때 어떻게 다치고 얼만큼 찢어지고 이런 걸 알 수 있다는 거지.  느낌만 이해해

근데 만일 보인다고 해도 무의미한 정보라고 하는 데, 이게 무슨 말이냐면... 환경이 잘 보이지도 않지만 보인다고 해도 agent는 막 2개만 보려고 했는 데 환경상태에서는 999개가 있고 막 이런 느낌. 여기서 본다는 거는 reward나 observation을 볼 수 잇다는 게 아니야. 환경은 환경 상태를 보고 그 두개를 결정해서 agent한테 보내주는 거니까.


// Agent State

Sat는 step t에서의 agent의 상태.

이건 은근 쉽지? 환경이 이해하기 좀 난해하지.

내가 다음 행동을 하기 위해 필요한 정보지. 너가 커피를 사. 근데 너는 커피들의 정보들중에 가격을 참고해서 사고 싶어. 근데 친구는 가격도 참고하는 데 , 원두도 참고하고 싶고 옆 친구는 거기다가 휘핑크림 유무도 알고싶대. 뭐 이런 개념이야. 

history의 아무 함수가 될 수 있다는 말이 이거일 거야 아마.


// Information State

이거는 보통 Markov state라고 하는 데, 이게 더 익숙할? 거야. Markov 마르코프라고 읽지.

여기서 정의가 나오는 데, 이 의미는 뭐냐면. 단순하게 말해서 다음 행동을 결정하기 위한 게 state라고 햇짢아. 근데 그 행동을 하기 위해 그 전 상태나 이런 것도 잇을 거 아냐. 거기서 그냥 바로 직전 상태만 보겠다는 거야. 이게 마르코프야.

한마디로 과거부터 다 안보고 그냥 바로 직전만 보겠다.

너가 헬리콥터 운전기사라고 치면, 현재 너가 참고할 수 있는 정보들에는 바람의 세기, 기름의 양, 고도, 뭐 이런게 있다고 치자. 그럼 너는 이륙할 때의 바람의 세기나, 기름의 양, 고도 뭐 이런 거까지 생각하진 않잖아. 그냥 지금의 바람의 세기나 기름등이 지금 너한테 중요할 거 아니야. 이게 그 뜻이야. 그래서 정의 식을 보면

P[St +1| St ] =P[St +1| S1....St ]  라고 나오는 데, 이걸 잘 생각해봐.  아, 일단 의미는 t step에서 상태인 St에서 St+1으로 갈 확률을 말해.(왼쪽) 

좀 더 알아듣기 쉽게 말하자면, St를 참고해서 St+1을 갈 확률은 S1부터 St까지 참고해서 St+1로 갈 확률과 똑같다~ 라는 의미야.

그래서 현재 즉 바로 직전상태만 중요하다 이거지. 그래서 바로 직전 상태(현재 상태)를 제외한 나머지는 버려.

이걸 마르코프 상태라고 해.


// Rat Example

이건 단순 예제라 넘어갈까 했는 데,

저 물음표에 어떻게 될 거 같아?

전구 두번 키고 레버 당기고 종을 울렸더니 감전되고,

다음에는 종울리고 전구 ㅣㅋ고 레버 두개 당기면 치즈를 받았어

그럼 세번째는 어떻게 될까?

단순히 각 요소의  개수로 치면 불 1개에 레버 2개 종 1개니까 2번째와 동일하니까 치즈를 받겠지. 근데 바로 직전 2개만 본다고 너가 정의를 한다면 레버당기고 종 울리면 감전당하니까 감전당하겠지. 이제 느낌이 좀 올 지 모르겠다만 그래서 정의하는 기준에 따라 다를 수 있다는 거야. 보상의 기준이라고 할 수도 있고, state에 따른 행동의 기준이라고도 할 수 잇을 거같아 내 생각엔?


// Fully Observable Environments

이건 agent가 환경을 다 볼 수 있는 상황을 말해. 환경이 일반적으로  잘 보이지 않는다고 했잖아? 근데 agent가 볼 수 있는 거를 Fully Observable Environments라고 해.

이걸 보통 Markov decision process로 MDP라고 해. 보통 MDP로 많이 말하지.

이때는 환경을 다 알기 떄문에 즉 상태도 같다고 하는 데.... 이거 사실 다 같다는 게 다른 설명을 봐도 정확히는 아직 이해는 안가.

어차피 참고하는 정보가 다 같기 떄문에 상태가 같다고 한 건가? 그리고 어떻게 바뀌는 지도 다 알기 때문에 Observation을 줄 필요가 없고 다음 상태를 주는 건가? 이건 나도 궁금함.... 뭐 일단은 그냥 이해하고 넘어가자. 이런 걸 MDP로 부른다~


// Partially Observable Environment

당연 다 볼 수 있으면 못 볼수도 있겟지.

부분적이라서 partially라고 하고,  partially observable Markov decision process라고 POMDP라고 함. 폼디피라고 읽고

이건 환경을 볼 수 없는 상황을 말하고, 환경을 다 볼 수 없기 때문에 agent의 상태와 환경 상태가 달라. 환경은 얘가 하는 거에 따라 뭘 주지만 agent는 모르지. 그래서 상태가 다르다고 한 듯.

예로 들어서 포커를 칠때 상대 패를 모르잖아? 근데 우리는 내가 아는 카드에 한해서 결정을 하긴 해야되. 그렇게 함으로써 어떤 결과가 올지도 몰라. 아마 MDP에서는 어떤 결과가 올지도 알아서 상태가 같다고 한 게 아닐까. agent가 환경에서 뭘 줄지 이런 걸 아니까? 즉 환경이 뭘 줄 지를 아는 상황이라 다 같다고 한 거 일 수도 있겠다는 생각이 듬.

무튼 그래서 agent는 본인만의 state를 표현해야한다네. History 자체를 쓸 수 도 있고, RNN을 쓸 수 도 있고,등등..

표현하는 방법에는 여러가지가 있다고 해.

우선은 이렇게 해야한다~ 정도로 알자.


예시로 축구로 든다면... MDP는 우리가 피파를 하는 거야. 모든 상대선수가 어딨는 지 내 동료가 어딨는 지 알 수 잇지. 공이 어딧고 지금 어디로 가야 비어있는 등...

근데 POMDP는 축구에서 한 개인의 축구선수야. 축구선수가 볼 수 잇는 건 눈에 들어오는 본인의 앞만 볼 수 있고 뒤에 누가 있고 상대 선수가 지금 어딨는 지까지는 다 안보여. 


// Major Components of an RL Agent

이제는 강화학습 agent의 구성요소를 알아보자.

세개가 있어.

세가지를 다 가지고 있을 수도있고, 하나만 가지고 잇을 수도 있고 그렇대.


1. Policy : agent가 어떻게 행동할지를 결정해 줌.

2. Value Function : 이 상태가 좋은지 안 좋은지 알려줘

3. Model : agent가 생각하는 환경. 

인데, 다음 장에서 설명해줄게


// Policy

Policy는 agent의 행동을 규정해줘. State를 넣으면 action을 뱉어주는 거지. 보통 ㅠ로 표현해. 파이라고 읽고.

즉 Policy에 상태를 넣으면 action을 매핑해준다? 라고 말할 수 잇어.

너 앞에 붕어빵이 있어 그게 state야.근데 너가 꼬리부분부터 먹을 지, 머리부터 먹을 지 행동을 해야하는 데, 상태만 가지고 있다고 행동을 규정할 순 없잖아? 그렇기 떄문에 Policy라는 어떠한 가치관이 잇는 거지. 너는 꼬리부터 먹겠다라는 가치관을 가지고 있으면 그렇게 행동하는 거고, 머리부터 먹겠다는 친구는 머리를 먹는 행동을 선택하겠지. 그런 개념이야.

그래서 너의 가치관에 그런 상황을 주면 넌 그런 선택을 하는 거지.

여기서 Policy는 두가지 종류가 있는 데,Deterministic Policy/ Stochastic policy가 있어.

deter는 상태를 넣으면 딱 action이 하나 나와. 이걸로 해라 이렇게.

근데 stochastic은 말 그대로 확률적 policy야. 

s라는 상태에서 a를 선택할 확률인 거지. 너가 붕어빵을 먹을 때 꼬리 먹는 행동(90퍼), 머리먹는 행동(10퍼)이렇게 보여줘. 그 안에서 선택하는 것은 제일 높은 것을 선택할 수도, 제일 낮은 것을 선택할 수도 있고 그런거지.

뭐 이렇게 두개가 있다고만 알아두자.


// Value Function

이건 State가 얼마나 좋은 지 나타내주는 애야.

미래의 보상을 예측한다고도 하고.

즉 다음 state로 가려고 하는 데, 당연히 state가 하나는 아닐 거 아니야? 1,2,3이 있다고 치면 1번으로 무작정 갈 순 없잖아? 1번 state가 얼마나 좋은지 나 쁜지를 알려줄 수 있는 애고, 거기에 따라 action을 선택할 수 있는 거지.

vㅠ(s)라고 하는 데, v는 value function이고 ㅠ는 policy s는 state야.

그리고 E는 expectation으로 기대라고 하고 r은 감마. R은 보상. t는 step t야.

설명을 하자면, 이 State로부터 어떤 policy ㅠ를 따라갔을 때 얻을 수 있는 총 기대값을 말해.

잘 보면, 너가 현재 붕어빵을 들고 잇는 상황에서 꼬리부터 먹겠다는 가치관으로 먹었을 때 총 만족 지수가 얼마나 될까 이런 개념으로 말하면 이해가 될라나...

그래서 식 보면 St=s 즉 상태 s에서 시작했을 때 앞으로 얻을 보상들을 다 더한 값이야. 

지금 보면 Rt+1부터 시작하잖아. 거기서부터 ....이니까 끝까지 갔을 때 까지야. Rt+n이라고 써야하는 거 아니야? 라고 할 수 있겠지만, 너가 붕어빵을 한번에 먹을 수도 있고, 10번에 쪼개서 먹을 수도 있고 그러니까 n을 정의할 수 없지. 그래서 그냥 게임 끝날때 까지의 보상으로 이해하면 되. 

근데 여기서 r은 뭐냐? r은 중요도? 라고 생각하면 되. r은 매번마다 r이 계속 곱해져. 만일 Rt+9면 r은 r^8이겠지. 감이 오나?

r을 1로 설정하면 r은 곱해져도 1이잖아? 근데 0에 가까우면 R을 매번 똑같이 받는다고 해도 t가 반복될 수록 점점 보상이 작아지겠지? 1에 가까울 수록 계속 유지될 테고. 좀더 멀리보냐 가까이 보냐 차이야. 보상 받는 중요도를 바로 앞으로 할 지 더 멀리 할지를 결정하는 것이지.

우선 대충 이렇게 알아두고 넘어가자


// Example : value function in atari

넘겨


//Model 

이건 환경이 어떻게 될지 예측하는 애야. 좀 쉽게 말하면 기억하는 거지. 내가 너랑 손을 잡았더니 볼이 발그레졌다. 손을 꼬집었더니 나를 째려봤다 라고 했을 때, agent인 나는 내가 이 행동을 했을 때 너가 어떻게 나올 지 아는 거지. 기억한다? 라고도 할 수 있으려나.

그래서 agent는 환경을 정확히 알 때 예측할 수 있어. 다음에 환경이 나한테 뭘 줄지...

환경을 예측하는 거에는 reward 예측과 state transition 예측으로 또 나뉘어

reward 예측은 State s에서 a를 했을 때 어떤 reward가 올 지 예측하는 것이고,

state transition 예측은 State s에서 a를 했을 때 그 다음 state가 뭘지 예측하는 것이야. 이건 예제로 설명해줄게.

그래서 P는 다음 상태를 예측하는 거고, R은 다음에 오는 즉각적인 보상을 예측하는 거야.

PPT에 적혀있지

수식 설명은 Pass' 는 state s에서 a라는 action을 했을 때 s'인 state로 갈 확률이야.

Ras는 State s에서 a라는 action을 했을 때 받을 보상이야.


// Maze Example

이걸로 한방에 이해해보자.

너가 한 step갈때마다 reward를 -1을 받아. 움직일 수 있는 것은 위 아래 왼쪽 오른쪽이야. 여기서의 State는 Agent의 위치야.


// Maze Example : Policy 

여기서 보면 화살표들이 있지. 여기로 가라는 뜻이야.

아까 말한 ㅠ인 거지. 너가 어디로 갈 지 결정해주잖아. 이게 policy라고 볼 수 있어. 너무 당연하게 생각하는 거라고 할 수 잇겠는데 , 지금 보면 화살표가 다 정답이지? 저거 최적의 policy야. 최적일 때 저런거고 최적이 아닐때는 막 오른쪽 가야되는 데 위 가라고 하고 그래. 그러다가 최적을 찾는 거지. 그래서 저 화살표들은 각 상태 s에 있을 때의 어떤 행동(어디로 가야할지) 알려주는 가치관인 policy ㅠ라고 보면 되.


// Maze Example : value function

아까 value function은 미래 받을 보상의 최대라고 했어.

보상은 여기서 -1로 했지?

한칸 갈때마다 -1인데, 직접 손으로 세어봐. 첫 state에서 어떠한 정책 ㅠ를 따라갔을 때 얻을 수 있는 보상을 다 더해보자. 즉 policy를 따라서(화살표를 따라가면서 한칸 갈때마다 -1을 세어봐. 그럼 start하는 상태는 정확히 -16을 받을 수 있어.그럼 다음으로 가라고 했으니 -15지?

근데 이번에는 위로가면 -14고 아래는 -16이야. 너라면 어디로 갈래. 당연 -14겟지?

이것또한 너무 당연하게 느끼진 마. 최적의 Policy를 따라갔을 때의 value function이니까.

그래서 value function은 무조건 policy가 있어야해. 그래야 계산을 하겠지.

그래서 밑에 수식 보면 vㅠ(s)라고 잇는거야. 이 정책을 따라 갔을 때의 이 state에서의 value function이야.


// Maze Example : Model

이번엔 마지막 모델이야. 

모델은 아까 말했듯이 agent가 환경이 뭘 줄지 예측하는 애야

그래서 지금 보면 다 -1이지? 저기로 가면 -1을 준다는 것을 아는 거지.

여기서 아까 예측 2개라고 했잖아

하나는 state transition이라고 했어. 이 행동을 하면 어떤 state로 갈 지 예측할 수 잇따고 했잖아. 그게 바로 저기 있는 칸들이야. 지금 지도 같이 그려져 있잖아. 그게 바로 내가 어떤 행동을 했을 때 이 state로 간다는 것을 아는 거지. 

근데 가만보면 앞에 봣던 그림과는 다르지? 아까 -16이라고 했던 state있잖아 거기 밑부분이 아예 안 그려져 잇어. 저건 agent가 그쪽으로 가본적이 없기때문에 모르는 거야. 예측할 수 없는 거지. 실제로 저기서 밑으로 갈 순 있어. 근데 아직 안가봐서 모르는 거고, 갈 수 있는 지 없는 지 다음 state가 어떻게 될 지 모르는거야. 아래로 가겠다는 action을 했을 때 어떤 state가 있을 지 모르는 거지. 그래서 컴컴한거야. 

한마디로 모델 자체가 현재 완벽하지 않아. 당연히 완벽하지 않을 수 있어. 너도 어디론가 운전을 한다면 그 길들은 알고 있을 거야. 다음에 갈때 어떻게 가야할 지 알겠지. 근데 한번도 가보지 않은 길은 모를거야. 어떤 길이 펼쳐질지도 모르고 너에게 어떤 경험을 가져다 줄지도 모르지. 그렇기 때문에 모델도 완벽하지 않을 수가 있다고 말하는 거야.

두번재는 reward 예측이라고 했어. 그래서 저기 칸들은 예측하는 state라고 한다면 칸 안에 있는 -1들은 예측하는 보상들이야.  저기를 가면 -1을 받을 줄 아는 거지. 


// Categorizing RL agents (1)

agent의 구성요소는 다 봤고, 이제 종류에 대해 말해줄게

3가지가 있어. 

Value Based

Policy Based

Actor Critic

이야. 아까 구성요소 중에서 하나만 있을 수도 있고 다 있을 수도 있을 수 잇다고 했잖아?

그거에 따라서 분류가 되는 거야.

value based라고 하면 Policy가 없이 Value function만 있는 agent를 말해.

Policy Based는 value funciton없이 policy만 가진 agent를 말해

actor critic은  두 개를 다 가지면 액터 크리틱이라고 해


근데 아까 분명 maze에서 value function은 화살표대로 따라가서 value function을 구했다고 했는 데, value based는 policy가 없는 게 말이 안되잖아?

그건 value based agent가 explicit한(명백한) policy가 없을 뿐 value function에 기반한 implicit(절대적인) policy가 있다고 해.

이해가 잘 안될거야. 사실 나도 잘 안되.

다른 사람이 설명한 것을 참고하자면

"RL의 방법론은 크게 value based method 와 policy based method로 나뉘어지며, value based method에는 "explicit" 한 policy가 없을뿐, value function에 기반한 implicit policy가 있습니다. 여하간에 agent가 environment 안에서 어떻게든 동작을 해야하니까요!

이해를 돕도록 이런 implicit policy의 예시를 들어보자면, "지금 내가 있는 state s 에서 갈 수 있는 다음 state s1과 s2 중에서 value가 큰 쪽으로 가라! " 같은 것이 있을 수 있습니다. 이를 value function 에 기반한 greedy 한 policy라고 할 수 있습니다. 이 경우 분명 implicit 한 policy는 존재하지만, policy를 위하여 explicit 하게 따로 뉴럴 넷을 둔다던가 하는 것은 아니기 때문에 value based method 라고 할 수 있습니다. "

라고 하는 데....

잘 모르겠네 이렇게 들어도. 느낌이 오는 분은 제게 좀 설명해주시면 감사하겠습니다ㅜㅜ


// Categorizing RL agents (2)

위로도 분류를 하긴 하는 데, 아직 모델 안 말했잖아?

모델 있냐 없냐로도 분류하긴 해.

Model Free는 value function이나 Policy는 있는 데 모델을 안만드는 것이고,

Model Based는 value functinon이나 policy가 있고, 모델도 있는 거야. 모델을 만들고 거기에 근거해 움직이는 거지. 아까 말한 운전을 생각해봐. 너가 이미 지났었던 길을 기억하잖아? 그걸 기반으로 움직이는 거야.


// RL Agent Taxonomy

이 RL 분류를 정리하면 이렇게 된대. 그냥 봐도


// Learning and Planning

이번에는 agent가 아닌 우리가 풀어야할 문제들을 분류해보자.

신기하게도

Reinforcement Learning 이랑 Planning이 있어

강화학습문제에 강화학습 문제가 있다니!. 내가 어디선가 들었는 데 강화학습을 뜻하는 Reinforcement ?? 이게 약자로 들었는데...

무튼 

1. Reinforcement learning : 이건 환경을 모르는거야. 그래서 환경과 상호작용하면서 policy를 개선시키는 거고.

2. Planning : 이건 환경을 알아. reward를 어떻게 주고 state transition이 어떻게 될지도 알아. 환경에 대한 모델이 있는 거지.

환경을 알면 agent는 실제로 환경에서 뭔가를 안해도 다른 상황을 할 수 잇다는 데 이걸 몬테카를로 탐색이라고 한대. 일단 알아두고. 여기서 agent는 환경과 상호작용할 필요없어. 왜냐면 다 알거든. 모델을 가지고 있기 때문에 그걸로 계산을 해. 여기서도 policy를 개선시키려고 해.

실제 상황은 1번이 많겠지. 더 어려울 테고.

정확한 건 다음 강의에서 배우면서 말해줄게.


// Atari Exaple : Reinforcement Learning

이건 위 문제 분류에 대한 예시야

너가 게임을 해. 근데 너가 처음 슈퍼마리오를 해. 그럼 게임을 어떻게 하는 지도 모르잖아. 일단 해보면서 아... 떨어지면 죽는 거구나... 점프하면 뛰는 구나... ㅣ렇게 깨닫는 거잖아. 그게 1번


// Atari Example : Planning

너가 체스를 해. 근데 판을 다 보이니까 알고. 너가 킹을 움직이면 어디로 어떻게 움직이는 지 다 머리로 돌아가. 그럼 너는 거기서 어떤 선택을 하면 더 좋을 지 굳이 킹을 너의 손으로 움직이지 않더라도(낙장불입의 원칙) 머리로 계산해서 초를 읽을 수 있지. 

대충 느낌만 이해해.


// Exploration and Exploitation

탐험과 시도야. 영어 못할까봐 해석은 했어

두 개를 재 해석하면 

Exploration : 환경으로부터 정보를 못 모으는 과정

Exploitation : 지금까지의 정보를 바탕으로 최선을 선택

이 둘은 trade - off 관계라고해. 자고로 모르는 사람이 잇을까봐 말하는 데, trade-off란 자주 쓰이는 용어로 그냥 반비례라고 하기에는 좀 그렇지만 느낌만 이해해. 한쪽이 되면 한쪽이 안되고 이런 거를 말해. 우리가 코딩할때 편리한 것을 쓸 수록 성능은 안좋잖아? 그런거.

그래서 항상 균형이 중요하지

근데 저거 두개를 다 좋게 할 순 없어. 너무 탐험만 하면 쓸데없이 좋은 게 있는 데도 못쓰는 거고, 너무 시도만 하면 사실 탐험을 좀 더 하면 더 좋은 것을 얻을 수 잇는 데 우물 안 개구리처럼 그게 최고로 좋은 건 줄만 아는 거지. 그래서 균형이 중요해. 

여기서는 agent가 그렇기 때문에 좋은 policy를 얻어야 한다는것이야. 


// Exploration and Exploitation (2)

넘겨


// Examples

탐험과 시도 예신데 각자 읽어바


// Prediction and Control

이제 마지막 개념인데, 논문에도 많이 나오고 문제에도 많이 나와.

prediction 문제가 있꼬, control 문제가 잇어

prediction은 미래를 평가하는 거야. 평가는 보통 수치로 나타내지? 그니까 즉 value function을 잘 학습시키는 것을 prediction이라고 해. 

control은 미래를 최적화 하는 거야. best policy를 찾는 건데, policy를 찾는 문제.

뭐 이렇게만 생각하면 된대.


// Gridworld Example: Prediction

이거는 나도 잘 모르겠어 사실. 이해가 잘 안되고, 그냥 저기 숫자가 써있는 value funciton을 구한 거고 저걸 구하는 게 목적이래.


// Gridworld Example : Control 

이거는 policy를 구하는 거고, 맨 오른쪽인 화살표인 policy들을 구하는 문제라고 하네.

근데 뭐 그냥 이정도로만 알면 된대. 아직은 잘 모르겠어.


// Course OutLine

part1에서는 기초 

part2부터는 문제가 커지면서 어려워진다네.




// 현재까지 모른 개념

1. MDP일떄 agent 상태와 environment 상태와 Observable Ot가 같다고 하는 데, 어떻게? 왜?

2. implicit Policy? Explicit Policy?

3. Prediction / Control의 정확한 개념을 모르겠다.

혹자들은 prediction은 이미 policy를 알고있어서 미래의 결과를 예측하고 행동을 하는 것과 control은 가장 최적의 정책을 찾기 위해서 최적화를 하기 위한 것이 있다는 데 아직도 모르겠네.


'강화학습 공부' 카테고리의 다른 글

강화학습 공부 5  (0) 2019.02.08
강화학습 공부 4  (0) 2019.01.29
강화학습 공부 3  (0) 2019.01.28
강화학습 공부 2  (0) 2019.01.23