최근 수정 시각 : 2024-07-09 21:32:46

강화학습


[[컴퓨터공학|컴퓨터 과학 & 공학
Computer Science & Engineering
]]
[ 펼치기 · 접기 ]
||<tablebgcolor=#fff,#1c1d1f><tablecolor=#373a3c,#ddd><colbgcolor=#0066DC><colcolor=white> 기반 학문 ||수학(해석학 · 이산수학 · 수리논리학 · 선형대수학 · 미적분학 · 미분방정식 · 대수학(환론 · 범주론) · 정수론) · 이론 컴퓨터 과학 · 암호학 · 전자공학 · 언어학(형태론 · 통사론 · 의미론 · 화용론 · 음운론) · 인지과학 ||
하드웨어 구성 SoC · CPU · GPU(그래픽 카드 · GPGPU) · ROM · RAM · SSD · HDD · 참조: 틀:컴퓨터 부품
기술 기계어 · 어셈블리어 · C/C++ · C# · Java · Python · BIOS · 절차적 프로그래밍 · 객체 지향 프로그래밍 · 해킹 · ROT13 · 일회용 비밀번호 · 사물인터넷 · 와이파이 · GPS · 임베디드 · 인공신경망 · OpenGL · EXIF · 마이크로아키텍처 · ACPI · UEFI · NERF · gRPC · 리버스 엔지니어링 · HCI · UI · UX · 대역폭 · DBMS · NoSQL · 해시(SHA · 브루트 포스 · 레인보우 테이블 · salt · 암호화폐) · RSA 암호화 · 하드웨어 가속
연구

기타
논리 회로(보수기 · 가산기 · 논리 연산 · 불 대수 · 플립플롭) · 정보이론 · 임베디드 시스템 · 운영 체제 · 데이터베이스 · 프로그래밍 언어{컴파일러(어셈블러 · JIT) · 인터프리터 · 유형 이론 · 파싱 · 링커 · 난해한 프로그래밍 언어} · 메타데이터 · 기계학습 · 빅데이터 · 폰노이만 구조 · 양자컴퓨터 · 행위자 모델 · 인코딩(유니코드 · MBCS) · 네트워크 · 컴퓨터 보안 · OCR · 슈퍼컴퓨터 · 튜링 머신 · FPGA · 딥러닝 · 컴퓨터 구조론 · 컴퓨터 비전 · 컴퓨터 그래픽스 · 인공지능 · 시간 복잡도(최적화) · 소프트웨어 개발 방법론 · 디자인 패턴 · 정보처리이론 · 재귀 이론 · 자연어 처리(기계 번역 · 음성인식) · 버전 (버전 관리 시스템 · Git · GitHub)

학습
행동학습 인지학습 기계학습심층학습
비연합학습 연합학습 사회학습 잠재학습 통찰학습 지도학습 비지도학습 강화학습
습관화 민감화 고전적 조건형성 도구적 조건형성


사람이 강화학습 알고리즘으로 걸음을 익힌다면 이런 식이 될 거다(3D 애니메이션)
1. 개요2. 상세3. 학습 알고리즘
3.1. Value based Algorithms3.2. Policy Gradient Algorithms3.3. 알고리즘 구현 참조 라이브러리
4. 실험 환경5. 관련 용어6. 관련 문서

1. 개요

/ Reinforcement learning

강화학습은 동물의 학습 능력을 모방한 것으로, 특정 상태(state)에서 어떤 행동(action)을 취하는 것이 최적인지를 학습하는 것이다.

2. 상세

