강화학습이란?

꼭 알아야 할 3가지 사항

강화학습은 컴퓨터 에이전트가 역동적인 환경에서 반복적인 시행착오 상호작용을 통해 작업 수행 방법을 학습하는 머신러닝 기법의 한 유형입니다. 이 학습 접근법을 통해 에이전트는 인간 개입 또는 작업 수행을 위한 명시적인 프로그래밍 없이 작업에 대한 보상 메트릭을 최대화하는 결정을 내릴 수 있습니다.

강화학습으로 교육된 AI 프로그램은 바둑과 체스뿐만 아니라 비디오 게임에서도 사람을 상대로 승리했습니다. 강화학습은 새로운 개념이 아니지만 최근 딥러닝 및 계산 능력의 발전으로 인해 인공 지능 분야에서 매우 뛰어난 성과를 거뒀습니다.

강화학습이 중요한 이유

강화학습, 머신러닝 및 딥러닝

강화학습은 머신러닝의 한 부류입니다(그림 1). 비지도 및 지도 머신러닝과 다르게 강화학습은 정적 데이터셋에 의존하는 것이 아니라 역동적인 환경에서 동작하며 수집된 경험으로부터 학습합니다. 데이터 점 또는 경험은 훈련하는 동안 환경과 소프트웨어 에이전트 간의 시행착오 상호작용을 통해 수집됩니다. 강화학습의 이런 점은 지도 및 비지도 머신러닝에서는 필요한 훈련 전 데이터 수집, 전처리 및 레이블 지정에 대한 필요성을 해소하기 때문에 중요합니다. 이는 실질적으로 적절한 인센티브가 주어지면 강화학습 모델은 인간의 개입 없이 학습 행동을 자체적으로 시작할 수 있다는 것을 의미합니다.

딥러닝은 3가지 머신러닝 모두를 포함합니다. 강화학습과 딥러닝은 상호 배타적이지 않습니다. 복잡한 강화학습 문제는 주로 심층 강화학습이라고 알려진 분야인 심층 신경망에 의존합니다.

그림 1. 세 가지 머신러닝: 비지도 학습, 지도 학습 및 강화학습.

강화학습 응용 분야의 예

강화학습으로 훈련된 심층 신경망은 복잡한 행동을 표현할 수 있습니다. 이를 통해 기존 방법으로는 해결하기 매우 까다롭거나 다루기 어려운 응용 분야에 대안적인 방식으로 접근할 수 있습니다. 예를 들어, 자율주행에서 신경망은 운전자를 대신하여 카메라 프레임, 라이다 측정값 등 다양한 센서를 동시에 살펴보고 핸들을 어떻게 돌릴지 결정할 수 있습니다. 신경망이 없었다면 이 문제는 카메라 프레임에서 특징 추출, 라이다 측정값 필터링, 센서 출력값 통합, 센서 출력값을 기반으로 "주행" 결정 내리기 등의 여러 개의 작은 문제들로 세분화됐을 것입니다.

생산 시스템에서의 강화학습은 아직 증명이 되지 않은 접근법이지만 일부 산업 응용 분야는 강화학습을 활용하기 좋은 조건을 갖추고 있습니다.

고급 제어: 비선형 시스템을 제어하는 것은 매우 까다로운 문제로서 이는 주로 다양한 동작점에서 시스템을 선형화하여 해결합니다. 강화학습은 비선형 시스템에 바로 적용할 수 있습니다.

자율주행: 카메라 입력값을 기반으로 주행 결정을 내리는 이 분야는 심층 신경망이 이미지 응용 분야에서 거둔 성공을 고려하면 강화학습에 잘 맞는 분야입니다.

로봇공학: 강화학습은 픽앤플레이스 응용 분야에서 로봇 팔로 다양한 사물을 다루는 방법을 학습시키는 등 로봇 파지와 같은 응용 분야에서 사용될 수 있습니다. 다른 로봇공학 응용 분야로는 인간-로봇, 로봇-로봇 협업이 있습니다.

스케줄링: 스케줄링 문제는 신호등 제어, 특정 목표를 위해 공장 현장의 리소스 편성 등 다양한 시나리오에 존재합니다. 강화학습은 이와 같은 조합 최적화 문제 해결에 있어 진화적 방법을 대체할 수 있는 좋은 수단입니다.

보정: ECU(Electronic Control Unit) 보정과 같이 파라미터의 수동 보정이 필요한 응용 분야는 강화학습을 활용하기 좋은 조건을 갖추고 있습니다.

강화학습의 작동 방식

