이웅재 매스웍스코리아 이사

▲ 이웅재 매스웍스코리아 이사

[컴퓨터월드] 평소 기술 관련 뉴스를 눈여겨본다면 강화 학습으로 단련된 AI 프로그램이 비디오 게임뿐만 아니라 바둑이나 체스 등 보드 게임에서도 인간 플레이어를 이겼다는 기사를 쉽게 접할 수 있다. 엔지니어, 과학자 또는 연구원으로서 이러한 최신 기술을 활용해 보고 싶을 것이다. 그런데 어디서부터 시작해야 할까? 가장 좋은 출발점은 개념과 구현 방법, 문제에 대한 올바른 접근법을 이해하는 것이다.

간단히 개념을 정의하자면, 강화 학습이란 어려운 의사결정 문제를 해결할 수 있는 일종의 머신 러닝이다. 강화 학습이 우리에게 어떤 영향을 미치는지 정확히 이해하기 위해서는 세 가지 중요한 질문에 답해야 한다.

1. 강화 학습이란 무엇이고, 문제를 풀 때 왜 강화 학습을 고려해야 하는가?
2. 강화 학습은 어떠한 때에 올바른 접근법인가?
3. 강화 학습 문제를 해결하기 위해서는 어떤 워크플로를 따라야 하는가?


강화 학습의 의미
강화 학습이란 컴퓨터가 시도와 실패를 통해 반복적으로 역동적인 환경과 상호작용함으로써 과제를 수행하는 방법을 배우는 일종의 머신 러닝이다. 이러한 학습 접근법을 통해 컴퓨터는 인간의 개입 없이도, 어떤 과제를 달성하기 위해 프로그래밍되지 않고도 보상 척도를 극대화하는 결정을 내릴 수 있게 된다.

강화 학습을 보다 잘 이해하기 위해 실제와 비슷한 상황을 살펴보자. <그림 1>에는 강화 학습을 통해 개를 훈련시키는 예시가 나타나 있다.

▲ 그림 1. 개를 훈련시키는 강화 학습

이 경우에 강화 학습의 목표는 개(에이전트)를 훈련시켜서 어떤 환경 속에서 과제를 완수하도록 하는 것이고, 조련사뿐만 아니라 개의 주변도 환경의 일부이다. 먼저 조련사가 어떤 명령이나 단서를 제공한다. 개는 그것을 관찰한다(관찰). 이어서 개가 어떤 행동을 취하며 반응하게 된다. 만일 그 반응이 원하는 행동에 근접하였다면 조련사는 간식이나 장난감 같은 보상을 제공하고, 아니라면 보상하지 않거나 부정적인 보상을 줄 것이다.

훈련을 시작할 때 개에게 “앉아”라는 명령을 하면, 개는 특정한 관찰결과와 행동, 보상을 연결하려고 노력하면서 임의적인 행동을 하게 된다. 관찰 결과와 행동 사이의 이러한 연결 또는 매핑을 정책(policy)이라고 부른다. 개의 입장에서는 모든 단서에 정확하게 반응하여 최대한 많은 간식을 얻는 것이 가장 이상적이다. 그래서 강화 학습 훈련은 개의 정책을 ‘튜닝’하여, 보상을 극대화할 바람직한 행동을 배우는 것이다.

훈련을 마친 개는 주인을 관찰하고 적절한 행동을 취할 수 있어야 한다. 예를 들어 개가 “앉아”라는 명령을 들었을 때, 개의 내부적 학습을 통해 앉아야 한다. 여기까지 성취했다면 얼마든지 간식을 줄 수 있지만, 사실 개에게 반드시 간식이 필요한 것은 아니다.

개 훈련의 예와 비슷하게, 자율주행 시스템으로 자동차를 주차하는 과제를 살펴보자(그림 2). 이 과제의 목표는 차량 컴퓨터(에이전트)가 정확한 주차 위치에 정확한 방향으로 자동차를 주차하는 것이다. 개 훈련의 예시와 비슷하게, 이때의 환경은 에이전트를 제외한 모든 주변 조건이고 차량의 이동, 근처의 다른 차량, 날씨 조건 등이 포함될 수 있다.