강화학습은 행동을 취할 때마다 외부 환경에서 보상(reward)이 주어지는데, 이러한 보상을 최대화 하는 방향으로 학습이 진행된다. 그리고 이러한 보상은 행동을 취한 즉시 주어지지 않을 수도 있다(지연된 보상). 이 때문에 문제의 난이도가 지도학습/비지도학습에 비해 대폭 상승하며, 시스템을 제대로 보상하는 것과 관련된 신뢰 할당 문제라는 난제가 여전히 연구원들을 괴롭히고 있다. 대표적으로 게임 인공지능을 만드는 것을 생각해볼 수 있다. 체스에서 현재 나와 적의 말의 배치가 state가 되고 여기서 어떤 말을 어떻게 움직일지가 action이 된다. 상대 말을 잡게 되면 보상이 주어지는데, 상대 말이 멀리 떨어져 이동할 때 까지의 시간이 필요할 수 있으므로, 상대 말을 잡는 보상은 당장 주어지지 않는 경우도 생길 수 있다. 심지어는 그 말을 잡은 것이 전술적으로는 이익이지만 판세로는 불이익이라 다 끝났을 때 게임을 질 수도 있다(지연된 보상). 따라서 강화학습에서는 당장의 보상값이 조금은 적더라도, 나중에 얻을 값을 포함한 보상값의 총 합이 최대화되도록 action을 선택해야 하며, 게다가 행동하는 플레이어는 어떤 행동을 해야 저 보상값의 합이 최대화되는지 모르기 때문에, 미래를 고려하면서 가장 좋은 선택이 뭔지 action을 여러 방식으로 수행하며 고민해야 한다. 좋은 선택이 뭔지 action을 찾는 것을 탐색, 지금까지 나온 지식을 기반으로 가장 좋은 action을 찾아 그것을 수행하는 것을 활용한다고 하여, 강화학습을 푸는 알고리즘은 이 둘 사이의 균형을 어떻게 잡아야 할지에 초점을 맞춘다.

오래전부터 움직이는 모터, 로봇, 드론, 자율이동체 등 이 원하는 성능을 갖도록 고전적인 제어공학이 발전되어 왔다. 점차 시스템이 복잡해지고, 원하는 성능도 높아지면서, 고전적인 제어공학으로 해결하기 힘든 현실적인 제어 문제가 많이 등장하였다. 최근 기존 제어와 비슷한 피드백 형식으로 시스템을 학습하고 원하는 성능을 얻어내는 강화학습은 이런 도전적인 제어 문제 해결에 큰 역할을 하고 있다.

2020년 국내에서 혈당만으로 필요한 인슐린양을 정확하게 계산하는 AI 알고리즘을 개발했는데 여기에 강화학습이 사용되었다. AI에게 주입한 인슐린양에 따른 혈당이 어떻게 변하는지 나타낸 데이터를 학습시켜 당뇨병 환자의 혈당 데이터를 입력했을 때 최적의 인슐린양을 찾도록 한 것. 논문 링크

강화학습을 배워보고 싶은 경우 참고할 수 있는 사이트들이다.
모두를 위한 RL강좌
CS234 강의
CS285 강의
팡요랩
OpenAI 블로그
OpenAI Spinning Up
혁펜하임

3. 학습 알고리즘

3.1. Value based Algorithms

신경망은 [math(Q(s, a))] 즉 상태 [math(s)]에서 보상을 최대화 하는 행동 [math(a^*)] 및 그때 [math(Q(s,a^*))] 예측한다. 일반적으로 불연속적인 행동에 대해서만 적용 가능하다.
  • Q-Learning
  • SARSA
  • DQN Google DeepMind's Deep Q-learning playing Atari Breakout: 구글 딥마인드에서 2014년 내놓은 논문. 개발사의 참고자료
  • Dueling DQN DQN의 Q 함수를 [math(Q(s, a) = V(s) + A(s, a))] 로 분해하여, 더 안정적인 학습을 가능하게 한다. [math(a)]가 다양할수록 [math(Q(s,a))]를 학습하는데 사용 가능한 표본이 비교적 적어진다는 문제를, 어떤 행동 [math(a)]를 선택하더라도 [math(V(s))]를 학습하는데라도 도움이 될 수 있도록 했다고 생각하면 편리하다.

3.2. Policy Gradient Algorithms

