본문 바로가기

트렌드 한눈에 보기/학계 트렌드

강화학습(SAC)을 활용한 코로나 대응 정책 만들기 - Sony AI

 스탠포드 유튜브 강의(CS234)로 강화학습을 공부한 게 올해 1~2월 쯤이었다. 마냥 공부만 하면 재미가 없으니 Cartpole 예제로 직접 구현해보는 시간도 가졌더랬다(관련 글). 대학원에 입학하게 되면 실제 연구에 강화학습을 사용할 수 있겠지~ 하며 기대도 했었다.


 그런데 웬걸, 강화학습은 커녕 단순한 머신러닝조차 활용할 길이 드물다. 연구 주제인 웨어러블 혹은 생체모사 로봇 등이 디자인과 성능 검증으로 이뤄져 있지, 제어나 센서 등을 다루지 않기 때문이다. 주어진 상황에 맞춰 제어를 하게 되는 강화학습을 사용할 여유가 없는 것이다. 

 

Sony AI에서 개발한 코로나 시뮬레이터

 

 그렇다고 딥러닝을 손 놓고 있자니 공부한 것이 아깝기도 하고, 또 언젠가는 쓰일 것이라는 기대를 하지 않을 수가 없다. 그래서 강화학습을 적용할만한 다른 연구거리를 찾아보기 시작했다. 그렇게 위 논문을 발견했다. Sony AI (소니에 AI 연구회사가 있어?) 에서 개발한 Pandemic Simulator와 이를 활용한 강화학습 기반 코로나 대응정책이다. 


1. 시뮬레이터 구조

코로나 시뮬레이터의 구성

 

 이 논문에서 제작한 Pandemic Simulator는 위와 같은 구조로 이뤄져있다. 역병이 퍼지는 상황이 만들어지고, 정부가 이에 따라서 대응정책(사회적 거리두기, 마스크 착용 의무화 등)을 어떤 식으로 적용할지를 시뮬레이션을 통해 살펴보는 것이다. 단순하면서도 꽤나 상세하게 파라미터를 조절할 수 있어서, 마스크를 착용함으로써 전파율이 얼마나 떨어지는지 혹은 한 사람이 다른 사람에게 전파할 수 있는 확률이 얼마나 되는지 등을 정할 수 있다. 


2. 파라미터 캘리브레이션

 그런 파라미터들을 실제와 가장 유사하게 만들기 위해서 이 논문은 스웨덴의 코로나 대응을 참고했다. 스웨덴은 "집단 면역"을 하겠다면서 코로나에 아무런 정부 대책을 세우지 않았던 것으로 유명하다. 이를 통해, 한 사람이 다른 사람에게 전파시킬 수 있는 확률을 어느 정도 수준으로 맞춰야 최다 사망자를 달성하기까지 걸린 시간이 실제 데이터와 유사하게 나타날 수 있는지를 비교할 수 있었다. 

 

 여기서 한계점은 딱 "전파율"만 캘리브레이션 과정을 거쳤다는 것이다. 한 장소에서 사람들이 얼마나 많이 접촉하는지 등과 같은 중요한 지표들은 "모델링이 어렵다" 라는 이유로 제외되었다. 어려운 거 제끼고 쉬운 문제만 풀려면 애초에 논문은 왜 썼나- 싶기도 하지만, 뭐 어렵다는데 어쩌겠나. 할 수 있는 거라도 해야지.


3. 강화학습 구조

 공부한지 오랜 시간이 지나서 자세한 내용은 잊어버렸지만, 논문에서 사용한 Soft Actor Critic (SAC)은 Actor와 Critic을 학습시켜주는 과정에서 확률적인 선택을 가능하게끔 하는 방법이다. 기존의 DQN 방식에서는(아래 영상) 어떤 행동이 가져오는 효과를 학습시켜서 최적의 효과를 내는 행동을 취하게 했다면, Actor-Critic은 효과를 계산하는 네트워크와 행동을 구성하게 하는 네트워크를 따로 만들어두었다. 정확히 어떻게 다른지는 프라이버시라 공개하기 어렵다...

 

DQN을 활용한 벽돌깨기 영상

