다른 방법들
이번 시간에는 우리가 다양한 강화학습 방법을 알아봤는데 뭐 다른 방법들도 있어요
진화 알고리즘
여러 가지 다른 방법들인데 우리가 이제 대표적인 방법이 진화 알고리즘입니다
강의자료 463쪽 우리가 이제 진화가 여러 가지 메커니즘으로 돌아가는데 진화의 메커니즘이 여러 가지가 있는데요
그 중에 하나가 이제 자연 선택입니다 자연 선택은 다 아시다시피 여러 명이 이렇게 있으면 그 중에 어떤 녀석은 죽고 어떤 녀석은 자식을 많이 낳고 그러면은 그 다음 세대에는 좀 살아남은 녀석의 자식들이 많겠죠
그 유전자를 많이 물려받을 거고 살아남지 못하면 유전자가 넘어가지 않습니다
먼저 그 전에 진화라는 단어를 정확한 뜻을 설명을 드리면 이거는 그 세대에 따른 유전자 빈도의 변화에요 정확한 생물학적 의미는 비율의 변화라고 해야겠죠
그래서 진화는 지금 이 순간에도 계속 일어나고 있습니다
왜냐면 예를 들면은 AB형 AB5식 혈액형인데 A형이 30%였고 B형이 25%였고 O형이 10%고 AB형이 몇% 이렇게 돼 있는데 다음 세대에도 이 비율이 정확하게 일치하지는 않겠죠
그죠 뭐 A형이 자식을 좀 더 많이 낳는다든가 B형이 자식을 좀 더 많이 낳는다든가 아주 미세한 이유 때문에 29대 26대 이렇게 돼도 생물학적인 의미에서는 진화가 일어난 겁니다
실제로 이런 진화도 되게 중요해요
왜냐면 우리 멸종위기종들 있죠
멸종위기종이 있는데 개체수가 10상 밖에 안 남았어요
그래서 수컷 10상 암컷 10상인데 수컷이 10마리 있다고 칩시다
수컷 10마리가 유전자들이 있는데 이 중에 한 마리가 어디 저기 물 먹다가 갑자기 목에 산에 들려서 죽어버렸어요
그러면 유전적 다양성이 10에서 9로 확 줄어드는 거죠
이것도 진화입니다
그리고 생각보다 이 힘이 굉장히 강해요
왜냐면 대부분 동식물들이 개체수가 생각보다 그렇게 많지가 않거든요
저기 뭐...
무슨...
뭐 모기, 바퀴벌레 이런 건 개체수가 많지만 인간도 지금 개체수가 이렇게 많이 늘은 거는 굉장히 극히 최근입니다
사실 그죠 우리가 몇십억이 인구가 지구상에 산 적이 없어요
심지어 지구상에 지금까지 인류가 탄생한 이래로 존재했던 인간들을 다 세 보면 그 인간들 중 대부분이 현재 살아 있습니다
무슨 말인지 이해가 되시나요?
인간 증가가 이렇게 증가했기 때문에 우리가 현재 살아있는 사람들이 대부분 이 시기에 있었던 사람들보다 더 많아요
충격적이죠
그 정도로 지금 많은 사람들이 살고 있는데 바꿔 말하면 과거에는 인간이 개체수가 굉장히 적었다는 거예요
아주 희박하거든요
그래서 인간들 유전적 다양성을 조사를 해보면 거의 멸종위기종 수준의 유전적 다양성을 가지고 있습니다
그래서 추측에 따르면 한 20만 년 전쯤에 인간이 멸종위기를 한번 겪었다는 추측이 있어요
왜냐면 유전자의 종류를 세 보니까 몇 종류 안 돼요
사람은 80억 명인데 그러면 그 정도 유전자 수면은 아 우리 조상들이 몇 명 없었다
몇 명 없었던 시기를 한번 크게 겪었다는 걸 알 수 있고 그다음에 이제 그런 데서 약간 파생되는 생물학에 재밌는 게 있는데 생물학 퀴즈 하나 내볼까요?
아프리카가 있고 우리 동아시아가 있죠
그럼 어느 쪽이 더 유전적 다양성이 높을까요?
보통 우리가 이제 아프리카 하면 뭔가 아프리카를 한 덩어리를 얘기하는데 아프리카의 다양성이 훨씬 높습니다
왜냐하면 여기가 인류의 발상지이기 때문에 인류가 최초에 가지고 있던 유전자는 아프리카에는 다 있어요
거의 있어요
물론 중간에 없어진 유전자도 있겠지만 그 중에 일부가 떨어져 나와서 중간에 여러 가지 경로를 거쳐서 우리한테까지 오거든요
굉장히 소수의 사람들이 이쪽 동아시아 동아시아는 거의 대륙의 제일 끝단이잖아요
여기까지 온 우리 조상들은 굉장히 소수였어요
근데 이 사람들이 자식을 낳아서 지금 중국인도 되고 한국인도 되고 일본인도 되고 이런 거거든요
그래서 우리는 굉장히 이 유전자들 중에 일부만 가지고 있습니다
물론 그 중에 오다가 변이가 생겨 가지고 피부색도 좀 달라지고 했지만 그래서 유전적 다양성이 이쪽이 더 많아요
훨씬 더 다양한 사람들이 있습니다
어쨌든 생물학에서 진화와 관련해서 재미난 사실들이 많이 있는데 그 중에서 자연 선택 그러니까 살아남는 어쨌든 환경에 잘 뿌려놓으면 살아남는 놈들이 있을 것이다
그럼
그 살아남은 놈들이 그 환경에 잘 맞는 것이다
이런 거 알 수 있죠
우리가 이제 역으로도 알 수 있는데 이렇게 생겨먹은 걸 보니까 얘는 어떤 환경에 적응했겠구나
이런 걸 알 수 있죠
그래서 우리가 고래하고 물고기 같은 걸 보면 고래하고 물고기는 개통이 다르죠
고래는 포유류고 물고기는 어류인데 생긴 게 비슷하게 생겨서 옛날 사람들은 구별을 못 했단 말이에요
왜 그러냐면 물이라는 환경의 압력이 굉장히 강하기 때문에 거기 적응하려면 조상이 포유류고 어류고 뭐 상관없고 다 똑같이 생겨야 된단 말이에요
그래서 자연 선택이 굉장히 강력한 힘이고 그래서 지금 강화학습을 할 때는 보면 정책을 어떻게 짜고 이렇게 해가지고 데이터를 어떻게 모아서 Q를 추정을 하고 온갖 복잡한 방법을 쓰는데 진화 알고리즘은 그냥 쿨하게 자식을 많이 만듭니다
그리고 환경에 뿌려놔요
그럼 뭔가 보상을 받겠죠
그럼 보상을 적게 받은 애들은 그냥 다 죽여요 보상이 많으니 받은 애들은 일종의 자식을 만듭니다
자식을 만드는데 그대로 복사를 하는 게 아니라 약간 랜덤하게 조금씩 정책을 바꿔줘요 그러면 그 짓을 계속하면 약간 자연 선택 같은 게 일어나서 결국엔 살아남는 놈이 환경에 딱 맞는 놈이다
이거죠
그러면 여러 가지 장점이 있는데 일단 탐색을 굉장히 강 하게 할 수가 있습니다
그리고 우리가 강화학습에서는 기본적으로 내가 한 행동에 따라서 정책에 따라서 행동이 결정되고 행동에 따라서 데이터가 결정되고 다시 데이터를 바탕으로 정책을 만드니까 뭐 우리가 성능 붕괴라든가 이런 현상도 생기고 그걸 줄이기 위해서 여러 가지 알고리즘들을 만들어 놓고 하는데 진화 알고리즘은 그냥 막 뿌려놓고 사람은 이기는 편 우리 편 잘한다
잘한다 이러고 얘는 이제 보상 못 받으면 얘네 죽여요
얘네가 또 받으면 얘는 이제 자식을 낳는데 똑같이 낳는 게 아니라 약간씩 다르게 낳는단 말이에요
또 이기는 편 우리 편 잘한다
잘한다
이래서 또 못하는 애들은 다 죽여요
잘하는 애들만 남겨서 조금씩 다르게 하고 이렇게 하다 보면 예를 들면 우리가 여기 최적점이다 계속 도련 변이가 생겨나다가 죽이고 도련 변이가 생기고 하다 보면 여기까지 가는 애가 나오겠죠
그러면 얘가 제일 잘하면 얘만 남기면 됩니다
굉장히 간단하고 우리가 이걸 하기 위해서 무슨 경사상승법이니 복잡한 알고리즘 하나도 필요 없어요
그러면 좋은 점만 있느냐
반대로 굉장히 표집 비용이 큽니다
즉 시행착오를 훨씬 많이 해야 되겠죠
왜냐하면 되게 똘똘한 녀석인데 운이 나빠가지고 죽을 수도 있잖아요
항상 이 불확실한 환경에서 하기 때문에 그러면 얘가 정말 환경에 잘 만질 부르면 굉장히 시행착오를 많이 해야 되는데 이게 지금 굉장히 방향성 없는 과정이란 말이에요 눈먼 과정이기 때문에 그래서 이 샘플링을 굉장히 많이 해야 되는 것이 단점이다
그러면 샘플링을 적게 하면 어떻게 되느냐 하면 집단의 크기를 줄이면 계산량은 줄어드는데 좀 이상한 애들, 삐리리한 애들이 적합한 애가 운이 나빠서 죽을 수가 있기 때문에 이상하게 삐리리한 애들이 늘어날 수도 있어요
그래서 이건 유전적 부동이라고 하는데 지네틱 드리프트 아까 그 얘기했죠
멸종위기종이 10마리 남았는데 원래 얘가 제일 똑똑하고 잘 났는데 우연히 발을 헛짖어서 죽었어요
그럼 얘 유전자에 문제가 있는 거 아니잖아요
그냥 얘가 운이 없었던 거지
그래도 그 유전자는 이제 없어졌습니다
그러면 유전자의 빈도가 변했는데 얘가 못해서 없어진 게 아니란 말이죠
모방학습
그래서 이렇게 하는 방법이 진화 알고리즘이고 또 다른 방법은 모방학습인데 모방학습은 우리가 지금까지는 강화학습으로 어떻게 해보려고 했는데 어쨌든 인간이 잘 한단 말이에요
대부분의 문제에서 사람이 굉장히 잘합니다
그래서 사람하고 좀 비슷하게 해보자 라는 것이 이제 다 모방학습에 속하고요 이 모방학습의 장점은 우리 아침에도 그 얘기를 했는데 이 보상을 결정하기 굉장히 어렵거든요
배의 항로를 결정을 해야 되는데 예를 들면 여기 장애물이 있어요 장애물에 갖다 박으면 이거 몇 점이냐 항구까지 가면 100점 장애물에 갖다 박으면 마이너스 100점 마이너스 1000점 애매하단 말이야
그래서 이런 보상을 매기는 게 굉장히 까다로운 문제인데 전문가를 모방하면 전문가가 이렇게 가면 그냥 가면 되는 거죠
보상 이런 거를 우리가 신경 쓸 필요가 없습니다
행동복제
그래서 다시 모방학습을 나누면 보통 한 세 가지 정도 그 외에도 여러 가지가 있지만 여기서 세 가지 정도 소개해드리면 제일 처음에 행동복제는 이제 이름은 멋인데 behavior cloning 이름은 멋있죠
사실은 그냥 되게 간단한데 그냥 지도학습을 하는 거예요
그래서 전문가가 시연을 보여줍니다
배를 아 놔 봐
내가 배 10년 몰았어
이럴 때는 이 코스로 가는 게 좋아
왜요 그게 좋아 날 믿어
그래서 전문가가 시연을 해서 보여주는 거야
딱 보여주고 이때는 어떻게 하시겠습니까
이때는 이렇게 가는데 약간 더 트는 게 좋을 것 같은데 이렇게 코스를 만드는 그런 데이터를 많이 쌓아 가지고 지도학습을 시키면 똑같이 따라 하겠죠
근데 이거의 단점은 뭐냐면 예를 들면 우리가 데이터를 여기서 여기까지 가는 걸로 전문가한테 데이터를 받아 와서 AI를 지도학습을 시켰더니 갑자기 여기에서 이리로 가야 돼요
그러면은 우리 데이터가 없잖아요
그러면은 어떻게 가야 되냐
이런 문제가 생기게 됩니다
그래서 시연 데이터에 포함되지 않은 상태는 적용이 안 되겠죠
근데 이렇더라도 보통 어떤 우리가 출발점으로 쓸 수가 있습니다
지금까지는 강화학습을 할 때 그냥 밑도 끝도 없이 강화학습도 했는데 이렇게 행동복제를 일단 해놓고 우리도 그렇잖아요
뭐 배울 때 선생님한테 선생님이 자 보고 따라 하세요
리슨 앤 리피트 하면서 똑같이 따라 하다가 그 다음에 자신이 생기면 자기가 새로운 문제도 풀어보고 경험을 쌓아가는 거잖아요
행동복제를 먼저 하고 강화학습을 하는 것이 괜찮은 선택일 수 있습니다
실제로도 많이 하고요 알파고도 그런 식으로 만들었죠
역강화학습
그 다음에 이거는 굉장히 어려운 문제인데 역강화학습이라는 게 있어요
우리가 강화학습을 할 때 어려운 게 보상을 결정하는 거거든요
아까 벽에 갖다 박으면 몇 점을 줘야 되고 꼴에 가면 몇 점을 줘야 되냐
우리가 인위적으로 점수를 매겼는데 그 점수는 우리 머릿속에서 나온 거니까 굉장히 주관적이고 사람마다 생각이 다를 거란 말이에요
저는 항구에 도착하면 100점 암초에 갖다 박으면 마이너스 1000점 이랬는데 10배 밖에 안 되죠
어떤 사람은 아니 그게 왜 10배 밖에 안 되냐 100배는 줘야지
이런 사람도 있을 거고 아니 항구에 가나 암초에 박으면 똑같이 플러스 마이너스 100점 하면 되지 왜 어떤 건 10배 주냐
누구 마음이냐
이럴 수도 있어요
그래서 이 보상함수가 구하기가 어려운데 역강화학습은 어떻게 하냐면 지도학습에서는 전문가의 시연을 그대로 따라 하는데 역강화학습은 역으로 하는 겁니다
이 전문가도 뭔가 강화학습을 했을 거란 말이에요 생물학적 또는 심리학적 강화학습을 했겠죠
우리가 추측을 하는 겁니다
이 사람의 행동을 보고 도대체 이 사람은 어떤 보상함수를 따르고 있을 것인가
그래서 이제 가정을 하는데 어떻게 가정을 하냐면 저 사람이 최적으로 행동을 하고 있을 것이다
최적 행동을 하고 있을 것이다