2012-12-18 1 views
2

2 개의 입력 노드, 4 개의 숨겨진 노드 및 3 개의 출력 노드로 구성된 신경망을 만들었습니다. 초기 가중치는 -1에서 1 사이의 랜덤입니다. 역 전파 방법을 사용하여 TD 오류로 네트워크를 업데이트합니다. 그러나 성능이 좋지 않습니다.신경망으로 Q-learning을 구현하는 방법은 무엇입니까?

문제가있는 곳을 알고 싶습니다.
1. 바이어스 노드가 필요합니까?
2. 자격 추적이 필요합니까?

누구든지 샘플 코드를 제공 할 수 있다면 매우 고맙습니다.

+0

나는 4 개의 숨겨진 노드가 3 개의 출력 노드에 대해 약간의 방법이라고 말하고 싶지만 절대 최소 10을 제안합니다. 분명히 얼마나 많은/복잡한 기능을 배우고 싶은지에 달려 있습니다. 나는 바이어스 노드가 예외에 의해서만 생략되어야한다고 확신한다. – Dukeling

답변

0

자세한 정보가 필요합니다. 문제가되는 도메인은 무엇입니까? 입력은 무엇입니까? 출력은 무엇입니까?

RL은 훈련하는 데 시간이 오래 걸릴 수 있으며, 훈련하는 방법에 따라 훈련 중에 좋음에서 좋음에서 좋음에서 좋지 않음으로 갈 수 있습니다. 따라서 최종 결과뿐만 아니라 학습 중에 상담원의 실적을 계획해야합니다.

항상 바이어스 노드를 사용해야합니다. 자격 트레이스? 아마도 그렇지 않습니다.

2

예, 바이어스 노드를 포함해야하며 자격 추적을 사용해야합니다. 바이어스 노드는 튜너 블 매개 변수를 하나만 추가합니다. Sutton과 Barto의 저서 (무료 온라인)에서 설명한 것처럼 신경망을 "함수 근사자"라고 생각하십시오. 뉴럴 네트워크가 매개 변수 theta (네트워크의 모든 가중치를 포함하는 벡터)를 가지고 있다면 Sarsa 업데이트는 단지 LaTeX 표기법을 사용합니다 :

\ delta_t = r_t + \ gamma * Q (s_ {t + 1}, a_ {t + 1}, \ theta_t) -Q (s_t, a_t, \ theta_t)

\ theta_ {t + 1} = \ theta_t + \ alpha * \ delta_t * \ frac {\ partial Q (s, a, \ theta)

Q (s, a, \ theta)는 매개 변수 튜닝을 통해 Q (s, a, \ theta)를 추정합니다. \ theta .

그러나 나는 이것을 왜하는지 묻어야합니다. 그냥 정말 잘 작동 Q 학습을 얻으려고하는 경우에, 당신은 대신 신경망의 푸리에 기준을 사용한다 :

http://all.cs.umass.edu/pubs/2011/konidaris_o_t_11.pdf

당신이 정말로 RL에 대한 신경 네트워크를 사용하려는 경우, 당신은 자연인 평론가 (NAC)를 사용해야합니다. NAC는 Amari가 신경 네트워크를 사용하여 학습 속도를 높이기 위해 특별히 개발 한 "자연스러운 그라디언트"라고 불리는 것을 따르며 은 크게 차이가 있습니다.입니다.