[강화학습] 8. DQN 구현(1)

KBC·2024년 11월 4일
0

강화학습

목록 보기
9/13

표형식 표현의 문제점

  • 표형식 표현을 사용했던 Q러닝에서는 표의 각 행이 에이전트의 상태를, 표의 각 열이 에이전트가 취할 수 있는 행동에 해당했다
  • 그리고 셀의 각 값은 행동가치 Q(s,a)Q(s,a)였다

  • 에이전트의 상태란
    • 미로 태스크에서는 에이전트가 있는 칸의 의치였고
    • 역진자에서는 4개 변수를 이산변수로 변환하고 다시 디지털 값으로 변환한 값이었다
  • 행동가치 Q(st,at)Q(s_t,a_t)는 시각 tt의 상태가 sts_t일 때 행동 ata_t를 취했을 때 얻을 수 있으리라 예상하는 할인총보상을 의미했다

  • 문제는 상태변수의 종류가 늘어나거나 하면 표의 행 수가 크게 늘어난다는 점이다
  • 이 때문에 상태 수가 많은 태스크는 표형식 표현으로는 제대로 학습시키기가 어렵다

심층강화학습 알고리즘 DQN

  • 상태변수가 많은 태스크에 강화학습을 적용하기 위해 행동가치 함수를 표형식으로 나타내는 대신 층 수가 많은 신경망으로 바꾸어 나타낸다
  • 각 상태변수의 값을 신경망의 입력으로 삼는다
  • 출력층의 유닛 수는 행동의 가짓수와 같다
  • 출력층 유닛의 출력값은 행동가치 함수 Q(st,at)Q(s_t,a_t)의 값이다 : 할인총보상

  • 이해가 필요한 부분은 이 행동가치 함수를 출력하는 신경망을 구현할 때

    신경망의 결합 가중치를 어떻게 학습시키냐다
    다시말해, 역전파 계산에 어떤 오차함수를 사용해 오차를 계산해야 하는가?

  • Q러닝 알고리즘을 사용하는 지점이 이 부분이다
  • Q러닝 알고리즘에서 행동가치 함수 Q를 수정하는 식은 다음과 같았다
    Q(st,at)=Q(st,at)+η(Rt+1+γmaxaQ(st+1,a)Q(st,at))Q(s_t,a_t)=Q(s_t,a_t)+\eta*(R_{t+1}+\gamma \max_a Q(s_{t+1},a)-Q(s_t,a_t))
    이 수정식을 사용하는 이유는 결국, 다음 식과 같은 관계가 성립되기를 바라기 때문
    Q(st,at)=Rt+1+γmaxaQ(st+1,a)Q(s_t,a_t)=R_{t+1}+\gamma\max_a Q(s_{t+1},a)
    그러므로 예를 들어 시각 tt에서 상태가 sts_t였을 때 행동 ata_t를 취했다면
  • 출력층 유닛의 출력값 : Q(st,at)Q(s_t,a_t)
  • 이 출력값이 Rt+1+γmaxaQ(st+1,a)R_{t+1}+\gamma\max_a Q(s_{t+1},a)에 가까워지도록 학습을 수행
  • 또한 오차는 다음 식과 같다
    E(st,at)=(Rt+1+γmaxaQ(st+1,a)Q(st,at))2E(s_t,a_t)=(R_{t+1}+\gamma\max_a Q(s_{t+1},a)-Q(s_t,a_t))^2
  • 이때 상태 st+1s_{t+1}sts_t에서 행동 ata_t를 취해보고 알아낸다
  • 그리고 maxaQ(st+1,a)\max_aQ(s_{t+1},a)의 값은 신경망을 통해 st+1s_{t+1}을 입력해서 알아낸다

DQN 학습시 중요한 4가지 기법

1. Experience Replay

  • DQN은 표형식으로 나타낸 Q러닝처럼 각 단계마다 해당 단계의 내용(experience)를 학습하는 것이 아니라, 메모리에 각 단계의 내용을 저장해 둔 다음 무작위로 내용을 꺼내(replay) 신경망을 학습한다
  • 이때 한 단계의 내용을 transition이라고 한다

    각 단계마다 해당 단계의 내용을 학습하면 신경망이 시간적으로 상관관계가 높은 데이터는 연속적으로 학습하므로 결합 가중치 학습이 어려워진다 그에 대한 대책인 셈

2. Fixed Target Q-Network

  • 행동을 결정하는 main-network와 오차함수 계산 시에 행동가치를 계산하는 target-network라는 두 가지 신경망을 사용
  • DQN에서는 가치함수 Q(st,a)Q(s_t,a)를 수정하려고 하지만 Q러닝 알고리즘으로 행동가치 함수를 수정하려면 다음 시각의 상태 st+1s_{t+1}에서 가치함수 Q(st+1,a)Q(s_{t+1},a)가 필요하다

    즉, Q함수를 수정하기 위해 같은 Q함수를 사용해야 하는 것
    그러나 두 곳에 같은 함수를 사용하면 학습이 불안정해진다

  • 그래서 수정에 사용되는 maxaQ(st+1,a)\max_a Q(s_{t+1},a)를 계산할 때, 이전 시각의 또 다른 Q함수(Fixed Target Q-Network)를 사용해 계산
  • 이전 시각의 Q함수는 결합 가중치 학습이 최신 상태보다 오래된 것이라는 의미
  • 그러므로 시각은 학습 대상의 시각 단위가 아니라 신경망의 결합 가중치가 수정된 시간을 기준으로 함
  • 이 때문에 target-network는 정기적으로 main-network를 덮어쓰게 된다

3. Reward Clipping

  • 보상 클리핑은 각 단계에서 받은 보상을 -1, 0, 1의 세 가지 값 중 하나로 고정하는 방법이다
  • 결과적으로 보상 설계와 상관없이 같은 하이퍼 파라미터로 DQN을 적용할 수 있다는 장점을 갖는다

4. Huber 함수로 오차 계산

  • [-1, 1] 구간에서는 제곱오차와 비슷하지만 -1 이하 혹은 +1 이상 구간에서는 절대값을 함수값으로 한다
profile
AI, Security

0개의 댓글