다른 곳에 내가 쓴 글인데 쓰고나니 나름 잘 뽑힌거 같아 함 여기도 올려봄.



--------------------------------------------------



저희 어머니가 최근 어디 학술대회 같은 곳에 초청받아 갔다 오셨는데, 사회학 + 인문학 계열 분들이 주로 초청받아 가신 곳 같았습니다. 그래서 같이 저녁식사를 하던 와중 어머니가 그곳에서 한 분이 발표하셨던 내용을 말씀해주셨는데, 주로 인공지능과 기술개발의 가속화에 대한 이야기였습니다. 그런데 듣다보니 뭔가 되게 극단적이고 어찌보면 해괴하기까지 한 이야기를 정말 자신감 있게 단언하는 내용이더군요. 알파고를 보면 알 수 있다시피 이제 인간이 뭘 배우는건 의미 없다, 학교에서 몇년간 배워봤자 현장에서 십분 배우는 것만 못하다, 뭐 그런 얘기들. 그래서 저희 어머니한테 혹시 그분이 컴퓨터공학 혹은 인공지능을 따로 공부하신 적 있는 분이냐 여쭈어봤더니 그냥 인문학만 파신 분이라 합니다. 어쩐지 그럴 것 같더라고요.


저는 과거 인공지능 행동자에 관심을 가져 슬레이 더 스파이어라는 상용게임의 플레이방법을 자동으로 학습하는 강화학습 행동자를 개발해보기 위해, 당장 저분이 언급하셨던 알파고 논문을 포함해 상용 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) 덕에 쉽게 적용 될 수 있었으니 그 역시 바둑이란 게임의 특징을 적극적으로 활용한 것입니다.



세상에는 난제가 많고 인공지능을 통해 그토록 엄청난 난제에 도전하는 것은 사람들이 흔히 생각하는만큼 절대 쉬운 일이 아닙니다. 지금 저희가 가진 능력으로는 문제 하나하나에 특화 된 해결책을 제시해야만 그러한 난제를 풀 수 있습니다. 물론 그 과정에서 개발되는 알고리즘, 도구 및 방법론 같은 것들이 학문 전체의 발전을 불러오기야 하겠지요. 하지만 그럼에도 최소한 아직까지는 하나의 일반적인 해결책으로 그토록 엄청난 난제들을 모조리 다 해결해버리겠다는 생각은 망상에 불과합니다.


최소한 아직까지, 인공지능은 도구에 불과하며 그러한 도구를 주체적으로 사용할 능력을 지닌 존재는 인간이 유일합니다.