AI - Deep Reinforcement Learning
본 포스트는 Stuart Russell 과 Peter Norvig의 Artifical Intelligence : A Modern Approach (4th edition) 의 Deep Reinforcement Learning 부분과 마무리 부분을 다룬다.
Deep Reinforcement Learning
Recap : Q-Learning
- 샘플(경험)을 바탕으로,
Q(s,a)를 최적 행동 가치 방향으로 업데이트한다.
Q(s,a) 초기화, ∀s ∈ S, a ∈ A(s), Q(terminal-state, ·) = 0
에피소드 반복:
S 초기화
각 스텝 반복:
Q로부터 유도된 정책(ε-greedy)으로 행동 A 선택
행동 A 실행, 보상 R과 다음 상태 S' 관찰
Q(S,A) ← Q(S,A) + α[R + γ max_a Q(S',a) - Q(S,A)]
S ← S'
S가 종료 상태가 될 때까지
R + γ max_a Q(S',a): “실제로 받은 보상 + 미래에 받을 것으로 예상되는 보상” = 더 정확한 새 추정값(Target)Q(S,A): 현재 추정값
모든 상태에 대한 Q값을 명시적으로 저장하는 것
- Q 함수 자체를 근사하는 함수를 학습하는 것
Q-Learning 확장의 3 단계
1단계 — Vanilla Q-learning: Q-table
- Q(s,a)를 상태×행동 크기의 표로 저장
- 소규모 이산 상태 공간에서만 가능
- 표 예시: (1,1) 위치에서 left=0, right=0.1, up=0, down=0 등
2단계 — Approximate Q-learning: 선형 가치 함수
- Q(s,a)를 특징(feature) 벡터와 가중치의 선형 결합으로 근사
- 수식:
Q̂(s,a) = w₁f₁(s,a) + w₂f₂(s,a) + ... + wₙfₙ(s,a) - 상태 자체를 저장하지 않고 특징(feature)만 추출해서 가중치를 학습
- 중간 단계: 저장 공간은 줄었지만 선형 모델의 한계가 있음
3단계 — DQN: 딥 신경망
- Q(s,a)를 깊은 신경망으로 근사
- 특징을 사람이 설계할 필요 없이 신경망이 자동으로 학습
- 이미지 픽셀 같은 고차원 입력도 처리 가능
Deep Q-Network (DQN)
DQN의 정의 : 깊은 신경망을 사용하여 Q값을 근사하는 방법
- 두 개의 합성곱 층
- 두 개의 완전 연결층
- 출력
Q-table vs 신경망 모델
- Q-table
- 입력 : 상태 + 행동 두 가지를 같이 넣어야 Q 값 하나 얻음
- 표의 특정 칸을 찾아보는 방법
- DQN
- 입력 : 상태만 넣으면 됨.
- 출력 : 모든 행동에 대한 Q값을 한 번에 출력
DQN : Algorithm
1. 초기화: 리플레이 메모리 D, Q 신경망 (가중치 θ), 타깃 신경망 Q̂ (가중치 θ⁻ = θ)
2. 에피소드 반복 (1부터 M까지):
3. 각 타임스텝 반복 (1부터 T까지):
4. ε-greedy로 행동 선택 및 실행
5. 보상과 다음 상태 관찰
6. 전이 샘플을 메모리 D에 저장
7. 메모리 D에서 랜덤 미니배치 샘플링
8. TD 타깃 yⱼ 계산
9. (yⱼ - Q(φⱼ,aⱼ;θ))² 에 대해 경사 하강법
10. C 스텝마다 타깃 네트워크 Q̂ = Q로 리셋
Q-learning에 없는 두 가지 핵심 요소
- Experience Replay (경험 재생) : 전이 샘플을 메모리에 저장했다가 랜덤으로 꺼내 학습
- Target Network (타깃 네트워크) : Q라는 별도의 네트워크를 두어 학습 안정성 확보
TD target
- 에피소드가 종료되는 스텝이라면, 미래 보상이 없으므로 그냥 rj
- 아직 에피소드가 계속된다면, 타깃 =즉각 보상 + 미래 보상 추정값
Q 신경망 업데이트
- Q-Learning과 동일한 구조
- 현재 추정값과 타깃의 차이를 줄이는 방향으로 업데이트
Reinforcement Learning이 왜 어려울까?
- Sparse Reward (희소 보상) : 보상이 드물게 주어진 환경에서 탐험만으로 보상을 발견하기 어렵다.
- Reward Hacking : 의도하지 않은 방식으로 보상을 극대화하는 전략을 학습
- 학습 불안정성
- 샘플 비효율성
Course Summary
ChatGPT, Gemini 같은 AI assistant는 도대체 어떻게 훈련되는 걸까?
- 사람과 대화하듯 답변하는 모델을 만드는 방법
Language Model
- AI assistant의 근간이 되는 모델
- 아이디어 : 다음에 올 단어가 무엇일지를 예측하도록 훈련된 모델
- 예측한 단어와 실제 다음 단어의 차이를 훈련 손실로 계산
- 그 오차를 줄이는 방향으로 기울기를 이용해 모델 파라미터를 업데이트
두 가지의 문제가 존재
1. 훈련 데이터와 실제 사용 형태가 다르다.
- 실제 사용자들은 질문 형태로 모델에게 말을 건다. 형태의 차이를 모델이 학습 X
2. 모델은 좋은 답과 나쁜 답을 구분하지 못한다.
- 다음 단어를 예측할 뿐, 도움이 되는 답의 개념이 없다.
SFT (Supervised Fine-Tuning)
- Solution 1. SFT
-
사람이 직접 질문-답변 쌍 데이터를 만들고, 그 데이터로 이미 사전 훈련된 언어 모델을 추가로 학습하는 과정
- 형태 불일치 문제는 어느정도 해결 가능
- 한계 : 비용 ,일반화, 모방의 한계
RLHF (Reinforcement Learning with Human Feedback)
: 인간 피드백을 활용한 강화학습
총 3단계로 구성
- 데모 데이터 수집 + SFT
- 사람이 직접 질문-답변 쌍을 만들어 모델을 파인튜닝
- 비교 데이터 수집 + 보상 모델 훈련
- 같은 질문에 대해 모델이 여러 답변 생성 후, 사람 레이블러가 이 답변들을 좋은 것부터 나쁜 것 순으로 랭킹을 매긴다.
- 보상 모델 훈련
- 강화학습으로 정책(Policy) 최적화
RLHF의 장점
- 선호도 데이터 수집이 훨씬 쉽다.
- 사람의 선호를 직접 최적화한다.
- SFT는 모범 답안 흉내지만, RLHF는 사람이 실제로 좋고 느끼는 답변 생성
- 순차적 대화에 대응이 가능