에이전트는 훈련하면서 카메라, GPS, LiDAR와 같은 센서의 수치(관찰)를 이용하여 조향, 제동, 가속 명령(행동)을 생성한다. 관찰로부터 정확한 행동을 생성하는 방법을 학습하기 위해(정책 튜닝) 에이전트는 시도와 실패 과정을 활용하여 반복적으로 주차를 시도한다. 보상 신호를 제공함으로써 적절한 시도인지 평가하고 학습 과정에 방향을 제시한다.

▲ 그림 2. 자율주행 주차에서 이루어지는 강화 학습

개 훈련 예시에서는 개의 두뇌에서 훈련이 이루어진다. 자율주행 주차에서는 학습 알고리즘이 훈련을 감독한다. 학습 알고리즘은 수집된 센서 수치와 행동, 보상을 이용하여 에이전트의 정책을 튜닝하는 역할을 한다. 차량의 컴퓨터는 훈련을 마친 후 튜닝된 정책과 센서 수치만을 이용하여 주차할 수 있어야 한다.


강화 학습은 어떠한 때에 올바른 접근법인가?
지금까지 많은 강화 학습 알고리즘이 개발되었다. 본 기고에서는 학습 알고리즘을 다루지는 않지만, 가장 널리 사용되는 학습 알고리즘이 딥 뉴럴 네트워크 정책을 기반으로 하고 있다는 점을 짚고 넘어가고자 한다.

뉴럴 네트워크는 상당히 복잡한 행동을 인코딩할 수 있다는 장점을 가진다. 이를 통해 기존 알고리즘으로는 해결하기 어렵거나 불가능한 분야에 강화 학습을 사용할 수 있게 된다. 예를 들어 자율주행에서는 뉴럴 네트워크가 운전자를 대신하고 카메라 프레임이나 LiDAR 측정치처럼 다수의 센서에서 나오는 입력을 동시에 고려하여 핸들의 작동을 결정한다(엔드투엔드 솔루션). 만일 뉴럴 네트워크가 없다면 작은 문제들로 나누어 해결한다. 즉 한 모듈이 카메라 입력을 분석하여 유용한 특징을 식별하고, 다른 모듈은 LiDAR 측정치를 필터링하고, 다른 구성품은 센서 출력치를 융합함으로써 차량 주변의 전체 모습을 그리며, ‘전자’ 모듈 등도 사용하는 방식이다. 하지만 엔드투엔드 솔루션에도 단점이 있다.

훈련된 딥 뉴럴 네트워크 정책은 ‘블랙박스’로 간주된다. 뉴럴 네트워크의 내부가 복잡한 파라미터 수백만 개로 구성돼 있기에, 네트워크의 결정을 이해하고 평가하는 것이 불가능에 가깝다(<그림 3> 왼쪽). 그래서 뉴럴 네트워크 정책은 공식적인 성능 보증이 어렵다. 이 문제는 애완동물을 훈련시킬 때 주인이 내린 명령을 인식하지 못하는 경우를 통해 알 수 있다.

▲ 그림 3. 강화 학습의 몇 가지 난관

또 다른 문제는 강화 학습이 표본 효율적이지 않다는 점이다. 실제로 적격한 성능에 도달하기 위해서는 수많은 훈련이 필요하다. 예를 들어 세계 바둑 챔피언을 이긴 최초의 컴퓨터 프로그램인 ‘알파고’는 쉬지 않고 수백만 번의 게임을 플레이했다. 이 훈련에서 알파고는 며칠 동안 인간이 수천 년 간 쌓아 온 지식을 습득했다. 비교적 간단한 애플리케이션이라도 훈련에 몇 분, 몇 시간 또는 며칠이 걸릴 수 있다.

마지막으로 문제를 정확히 설정해야 하는 어려움이 있다. 수많은 설계를 결정하고 정확히 설정하기 위해 과정을 수차례 반복해야 한다(<그림 3> 오른쪽). 이 과정에는 뉴럴 네트워크에 사용할 적절한 아키텍처를 선택하고 하이퍼파라미터를 튜닝하며, 보상 신호를 형성하는 등의 결정이 수반된다.