강화학습의 훈련 메커니즘은 다양한 실제 시나리오를 반영합니다. 긍정 강화를 통한 반려동물 훈련을 예시로 들어보겠습니다.

그림 2. 강아지 훈련의 강화학습.

강화학습 용어(그림 2)를 사용해서 설명하자면 이 사례의 학습 목표는 강아지(에이전트) 가 강아지를 둘러싼 환경과 훈련사를 포함한 환경에서 행동을 완료하도록 강아지를 훈련하는 것입니다. 먼저 훈련사가 강아지에게 명령 또는 신호를 보내고 강아지는 이를 관찰합니다(관측값). 그런 다음 강아지는 행동을 취하여 응답합니다. 취한 행동이 원하는 행동과 근접한 경우 훈련사는 간식 또는 장난감과 같은 보상을 제공할 것입니다. 그렇지 않다면 보상이 제공되지 않습니다. 훈련 초반에 강아지는 특정 관측값을 행동 및 보상과 연관 짓기 위해서 "앉아"라는 명령에 구르는 등 무작위 행동을 더 많이 취할 것입니다. 이러한 관측값과 행동 사이의 연관성 또는 매핑을 정책이라고 합니다. 강아지의 관점에서 최적의 시나리오는 모든 신호에 올바르게 응답하여 최대한 많은 간식을 획득하는 것입니다. 즉, 강화학습 훈련의 의미는 강아지가 보상을 최대화하는 목표 행동을 배울 수 있도록 강아지의 정책을 "조정"하는 데 있습니다. 훈련이 완료되면 강아지는 자신이 개발한 내부 정책을 사용하여 보호자의 "앉아"라는 명령을 관찰하고 적절한 행동을 취할 수 있게 됩니다. 이 시점에는 간식이 제공되면 좋지만 필수적이지 않습니다.

강아지 훈련 예시를 떠올리면서 자율주행 시스템을 사용한 자동차 주차 작업의 예시를 살펴보겠습니다(그림 3). 목표는 강화학습을 활용하여 자동차 컴퓨터(에이전트)에게 올바른 주차 위치에 주차하도록 가르치는 것입니다. 강아지 훈련 사례와 동일하게 환경은 에이전트를 제외한 모든 것을 의미하며 차량의 동특성, 근처에 있는 다른 차량, 날씨 등이 포함될 수 있습니다. 훈련 동안 에이전트는 카메라, GPS 및 라이다 등 센서의 판독값(관측값)을 사용하여 운전, 제동 및 가속 명령(행동)을 생성합니다. 관측값으로부터 올바른 행동을 생성하는 방법을 학습(정책 조정)하기 위해 에이전트는 시행착오 절차를 통해 차량의 주차를 반복해서 시도합니다. 시행의 적합성을 평가하고 학습 과정을 인도하기 위해 보상 신호가 제공될 수 있습니다.

그림 3. 자율주차의 강화학습. 

강아지 훈련 예시에서 훈련은 강아지 뇌 속에서 이뤄졌습니다. 자율주행 예시에서는 훈련 알고리즘이 훈련을 담당합니다. 훈련 알고리즘은 수집된 센서 판독값, 행동 및 보상을 기반으로 에이전트의 정책 조정을 책임집니다. 훈련이 완료되면 차량의 컴퓨터는 조정된 정책과 센서 판독값으로만 주차를 할 수 있습니다.

유념해야 될 점은 강화학습은 샘플 효율적이지 않다는 점입니다. 이는 훈련을 위한 데이터를 수집하려면 에이전트와 환경 사이에 수많은 상호작용이 필요하다는 것을 의미합니다. 예를 들어 세계 바둑 챔피언을 상대로 승리한 최초의 컴퓨터 프로그램인 AlphaGo는 며칠 동안 쉬지 않고 훈련하여 수백만 판의 대국을 둬서 수천 년간의 인간 지식을 축적하였습니다. 비교적 간단한 응용 분야에 대해서도 훈련 시간은 몇 분에서 몇 시간, 며칠까지 소요됩니다. 또한 내려야할 수많은 설계 결정이 있는데 이런 모든 결정을 올바르게 내리기 위해서는 몇 번의 시도가 필요할 수도 있기 때문에 문제를 제대로 설정하는 것 또한 까다로울 수 있습니다. 이런 결정에는 적절한 신경망 아키텍처 선택, 하이퍼파라미터 조정 및 보상 신호 형성 등이 있습니다.

강화학습 워크플로

강화학습을 사용한 에이전트 훈련의 일반적인 워크플로는 다음과 같은 단계를 포함합니다(그림 4).

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