보상 함수

 아무튼 강화학습에는 Reward Function이 어떻게 구성되어 있는지 확인하는 것이 중요하다. 위 등식은 꽤나 무섭게 생겼지만, 의미하는 바는 간단하다. 중증 환자 수를 병원의 병상 수보다 적게 유지하되, 정부에서 가하는 제약(사회적 거리두기 단계)을 가능하면 낮게 해라. 감염자 수를 적게 하는 것이 아니라, 중증환자 수를 조절하는 것이 독특하다. 또 정부에서 가하는 제약을 낮게 하도록 유도하는 방식이 옳은지는 잘 모르겠다. 기존의 강화학습이 "벽돌을 많이 깨면 사탕을 줄게" 하는 식으로 구성되어서 방향키를 왼쪽으로 보낼지 오른쪽으로 보낼지 학습을 시킨다면, 이 논문에서 사용한 방식은 "방향키를 왼쪽으로 보내면 사탕을 줄게" 하는 식으로 직접 학습 방향을 제어하기 때문이다. 

 

 이와 같은 보상함수를 구성한 이유는 사회적 거리두기 단계를 무작정 올리는 것이 확진자 수 조절에 무조건 도움이 되기 때문이다. 하지만 이에 따라 경제적 비용이 엄청나게 증가하는데, 엔지니어 입장에서는 그런 경제적 효과를 모델링하기가 어려웠던 모양이다. 그래서 그냥 사회적 거리두기 단계가 경제 비용과 비례한다고 보고, "경제적 비용을 줄여라" 라는 말을 "사회적 거리두기 단계를 낮게 해라" 라는 말로 갈음한 것이다. 

 

 하지만 이는, 사회적 거리두기 단계가 높아짐으로써 확진자 조절에 걸리는 시간이 짧아지면서 경제적 비용이 줄어들 수 있는 계산을 무시할 뿐만 아니라, 앞서 말했듯 직접적으로 행동 반경을 제약하는 결과를 낳음으로 적절한 강화학습 방법이라고 할 수 없다. 


4. 시뮬레이션 결과

실험 결과: S0-4-0-GI 와 Learned 항목을 비교하면 된다

 

 시뮬레이션 결과는 물론, 강화학습으로 발견해 낸 규제 정책이 효과가 좋게 나왔다. 하지만 그 비교 대상이 "10일이 지나면 자연스럽게 거리두기 단계를 하향 조치해라" 라는 어처구니 없을 정도로 단순한 규제정책이라서, 실효성이 있는 비교라고 생각되지는 않는다. 이 역시 실제 정부의 대응 프로세스를 모델링 하기가 어렵기 때문에 선택한 방안이다. 어쨌든 "아무 생각없이 규제하는 것보다는 더 나은 결과를 강화학습을 통해 구현할 수 있다" 라는 근거가 되므로, 사회정책을 세울 때 가이드라인으로 내세울 수 있기는 할 것이다. 

 

5인 이상 집합금지는 실효가 없다!

 

 오히려 더 재미있는 결과는 강화학습 파트가 아니라 단순한 캘리브레이션 과정에서 드러났다. 집합 규모를 조절하는 규제 정책(한국의 5인 이상 집합금지가 이에 해당한다)의 실효를 판단하는 실험을 했는데 효과가 상당히 미미했던 것이다. 제한이 없을 때와 5인 이상 집합금지는 아주 적은 차이를 보이고, 심지어는 아예 집합을 금지하는 경우에도 사망자 수 등에는 큰 차이를 보이지 못했다. 이는 기본적으로 대규모 집합 장소에서 사람들이 모이는 경우, 전파가 모임 단위로 이뤄지는 것이 아니라 해당 장소에 모인 사람들 전부에게 이뤄지기 때문이다. 때문에, 한 장소에서 사람들끼리 전파되는 확률 자체를 줄이지 않는 이상 (사업장 수용 인원 조절 등을 통해 실현 가능하다) 집한 규모를 조절하는 것은 큰 효과를 얻기가 힘들다.


 재미있는 실험 결과도 있었지만, 전반적으로는 강화학습을 사회에 적용하기에는 무리가 있음을 여실히 드러내는 연구가 아닐 수가 없었다. 게다가 한 때 열심히 공부했던 강화학습을 상당히 많이 까먹었구나 하는 것도 깨달을 수 있었다.