다른 곳에 내가 쓴 글인데 쓰고나니 나름 잘 뽑힌거 같아 함 여기도 올려봄.
--------------------------------------------------
저희 어머니가 최근 어디 학술대회 같은 곳에 초청받아 갔다 오셨는데, 사회학 + 인문학 계열 분들이 주로 초청받아 가신 곳 같았습니다. 그래서 같이 저녁식사를 하던 와중 어머니가 그곳에서 한 분이 발표하셨던 내용을 말씀해주셨는데, 주로 인공지능과 기술개발의 가속화에 대한 이야기였습니다. 그런데 듣다보니 뭔가 되게 극단적이고 어찌보면 해괴하기까지 한 이야기를 정말 자신감 있게 단언하는 내용이더군요. 알파고를 보면 알 수 있다시피 이제 인간이 뭘 배우는건 의미 없다, 학교에서 몇년간 배워봤자 현장에서 십분 배우는 것만 못하다, 뭐 그런 얘기들. 그래서 저희 어머니한테 혹시 그분이 컴퓨터공학 혹은 인공지능을 따로 공부하신 적 있는 분이냐 여쭈어봤더니 그냥 인문학만 파신 분이라 합니다. 어쩐지 그럴 것 같더라고요.
저는 과거 인공지능 행동자에 관심을 가져 슬레이 더 스파이어라는 상용게임의 플레이방법을 자동으로 학습하는 강화학습 행동자를 개발해보기 위해, 당장 저분이 언급하셨던 알파고 논문을 포함해 상용 DQN(Deep Q-Network) 알고리즘부터 행동자-비판자(Actor-Critic) 알고리즘 등도 공부해보고 목표지향강화학습(Goal-Oriented Reinforcement Learning)도 깔짝여보는 과정에서 잠시 VAE(Variational AutoEncoder)도 만져본 경험이 있습니다. 그 과정에서 연산력 확보하려고 구글에서 제공하는 가상머신 서비스로 백만원인가 날리고 그랬던 기억이 나네요. 이제 몇년 됬는데 요즘 트렌드를 잠시 다시 대충 흝어보니 요즘은 SAC(Soft Actor-Critic), TD3(Twin-Delayed DDPG), PPO(Proximal Policy Optimization) 같은 알고리즘들이 대세인 것 같더군요.
여하튼, 제가 과거 어느정도 경험해본 분야이기에 저는 어머니한테 왜 그 분의 말이 좀 성급한 부분이 없잖아 있는지를 간략하게 설명해드릴 수 있었습니다. 그런데 생각해보니 뭔가 인공지능이라는걸 많은 분들이 곡해하시는 경우가 잦은 것 같았습니다. 그래서 어머니께 말해드렸던 내용을 좀 더 정리하고 가다듬어 한 번 글로 올려보고자 결정했고 그렇게 이 글을 쓰게 되었습니다.
알파고 제로가 기술적으로던 역사적으로던 되게 유의미한 성취라는 것은 부정할 수 없습니다. 왜냐면 실제로 그러니까요. 그에 적용 된 방법론을 요즘 트렌드에 비교한다면야 약간 구닥다리 느낌이 있겠지만, 그를 서로간에 조합하고 엮어내며 보여준 번뜩이는 영감과 천재성은 여느 고전이 그렇듯 세월에 빛바래지지 않습니다. 주어진 문제를 해결해야 할 환경에 어떠한 이점과 어떠한 한계가 있는지를 정확히 직시하여 그 문제와 환경에 맞게 기발하고 우아한 해결책을 내보이는 것은 결코 쉬운 일이 아닙니다.
하지만 동시에 그 묘사는 알파고 제로가 지닌 한계... 라고 하긴 애매하지만 여하튼 그걸 보여주기도 합니다. 알파고 제로는 바둑이라는 문제와 그 문제를 해결해야 할 환경의 여러 구체적이고 세부적인 특징을 적극적으로 활용하고 있습니다. 즉, 바둑이란 난제를 해결하기 위해 딥마인드는 그 난제에 특화 된 해결책을 제시했고 그게 바로 알파고 제로입니다.
우선, 알파고 제로는 행동자의 신경망 아키텍쳐의 핵심요소로 ResNet(Residual Neural Network)라는 기술을 동원하였는데 그 기술의 핵심구성요소 중 하나는 CNN(Convolutional Neural Network)이며 이는 바둑이라는 게임의 구조 덕분에 탁월히 효과적으로 적용 될 수 있었습니다. 바둑판에 대해 패턴인식을 하는 것에 있어 한 점에 대한 정보는 그와 지역적으로 가까운 다른 정보와 엮일 때에 지역적으로 거리가 있는 다른 정보와 엮일 때보다 더 큰 의미를 지닙니다. 그리고 그러한 지역성이(Locality) 보장되는 바둑판의 정보가 바둑이란 게임의 상태를(State) 파악하는데 있어 그 자체로 충분하고 완전한 정보입니다. 뭐 무슨 포인트가 있어서 돌을 딸 때마다 그 포인트를 얻고 그걸 이용해 상점에서 아이템을 산 다음에 적의 눈을 가린다던가 그딴거 없잖아요? CNN은 입력받은 상태정보에서 그러한 지역성이 보장되어야만 제대로 효과를 발휘하기에 이건 매우 중요한 특징입니다.
반면, 제가 행동자를 개발하려 시도한 슬레이 더 스파이어 같은 경우는 그렇게 하기가 어렵습니다. 뭐, 어떤 게임이던 다른거 다 무시하고 그냥 픽셀정보를 보내 이미지 인식을 가지고 게임을 학습하게 만든다면(연구자들이 아타리 게임을 일반적으로 해결하는 행동자를 개발할 때 이 방법을 적용했죠) 그럴 수 있기는 합니다. 다만 그러면 문제가 요구하는 연산력이 폭등해버리거든요. 바둑이 0(없음), 1(나의 돌), 2(적의 돌)이라는 3개의 상태를 지닐 수 있는 19x19의 바둑판을 입력해서 풀 수 있는 문제라면 아타리 게임만 해도 3개의 상태보다 더욱 많은 상태를 지닐 수 있는 160 x 192 픽셀의 이미지를 매초마다 수십번씩 입력해야 풀 수 있는 문제고 현대 게임은 1920x1080개의 픽셀이 각기 RGBA라는 4개의 정보를 가지고 있습니다. 최소한 저는 그럴 여력이 없었습니다.
그래서 대신 저는 게임으로부터 여러 특징(feature)들을 뽑아내 그 특징값들을 1차원 벡터(대충 길이가 300 내외를 오갔습니다)에 저장하고 그걸 신경망에 입력값으로 집어넣는 방법을 택해야했습니다. 특징은 뭐 무슨 포션이 있는지 없는지, 무슨 카드가 덱에 몇개나 있는지, 체력은 얼마나 남았는지 같은 그런 정보들이었지요. 그런데 문제는, 이렇게 하면 지역성이 전혀 보장되지 않는다는겁니다. 벡터의 0번째 인덱스에 담긴 정보는 이웃한 1번째 인덱스보다 저 멀리 떨어진 196번 인덱스의 정보하고 더 밀접하게 연관이 있을 수도 있었으니까요. 그래서 어쩔 수 없이 단순 MLP를 적용할 수 밖에 없었는데 1막을 겨우 깰 정도의 성능 밖에 안 나와 나중에는 결국 CNN도 해보고 잘 안 되니 RNN은 어떨까 싶어 그것도 해봤지만 여전히 안 되니 LSTM이니 AC니 목표지향강화학습이니하는 것들까지 절박하게 동원해보다 결국 백만원 있던거 다 날리고나서야 접었던거죠. 여담이지만 결국 가장 성능이 좋았던 것은 맨 처음 시도한 MLP였습니다.
알파고는 그에 더해 바둑이라는 게임이 지닌 다음 이점 역시 활용할 수 있었습니다. 바둑은 가능한 상태의 종류(갯수가 아닙니다)가 매우 간결하고 또한 그러한 상태들간의 전환에 있어 매우 간결한 룰이 적용되는 게임입니다. 그냥 바둑판 위 어느 점에 어느 돌이 올라와 있는지가 전부고, 서로 다른 바둑판 위 돌 배치 상태는 그저 한 사람이 돌을 두고 다른 사람이 돌을 이어 둔다는 매우 간결한 방식을 거쳐 전환이 이루어집니다.
반면 슬레이 더 스파이어에는 자기 턴에 무슨 행동을 얼마나 할 수 있는지가 그리 간결하고 명확하게 정해져 있지 않습니다. 자기 턴이 끝나기 전에 포션을 마실 수도 있고, 안 마실 수도 있고, 아니면 아예 처음부터 없을 수도 있습니다. 카드 역시 플레이할 수도 안 플레이하고 그냥 턴을 넘길 수도 있는데 카드를 플레이한다고 할 때 그 카드도 공격이라면 적들 중 아무나 공격할 수 있고 그 외에 매우 특징적이고 재밌지만 일반화시켜 패턴을 구축하기에는 너무 복잡한 효과들 역시 다채롭게 발휘할 수 있습니다. 수비를 얻는 대신 자기 핸드의 카드를 하나 지우는 효과도 있고, 만약 카드가 지워질 경우 오히려 이득을 주는 효과를 지닌 카드도 있고...
이게 왜 중요하냐면 알파고 제로의 핵심 작동원리가 이 특징 덕분에 쉽게 적용 될 수 있었기 때문입니다. 알파고 제로는 바둑판 상태를 입력하면 현 상태의 승률과 현 상태에서 취할 수 있는 행동을 확률적으로 출력하는(엄밀히 말하면 부정확한 설명이지만 현 상태로부터 넘어갈 수 있는 각 상태들과 그러한 상태전환의 확률들이라 더 정확히 말하면 관련 맥락에 익숙치 않은 분들은 뭔 말인지 모를테니 스킵) 신경망 모델을 한 축으로 지닌 행동자입니다. 하지만 그만큼 중요한 또 다른 축은 몬테카를로 트리 서치 알고리즘인데, 딥마인드가 여차저차 개발해서 이 MCTS(Monte Carlo Tree Search) 알고리즘은 알파고의 다른 축인 신경망 모델에 의해 '안내를 받도록'(Guided) 되어 있습니다. 따라서 MCTS는 신경망 모델을 통해 효율적으로 바보 같은 행동과 그 결과를 고려하지 않고 '잘라낼 수'(Pruning) 있게 되었고 신경망 모델은 자신보다 더욱 강력하고 정확한 예측을 해내는 MCTS를 통해 그러한 더욱 뛰어난 예측능력을 자기 자신 역시 모방할 수 있는 길이 열리게 되었습니다. 이 둘의 적절한 조합 덕분에 알파고는 자기 자신이 생성한 데이터를 가지고 그보다 더 나은 실력을 가지도록 훈련하고 그를 통해 다시 더 나은 데이터를 생성하면 다시 그를 통해 더욱 더 나은 실력을 가지도록 훈련하는 미친듯이 효과적인 학습 사이클을 가질 수 있게 되었습니다. 그런데 이토록 중요한 MCTS는 바둑의 간결함과 확정성(Deterministic) 덕에 쉽게 적용 될 수 있었으니 그 역시 바둑이란 게임의 특징을 적극적으로 활용한 것입니다.
세상에는 난제가 많고 인공지능을 통해 그토록 엄청난 난제에 도전하는 것은 사람들이 흔히 생각하는만큼 절대 쉬운 일이 아닙니다. 지금 저희가 가진 능력으로는 문제 하나하나에 특화 된 해결책을 제시해야만 그러한 난제를 풀 수 있습니다. 물론 그 과정에서 개발되는 알고리즘, 도구 및 방법론 같은 것들이 학문 전체의 발전을 불러오기야 하겠지요. 하지만 그럼에도 최소한 아직까지는 하나의 일반적인 해결책으로 그토록 엄청난 난제들을 모조리 다 해결해버리겠다는 생각은 망상에 불과합니다.
최소한 아직까지, 인공지능은 도구에 불과하며 그러한 도구를 주체적으로 사용할 능력을 지닌 존재는 인간이 유일합니다.
RL은 실세계에 적용하는게 ㄹㅇ 너무 힘든거같음 - dc App
ㄹㅇ
다른거 이전에 그냥 연산력 확보부터가 어려움. 글에 언급한 행동자 개발할 때 게임 동시에 여러개 돌리려고 가상머신 16개 구매해 돌렸는데 돈 미친듯이 빠져나가더라고.
gpu까지 달아놓기에는 돈이 너무 들어서 cpu 가장 저렴한거 옵션으로 골라서 하고 gpu 필요한 모델연산은 gpu 달린 내 컴퓨터와 소켓으로 통신을 주고받게 해놓았는데도 지출이 미침.
인공지능 존나 거품이지 공부하기 전엔 멋있어보였는데 요즘은 별로 힙하지도 않고 한계만 느껴짐
한계를 이겨나가는 게 발전 아닐까염?
지금 뉴럴 네트워크 기반 ai의 한계는 머임??
누가 문풍당당 콘 좀 달아다오
멋있음.^^
상태(state)니 지역성(locality)니 이지랄로 english를 shake it shake it해서 쓰는거나 나 이것도 해보고 저것도 해보고 주저리주저리 쓰는것도 존나 비틱(vitic)같음ㅋㅋㅋ
첫 문장에 지가 지입으로 잘쓴거같네요 훗 하는거보니 딴엔 잘썻다고 생각하는거 같은데 걍 하루만에 알아보는 인공지능 이런거 읽은 잼민이가 잘난척하는걸로 밖에 안보여
어... 기계학습 이전에 컴퓨터공학에서도, 애초에 관련 개념과 용어가 영어니 한국어로 글을 쓰는거라해도 정확히 무슨 용어를 사용한 것인지를 알리기 위해 원어도 같이 덧붙히곤 하지 않나?
ㅂㅁㄱ
머리 나빠서 이해못해 열받은 것이면 그렇게 말해 굳이 행패부리지 말고 친구야
ㄹㅇ ㅋㅋ 존나 비틱같음
저정도면 양호한데
괜찮은디
그렇게 비하할 요소는 안보이는데
그냥 아이피만 봐도 병신인듯
번역이 중구난방이라 그냥 영어로 쓰는게 나음
평소 하던대로 아치리눅스나 빨아라
state를 상태라고 번역한거랑 게임의 state는 의미가 다르게 받아들여지는게 맞을거같은데? 전반적으로 병기하는게 맞다고 봄
요약좀
요약: 현실은 바둑보다 훨씬 어렵다
MLP가 가장 잘 작동한게 게임 데이터가 국소성을 쌩깐다는걸 반증해주는거 같음 ㅋㅋㅋ
난 병기 잘한거 같음.
몇번 읽고 나니까 비틱논란이 왜 나왔는지 알겠네. 문장이 어렵고 길고 부연설명이 길어서 그런거 같음. 잘쓴글은 문장이 간결하고 쉬운표현을 씀. 이글은 아쉽게도 아닌거 같다. 내 입장에선 상당수 아는 용어이라서 난이도가 어렵지는 않았는데. 이글을 쓴 계기가 사회인문학 다녀오신 어머니에게 설명한 내용을 가다듬었다고 했는데 내용을 보면 전문용어 투성이라서 처음 읽을때는 의문만 가득했었음. ,
일리 있는 지적이네. 확실히 더 간결하고 간단하게 글을 써야 했는데, 그건 내가 부족했던거 같음. 내가 소통능력이 좀 부족하긴 한거 같음. ㄳㄳ
내 생각에는 어디까지 어떻게 말해야 좋은가에 대한 경험이 미숙한게 가장 큰 원인 아닌가 싶음. 사실 처음에는 MLP부터 시작해 그게 컴퓨터 비전에 적용하는 것에 있어 왜 한계가 있고 CNN이 어떤거라 그걸 어떻게 해결하고 사라지는 그라디언트(Vanishing Gradient)는 어떤 문제라서 그걸 어떻게 leaky한 모델로 해결할 수 있었는지 그런거도 다 주절거리며 적다가 너무 TMI 같아서 걍 지웠었거든. 지금 생각해도 그건 TMI 같긴 한데 그럼 어떻게 해야 효과적으로 이 주제를 전달할 수 있을까 잘 개념이 안 잡히는거 같음.
반면 내가 이글에서 좋았던점은 ‘슬레이 더 스파이어’ 라고 본인이 직접 알파고 외에 시도한걸 설명하는점은 좋았음. 이건 어느정도 전공자들 타겟으로 글을 쓸때 예시로 들면 아주 좋을것 같음. 전공자들 이미 다 알고 있는 알파고 원리 얘기 말고 이사람이 이런 도전을 했고 이런방식도 써보고 이런 근거로 저런 적용을 해보고 하는 글이 더 흥미로울것 같음. ,
특정 상황을 어떤 데이터로 바라볼 수 있는지에 대한 데이터과학자의 통찰력이 중요한 것.. 좋은 글 잘 읽었습니다.
읽기 쉬운 글이 좋은 글이다 = 문과충 주장 어차피 좋은 글이어도 문과충은 못 알아들음
아니지 문과충은 온갖 형용사 범벅시킨 보그체를 좋은글이라고 생각하고 이과가 간결한 글을 좋은글로 생각하지 ,
인공지능은 그 시대 사람들이 보기에 대충 안 될 거 같은데 되는 걸 인공지능이라구 해여(이게 되네?) 그래서 한 때 인공지능이었던 것들이 이제는 아니게 된것이 많읍니다 최근 딥덀감으로 이미지 프로세싱하는 것도 곧 인공지능 딱지 떨어지고 걍 당연히 되는 것 정도가 되지 않을까 생각해봅니다
오랜만에 양질의 글이네요.. 전 잘 읽었습니다 선생님.. - dc App
tldr하려다가 댓글불타서 뭔가 하고 읽었는데 아주 공감가는 내용이네여 개추박음
요즘 트렌드는 또 그냥 transformer 때려박는거 아닌가? RL은 잘 모르지만 CNN이나 locality 얘기는 결국 dataset에 대한 inductive bias에 대한 얘기고 이걸 없애는 게 마지막 문단에서 말한 거처럼 망상 수준까지는 아닌 거 같은데
물론 앞쪽에서 얘기한 비전공자들의 곡해나 인간 수준의 general solution이 존재하지 않는다는 것에는 동의하는 바임
이 글이 필요한 인간들은 이해못할 용어가 너무 많음
세줄요약없어서 읽진 않았지만 개추는누르고 갑니다