1. 환경 생성

먼저 에이전트와 환경 간 인터페이스 등의 강화학습 에이전트가 운영될 환경을 정의해야 합니다. 이 환경은 시뮬레이션 모델 또는 실제 물리적 시스템일 수 있으나 더욱 안전하고 실험이 가능한 시뮬레이션 환경이 일반적으로 더 좋은 첫 단계입니다.

2. 보상 정의

다음으로 에이전트가 성과를 작업 목표와 비교하기 위해 사용할 보상 신호 및 이 신호를 환경으로부터 계산하는 방법을 명시해야 합니다. 보상을 형성하는 것은 까다로운 작업이며 올바르게 설정하기 위해 몇 번의 시도가 필요할 수도 있습니다.

3. 에이전트 생성

그런 다음 정책과 강화학습 훈련 알고리즘으로 구성된 에이전트를 생성합니다. 그러기 위해선 다음을 완료해야 합니다.

a) 정책을 나타낼 방법 선택(신경망 또는 룩업 테이블 사용 등).

b) 적절한 훈련 알고리즘 선택. 각각의 표현 방식은 대개 각각의 특정 훈련 알고리즘의 범주와 연결되어 있습니다. 그러나 일반적으로 대부분의 최신 강화학습 알고리즘은 대규모 상태/행동 공간 및 복잡한 문제에 적합한 신경망에 의존합니다.

4. 에이전트 훈련 및 검증

훈련 옵션(중지 기준 등)을 설정하고 에이전트를 훈련해 정책을 조정합니다. 훈련이 종료된 후에는 훈련된 정책을 꼭 검증하여야 합니다. 필요에 따라 보상 신호 및 정책 아키텍처 등의 설계 선택을 다시 검토하고 재훈련합니다. 강화학습은 일반적으로 샘플 비효율적으로 알려져 있습니다. 훈련은 응용 분야에 따라 몇 분에서 며칠까지 소요됩니다. 복잡한 응용 분야의 경우 여러 CPU, GPU 및 컴퓨터 클러스터에서 훈련을 병렬 처리하여 가속할 수 있습니다(그림 5).

그림 5. 병렬 연산으로 샘플 비효율적인 학습 문제 훈련.

5. 정책 배포

훈련된 정책 표현을 C/C++ 또는 CUDA 코드로 생성하여 배포합니다. 이 시점에서 정책은 독립된 의사 결정 시스템입니다.

강화학습을 사용하여 에이전트를 훈련하는 절차는 반복적인 과정입니다. 추후 단계의 결정 및 결과로 인해 학습 워크플로의 이전 단계로 다시 돌아와야 할 수 있습니다. 예를 들어 훈련 과정에서 합리적인 시간 안에 최적의 정책으로 수렴하지 않는 경우 에이전트를 재훈련하기 전에 다음과 같은 사항을 업데이트해야 할 수 있습니다.

  • 훈련 설정
  • 강화학습 알고리즘 구성
  • 정책 표현
  • 보상 신호 정의
  • 행동 및 관측값 신호
  • 환경 동특성

MATLAB 및 Simulink를 통한 강화학습

MATLAB®Reinforcement Learning Toolbox™는 강화학습 작업을 간소화합니다. 강화학습 워크플로의 모든 단계를 거치면 로봇 및 자율주행과 같은 복잡한 시스템을 위한 컨트롤러 및 의사결정 알고리즘을 구현할 수 있습니다. 구체적으로 다음과 같은 단계를 수행할 수 있습니다.

1. MATLAB 및 Simulink®를 사용하여 환경 및 보상 함수 생성

2. 심층 신경망, 다항식, 룩업 테이블을 사용하여 강화학습 정책 정의

그림 6. Reinforcement Learning Toolbox™로 이족 보행 로봇에게 보행 가르치기

3. 약간의 코드 변경만으로 DQN, DDPG, PPO 및 SAC와 같은 널리 쓰이는 강화학습 알고리즘을 전환, 평가 및 비교 또는 나만의 사용자 지정 알고리즘 생성

4. Parallel Computing Toolbox™MATLAB Parallel Server™를 사용해 여러 GPU, CPU, 컴퓨터 클러스터 및 클라우드 리소스를 활용하여 강화학습 정책을 더욱 빠르게 훈련

5. MATLAB Coder™ 및 GPU Coder™를 통해 코드를 생성하고 임베디드 기기로 강화학습 정책 배포

6. 참조 예제를 사용하여 강화학습 시작

강화학습에 대해 자세히 알아보기