강화학습이란? 심층 강화학습에 대한 정의와 종류
글 작성자: _rian
강화학습이란?
- 순차적인 의사결정 문제를 해결하는 방법.
- 실제 세계의 많은 문제는 순차적 의사 결정 문제로 표현될 수 있다.
- 강화학습 문제는 에이전트와 환경으로 구성되는 하나의 시스템으로 표현될 수 있는데ㅡ 환경은 시스템의 상태를 나타내는 정보를 만들어낸다. 이걸 상태(state)라고 부른다.
- 핵심 개념
- 상태 : 시스템의 상태를 나타내는 정보
- 행동 : 에이전트가 상태를 관측하고 그로부터 얻은 정보를 활용하여 행동을 선택함으로써 환경과 상호작용함
- 보상 : 에이전트의 행동을 통해 다음 상태에 대한 보상값이 에이전트에게 주어짐.
- 정책 : 에이전트의 행동 생성 함수를 정책이라고 한다. 정책은 상태로부터 행동을 도출하는 함수를 의미함.
- 목적 : 에이전트가 받는 보상의 총합. 좋은 행동을 선택함으로써 목적을 최대로 달성하는 것이 목표.
- 보상함수 $R(s_t, a_t, s_{t+1})$ 은 $(s_t, a_t, s_{t+1})$ 이라는 전이에 대해 하나의 스칼라 값을 할당하는데, 이 값은 양수, 음수, 0 모두 가능하다.
- 상태공간, 행동공간, 보상함수는 환경에 따라 정의되고, 이를 모아서 $(s, a, r)$ 이라는 튜플로 정의되는데 이 튜플이 강화학습 시스템을 나타내는 기본적인 단위
강화학습에서 학습하는 함수
강화학습에서 학습하는 3개의 주요 함수
- 상태로부터 행동을 도출하는 정책 $\pi : a \sim \pi(s)$
- 이득의 기댓값 $E_\gamma[R(\tau)]$ 를 추정하기 위해 필요한 가치 함수 $V^\pi(s)$ 또는 $Q^\pi(s, a)$
- 환경 모델 $P(s’ | s, a)$
정책은 확률론적으로 알 수 있다. 즉, 동일한 상태에 대해서 확률적으로 다양한 행동을 도출할 수 있다. 이 경우 주어진 상태 $s$에 대해서 행동 $a$가 도출될 확률을 $\pi(a|s)$ 로 나타낼 수 있다. 정채긍로부터 추출된 행동을 $a \sim \pi(s)$ 라고 표현한다.
심층 강화학습이란?
Deep NN을 함수의 근사 기법으로 사용하는 방식
- 정책 기반 (policy-based) 방식
- 정책 $\pi$ 를 학습. 에이전트의 목적을 최대로 만드는 궤적을 생성함.
- 정책함수 $\pi$ 는 상태 $s$ 를 입력받아 행동 $a \sim \pi(s)$ 를 도출함
- 매우 일반적인 최적화 방법으로, 에이전트가 가장 신경쓰는 목적함수 $J(r)$을 직접 최적화함
- 단점 : 정책의 분산이 크고 훈련 과정이 표본 비효율적임.
- 가치 기반 (value-based) 방식
- 에이전트 상태 $s$에서 항상 $Q^\pi(s,a)$의 추정값을 가장 크게 만드는 행동 $a$를 선택하는 방법
- DQN, Double DQN 등이 많이 쓰이고 있는 효과적인 알고리즘.
- 일반적으로 정책 기반 알고리즘보다 표본 효율적 (sample-efficient) 다.
- 모델 기반 (model-based) 방식
- 환경의 전이역학(transition dynamics)에 대한 모델을 학습하거나 이리 알려진 모델을 학습함
- 에이전트는 추정을 통해 환경 모델로부터 궤적의 예측값을 계산함.
- ex. 몬테카를로 트리 탐색
강화학습을 위한 심층학습
- 심층 신경망은 복잡한 비선형 함수를 근사하는데에 탁월한 능력을 가지고 있음.
- 2015년 딥마인드가 아타리 게임에서 인간 수준의 성능을 달성한 이후 강화학습 분야에서 개발된 모든 중요한 방법들은 NN을 이용하여 함수를 근사하고 있다.
- 신경망의 출력을 평가하는 손실 함수가 주어지면 신경망의 파라미터값을 변경하여 손실 함수가 최소가 되도록 하면서 성능을 향상시킬 수 있다. 이때 전역 최솟값 (global minimum)을 찾는 과정에서 손실함수가 가장 빠르게 감소하는 방향으로 파라미터를 변경하기 때문에 이러한 방법을 경사하강법(gradient descent)이라고 부른다.
강화학습과 지도학습
- 강화학습과 지도학습의 주된 차이점은 강화학습 문제에서는 모델의 모든 입력에 대해 "정확한" 답이 주어지지 않는 반면 지도학습에서는 모든 예제에 대해 정답 또는 최적의 답이 존재함.
활성 정책과 비활성 정책 알고리즘
- 활성 정책 (on-policy) 알고리즘
- 알고리즘이 정책에 대해 학습하는 경우.
- 정책에 대해 학습한다는 것은 훈련 과정에서 현재의 정책 $\pi$ 로부터 생성된 데이터만을 이용할 수 있다는 뜻.
- 여러 정책 $\pi_1, \pi_2, \pi_3, …$ 에 대해 훈련이 반복될 때, 훈련이 진행되는 바로 그 순간의 정책만을 이용하여 훈련 데이터를 생성한다는 것을 의미함.
- 따라서 훈련이 끝난 후에는 데이터가 더이상 쓸모없어지므로 데이터는 폐기되어야함.
- 표본 비효율적이며 더 많은 데이터를 필요로함.
- 비활성 정책 (off-policy) 알고리즘
- 수집된 모든 데이터는 훈련을 위해 재사용 될 수 있다.
- 표본 효율적이지만 이 경우 데이터를 저장하기 위한 메모리가 더 많이 필요할 수 있음.
'머신러닝 꿈나무' 카테고리의 다른 글
[혼공머신] 혼자 공부하는 머신러닝 & 딥러닝 3주차 (1) | 2024.01.21 |
---|---|
[혼공머신] 혼자 공부하는 머신러닝 & 딥러닝 2주차 (1) | 2024.01.14 |
[혼공머신] 혼자 공부하는 머신러닝 & 딥러닝 1주차 (0) | 2024.01.05 |
[Python 데이터 분석 3대장] Numpy 라이브러리 (0) | 2020.08.04 |
데이터의 성능을 높이는 방법 (0) | 2020.08.02 |
댓글
이 글 공유하기
다른 글
-
[혼공머신] 혼자 공부하는 머신러닝 & 딥러닝 3주차
[혼공머신] 혼자 공부하는 머신러닝 & 딥러닝 3주차
2024.01.21 -
[혼공머신] 혼자 공부하는 머신러닝 & 딥러닝 2주차
[혼공머신] 혼자 공부하는 머신러닝 & 딥러닝 2주차
2024.01.14 -
[혼공머신] 혼자 공부하는 머신러닝 & 딥러닝 1주차
[혼공머신] 혼자 공부하는 머신러닝 & 딥러닝 1주차
2024.01.05 -
[Python 데이터 분석 3대장] Numpy 라이브러리
[Python 데이터 분석 3대장] Numpy 라이브러리
2020.08.04