자 이번엔 lecture 4야. 5까지가 기본중 기본이라고 보면 되. 6부터가 진짜니까 5까지는 잘 들어야되.
// Lecture 4 : Model-Free Prediction
자 우리는 저번 시간에 MDP 환경에서 planning을 배웠어. 즉 환경을 다 아는 상황에서의 policy를 평가하는 방법(prediction)과 최적의 policy를 구하는 (control)을 배웠지. control에는 두가지 방법이 있엇어. policy iteration, value iteration.... prediction에는 iterative policy evaluation이 있었어. 그치?
그리고 마지막에 계산할게 너무 많다고 했어. 그래서 sample backup에 대해서 잠간 배웠어.
이거의 장점은 MDP가 아닌 환경에 대한 모델이 없어도 가능하다고 했지?
오늘 배울 것이 Model-Free야. 환경을 모를떄! 점점 현실과 가까워져.
긔리고 Prediction이라는 건 아까도 말했다시피 지금 이 policy가 어떤지 평가하는 거지. 그럼 결국 value function을 배우겠지?
오케이 감 부터 잡고 가자.
난이도가 이제부터 한 강의를 갈 수록 더욱 더 높아질거야.
// Outline
넘겨...라고 하고 싶지만...
다시 말해줄게. prediction은 policy를 평가하는 거야. 즉 value function을 구하는 거지. prediction에서는 최적이라는 말이 애매해. control에서는 최적의 policy를 비교를 통해서 찾았다면 prediction은 policy가 파이(ㅠ)로 정해져 있고 그걸 따라갔을 때 value를 차즌ㄴ 것이기 떄문에 그 value에 수렴하는 지가 중요하대.
우리 이전에 policy evaluation 배웠었잖아? Iterative policy evaluation을 통해서 최적을 만들었던 것이지 policy evaluation만 하면 policy가 좋아지진 않아. 분명히 말하지만 policy evaluation은 그냥 policy를 평가를 했을 뿐이고, 거기에 대.해.서. greedy하게 policy를 만들었더니 최적의 policy를 구할 수가 있었던 것이지 evaluation 자체는 최적의 policy를 만들어주지 않아. 그래서 최적이라는 개념이 애매한거야.
이 policy를 따라가는 것으로 내가 이 이 policy에서 하라는 대로 이렇게 행동했을 때는 어느정도를 받겠다~ 라고 예상을 하기떄문에 prediction 이라고 예측이라고 하는 것 같아. control은 내가 policy를 조종해서 제일 좋은 놈을 얻고싶다 하기 떄문에 control이라는 의미가 붙지 않았을까 싶네.
무튼 여기서의 방법은 2개가 있대.
MC와 TD라고 하는 데, 방법론이야.
환경을 모를 때 prediction하는 방법 2개.
// Model-Free Reinforcement Learning
아까는 Planning이라고 했지. 근데 내가 1강에서 말했지. 환경을 알면 Planning. 모르면 Reinforcement Learning이라고.
그래서 저번 강의는 그 planning 문제들을 푸는 방법으로 DP적 방법들으 배웠었어. 왜 Planning이라고 하냐고 한다면... 내가 생각할떄는 이미 다 알고있으면 거기에 맞춰서 계획을 세우는 거라고 생각해서 그런 거 같애. 너가 제갈공명이야. 상대가 어떻게 나올 지 다 알아. 그럼 흠... 어떻게 나올지 알면 거기에 맞춰서 작전을 짜야되잖아? 그렇기 떄문에 plan이라고 계획을 세운다고 한거같애.
근데 요번 시간에는 환경을 모를 때야. 그래서 강화학습이라고 하는 거같애. 직접 겪고 배운다. prediction 근데 예측한다? 라고 해도 되나
다음 시간에는 환경을 모를 때 최적의 policy를 찾는 것을 배울 것이고
// Monte-Carlo Reinforcement Learning
우선 몬테카를로라고 뭔가 많이 들어본 용어가 나오지.
근데 사실 단순해.
이름 보고 어려워하지마.
몬테카를로 방법은 ..... 직접 구하기 어려운 것을 실험적으로 구한대. 그니까 직접 해보고 실제 값들을 통해 추정한다는 거야. 단순하지?
너가 10가지의 커피가 있어. 무슨 맛인지 모르지? 너가 그냥 직접 다 마셔본다는 거야. 그리고 나중에 추측한다는 거지. 눈가리고 마셔봤을 때 음? 이건 이거였는데? 이런거지. 무슨 말인지 알겠지?
강화학습적으로 말해보자면 직접 게임을 계~속 해보면서 return을 저장했다가 평균내는거야.
MC라고 줄여서 말하지.
정리되있는 것을 그대로 해석해볼게
MC 방법은 직접 episode들을 하면서 직접 경험하면서 배우는 거다
MC는 model free다. 어떤 보상이 올 지 모르고 어디로 갈 지 모른다.
MC는 완벽한 episode로부터 배운다. episode가 끝날야지만, 즉 한번 끝까지 게이믕ㄹ 끝내봐야지만 return을 안다는 것이지.
MC는 가장 단순하지만 가능한 아이디어를 사용한다. value는 즉 return의 평균. 해본 거다 이거지.
episodic MDP에 이 MC 방버을 적용할 수 있대. 물론 모든 episode가 무조건 종료되어야 하는 조건하에.
무튼 이런 건데 한번 보자
잠깐 말하자면 MDP에서는 우리가 직접 해본적이 없어. 잉 뭔소리야?
우리는 이미 다 알고 있어. 실제로 해본적은 없어 그냥 계획만 했었을 뿐이야. 다 아니까.
// Monte-Carlo Policy Evaluation
분명 prediction이라고 했어. 그러니까 policy evaluation이지 맞지? 평가를 해서 value function을 얻는다고 했었잖아.
그래서 목적은 어떠한 Policy를 따라가서 끝~~~까지 episode를 진행한 후에 그 policy에 대한 value funciton을 얻는 거야.
복습하자면, return은 모든 보상의 합이야. discount가 적용된!
그리고 value function은 기대하는 return이였어 알지? 한 episode는 일련의 과정이고, 그 과정에서 얻은 보상의 총 합이 return이고 그 episode 여러개들로 부터 얻은 return들의 평균이 value function이였어.
몬테카를로의 policy 평가는 empirical mean return이라고 하는 데, 이게 뭐냐면 실험적인 return 평균이라는 거래. expected return 대신에 empirical이라고 하는 이유는. expected는 우리가 예상하는 거잖아. 근데 MC는 뭐라고? 직접 해보는 것이잖아. 그래서 직접 해보고 그냥 평균 낸거야 단순하지? 여태까지는 모든 것에서 어디로 갈 확률에 따라 그것들을 평균낸거지. 직접 해보지도 않고. 왜냐면 다 알았으니까. 그냥 확률적으로 다 했었어.
이제는 그냥 실제 해본 값들을 집어넣어.
// First-Visit Monte-Carlo Policy Evaluation
이제 그 몬테카를로로 value function을 구하는 방법은 2가지가 있대
first 와 every로 말하는 데, first부터 말을 한다면
너가 맨 처음 방문한 것만 방문했다고 치는 거고, every는 너가 방문한 모든 것을 다 방문했다고 치는 거야.
이렇게 말하면 잘 이해안가지?
우선 식으로 따지면 두개의 차이점은 단지 Increment counter만 달라. 뭐 대수의 법칙으로 두개 다 똒같은 거나 마찬가지라고 말하지만 우선 차이점을 말해줄게.
너가 state가 10개가 있다고 쳐봐. episode는 여러개가 생길 수 잇지? 왜 그런지 모르면 1강 다시봐.
1234가 될 수도 있고,
12456이 될 수도 있꼬,
1457 이 될 수도 있잖아.
그럼 여기서 가장 먼저 방문한 state는 지금 다 똑같이 1이지? 그 말이야. 가장 처음에 방문한 1번 state에만 너 방문했다 라고 말해주는 거야. 다른 거에는 말 안해. 2,3,4는 방문한것도 아닌 거지. 그냥 맨 처음에 방문한 거만 방문했다고 치는 거야. 그리고 return은 뭐 30 20 10 을 받았다고 쳐봐. 그리고 1번 state를 3번 방문했었어. 그럼 value function은 60/3 을 해서 20이야.
// Every-visit Monte-Carlo Policy Evaluation
이거는 아까 말했다시피
너가 state가 10개가 있고, episode가 여러개 있어
1234
1456
1756
이렇게 방문했엇어. 그러면 N(s)가 몇개가 되냐면 12가 되. 모든 방문한 것을 방문했다고 치는 거야.
근데 return은 똑같애.
그럼 value function은 60/12가 되는 거야.
근데 중요한 것은 대수의 법칙으로 인해 first로 하거나 every로 하거나 상관이 없대.
// Blackjack Example
이건 블랙잭 예시를 드는 거야.
블랙잭은 규칙이 이래.
2장씩 줘. 근데 그 숫자가 10이야 그럼 넌 선택할 수 있어 더 받을 지 말지. 그래서 21을 넘기면 지는 거고 21을 넘기지 않았다면 넌 stop하거나 더 받을 수도 있어. 더 받아서 넘기면 또 지는 거야.무튼 stop을 했는ㄷ ㅔ 딜러가 가진 숫자보다 적으면 또 지는 거고 딜러보다 높다면 너가 이기는 거야. 도박이야 그냥.
그래서 뭐 이런 게임에서 너가 직접 읽어봐. 저런식으로 보상을 정하고 이랬다는 거야.
// Blackjack Value function after Monte-Carlo Learning
몬테카를로 학습으로 value function을 보여주면 저렇게 되.
위에 있는 것들은 ace라는 카드를 쓸 수 있을 때, 그리고 밑은 없을 때를 말해. 블랙잭에서는 ace라는 카드가 중요하기 떄문이야. 일종의 승리의 변수라고 해야할까...
무튼 있든 없든 직접 해보면서 경험험한 결과 episode가 만번 지났을 때는 막 들쭉날쭉해. 근데 50만번을 하니까 일정하게 수렴했어.
대수의 법칙으로 인해 어떻게 first하든 every하든 비슷하게 수렴하는 것을 보여주는 예시인것같은데 그렇게 좋은 예시는 아닌 것 같아.
그냥 대수의 법칙으로 아무거나 써도 된다~ 라고만 이해해둬
// Incremental Mean
증가하면서 평균내는 방식인데, 뭐 수식을 설명하기 전에 간단히 설명하자면, 지금 보면 방문 했던 것을 다 저장해야되잖아 어딘가에. 왜냐면 value function을 낼라면 S/N으로 평균을 냇었잖아. 근데 이 식을 쓰면 굳이 저장해놓지 않아도 된대. 그냥 방문할때마다 저장할 필요 없이 계속 이 식을 적용하면 된다 이거야. 저장안하고 그때그때 값을 바꿔버리는 거지.
식을 보면, uk는 일단 보지말고 x는 시퀀스래. 하나의 episode지.
episode가 k개 있는 거야. 그래서 시그마는 1부터 k까지 k개의 episode를 나타내고 이걸 구했으면 평균내야 하는거잖아. 이걸 바꿔야 우리는 방문할때마다 저장안할 수가 있어. 지금 저 상태라면 값 다 저장해놔야되.
x가 k개 있어야 평균낼 수 있는거잖아.
그래서 1/k를 일단 빼. 그래고 맨 마지막 xk를 빼고 k-1까지만 시그마로 해놔.
그럼 3번째로 표현할 수가 있대. 1번식이 uk잖아. k를 곱하고 k를 다 k-1로 바꿔봐. 그럼 3번식 나와.
그리고 4번째로 수식 바꿀 수 있지? 저건 그냥 다 곱해봐 1/k를. 그냥 풀어쓴거야. 어렵지 않지?
저렇게 하니까 우리는 바로 전에 있엇던 거에 현재거를 저렇게 넣어주기만 하면 된대.
한마디로 우리에게 필요한 것은 k-1번째와 k번째 만 필요하게 된거야. 원래는 1부터 k까지 다 필요했엇는데 말이야
한마디로 1부터 시작하면 여태까지는 123456을 다 기억했어야했는데
1일때말고 2일때부터는 1만 필요하고, 3일때는 2만 필요한거지.
// Incremental Monte-Carlo Updates
이거는 앞서 구한 incremental mean을 실제 value function 계산할 떄 넣은거야. 수식이 비슷하지 않아?
V(St)를 update할 건데, 이건 언제까지나 알고리즘이야. V <- V 면 앞에꺼가 새롭게 update 되는 거니까 뒤에꺼가 old하다는 거 코딩하면 다 알지?
V(St) : 현재까지 incremental 방법으로 업데이트한 현재까지의 value funciton 과거 value function이야. ( Uk-1 이야)
+
1/ N(St) : incremental에 나왔었지. 1/k엿지? 개수만큼 나눠야하잖아. 여기서 개수는 N(st)였잖아. 그래서 이걸 쓴거야.
Gt : 이거는 Xk였지? 현재 갔다 온 sequence 즉 episode야 현재. 갔다온 리턴 값이지 근데 왜 G냐고? return을 Gt로 표기하잖아.
V(St): 이건 아까도 말했어. 방금 Uk-1이잖아. 그래서 한거야.
그걸 다시 V(St)에 넣어주면 update 성공.
참고로 Gt-V(St)를 에러라고 한대. 왜냐면 현재 갔다온거랑 여태까지 평균낸거랑 얼마나 차이를 보이는 지 알려주는 거니까.
근데 밑에 있는 식은 뭐냐고?
1 / N(St)가 알파로 되어있네? 이건 고정시킬 수 있다는 거야. non stationary 문제에 좋다고 해
위에 식은 1/N(St)니까 시간이 지날 수록 점점 분모가 커지겠지? 그럼 현재 Gt가 커서 Gt-V(St)가 커도 적용이 별로 안된다는 거야. 최신 정보가 update가 잘 안되잖아. 그래서 고정시킨다면 오히려 최신것들이 적용되면서 오래된 것들이 점점 잊혀져 진다는 거야.
어때 들어보니 그럴듯하지?
// Temporal-Difference Learning
자 MC를 다 배웠어.
그럼 TD를 배워보자. Temporal 임시적으로 Difference 차이. LEarning 학습
우선 TD는 MC완 달라.
이것도 직접 episode를 경험한 것으로부터 배우네? MC와 똑같애
TD도 MC처럼 MDP 없는 model-free에 적용가능하대.
근데 여기서 차이점이 나와
MC와의 차이는 imcomplete episodes로부터 배운대. 아까는 complete였어. episode가 무조건 끝나야지만 평균내서 value function을 구했었는 데, 이제는 그럴 필요가 없대? ㅇㅅㅇ??
이제 끝까지 안해봐도 된대. 아~ 그럼 이런 느낌인가보다. 어느 정도 해보고 뭐야 얘는 허접이네 안해야지 하는 거랑 비슷한 건가보다~
그래서 어떻게 하는 건데?
bootstrapping으로 할 수 있다네? 이건 뭐지? 좀있다가 나오겠지?
TD는 MC가 그랫 듯 update를 하긴 하는데 guess를 update한대. 근데 뭐로? guess로?
이게 무슨말일까.
추측으로 추측을 update한다? 이것도 곧 나올 거야.
// MC and TD
목표는 사실 동일해. 어떠한 policy를 따라갔을 때 얻는 value function을 구하자는 거야. 근데 online이래. 실시간!! 아까는 꼭 끝나야만 했었는 데 이건 이게 중점이네. 실시간으로 얻고 싶다는 거네.
MC에서는 아까 저 식이 나와. 실제 돌아오는 return 인 Gt를 통해 Value funciton을 update했엇어. 기억나지?
어떻게 보면 Gt 방향으로 Value funciton을 계속 맞추는 거야. 수식을 생각해보면 당연히 Gt가 클수록 그쪽으로 value function이 업데이트 되고 작을수록 반대로 update 되겠지.
무튼...
TD를 볼까?
똑같이 value function을 update하긴 하는 데, 아까 Gt자리에 Rt+1 + rV(St+1)이 있네? 한스텝가서의 보상과 그때의 value function이잖아?
오호라 이거 어디서 많이 봤던 건데... 벨만 기대 수식을 다시 봐봐. 2장에 있어. 벨만 기대 수식을 보면 value function과 똑같애. policy를 했을 때 그 action에 대한 보상을 받고 거기서의 valuefunction을 더한 것이 현재의 value function이였잖아.
뭐 다시 말하자면 한 step을 가서의 예측으로 현재 예측을 update한대.
그래서 아까 Gt-V(st)가 에러라고 했었지? 이제 저 괄호안에 있는 게 TD 에러라고 한대.
그리고 Gt자리에 있는 것을 TD target이라고 한대. 바로 앞이 목적이라는 거야. 바로 앞이 정답이다! 이런 뜻이라고 햇석을 했어.
그래도 이해가 잘 안갈거야. 아니 그럼 V(St+1)은 어떻게 구하는데
근데 내가 생각할 때, 어떤 강의는 예측으로 예측을 한다. 이렇게 말하기도 그런데.... 내가 생각할때는 아닌 거같애.
분명 TD도 실제 경험을 해보고 update를 한다고 했고, online이라는 차이라고 했어. 그렇게 했을 때, V(St+1)은 내가 추측하는 값이 아닌 바로 앞을 말하는 거 같애. V(St)는 t+1에서 업데이트를 하는 거지. 거기 갔을 때 바로 전꺼를 update하는? 그렇게 보이지 않아? 아니면 그걸 어떻게 알아. 그니까 TD Target이라고 하는 것 같고.
아 TD면 TD지 TD(0)은 뭐냐고? 그것도 좀있다가 설명해줄게.
예제로 설명해보자.
// Driving Home Example
이걸 보면 Elapsed Time은 실제 지난 시간이야.
Predicted Time to go. 는 내가 예측한 남은 시간이야.
그리고 Predicted Total TIme은 내가 예측한 총 시간이지. 실제 지난 시간 + 예측 시간이라고 하네.
우선 MC 방법으로 하면 Episode가 끝까지 간 다 음에 update 한다고 했었잖아.
여기서 return 즉 Gt는 총 몇이야? 43이지? 실제 지난 시간이 43이잖아. 모든 상태의 Gt는 현재 43이야. 그리고 각 state에서의 value function은 30 35 15 이런거지? 그럼 현재 알파는 1이거든? 즉 최신 정보만 쓰는 거거든? 그래서 첫번째 부터 하면, 현재 30이야. 근데 43-30이면 13이지? 그럼 더하면 43이지? 그래서 모든 값에 대해서 계산해봐. 모든 값이 43이 되. 다음 그림이랑 같이 보면서 보면 이해가 좀 빠를거야 뺀만큼 더하는 거지.
TD로 해볼까
TD는 Rt+1 + r (VSt+1)이 뭐냐면 우선 지금 첫번째 꺼로 해보자.
30이야. 근데 다음 꺼는 보상은 실제 지난 시간이고, 왜냐면 보상은 항상 정확한 값이잖아. 여기서 정확한 값은 elapsed time이야. 그래서 5야. 그리고 discount는 1인 듯 해. 그럼 V(St+1)만 알 면 되지? 그게 현재 35네? 그럼 update해보자.
V(t)는 현재 30.
a= 1
( Rt+1 + rV(St+1) - V(St)) = ( 5 + 35 - 30 )
30 + 1* 10 = 40
맞지? 앞의 값으로 본인을 update하네. 근데 이거를 예측한 거 맞는 지 모르겠어. 예측했다라기보다 한 스텝 가서 바로 전 스텝을 update하는 것 같은데. 그리고 그걸로 바로 update하니까 online이라고 하는 것같고, 예측이라고 하는 것은 바로 앞에서 얻은 것을 실제 Gt와 같다고 guess라고 하는 것 같애. 그래서 틀렸더라도 우선 계속 하다 보면 차이가 줄어들테니까 그런 것 같아. 진짜 안보고 하는 게 아니라 한칸 가서 본 후에 그거를 Gt라고 가정하고 update한다는 거지.
// Driving Home Example : MC VS TD
그래서 여기 보면 더 잘 보여지는 것 같아. 바로 MC는 모두 43으로 즉 actual value로 올리는 데, TD를 보면 바로 올린다고 생각할 수 있겠지만 난 한 스텝 가서 뒤에꺼를 update하는 걸로 보여지네...
틀렸다면 설명해주세요...
// Advantages and Disadvantage of MC VS TD
MC와 TD의 장단점 비교래
TD는 마지막 outcome이 아직 안와도 학습 가능하대. 그렇겠지 바로 앞만 보니까. 그러니까 매 step마다 학습할 수 있다는 것이고, MC는 올때 까지 기다려야한다는 것이겠지. 알기전엔 안움직이겠다 이거네
TD는 마지막 outcome을 몰라도 학습 가능하대. 이것도 그렇겠지 바로 앞만 보니까. 그렇기 떄문에 완전한 sequence를 몰라도 학습 가능한것이고, MC는 complete sequence를 알아야만 학습가능한 것이고,
TD는 연속적인 환경에서 가능하대. 종료가 없을 수도 있는? 실제 환경과 더 비슷하지. 우리도 뭔가 잘 되어야지만 움직이는 거 아니잖아.
MC는 episodic한 환경에서만 학습가능하대.
근데 이렇게 만 보면 TD가 더 좋네~ 융통성 있고~~~ 라고 하겠지만 꼭 그렇지만도 않대.
// Bias/ Variance Trade-Off
Trade off라는 단어는 1장에서 내가 eploitation과 exploration을 설명하면서 말해줬어. 딜레마 같은 관계라고.
Return 인 Gt는 unbiased estimate래. bias는 편향을 말해. 어느쪽으로 치우쳐져있따고 하는 거지. 근데 실제 값인 Gt는 당연히 치우쳐져있지 않지. 정답이니까. 불편추정량이라고데, unbiased라고 하면 틀림이 없다~ 라고 생각하면 되.
여기서 TD의 True target은 unbiased estimate래. 왜냐면 True target이라는 말은 진짜 올바른 거라는 거야. 다시 말하자면 진짜 우리가 얻으려고 하는 그 값이라는 거지. TD에서는 원래 진짜 MC처럼 가보고 진짜의 값을 얻어야되는 건데 그냥 바로 앞의 꺼만 보고 그거를 마치 Gt처럼 여겼잖아. 근데 만일 그게 진짜 올바른 값이라면 그건 정말 정확한 거니까 unbiased라는 거야. 근데 실제로 그럴리가 없잖아. 그러니까 일반적으로 TD target은 biased라는 말을 하는 거야. 근데 MC는 직접 해본 정확한 Gt를 쓰니까 bias 관점으로 보면 MC가 TD보단 훨씬 낫지 그치?
variance관점에서 보면 TD는 variance가 MC보다 낮어. return 보다 낮은 variance라고 되어있는 데, return이 곧 Gt이고 Gt를 쓰는 건 MC니까 똑같은 말이야. variance는 분산을 말해. 얼마나 퍼져있냐는 거지. Return 같은 경우는 한 episode마다 달르지? 근데 TD는 variance면에서는 episode마다 수행하기 때문에 적대. 뭐 음... 다시 말하자면 분산 자체는 평균으로부터 얼마나 퍼져있냐는 걸 나타내는 거고, 정답은 0인데 sampling하면 100을 뽑거나 -800을 뽑는다는 거야. variance가 작으면 정답은 0인데 sampling하면 10이나 -50정도로 범위가 작ㄷ는 것이고....
이 이상 더 자세히 설명하기 좀 그렇다. 퍼져잇는 정도라고 보면 되고 아직도 모르겠으면 Driving Home Example MC VS TD 그래프 보면서 화살표의 길이를 계산해봐. TD가 작아. 아마 이게 맞을 거야.
// Advantages and Disadvantages of MC vs TD (2)
위 같은 논리로 무조건 정확한 값을 가지는 MC는 bias는 없어. 편향되지 않았다는 거지. 하지만 variance가 높아.
ㄱ리고 MC는 수렴 성질이 좋대
그리고 우리는 여태까지 어느 하나의 행령에 저장햇었잖아. 근데 이걸 키우다 보면 행렬에 저장한 값을 가져오는 것이 아니라 함수가 들어오는 게 딥러닝이래. 딥러닝에서도 잘된다네. 초기값에 별로 민감하지 않대. 수렴성질이 좋으니까. 매우 간단하고 이해하기 쉽고 사용하기 쉽대.
반면에 TD는 low variance하고 bias가 어느정도 있지
근데 MC보다 일반적으로 더 효율적이고 TD(0)은 실제 Gt에 수렴하긴 한다네. 하지만 function approximation에서는 항상 그렇진 않대. 그리고 초기값이 굉장히 중요하다네.
그리고 bias가 있다면 틀린 값으로 수렴한다는 건데, 그게 되냐? 고 하면 된대 신기하게.
// Random Walk Example
이건 이 예제를 통해서 TD의 예시를 들자는 거야.
우선 네모가 Terminal이고 C에서 시작해서 terminal로 가야되.
E에서 오른쪽으로 action을 하면 보상을 1을 주네. 그 외에는 다 0을 주고 있어.
value function은 앞으로 얻을 보상이니까 E쪽으로 갈 수록 정답이니까 E 쪽에 가까운 value funciton은 높아야겠지?
여기서 어떤 사람들은 왜? 라고 할 수 있어. value function은 앞으로 얻을 보상의 총 합이라며!! 그럼 무조건 다 1을 얻겠지 모든 state에서! 라고 하겠지만.... 우리에겐 discount라는 요소도 있고, 그게 없어도 앞에서 말한 알파도 있어. 생각해봐 너가 4번 만에 1을 얻었어 근데 discount가 2/1이야. 그럼 너는 1/16을 얻은 거야. 그리고 그런 식으로 여러개를 해서 평균적으로 내면 막 1/8 이렇게 될 수도 잇지. 그리고 mc에서는 모든 끝까지 얻은 gt랑 현재 꺼랑 빼지? 그럼 맨 처음에 너가 얻는 에러는 1이지? 하지만 알파가 적용되면 만일 0.1이야 그럼 0에서 0.1로 업데이트 되는 거야....
무튼 여기서는 TD로 평가를 했어.
그래서 그래프에 0이라고 표시된 것은 0번째 학습 시켰을 때고, 1은 1번째, 그리고 10은 10번째.
true value값들이 포함된 곧은 직선이 바로 정답이고, 100이라고 표시된 선을 보면 거의 true value와 비슷해. 즉 100번정도 학습시켰더니 가깝게 도달하더라~~ 라는 결론을 말해주고 있는 거야.
// Random Walk: MC vs TD
이거는 방금도 말했따시피 알파를 이번엔 여러개로 해보면서 MC와 TD가 어떻게 되나 적용해보는 거야.
근데 왼쪽에 RMS error라고 되어잇지? 제곱 평균 에러라고도 해. 우리가 실제 에러를 알잖아? 실제와 우리가 추정한 것의 차이를 제곱해서 평균을 낸 거야. 제곱 평균 제곱근이라고 해. 절대값이라는 거지. 평균은 각 state들의 절대갑 에러들을 평균낸거야
한마디로 walks/episode가 진행될수록 낮아질 수록 좋아지는 거지.
여기서 알파는 아까도 말했다시피 1일수록 최근 값이 적용이 덜 되는 것이고 작을 수록 최신 값으로 많이 업데이트 된다는 것이야.
근데 원래 비교를 하려면 MC를 알파 적용했을 때 0.1~ 1.5까지와 TD에 알파를 적용한 0.1~1.5를 비교하는 게 맞긴한데.. 여기선 일부러 그렇게 까지는 안한 거같애.
그래서 보여주면 MC는 지금 굵은 직선으로 표시된 건데, 점점 줄어 들지? 잘 학습하고 있다는 거야.
TD는 근데 MC보다 더 빠르게 줄어들어. 대신에 줄어들다가 다시 늘어나지? 이거는 알파가 너무 커서 값이 튀는 거래. 실제값에서 진동하고 있다는 거라네.
그래서 단순하게 이렇구나 하고 보면 될 것 같애.
// Batch MC and TD
근데 여기서 우리는 여태까지 무한 Sampling하면 값이 수렴하는 건 알아. 즉 경험을 무한번 할 수록 수렴한다는 것은 알게되었어. 근데 딱 정해진 k개로만 하면 어떻게 될까? MC랑 TD가 같은 곳으로 수렴을 할까? 무한히 하면 둘 다 수렴하는 건 아는 데? 어떤 값에 수렴을 할까? 같은 값에 수렴을 하게 될까? 라는 질문이 나와.
그럼 어떻게 하냐 라는 질문에 여기서는 MC를 적용하거나 TD(0)를 적용하면 된대.
이게 무슨 말인지는 다음 예제를 통해서 이해를 해보자
// AB Example
여기에 두개의 상태가 있어. discount는 없는 걸로 해. 이런 걸 nondiscount episodic이였나 했던 거 같애.
무튼...
8개의 경험들이 있대.
지금 보이지?
그럼 여기서의 value (a)와 value (b)는 어떻게 될까?
value(a)는 현재 경험한 게 하나야. MC로 생각하면 0이야 그치? 한번 방문했는 데, 0이 나왔고 그럼 0/1 은 0이잖아. 근데 b는 8번 중에 6번 1이 나왔어. 그럼 6/8이니까 0.75인가? 이 생각을 할 수 있어.
근데 이게 사실 상황에 따라 달라.
// AB Example
만약에 state가 저렇게 되어있다고 생각해봐.
MC를 이용한다면 한번 했을 때 실제 actual return이 0이였지? 그니까 Gt가 0이였던 거야. 그렇기에 MC적으로 생각하면 a의 value는 0이야. 한번 했는 데 돌아온게 0이였으니까.
식을 다시 생각ㄱ해보자.
v(a) <- v(a) + a(Gt - V(a))
현재 v(a)는 0이야. 알파는 1이라고 생각해.
Gt가 0이였어. v(a)도 0이야.계산하면 0 맞지?
근데 TD로 생각해봐.
이번에도 수식을 적용해보자.
v(s) + a(Rt+1 + r(v(st+1) - v(st))이거 였어 맞지?
현재 v(s) 즉 v(a)는 0이야.
a는 0
보상은 똑같이 0이였어.
discount는 없다고 그랬고.
그럼 v(st+1) 은 현재 b 상태이지?
아까 v(b)는 우리가 경험으로 0.75라고 했엇지?
그럼 0.75-0 하면 0.75네?
그래서 v(a)는 TD 방식으로 하면 0.75야.
여기서 좀있다가 말을 하려고 했지만 간단히 말을 해주자면 TD(0)은 하나의 state만 앞서 보겠다는 거야. TD(3)은 네개를 보겠다는 거야. 좀있다가 설명해줄테니 일단 간단히 알아들어.
이렇듯이 MC를 적용하느냐 TD를 적용하느냐에 따라 v(a)는 달라질 수가 있다는 거야.
그럼 아까 MC 나 TD(0)를 그 episode에 적용하면 된다며? 뭐야? 다른데? 서로 같은 값에 수렴할 수 있냐는 거 아니였어? k번만 할때?
이거는 다음 슬라이드에 답이 나와
// Certainty Equivalence
사실 이거는 두개 다 써도 되는 거긴 해. 저런 상황일때 두개 다 써도 되. 근데... 상황에 맞게 좀 더 어울리는 것이 있는 것이지.
예를 들어서 너가 시험을 볼때 연필이랑 볼펜을 써도 되. 근데 모의고사는 연필, 시험은 볼펜이 더 맞는 거 같애~ 라는 것 처럼 상황에 어울리는 게 있어.
MC같은 경우에는 보통 제곱 평균 에러를 최소화 하게끔 수렴을 해.
직접 받은! return에 대해 제일 잘 맞는 것이지. 직접 해본 것만 믿는 다 이거야.
현실적이지 아주. 직접 본 것만 에러로 계산하니까.
근데 TD 같은 경우에는 Markov model이 있는 것에 최적화 되어있다라고 해야할까?
마치 있는 것 처럼. 아는 것 처럼. 환경을 아는 것같은 상황에 있을 때 제일 좋대.
MDP에 효과적이라고 할까? 왜냐면 한칸 앞을 본다는 것은 결국 우리가 MDP 에서 했던 것 처럼 앞에 있는 환경에서 한칸 앞에 일어날 일을 모두 계산하면서 했었잖아? 그런 상황에서는 TD같은 방법이 정말 좋은 것이겠지.
더 정확한 설명은 이건 다른 자료들을 좀 더 찾아보는 게 좋겠어. 이해가 되면 좋고 안되면 다른 데서 찾아줘.
이 이상 설명 못하겠음 ㅠㅠ
무튼 이거는 이렇게 차이가 난대. 그리고 증명을 해주는 거야.
// Advantages and Disadvantages of MC vs TD(3)
무튼 그리하여...
TD는 Markov property를 사용해서 value를 추측하는 애래. 그래서 Markov 환경에서 더 효과적이고, MC는 Markov property를 사용하지 않는애다. 그래서 markov하지 않은 환경에서 더 적합하다~ 이런 말이야.
여기서 Markov property를 다시 말하자면 morkov property는 현재 STate가 미래를 충분히 표현한 것이다~ 라는 말을 하는 거였어.
즉 과거는 다 없어도 되고 현재 state만 필요하다 이거지. 이건 기억나지? markov process아니다.
뭐 이것도 좀 왜그런지 헷갈리면 좀 찾아봐. 대충 느낌만 알아도 되고.
// Monte-Carlo Backup
그래서... MC backup과 TD backup을 비교해보자.
MC는 직접 가본 것으로 본인을 update 한다고 했지?
그래서 저 식이야 지금까지 내가 설명하는 거 들었으면 충분히 이해했을 테고. 많이 봤지?
// Temporal-Difference Backup
이건 TD backup이야.
애네도 직접 해봐. 근데 바로 앞 칸 가서 아~ 이정도면 끝까지는 이정도겠구먼! 하고 바로 바꿔버리는 거야. 저 식도 금방 알테고...
앞까지 계속 말했던 거잖아.
그래서 이렇게 추측치로 update를 하는 것을 bootstraping이라고 해.
추측치라고 하는 건 진짜로 내 앞에 뭐가 나올 지 추측하는 거는 아니라고 생각해 나는.
직접 해본다고 했잖아.
TD가 한칸 직접 해보고 나서 아~ 앞으로의 Gt를 그냥 그곳에서의 값으로 바꿔버린거지
즉 한칸이 Gt나 마찬가지다~~ 이런뜻이야.
이제 보니까 이건 진짜로 Markov 한 환경에서 잘 통할 수 밖에 없네.
다시 보니까 이 칸이 미래를 충분히 표현한다~ 이런 뜻이잖아. 신기허네...
근데 여기서 말해주자면 한칸만 가야되? 두칸가고 예상하면 안되? 즉 update하면 안되?라는 말은... 당연 가능
TD(0)는 한칸만 보는거
TD(1)은 두칸만 보는거야.
그럼 TD(n)은 ? 끝까지 보는 거지? 그럼 MC랑 다를 바가 뭐야? 없어
TD(n) == MC야.
// Dynamic Programming Backup
DP 적인 방법도 기존에 했었어. 저것도 우리 했었지? 수식이 뭘 말하는 지 알거야. 모르면 3장 봐.
여기서는 우리가 sampling하지 않았어. 그렇다고 끝까지 다 보냐? 그건 또 아니야. 딱 부분적으로 저기 앞까지만 보고 그 뒤도 예측하는 거야. 물론 full swip이지. 끝까지는 안보지만?
DP를 안다면 당연히 왜 끝까지 안가는 지 알겠지?
// Bootstrapping and Sampling
그래서~ 이건 depth 관점으로 비교를 해본 건데
Bootstrapping으로 보자면 추측으로 update한다고 했지?
MC는 직접 해보니까 당연히 아니고, DP는 끝까지 안가보고 부분 문제로 추측을 하니까 맞고, TD는 추측해서 그걸 Gt로 생각하니까 맞고,
Sampling으로 보면... 당연 MC와 TD는 sampling을 하고, DP는 sampling이란 것을 안하지.
// Unified View of Reinforcement Learning
이렇게 종류를 나눌 수 있대. full backup 일수록 계산량 엄청 많은 거고 sample backup은 당연 한개씩 직접 실험해보면서 update를 해보는 거니까 계산량이 별로 없지? 그리고 shallow는 bootstraping관점에서 봤을 때 예측으로 대체하느냐 마냐 인데 그렇게 따지면 저런 그림이 나와
exhaustive search는 다~~~해보기야.
그래서 x,y축으로 보ㅕㄴ
x : sampling 하냐?
y : bootstraping하냐?
이거야.
모델을 모르면 sample backup을 해야하고 sample은 agent가 ㅠ를 따라 움직이는 거지. ㅠ를 고르는 것은 control이야 알지? 우리 지금 prediction하고 있어. policy가 정해져잇을 때!.
// n-Step Prediction
이건 이제 TD 변형들이야.
아까 말한 TD(0 부터 n까지야.
n은 MC이고, 그 전 step의 TD도 존재한다~
// n-Step Return
이건 n이 1부터 무한대까지 있을 때.를 말하는 건데
n이 1일때를 TD라고 하고, 아까는 TD(0)이라고 했었어.
무튼 무한대이면 Gt와 마찬가지다~ 그 안에 식 유도는 너무 쉬우니까 직접해봐
그리고 Gt(n)은 즉 이거다~ TD(n)이라는 것을 증명해주는 거고, n이 꼭 끝까지가 아니여도 막 5? 이ㅓㅀ게 되면 저런식으로 Gt를 구하면 된다는 거야.그리고 그 밑은 그거를 저기다 놓으면 된다는 거고.
뭐 내가 설명안해도 그냥 알아들을 듯
// Large Random Walk Example
Large야 Large
아까 Random Walk를 엄청 많이 해본거야.
여기서 위와 아래는 Online OFfline으로 나뉘는 데,
online은 움직이는 도중에 update를 하는 것을 말하고, offline은 끝나고 나서 update를 하는 것을 의미해. 자세한 설명은 말 안해줘서 나도 잘은 몰라. 근데 잘 보면 무조건 알파가 1이라고 좋지도 않고 1000이라고 좋지도 않아 그치.
그안에 적당히 잘 정해야 한대. TD의 단계를.
여기서는 variance가 커서 MC가 별로 안좋다고 하네. 뭐 일단 이렇게만 알아둬
// Averaging n-Step Returns
그럼 흠... TD(2)랑 TD(4)의 평균을 쓰면 안되?
됩니다.
두개의 step을 평균낸 것을 써도 작동해.
그럼 모든 step을 합치면 안되? 그럼 더 효율적이지 않을 까?
// ㅅ-return
감마라고 하지.
아까 모든 것을 평균내면 안되냐고 했잖아. TD(0)부터 TD(n)==MC 까지.
그거 다 평균내도 된ㄷ ㅐ. 신기하지. 물론 항상 끝까지 한다는 것은 아니야. gamma는 설정할 수 있어. 그럼 n setp이랑 똑같은거 아니야? 라고 하겠지만 달라. n step은 단지 n step까지를 고려한 것일 뿐이고 ㅅ는 음.. .거기까지 보긴 하는 데 가중치를 둬서 보겠다는 거야. 헷갈리지 마.
이런 것을 TD(ㅅ)라고 해. 티디 감마. 이게 최근에도 많이 쓰인다고 해. 알아둬 꼭.
근데 모든 스텝을 다 그냥 평균 내냐? 그건 아니야.
ㅅ는 꼭 0부터 1 사이의 값으로 되어있어.
그래서 (1-ㅅ)ㅅ^n-1 이렇게 되어있는 데, 한마디로 가중치야. 이 가중치를 각 step에서의 Gt마다 해주게 되면 어떻게 되냐면... 우선 이 감마를 다 더하면 1이 되. 그리고 식을 보면 알수 있듯이. 이 Gtㅅ은 결국 모든 것을 합한 것이지만 가면 갈수록 점점 그 영향이 작앋지게 되는 것이지.
비슷한거가 뭐가 있었더라? discount가 있어.
discount는 여전히 적용되면서 이것또한 적용되는 거야. 그렇게 한 것을 이제 다시 TD 수식에서의 Rt+1 어쩌구 있었지? 거기에다가 이제 Gtㅅ를 넣어주면 되는ㄱ ㅓㅅ이지
쉽지?
// TD(ㅅ) Weighting Function
이건 시간이 지날수록 점점 가중치가 적용되어서 값이 작아진다는 거야. 그래서 마지막 실제 값들에 가까운 값들은 점점 작아지는 거지.
이걸 그냥 감마라고 하진 않아.
이렇게 점점 작아지는 것을 geometric gamma라고 해.
근데 왜 이걸 쓸까?
단순히 계산적으로 편리해. 이전 것을 저장안하고 계속 update하면 되거든. 저번에도 이런식으로 하나 있었지? backup이 원래 저장한다는 것이였는 데, 그거를 수식으로 어떻게 바꾸니까 한번 update하는 것을 어떤 수식으로 한번 할때마다 조금씩 바꿔나갈 수 있다고 했었잖아.
얼마나 편리하냐고?
TD(0)와 같은 비용으로 할 수 있대 ㅇㅅㅇ.... 대박이지.
// Forward-view TD(ㅅ)
이건 단순하게 말하자면 미래를 보고 update를 한다는 거야. 방금 전에 말한 게 이거야.
아까 gamma는 게임이 끝날때까지의 step들을 모두 평균낸다고 했었잖아? 근데 그렇게 되면 결국 episode가 끝나야되서 MC와 비슷하다고 했지? TD만의 장점이 사라졌네? 그게 단점이야. Forward-view TD(ㅅ)를 하면 TD의 장점이 없어져.
// Forward-View TD(ㅅ) on Large Random Walk
그렇기 떄문에 ㅅ를 잘 정해줘야해. 한번에 섞으려고 한건데 이렇게 된거잖아? 그런데 무한대로 해서 다 섞으면 안되니까 감마를 잘 적당히 정해줘야지. 잉? 같은 비용이라며? 맞어 계산하는 비용은 같지. 근데 episode를 끝내야하니까 시간적으로는 다르지
이해 되지?
// Backward View TD(ㅅ)
이건 TD(0)의 장점과 TD(ㅅ)의 장점을 둘 다 가졌어.
밑에 써있는 글은 정확히 뭘 의미하는 지는 나도 모르겠어 근데
Forward view는 이론을 제공한다면 backward view는 메카니즘이다?
모든 step마다 완전하지 않은 sequence로 Online으로 update한다 이게 장점인 거 같애.
TD(0)은 매 step마다 online으로 할 수 있는 장점이였잖아
TD(ㅅ)는 근데 꼭 complete episode를 얻었어야했는 데, 이건 incomplete 해도 된다네.
이게 어떻게 가능한지 한번 보자
// Eligibility Traces
Eligibility는 적격이라는 말이야. 적격도? 라고 말해
이건 간단하게 말해서 어떤 사건이 일어나면 책임을 물어서 책임이 큰 애한테 update를 더 크게 한다는 거야.
그럼 누구에게 책임을 묻는 다는 거지? 책임을 묻는 기준이 있어야할거아냐
예시를 한번 보자.
종 3번 울리고 전구를 울렸더니 감전이 되었어.
그럼 누가 더 책임이 클까?
종이 3번이나 울렸으니 종한테 물을까 아니면 마지막에 켜진 전구 탓을 할까?
Eligibility trace에서는 두개를 다 물을 거래
책임을 묻는 기준이 2개인거지.
많이 한놈? 최근에 한놈?
많이 울린 놈에게 책임을 묻는ㄱ ㅓㅅ이 Frequency heuristic이라고 해.
그리고 최근에 울린 놈에게 책임을 묻는 것이 Recency heuristic이라고 해.
그거 두개를 다 묻겠다는 거야.
어떻게 하냐면
State별로 Eligibility를 뜻하는 E를 하나씩 가지고 있어
그리고 그 State를 방문하면 1을 올리고 방문이 별로 안되어있으면 하나씩 줄이는 거야.
밑에 식을 보자.
방문을 안한 상태인 E0(s) = 0이야.
근데 만약 방문을 했어. 한번째 방문이야.
E1(s) = rㅅE0(s) + 1 이지? St=s라는 말은 그 STate를 말해.
근데 E0(s)가 0이였어.
그럼 E1(s) = 1이 되.
근데 여기서 r이랑 ㅅ가 E0(s)에 붙지? 이 값에 따라 서서히 줄어드는 게 달라져. 근데 나는 이게 그때의 discount랑 람다를 뜻하는 지까지는 확신은 못하겠어. 확실한 건 이 2개의 요소때문에 서서히 줄어든다는 거야.
예를 들어서 바로 방문을 안했어. 그럼 t+2 step에 만일 discount는 1이고 람다가 1/2라고 해보자.
E2(s) = 1 * 1/2 * E1(s) + 0 이지?
그럼 0.5가 되는 거야. 그런식으로 줄다가 다시 한번 방문하면 1을 더해주고 그러면서 점점 방문을 할 수록 높아지고 안할수록 낮아지는 거야. 밑에 그림을 보면 쉽게 이해가가.
// Backward View TD(ㅅ)
이제 이거를 어떻게 적용하는 지보자.
모든 state마다 eligibility trace를 가지고 잇는 거야.
그리고 모든 State의 value를 update해.
근데 여기서 밑에 수식이 나오지?
어렵게 생각할 거 없어
무슨 ot이런게 나오는 데, 그냥 TD 에러야.
다시 봐봐 너네가 계속 봐왔던 수식이야.
한스텝을 가서의 보상과 그때의 value 즉 MC에서의 Gt와 현재 value를 뺀 값. 에러였잖아 그치?
이걸 그냥 ot로 정리한거야.
여기에 원래 알파를 곱했었어. 알파를 고정시킴으로써 분명 최신의 정보를 계속 update할 수 있도록 한다고 했었어. 그렇게 안하고 예전에 1/N(s)로 하면 점점 분모가 커져서 최신의 정보가 update안된다고 했었어 맞지?
무튼 알파는 알테고
거기에 이제 Eligibility trace를 곱한거일 뿐이야 이제.
그럼으로써 최신의 정보를 더 업데이트하긴 하는 데, 좀 더 많이 방문한 놈이 update를 더 많이 하겠지. 별로 안한애는 update가 안될테고
특히 아예 방문 안한 애는 update가 안되겠지? 그 원리야.
그럼 forward랑 뭐가 다른데? 라고 한다면 그림을 다시 봐봐
forward는 앞으로 메아리를 울리는 듯 하고 backward는 뒤로 메아리를 울리는 것 같지?
forward는 앞에서 오는 것들을 계산해서 본인을 업데이트 했지?
근데 backward는 뒤로 메아리를 쳐 맞지??
근데 여기서 의문이 들거야. 아니... 아까 TD(ㅅ)는 Gt로 앞에 있는 것들을 다 더하는 데, 거기에 람다를 곱한 거 아니였어? 그럼 앞으로도 하고 뒤로도 하는 거야? 헷갈릴거야.
근데 식을 다시 잘 보자. 우선 Eligibility가 왜 backward면, t가 진행될수록 t+1의 E를 보지 않고 t-1의 E를 봐. 맞지? 바로 전을 계속 본다는 거야.
그리고 ot를 다시 봐보자. Gt가 아니야 이제. 바로 앞을 뜻했었던, 즉 TD(0)일때의 그 TD 에러랑 똑같네 생각해보니?
한마디로 딱 앞 한칸을 예측한 것으로 바뀌었어 이제. 그거를 잘 봐야되.
// TD(ㅅ) and TD(0)
아 이제 나오네. 아까 discount는 동일하게 적용되는 discount가 맞는 거 같아. ㅅ도 동일하네.
만일 람다가 0이면 Eligibility가 계속 1일테니 결국 TD(0)과 같다는 말을 하는 거야.
이게 아니더라도 TD(ㅅ) 아까 무슨 줄줄이 달린 그림을 잘 봐봐. 거기에 1-ㅅ * ㅅ였잖아. 그럼 맨 처음에는 1-ㅅ만 적용이 되고 그 다음부터 1-ㅅ*ㅅ 이렇게 되잖아? 그래서 TD(0)와 똑같다는 거야.
여기서는 뭐 eligibility를 적용한 backward view TD (ㅅ)에서도 그렇게 된다는 것 같애.
// TD(ㅅ) and MC
여기서는 ㅅ가 1이면 MC와 같대.
어? TD(1)이면 두칸 보는 거 아니야? MC와 어떻게 똑같애? 라고 한다면 넌 다시볼 필요가 있겄다.
아까 말하듯이 람다는 전혀 다른 개념이라고 했어.
람다는 0과 1 사이야. 끝까지도 다 하되
TD(ㅅ)는 offline update로 하면 forward와 backward view TD가 같대.
offline은 episode를 다 한 후 학습하고 움직이는 거고
online은 한번 step하고 학습하고 움직이고 이런건데.
여기는 좀 간단히 말하고 넘어가기도 하고 이래서 이 부분이 잘 이해는 안가네...
무튼 람다가 1이면 MC와 같대.
이렇게만 알아두면 될 것 같아. ㅅ-return으로 보면 그게 이럴 수가 없는데...
나중에 알면 말해줄게...
그리고 여기까지가 강의 끝인데, 혹시 좀 더 자세한 설명은 뒤에 있어.
근데 강의에서 여기까지 다루진 않더라. 그래서 나도 여기까지 설명할 건데,
곧 공부를 좀 더 하고 시간 남으면 모든 강의에서 다루지 않은 설명을 내가 직접 이해해서 올려줄게.
우선 뒤에서는 TD(1)이 왜 MC가 되는 증명을 보여주고있어. 직접 해봐도 어렵지는 않을 것 같다.
그리고 Offline 에서의 forward와 backward TD가 같다는 것을 말하고
Online에서도 같다네? 이건 뭔소린지...
원래는 다른데, 최근 연구에서는 완전히 같다고 연구결과가 나왔대.
그리고 마지막은 요약을 보여주고 있어.
아하~ 여기서 나오네.
역시 ㅠㅠ
내가 헷갈릴 만 했네
아까 TD(람다)는 backward일때를 말하는 거야. 역시
그래서 backward는 앞으로 받을 바로 앞의 Gt는 받는 것은 맞는 데, backward에서 람다가 적용되는 것은 반대로 뒤쪽이잖아? 그래서 Eligibility의 람다를 말하는 거야. 하... 이제 알았네.
여기까지가 무튼 강의 끝이야. 근데 내가 볼때 뒷 개념들도 중요한 것 같애.
강의에서 다뤄주지 않았던 부분들을 내가 5강까지 정리가 끝나고 한꺼번에 말해줄게.