신경망은 정책 자체를 근사하는데, 각 상태에서 어떤 행동을 취할 확률을 직접적으로 출력한다. 따라서 가위바위보와 같은 확률적 정책을 근사하는 것에도 유용하다. 다만 학습이 불안정하다는 단점이 있다.
  • A2C(Advantage Actor-Critic)
  • A3C(Asynchronous Advantage Actor-Critic) A2C가 한개의 에이전트로 학습을 한다면, A3C는 여러 에이전트들을 가동시켜 비동기적('A'synchronous)으로 모델을 업데이트 하는 알고리즘이다. arxiv
  • ACER(Actor-Critic with Experience Replay) arxiv
  • TRPO(Trust Region Policy Optimization) 2020년 2월 기준 SOTA에 속하는 알고리즘. arxiv
  • PPO(proximal policy optimization) 2017년 기준 SOTA에 속하는 알고리즘. on-policy 방식이며, discrete와 continuous한 환경 모두에서 사용 가능하다. TRPO 의 2차근사가 연산량과 구현 둘 다 힘들게 하기에, 1차 근사로도 TRPO의 근접하거나 그 이상의 성능을 내려 하는 것이 PPO의 특징으로, 'P'olicy 'O'ptimization을 'P'roximal하게 한다는 뜻으로 이름이 붙었다. 하지만 실제 PPO를 구현해보면 성능이 잘 나오지 않고, parameter의 fine-tuning을 통해 얻어낸 결괏값이 아니냐는 의심을 받고있다.arxiv
  • DDPG 심층 결정론적 정책 경사법 알고리즘
  • SAC(Soft Actor Critic) arxiv

3.3. 알고리즘 구현 참조 라이브러리

  • Stable-Baselines: Tensorflow 기반 기본 강화학습 알고리즘들을 구현해놓았다.
  • Stable-Baselines3: PyTorch 기반 기본 강화학습 알고리즘들을 구현해놓았다.
  • CleanRL: 모듈 기반의 복잡한 구조를 멀리하고, 단 하나의 파일 당 한 알고리즘의 모든 것이 들어갈 수 있게 한다는 철학을 가진 강화학습 라이브러리이다.

4. 실험 환경

DPO (Direct Preference Optimization)과 같이 로봇 이외 분야에서도 광범위하게 활용할 수 있는 학습 알고리즘이 강화학습이지만, 여기서는 좁은 의미의 강화학습을 연구할 때 주로 사용되는 유명한 환경들을 다룬다.
  • OpenAI Gym: 강화학습을 처음 연구하기 시작하면 가장 먼저 접할 수 있는 환경이다. 현재는 Gymnasium이라는 Gym 2.0 버전으로 마이그레이션되었으며, 다양한 종류의 시뮬레이션된 환경을 제공한다. 막대기에 적절한 토크를 제공하여 똑바로 서있게 하는 간단한 태스크부터, 아타리 게임 및 로봇 시뮬레이션까지 다양한 환경을 제공한다. 많은 환경들이 gymnasium 인터페이스를 따른다.
  • MuJoCo (Multi-Joint dynamics with Contact): 고성능의 물리 엔진을 사용하여 로봇학습 환경을 제공하는 환경이다. 정밀한 물리 시뮬레이션과 복잡한 로봇 구조의 모델링이 가능하여 로봇공학 분야에서 널리 사용된다.
  • Project Malmo, CraftGround: 마인크래프트 기반 플랫폼으로, 복잡한 3D 환경에서의 인공지능 연구를 가능하게 한다. 아타리보다 복잡한 다양한 시나리오에서의 탐험, 학습, 문제 해결 등을 실험할 수 있다. 실험 실행 시간을 단축하고 싶거나, 마인크래프트 버전 1.12 이상에서의 실험을 원한다면 CraftGround를 이용하는 것이 좋다.
  • DeepMind Lab: 복잡한 3D 환경에서 에이전트의 행동을 테스트하고 학습할 수 있는 플랫폼이다.
  • Unity ML-Agents: 유니티 엔진을 사용하여 강화학습 등 다양한 종류의 머신러닝 알고리즘을 실험할 수 있는 플랫폼이다.
  • VizDoom: 고전 게임 Doom을 이용하여 강화학습을 실험할 수 있는 플랫폼이다. C++기반이라 초당 1000프레임 이상의 빠른 실험이 가능하다.

5. 관련 용어

파일:상세 내용 아이콘.svg   자세한 내용은 강화학습/용어 문서
번 문단을
부분을
참고하십시오.

6. 관련 문서