정리하자면, 안전을 중시하거나 긴박한 프로젝트라면 기존의 방식을 이용해서 접근할 수도 있고, 처음부터 강화 학습을 시도하는 방법이 최선이 아닌 때도 있다. 이러한 경우가 아니라면, 우선 시도해 보자!
 

강화 학습 워크플로
강화 학습을 이용하여 에이전트를 훈련시키는 일반적인 워크플로는 다음과 같은 단계를 따른다.

▲ 그림 4. 강화 학습 워크플로

1. 환경 조성
먼저 에이전트가 작동하는 환경을 정의해야 하며, 이때 에이전트와 환경 사이의 인터페이스도 정의해야 한다. 환경은 시뮬레이션 모델 또는 실제의 물리적 시스템이다. 시뮬레이션 환경은 더 안전하고 실험도 가능하므로 첫 단계로 적절하다(실제 하드웨어는 비싸다!).

2. 보상 정의
다음으로는 에이전트가 과제 목표와 비교하여 성능을 측정하는 데 사용하는 보상 신호를 정하고, 환경으로부터 이 신호를 어떻게 계산할지 설정한다. 올바른 보상을 설정하는 것은 어렵고 반복이 필요할 수도 있다.

3. 에이전트 생성
이 단계에서 에이전트를 생성한다. 에이전트는 정책과 학습 알고리즘으로 이루어져 있으므로 다음과 같은 과정이 필요하다.

a. 정책을 표현할 방법을 선택한다 (예, 뉴럴 네트워크 또는 룩업테이블 사용).
b. 적절한 학습 알고리즘을 선택한다. 특정한 표현은 대개 특정한 학습 알고리즘 종류와 연계되어 있다. 하지만 최신 알고리즘은 대부분 뉴럴 네트워크를 기반으로 하는데, 큰 상태/행동 공간과 복잡한 문제에는 뉴럴 네트워크가 적합하기 때문이다.

4. 에이전트 훈련과 검증
훈련 옵션을 설정하고(예: 중지 조건) 에이전트를 훈련시켜 정책을 튜닝한다. 이를 마치면 훈련된 정책을 검증한다. 애플리케이션에 따라 훈련에 몇 분이나 며칠이 걸릴 수 있다. 복잡한 애플리케이션은 다수의 CPU, GPU, 컴퓨터 클러스터에서 병렬로 훈련시킨다면 속도가 빨라질 것이다.

5. 정책 배포
예를 들면 생성된 C/C/C++ 또는 CUDA 코드를 이용하여, 훈련된 정책 표현을 배포한다. 이때는 정책이 이미 독립된 의사결정 시스템이므로 에이전트 및 트레이닝 알고리즘을 신경 쓰지 않아도 된다.

강화 학습을 이용하여 에이전트를 훈련시키는 것은 반복적인 과정이다. 이후 단계에서 이루어지는 의사결정과 결과에 따라서 학습 워크플로의 초기 단계로 되돌아가야 할 수도 있다. 예를 들어, 훈련 과정이 정해진 기한 내 최적의 정책에 이르지 못한다면 에이전트를 다시 훈련시키기 전에 다음을 수정해야 한다.

■ 훈련 설정사항
■ 학습 알고리즘 구성
■ 정책 표현
■ 보상 신호의 정의
■ 동작과 관찰 신호
■ 환경의 변화


요약
오늘날에는 <그림 5>와 같은 강화 학습 툴박스 등을 이용하여 로봇이나 자율 시스템처럼 복잡한 시스템의 컨트롤러와 의사결정 알고리즘을 빠르게 학습하고 구현할 수 있다.

선택한 툴과는 상관없이, 강화 학습을 채택하기 전 스스로에게 묻기 바란다. 프로젝트에 사용할 수 있는 시간과 자원을 감안할 때, 강화 학습이 나에게 적절한 접근법인지를 말이다.

▲ 그림 5. 강화 학습 툴박스를 이용한 로봇 보행 훈련
저작권자 © 컴퓨터월드 무단전재 및 재배포 금지