1. Reinforcement Learning(강화 학습)
: 컴퓨터나 로봇이 어떤 환경(Environmnet)에서 반복적인 행동을 통해 목표를 달성할 때 가장 좋은 행동 방식을 찾는 방법이다.
우선 강화학습을 알기전에 Agent와 Environment, State에 대해서 학습해야한다.
Agent
: 학습을 통해 환경에서 최적의 행동을 찾으려고 하는 주체이다. 예를 들면, 미로를 빠려 나오려는 로봇
Environment
: Agent가 행동을 할 때 변화를 일으키는 외부 요소이다. 예를 들면, 미로에서 벽과 출구가 있는 공간 자체
State
: Agent가 현재 환경에서 어떤 상황에 처해 있는지를 나타내는 정보
1. Environment는 Agent에게 State를 부여한다.
2. 전달된 State에 따라서 Agent는 Action을 한다.
3. Environment는 Action에 따라서 보상을 주고, 다음 State를 다시 Agent에게 부여한다.
강화학습은 아래와 같이 다양한 분야에서 응용할 수 있다.
- Cart-Pole Problem (Pole을 Cart위에서 균형을 잡도록 하기)
- Robot Locomotion (로봇을 앞으로 가도록 하기)
- Atari Games (게임을 가장 높은 점수로 끝내기)
- Go (바둑 게임 이기기)
2. Markov Decision Process(마르코프 결정 과정)
: 강화 학습을 수학적으로 나타낸 것이다. 마르코프 결정과정은 현재 상태가 모든 정보를 포함하여, 미래 상태를 예측하는 데 충분하다는 Markov Property를 가정한다.
Markov Decision Process의 구성 요소
S(상태 집합)
: Agent가 가질 수 있는 모든 State의 집합이다. 예를 들어, 바둑에서 각 돌의 위치나 미로에서 특정 지점이 상태가 된다.
A(행동 집합)
: Agent가 취할 수 있는 모든 Action의 집합이다. 예를 들어, Robot Locomotion에서 로봇을 왼쪽, 오른쪽으로 이동하는 조작이 행동이 될 수 있다.
R(보상 함수)
: 특정 (State, Action) 쌍에 대한 보상의 분포이다. Agent가 특정 Action을 했을 때, 환경에서 제공되는 보상을 결정하낟. 보상은 긍정적일 수도, 부정적일 수도 있다.
P(상태 전이 확률)
: 현재 State와 Action에 따라 다음 상태로 전이될 확률을 나타낸다. 즉, Agent가 특정 Action을 선택했을 때 다음 State가 될 가능성을 나타낸다.
γ(할인율)
: 미래 보상에 대한 가중치를 의미한다. 할인율이 높을수록 먼 미래의 보상을 현재와 거의 같은 수준으로 간주하고, 할인율이 낮을수록 미래의 보상을 더 중요시한다.
❓할인율은 왜 필요한가?
할인율을 사용하는 이유는 미래의 불확실성 때문이다. 먼 미래에 있는 보상은 예측이 어렵고, 지금 당장 얻는 보상보다 가치가 떨어질 수 있다. 예를 들어, 당장 10,000원을 받는 것이 1년 후 10,000원을 받는 것보다 가치가 크다고 판단할 수 있는 것처럼, 강화학습에서는 할인율을 통해 미래 보상의 중요 여부를 평가한다.
Markov Decision Process의 과정
1. 초기 State 설정
- 시점 t = 0에서 Environment가 초기 상태 s₀를 무작위로 선택한다.
2. Agent의 Action 선택
- Agent는 현재 상태 sₜ에서 Action aₜ를 선택한다. 이 선택은 보통 Policy 기반으로 이루어지며, Policy는 특정 상태에서 어떤 행동을 취할지 결정하는 함수이다.
3. 보상과 다음 State 제공: Agent가 Action을 선택하고, Environment는 아래를 제공한다.
- 보상 rₜ: Agent의 행동에 따른 보상을 제공한다.
- 새로운 stateₜ+₁: 선택된 행동에 따라 새로운 State가 결정된다.
4. Agent는 보상을 받고 State 갱신
- Agent는 받은 보상을 통해 학습하며, 갱신된 state에서 다시 action을 선택한다.
목표: 최적의 Policy 찾기
강화학습의 목표는 보상의 누적(sum of rewards)을 최대화하는 최적의 정책인 π*를 찾는 것이 목표이다. 이때 보상은 할인율 γ(감마)를 적용해 계산하며, 시간이 지남에 따라 미래의 보상이 현재보다 작게 평가된다.
π*를 수학적으로 표현하면 아래와 같다.
이 식에서 γ는 할인율로, 미래 보상에 대한 가중치를 조정해 현재 가치로 환산한다. policy가 최적화되면, Agent는 가장 높은 누적 보상을 받을 수 있는 Action을 계속하게 된다.
= 10 + 18 + 24.3 = 52.3
이렇게 계산된 누적 보상은 시간이 지날수록 미래의 보상이 현재보다 덜 중요하게 반영된 값이다. 즉, 할인율을 통해 Agent는 즉각적인 보상을 더 선호하게 되고, 멀리 있는 보상은 덜 중요한 것으로 평가하여 학습하게 됩니다.
A simple MDP: Grid World
❓ 위의 Grid World에서 Agent가 *이 있는 종료 지점까지 최적의 방법으로 가려면 어떻게 해야할까?
위의 방식에는 Random Policy와 Optimal Policy가 설명되어 있다. Random Policy로 길을 찾으면 길을 찾을 수는 있지만 다시 종료 지점과 멀어지는 방향으로 나아갈 수 있기 때문에 적합하지 않다. 하지만 Optimal Policy로 길을 찾으면 종료지점과 가까워지는 방향으로만 나아가기 때문에 좀더 최적화된 방법으로 길을 찾을 수 있다.
Optimal Policy (π∗)
강화학습의 목표는 보상의 누적을 가장 크게 만드는 Optimal Policy π∗를 찾는 것이다. 그러나 Environment에는 랜덤성(예를 들면, 초기 State가 무작위로 설정되는 등)이 있기 때문에 단순히 한 가지의 경로만 고려할 수 없다. 따라서 미래 보상의 기대값을 최대화하는 Policy를 찾는 것이 중요하다.
Value Function(상태 가치 함수)
: 현재 State에서 Policy π∗ 를 따라 Action을 할 때, 얻을 수 있는 보상 총합의 예상이다. (Action은 포함되지 않음)
쉽게 말해서, 특정 State에 있을 때 해당 State에서 출발해서 Policy를 따라가며 받을 수 있는 보상의 예상합계이다. 예를 들면, 미로의 출발점에서 시작했을 때 도착지에 도달할 떄까지 얻을 수 있는 보상의 총합을 계산하는 것이다.
여기서 E는 기대값을 의미하며, Agent가 어떤 State에서 시작했을 때, 앞으로 얻을 수 있는 보상의 평균을 계산하는 것이다.
Q-value Function(행동 가치 함수)
: 현재 State에서 현재 Action을 선택한 후 앞으로 π∗ 를 따라 가며 얻을 수 있는 보상 총합의 예상이다. 이때, Agent는 주어진 Policy인 π∗을 따라 Action한다.
쉽게 말해서, 특정 State에서 특정 Action을 취하고 Policy를 따라가며 앞으로 얻을 수 있는 보상의 예상 합계이다. 예를 들면, 미로에서 어떤 위치에 있을 때 위쪽으로 이동하는 행동을 선택했을 때, 그 이후의 전체 보상을 예상해보는 것이다.
이 수식에서 s는 현재 상태이며, a는 현재 Action을 의미하며, 이 Action 이후에도 계속 정책 π∗를 따라 움직이면서 얻을 보상의 총합을 구한다.
3. Bellman equation(벨만 방정식)
: 벨만 방정식은 가치 함수나 이다. 가치 함수를 재귀적으로 정의하는 방정식
Q-Value function의 벨만 방정식의 의미
현재 State s와 현재 Action a에서의 보상 r과 다음 상태 s'에서의 최대 보상의 누적 예상 값을 maxQ*(s', a')로 나눠서 표현했다. Q*(s', a')로 인해서 또 다음 Q*(s'', a'')가 호출되는 재귀적인 형태로, 최적 Policy를 따를 때 모든 State-Action 쌍에 대해 최적의 기대 보상을 계산할 수 있도록 한다 .
벨만 방정식의 단계
1. 현재 상태 s에서 가능한 모든 행동을 살펴본다.
2. 각 행동에 대해 다음 상태 s'로 가면서 받을 보상과, 그 다음 상태의 Q-value인 Q(s', a')를 계산한다.
3. 모든 가능한 행동 중 가장 높은 보상(미래 가치를 포함)을 주는 행동을 선택한다.
벨만 방정식을 이해하는 키 포인트
- 현재 보상과 미래 보상을 동시에 고려
- 최적의 행동을 선택하도록 도와줌
- 현재 상태의 가치를 계산할 때, 미래 상태의 가치(이전 계산 결과)를 반복적으로 참고해서 점점 더 정확한 값을 얻는다.
Value Iteration Algorithm(값 반복 알고리즘)
: 벨만 방정식을 이용해서 value function과 Q - value function 값을 반복적으로 업데이트해서 더 정확하게 최적의 값(누적 보상 예상 값을 크게 만드는 값)을 만드는 알고리즘이다.
쉽게 말해서,값 반복 알고리즘은 과거의 상태와 행동에 따른 보상과 현재 상태와 행동에 따른 미래의 예상 보상을 반복적으로 더하면서, 각 상태의 기대 값을 점점 더 정확하게 계산해 나가는 방법이다. 여기서, 미래의 예상 보상도 다시 현재 상태와 행동의 보상을 관여하기 때문에 이런식으로 계속 시간이 지날 수록 재귀적으로 이전 상태와 행동을 관여하면서 정확한 값을 계산해 나간다.
어떤 식으로 진행되는가?
1. 초기 State: 모든 값이 미지수
모든 가치 함수 V(s)와 Q 가치 함수 Q(s, a) 값들이 비어있거나 초기화된 상태로 시작한다.
🔥 강화 학습의 목표: 이 미지수의 State와 Actiom 가치함수들을 점점 더 정확하게 업데이트하여 최적의 정책을 찾는 것이다. 🔥
2. 벨만 방정식을 이용해 점진적으로 값을 업데이트
벨만 방정식을 통해서 value function과 Q - value function 값을 반복적으로 업데이트하는 데 사용된다. 이를 Value Iteration Algorithm이라고 한다.
Value Iteration는 다음과 같이 작동한다.
- 특정 State에서 특정 Action을 선택한 후, 그 결과로 보상을 받고 다음 상태로 이동한다,
- 이동한 다음 State에서 벨만 방정식을 사용해서 value function 또는 Q - value function을 계산하여 업데이트한다.
예를 들어 상태 s에서 행동 a를 했다고 하자. 그 결과 보상 r을 받고 다음 상태 s'로 이동했다고 가정한다.
이때 Q(s, a)는 위의 공식으로 업데이트 된다. 위 식은 현재 State에서 받은 보상 r과 다음 상태 s'에서 최적의 행동을 했을 때 기대되는 보상을 합쳐서 Q(s, a)를 업데이트하는 방식이다.
3. 업데이트 반복을 통해 정확한 값 도출하기
- 이 과정을 모든 State와 Action에 대해 여러 번 반복하면서, Q(s, a) 값들이 점점 더 정확해지고 수렴하게 된다.
- 충분히 많은 반복이 이루어지면, 각 State-Action 쌍에 대해 가장 좋은 Q(s, a) 값이 계산된다. 이를 통해서 각 State에서 최적의 Action을 찾게 된다.
한 문장으로, 반복을 통해 각 State와 행동의 가치가 점점 최적의 값에 가까워지며, 최적의 정책을 학습하는 것이다.
4. 최적의 Policy 도출하기
모든 State와 Action에 대해 최적의 Q(s, a)값들이 계산되면, 각 State에서 가장 높은 Q(s, a) 값을 가진 행동을 선택하는 방식으로 최적의 Policy를 만들 수 있다.
❓ 최적의 값 vs 최적의 정책(Policy) ❓
최적의 값: 현재 State 또는 현재 State - Action에 대해서 최적의 보상을 따랐을 때 얼마나 높은 보상을 받을 수 있는지를 수치로 나타는 것이다.
최적의 정책: 각 State에서 미래까지 고려했을 때 종합적으로 최고의 보상을 얻기 위해 따라야하는 행동 지침이다.
우선 아래의 내용을 이해하기 위해서는 강화 학습의 원리와 Q 값이 무엇인지 알아야한다. 따라서 리마인드 해보면 강화 학습의 기본적인 원리는 Agent가 현재 상태에서 행동을 선택하고 그에 따른 보상을 받으며, 이를 통해 최대의 보상을 얻기 위한 최적의 정책을 학습하는 것이고, Q는 특정 상태에서 특정 행동을 했을 때 얻을 수 있는 보상의 총합 예상치이다. 즉, 상태와 행동을 조합해서 얼마나 좋은지를 평가하는 값이다 .
4. Q-Learning & Deep Q-Learning
위 방식들은 강화학습에서 최적의 정책을 찾는 방법들이다.
우선 Q-Learning에 대해서 보자
Q-Learning
: Agent가 어떤 상태에서 어떤 행동을 했을 때 얻을 수 있는 보상을 예측하고, 그 값을 계속 업데이트하면서 최적의 행동을 찾는다.
Q-Learing의 핵심 개념
- Q(s, a): 특정 상태 s에서 특정 행동 a를 했을 때 기대할 수 있는 보상을 의미한다.
- 목표: 모든 상태-행동에 대한 Q값을 학습하여, 모든 상태에서 최적의 행동을 선택할 수 있게 하는 것이다.
- 예를 들어, 맛집으로 가는 길에는 직선과 지그지그 길이 있는데, 직선으로 가려면 직진을 해야하고, 지그재그로 가려면 오른쪽으로 가야한다. 하지만 여기서 최적의 행동을 직진을 해서 바로 맛집으로 가는 것이다. 또 다른 길목(상태)에서도 직진(행동)을 계속하며 최적의 방향으로 나아가는 것이 가장 효율적인 방법이다. 따라서, 여기서 모든 길목(모든 상태)에서 직진(최적의 행동)을 선택할 수 있게 하는 것이 목표이다!
- 갱신 방식: Q 값을 반복적으로 업데이트 하면서 최적의 값을 찾아간다.
- 예를 들어, 맛집으로 가는 길목에서 좌회전할지 직진할지 우회전할지에 대한 선택에서 직진이 가장 최적의 값이라고 계속 알려주는 것을 의미한다.
[수식]
α(알파): 알파는 학습률로 새로 얻은 정보가 Q값에 얼마나 영향을 미치는지는 조절한다.
r(보상): 현재 상태에서 행동 a를 선택했을 때 즉시 얻는 보상이다.
maxQ(s', a'): 다음 상태 s'(다음 길목)에서 특정 행동(방향)을 했을 떄 기대할 수 있는 최적의 보상 Q 값이다.
상황 설정을 통한 Q-learning의 작동 방식
상황 설정
- 맛집으로 가는 길에 5개의 갈림길(길목)이 있다.
- 각 길목마다 좌회전, 우회전, 직진의 세 가지 선택지가 있다.
- 목표는 가장 빨리 맛집에 도착하는 길을 찾는 것이다.
- 처음에는 어느 방향이 맛집으로 가는 최적의 길인지 전혀 모르고, 매일 맛집을 찾아가는 여정을 반복하며 학습한다.
Q-learning의 작동 방식
1. 점수판(Q값) 초기화
- 각 길목과 방향(상태-행동 조합)에 대한 점수표(Q값)가 있다.
- 처음에는 모든 Q값을 임의로 설정(예를 들어 0으로 초기화)한다. 즉, 각 길목에서 좌회전, 우회전, 직진을 했을 때 맛집에 얼마나 빨리 도착할 수 있는지 알지 못하는 상태이다.
2. 5번 길목부터 점수 매기기
- 매일 여정을 떠나면서 맛집에서 가장 가까운 5번 길목부터 점수를 매긴다.
- 예를 들어, 5번 길목에서 직진하면 곧바로 맛집에 도착한다고 하자. 그러면 5번 길목의 직진 방향에 높은 점수(Q값)가 매겨진다.
- Q-learning에서는 이때 현재 행동으로 받은 보상과 미래에 예상되는 보상을 반영하여 Q값을 업데이트한다.
Q(5번 길목, 직진) ← Q(5번, 직진) + α[보상 + 미래보상 − Q(5번,직진)]
- 첫 번째 Q(5번,직진): 새롭게 갱신된 최종 Q값. 이번 여정에서 얻은 정보까지 반영한 최신 점수
- 두 번째 Q(5번,직진): 업데이트 이전의 기존 Q값. 여정을 떠나기 전까지의 예측값
- 세 번째 Q(5번,직진): 보상과의 차이를 계산하는 기준으로, 업데이트 이전의 예측값
3. 4번 길목의 점수 업데이트
- 이제 4번 길목에서 어느 방향이 맛집에 가는 최적의 길인지 점수를 매긴다.
- 4번 길목에서 우회전하면 5번 길목으로 가고, 5번 길목에서 직진하면 맛집에 도착한다면, 4번 길목에서 우회전하는 방향의 Q값이 높아진다.
- 이때, 4번 길목의 우회전 점수는 5번 길목의 Q값을 참고하여 계산된다. 즉, 4번 길목의 행동이 5번 길목의 최적 경로로 이어진다면 Q값이 높아진다.
4. 이 과정을 반복하여 3번, 2번, 1번 길목까지 점수 업데이트
- 같은 방식으로, 3번 길목에서 4번 길목으로 이어지는 최적의 방향을 찾아 Q값을 업데이트한다.
- 이렇게 하면, 처음에는 아무 정보 없이 시작했지만, 점점 모든 길목에서 최적의 방향을 찾아 점수가 매겨진다.
5. 최적의 경로 학습 완료
- 매일 반복해서 맛집으로 향하는 여정을 떠나면서 점수판(Q값)이 점점 더 정확해진다.
- 충분히 반복한 후에는 각 길목마다 가장 높은 점수를 가진 방향을 선택하는 방법으로, 가장 빠르게 맛집에 도착할 수 있는 최적의 경로를 찾게 된다.
위의 방식처럼 간단한 상황(3개의 갈림길이 있는 길목 5개에서 맛집 탐색)에서의 최적의 정책을 찾는 것이 아니라, 더 복잡한 상황(여러 갈림길과 여러 길목의 모양과 위치에서 맛집 탐색)에서의 최적의 정책을 찾을 때는 Q-learning으로는 해결하지 못한다. 이때 사용하는 것이 Deep Q-Learing이다.
Deep Q-Learning
: Deep Q-Learing에서는 모든 길목(모든 상태)에서 방향(행동)에 대해서 개별적으로 점수를 기록하는 대신, neural network를 사용해서 점수(Q값)을 예측하는 방법이다.
(neural network는 복잡한 상황에서도 길목(모든 상태)에서 방향(행동)선택에 대한 점수를 빠르게 추정할 수 있게 해주는 도구이다.)
neural network을 이용하기 때문에 손실함수를 이용해서 neural network이 Q값을 예측하는 과정에서 얼마나 정확한지를 측정하고, 더 정확하게 예측할 수 있도록 neural network을 학습시켜야한다. 따라서, Forward-propagation과
Back-propagation을 이용해서 예측 값과 실제 값의 차이를 줄여나가야한다.
Forward-propagation을 이용해서 Li(θi) 손실 함수를 구한다. 여기서 세타(θ)는 신경망의 가중치 파라미터이다. 그리고 Loss를 기반으로 Back-propagation을 통해서 가중치 세타(θ)를 업데이트해 나간다. 이렇게 학습을 시켜서 Q 값을 점점 정확하게 예측할 수 있게 된다.
비유를 통해 이해하기
- 모든 갈림길을 기억할 수 없으니, ‘감각’을 익히는 신경망 사용
- 사람이 갈림길마다 일일이 기록을 남길 수는 없으니, 각 길목의 특성을 종합하여 빠르게 최적의 방향을 예측할 수 있는 감각(신경망)을 학습한다고 생각하면 된다.
- Deep Q-Learning의 신경망은 각 길목(상태)의 특징을 보고 직진, 좌회전, 우회전의 점수(Q값)를 추정하는 역할을 한다.
- 신경망이 하는 일
- 매일 맛집을 찾아가는 과정에서 신경망은 각 길목에서 다양한 방향을 선택해보고, 그 결과로 얻는 보상과 경로의 효율성을 학습한다.
- 이렇게 하면서 신경망은 길목의 특성에 따라 어느 방향이 더 유리할지를 점점 더 정확하게 예측하게 된다.
- 경험 리플레이로 학습을 안정화
- Deep Q-Learning에서는 경험 리플레이라는 기법을 사용한다. 이는 여정 중 겪었던 다양한 상황(경험)을 저장해 두었다가, 무작위로 샘플링하여 학습에 사용하는 방식이다.
- 예를 들어, 10일 동안 맛집으로 향하면서 경험했던 다양한 길목과 방향 선택을 기억해 두었다가, 이를 랜덤하게 뽑아서 학습합니다. 이렇게 하면 특정 여정에서 발생한 연속된 상황에 신경망이 편향되지 않고, 안정적이고 일반화된 학습을 할 수 있게 된다.
- 타겟 네트워크로 안정성 추가
- Deep Q-Learning은 신경망의 예측이 지나치게 불안정해지는 것을 방지하기 위해 타겟 네트워크라는 것을 사용한다.
- 타겟 네트워크는 일종의 보조 점수판으로, 기준이 되는 Q값을 설정하는 역할을 합한다.
- 타겟 네트워크는 신경망이 일정 기간 학습한 후에만 업데이트되기 때문에, 갑작스러운 점수 변화로 인해 학습이 흔들리지 않도록 안정성을 부여한다.
- 결국, 신경망이 길목마다 점수를 빠르게 예측
- 이제 신경망은 각 길목에서, 굳이 그 길목을 이전에 가본 적이 없어도 길목의 특징을 보고 어느 방향이 최선인지 예측할 수 있는 능력을 갖추게 된다.
- 매번 학습하면서 최적의 경로를 빠르게 찾는 방법을 배워가는 것이다.
Q-network
: Deep Q-Learning에서 사용되는 네트워크 구조이다. 간단히 말해서, 현재 State에서 어떤 Action이 최적의 보상을 줄지 예측하는 의사결정 도구라고 볼 수 있다.
1. 입력 (Current state)
- 네트워크 입력으로 현재 State를 나타내는 이미지 프레임을 사용한다.
- 위의 사지네서는 4개의 이미지를 쌓아놓은 형태을 입력으로 넣었는데, 예를 들면 게임 화면이 현재 상태라면, 4장의 게임 화면이 입력으로 들어간다.
2. 중간 계층 (Convolutional Layers)
- 입력된 이미지를 Convoulutional Layers를 통해 처리한다.
- 화면 속에서 중요한 특징(벽, 목표물의 위치 등)을 추출한다. 이러한 특징을 압축해서 FC에 전달한다 .
3. 완전 연결 계층 (Fully Connected Layers)
- 입력된 정보를 바탕으로 각 Action의 Q값을 계산하는데, 마치 사람의 의사 결정처럼 특정 행동을 선택하는데 필요한 점수를 계산하는 역할을 한다.
- FC는 512개의 뉴런을 사용해서 다양한 특징을 조합하고 결합해 Q값을 예측하는데 도움이 된다.
4. 마지막 계층 (Output Layer)
- 가장 끝단에 있는 FC에서 각 Action에 대한 Q 값을 출력한다.
- 예를 들어 4가지 선택지가 있다고 하면, 각 선택지에 대한 Q 값이 나오게 된다.
- 이 Q 값중 가장 높은 Q값을 가지는 Action을 선택하면 최적의 보상을 기대할 수 있는 행동이 된다.
이러한 네트워크 구조의 장점은 한번의 Forward Propagation 만으로 현재 상태에 해당하는 모든 함수에 대한 Q-value를 계산할 수 있다는 점이다.
문제1 - correlation(상관관계)
- Q-network를 학습시킬 떄 하나의 배치에서 연속적인 샘플들로 학습시키면 모든 샘플이 결과가 좋지 않다.
- 연속적인 샘플들은 시간에 따라 순서대로 수집된 데이터이므로, 모든 샘플들이 강한 상관관계를 가진다.
- 예를 들어 Agent가 계속 직진만 한다면, 그 직진 경로에 있는 상태들이 비슷한 특징을 가질 수 있다. 이로 인해 네트워크기 특정 패턴에 과도하게 적응해서 일반화가 어려우지는 과적합이 발생할 수 있다.
문제2 - Bad Feedback Loop(정책 결정에 미치는 부정적 영향)
- Q-network가 어떤 행동을 선택할지 결정하고, 그 행동으로 인해 다음 상태가 결정하게 된다.
- 이 과정이 반복되면 네트워크가 잘못된 정책을 학습했을 때도 연속적으로 같은 행동을 반복하게 될 수 있다.
- 예를 들어 특정 상황에서 Q-network가 왼쪽으로 이동하는 것이 최적이라고 잘못 판단했다면, 그 행동의 다음 상태 역시 왼쪽으로 이동하는 것이 최적이라고 판단하는 반복행위가 발생해서, 네트워크가 편향된 행동을 반복하여 학습이 올바르게 진행되지 않을 수 있다.
Experience Replay
: Q-network에서 발생할 수 있는 위와 같은 문제들을 해결하기 위해서 나온 방법이다.
작동 방식
1. Replay Memory에 전이를 저장한다.
- Agent가 환경에서 한번 행동할 때마다 전이가 생성된다.
- 이 전이는 Replay Memory에 저장된다. 시간이 지나면서 메모리에는 에전드가 다양한 상황에서 경험한 전이들이 축척된다.
2. 학습 시 무작위 샘플링을 한다.
- 학습할 떄 Replay Memory에 있던 전이를 무작위로 추출해서 학습에 사용한다. 이렇게 함으로써, 연속적인 샘플 대신 다양한 샘플들이 학습에 사용되며 상관 관계 문제를 줄일 수 있다.
- 무작위 샘플링으로 Agent는 다양한 상황에서 경험한 데이터를 바탕으로 학습해서 과적합되지 않는 학습을 할 수 있다.
3. 반복적인 가중치 업데이트를 한다.
- 무작위로 샘플링된 전이들을 사용해 손실 함수를 계산하고, 이 손실 함수를 최소화하는 방향으로 Q-network의 가중치를 반복적으로 업데이트한다.
- Replay Memory에 저장된 전이들은 여러 번 학습에 사용될 수 있으므로, 데이터 효율이 높아지고 적은 데이터로도 효과적인 학습을 할 수 있다.
❓전이(Transition)란 무엇인가?
: 전이는 강화학습에서 Agent가 환경에서 경험하는 하나의 단위 경험을 말한다. 전이의 구성요소는 (상태 s, 행동 a, 보상 r, 다음 상태 s')가 있다. 이 4개의 구성요소 한 쌍을 전이라고 부른다.
이렇게 좋을 것만 같았던 Q-learning에 도 문제가 있다. Q-function이 너무나도 복잡하다는 것이다. Q-function은 모든 state와 action 쌍들을 학습해야만 한다. 예를 들어 로봇이 어떤 물체를 손에 쥐는 문제를 풀어야한다고 했을 때, 로봇의 모든 관적의 위치와 각도가 이룰 수 있는 모든 경우의 수를 생각해야한다. 이렇듯, 모든 state와 action 쌍들을 학습하는 것은 아주 어렵다.
따라서 모든 state와 action 쌍들을 학습을 하는 것이 아니라, Policy를 활용해서 더 간단하게 해결하자라는게 Policy Gradient의 아이디어이다.
5. Policy Gradients(정책 경사)
: Policy(Agent가 어떤 State에서 어떤 Action을 선택할지 결정하는 규칙)를 학습시키는 방법이다. Policy Gradient에서는 이 Policy를 수식으로 표현해서 조정가능한 형태로 만들었다.
why?
- 최적의 정책을 찾는 것이 목표이기 때문에, 정책의 성능을 나태는 값을 정의하고, 이를 최대화하는 방향으로 파라미터 를 조정한다.
- 여기서 정책의 성능은 기대 보상 J(
REINFORCE algorithm
: Policy Gradient 방법의 일종으로, Agent가 정책 파라미터를 학습하는데 사용되는 알고리즘이다. Agent가 환경과 상호작용해서 얻은 보상을 최대화할 수 있도록 정책 파라미터를 업데이트하는데, 수학적으로 복잡한 경사를 쉽게 계산할 수 있도록 하는 기법을 의미한다.
작동 방식 - 어떻게 정책을 업데이트 할까?
1. 경로를 통해서 경험 수집
- Agent는 여러 번의 경로(에피소드)를 통해 행동하고, 보상을 얻는다.
- 에피소드가 끝나면 Agent는 어떤 행동을 했고, 그 결과 어떤 보상을 받았는지에 대한 정보를 얻는다.
2. 보상이 좋은 행동은 강화
- Agent는 각 에피소드에서 얻은 보상을 바탕으로, 어떤 행동이 좋은 결과를 냈는지를 분석하고 좋은 결과를 낸 행동을 자주 하도록 정책을 수정하고, 좋지 않은 결과를 낸 행동을 자주하지 않도록 정책을 수정한다.
3. 확률적 접근: 전이 확률을 몰라도 학습가능
- REINFORCE 알고리즘의 장점은, 정확한 전이 확률(다음 상태로 이동할 확률)을 몰라도 학습할 수 있다는 것이다.
- Agent는 단지 "어떤 행동이 좋은 결과를 가져오는 지"에 대한 경험만을 바탕으로 학습을 하므로, 환경의 정확한 정보가 없어도 최적의 정책을 찾을 수 있다.
4. 반복 학습
- 이렇게 얻은 정보를 바탕으로 경사 상승법을 사용해서 정책을 개선한다.
- 반복적으로 에피소드를 진행하며, 보상을 최대화할 수 있는 정책이 만들어질 때까지 학습을 한다.
이러한 REINFORCE algorithm에도 문제가 있는데, 긴 에피소드에서는 여러 행동들이 누적되어 하나의 보상에 영향을 미치기 떄문에 어떤 특정 행동이 전체 보상에 미치는 영향이 분산되어 나타내기 때문에 알기 어려운 경우가 많다. 예를 들어, 10번의 행동을 통해 큰 보상을 얻었다면 그 보상이 10번 행동 모두의 결과인지, 아니면 특정 행동 하나에 대한 결과인지 판단하기 어렵다.
그래서, 모든 행동을 동일하게 강화하거나 억제를 하려고 하면, 실제로는 좋은 행동이었지만 억제되거나 나쁜 행동이었지만 강화되는 상황이 생길 수 있다.
따라서, 이러한 문제를 해결하기 위한 방법으로는 Baselin기법과 Actor-Critic Argorithm이다.
우선, 위에서 나타는 문제를 해결하려면 분산을 줄여야한다. 분산 감소를 위한 아이디어 3가지가 있다.
첫 번째로는 미래 누적 보상을 사용하여 확률을 조정하는 방법이 있다.
어떤 행동을 했을 때 그 이후로 받는 모든 보상을 합쳐서, 그 행동의 성과를 평가하는 방식이다. 예를 들면 게임에서 점프를 한 뒤에 점수가 계속 오른다면, 점프한 그 행동이 결과적으로 좋은 행동이었음을 평가하는 것이다.
이러한 방식은 단기적인 보상만 고려하지 않고, 그 행동이 미래에 끼친 영향까지 고려하기 때문에 더 신뢰성이 있는 평가가 가능해진다. 따라서 보상의 변동이 덜해지기 때문에 학습이 안정적으로 진행될 수 있다.
두 번째로는 할인율을 적용하여 먼 미래의 보상을 덜 중요하게 보는 방법이 있다.
먼 미래의 보상일수록 현재보다 덜 중요한 취급을 하는 방식이다. 예를 들어, 게임에서 "이번에 점프하면 몇 번 뒤에 점수를 얻게 될 수도 있다"는 걸 알고 있지만, 미래에 받게 될 보상보다는 현재 바로 받는 보상을 더 중요하게 생각하는 것이다.
이러한 방식은 현재 행동에 가장 영향을 미치니는 보상에 집중할 수 있게 된다. 너무 먼 미래의 보상을 무조건 크게 고려하지 않게 되므로, 불확실성을 줄여서 학습이 더 안정적으로 이루어질 수 있다.
세 번째로는 Baseline을 이용한 방법이 있다.
6. Baseline기법
: 각 상태에서 기대할 수 있는 평균적인 보상(Baseline)을 미리 설정하고, 행동이 이 Baseline보다 좋았는지 나빴는지에 따라서 조정하는 것이다.
예를 들어 점수를 100점 받는게 기준이라면 120점 나오는 경우 해당 행동을 자주 나오도록 강화하고, 80점이 나오면 해당 행동을 약화시키는 것이다.
그렇다면, 이 Baseline을 어느정도로 조정하느냐에 따라서 행동의 영향정도를 파악할 수 있는데 이 Baseline은 어떻게 정해야할까?
1. 지금까지 경험한 모든 보상의 평균을 Baseline으로 설정하기
평균보다 높거나 낮은 행동을 강화하거나 억제한다. 간단한 방법이지만 정확성이 떨어진다.
2. 상태별로 기대할 수 있는 보상수준을 Baseline으로 설정하기
- 상태별로 기대 보상 설정
- 특정 상태에서의 행동이 기대 보상보다 더 나은지, 아니면 더 나쁜지를 판단한다.
- 기대 보상을 기준으로 기대보다 더 나은 행동은 강화하고 기대보다 낮은 행동은 억제한다.
- Q function(행동의 보상)과 Value Function(상태의 보상)을 활용
- 두 함수의 차이를 이용해서 해당 행동이 얼마나 기대보다 좋은 값인지를 평가할 수 있다.
- [의미]
- Agent는 상태에 따라 좀 더 정확하게 행동의 성과를 평가할 수 있다.
- 이 방식은 단순히 이동 평균을 사용했을 때보다 상태와 행동의 조합을 세밀하게 평가할 수 있게 해주어, 학습의 효과를 높인다.
7. Actor-Critic Argorithm
: 강화 학습에서 정책과 보상의 평가를 동시에 학습한느 방식으로, 일반적인 REINFORCE 알고리즘보다 효율적이다.
Actor(정책 결정 - 어떤 행동을 할지 결정)
- 정책을 담당하는 네트워크로, 현재 상태에서 어떤 행동을 할지 결정한다.
- Actor의 목표는 에피소드에서 더 좋은 보상을 얻을 수 있는 행동을 선택하는 것이다.
Critic(결과 평가 - 그 행동이 얼마나 좋은지 평가)
- 상태의 가치를 평가하는 네트워크로, 주어진 상태에서 특정 행동이 얼마나 좋은지 평가한다.
- Critic이 평가를 내릴 때 사용하는 개념이 Advantage이다. (아래의 사진)
- 이 Advantage가 양수라면 해당 행동이 기대보다 더 좋은 결과를 가져왔다는 의미이고, 음수라면 기대보다 나쁜 결과를 가져왔다는 의미이다.
따라서, Actor는 Critic의 평가를 바탕으로 앞으로 어떤 행동을 강화하고, 어떤 행동을 약화시킬지 학습하게 된다.
https://www.youtube.com/watch?v=36tvs0H2mww&list=PL_iJu012NOxehE8fdF9me4TLfbdv3ZW8g&index=15
https://www.youtube.com/watch?v=L_4BPjLBF4E
https://www.youtube.com/watch?v=NQXfcsUzlWQ
'CVLab > cs231n (2017)' 카테고리의 다른 글
Lecture 16: Adversarial Examples and Adversarial Training (1) | 2024.11.01 |
---|---|
Lecture 15: Efficient Methods and Hardware for Deep Learning (1) | 2024.11.01 |
Lecture 13: Generative Models (0) | 2024.11.01 |