함수 근사값으로 신경망을 이용한 Q- 러닝


11

신경망을 이용한 Q- 러닝에 관한 질문 에서와 같이 Q- 러닝의 Q- 값을 근사하기 위해 신경망을 사용하려고합니다 . 첫 번째 답변에서 제안했듯이 출력 레이어에 선형 활성화 기능을 사용하고 있지만 숨겨진 레이어에서 시그 모이 드 활성화 기능을 계속 사용하고 있습니다 (2, 나중에 변경할 수는 있음). 또한 조언 된대로 각 작업 대한 출력을 반환하는 단일 NN을 사용하고 있습니다.Q(a)

그러나, 간단한 카트-폴 밸런싱 문제로 알고리즘이 여전히 분기되고 있습니다. Q- 업데이트가 잘못되었다고 생각합니다. 초기화 후 각 단계에서 수행 한 작업은 다음과 같습니다.

  • 모든 조치에 대해 NN의 전달을 사용하여 를 계산하십시오 .Qt(st)
  • 새로운 액션, 선택 t 새로운 상태에서, 토지 t을 .atst
  • 모든 조치에 대해 NN의 전달을 사용하여 를 계산하십시오 .Qt(st+1)
  • Qt+1(st,at)=Qt(st,at)+αt[rt+1+γmaxaQ(st+1,a)Qt(st,at)]atQt+1(s,at)=Qt(s,at)
  • 오류 벡터를e=QtargetQt=Qt+1Qt
  • 가중치 행렬을 업데이트하기 위해 NN을 통해 오류를 역 전파하십시오.

아무도 내가 잘못한 곳을 알려 주시겠습니까?

또한 입력 레이어와 첫 번째 숨겨진 레이어 (예 : 시그 모이 드 함수)에 바이어스 용어를 포함시켜야한다고 생각합니까? 차이가 있습니까?

도움을 주셔서 대단히 감사합니다. 필요한 경우 질문을 명확하게하거나 코드를 공유 할 수 있습니다.

답변:


9

당신의 목표는

rt+1+γmaxaQ(st+1,a) .

그러면 오류 항 (정확한)을 rt+1+γmaxaQ(st+1,a)Qt

업데이트 수식에서 괄호 안에있는 용어입니다. 여기에는 학습 중 NN 학습률 및 기타 역 전파 항이 곱 해져 업데이트 공식 과 마찬가지로 이전 가중치에 추가됩니다 .Q


팁 주셔서 감사합니다! 그렇게하면 목표 값에서 숫자 오류를 피할 수 있습니다 . 다음 빼는 . Qt
Enrico Anderlini

그러나 내 NN + Q- 학습은 여전히 ​​수렴되지 않습니다. 따라서, 방법이 정확하다면, 학습 속도와 숨겨진 층의 뉴런 수를 가지고 놀아 보려고합니다.
Enrico Anderlini

1
예, 그렇게해야합니다 (ReLU 전송 기능도 사용하십시오). 그러나 Q-Learning은 함수 근사값으로 수렴을 보장하지 않습니다. 다음에 시도해도 효과가 없으면 Advantage Learning을 사용해보십시오. 그리고 마지막으로 문제는 데이터가 iid가 아닌 것일 수 있습니다. 따라서 경험 재생을 구현해야합니다.
rcpinto

질문에 대한 확장이 있습니다. 질문에 언급 된 알고리즘을 이해하지만 및 용어에 대해 혼동 됩니다. 게임에 대한 보상이 게임이 끝날 때만 (승리 또는 패배 조건에서) 알려진 경우 어떻게 중간 단계에 대한 보상을 제공해야합니까? Qt+1rt+1
Kanishka Ganguly

1
당신은하지 않습니다, 그것은 0입니다. 그러나 Q 값은 누적 미래 보상 의 추정치이므로 Q 값에 의해 이전 상태로 천천히 전파됩니다 .
rcpinto
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.