Q - learning 이해 및 단순 실현
7314 단어 Dialog
다음은 Q - learning 의 과정 을 종합 적 이 고 전면적 인 예 로 이해 하 겠 습 니 다.http://mnemstudio.org/path-finding-q-learning-tutorial.htm https://github.com/JasonQSY/ML-Weekly/blob/master/P5-Reinforcement-Learning/Q-learning/Q-Learning-Get-Started.ipynb
위의 그림 에서 보 듯 이 하나의 방 구조 이다. 하나의 robot (Agent, 스마트 체) 는 처음에 0 - 4 에 있 는 모든 방 에서 5 라 는 외부 공간 을 달성 할 수 있다. 이 건물 을 나 가 는 것 으로 이해 할 수 있다. 어떻게 처음에 어느 방 에서 든 가장 빨리 나 갈 수 있 을 까?위의 그림 은 그림 1 의 간소화 로 그 중에서 0 - 5 는 상태 이 고 화살 표 는 동작 을 가리 키 며 화살표 의 값 은 이 동작의 reward 값 을 나타 낸다.초기 상태 가 모두 0 입 니 다.Q 행렬 은 R 행렬 과 다 릅 니 다. R 행렬 은 action 으로 전 환 된 reward 값 을 표시 하고 Q 행렬 은 현재 state 와 action 의 상황 에서 전체적인 수익 값 (전체 경 로 를 볼 수 있 음) 을 표시 합 니 다.
Q - learning 알고리즘 의 이전 규칙 은 비교적 간단 합 니 다. Q 매트릭스 의 업데이트: Q (state, action) = R (state, action) + Gamma * Max [Q (next state, all actions)] 에서 현재 state 와 action 의 보답 은 현재 state 가 action 의 reward 값 을 사용 하여 표 에서 직접 읽 을 수 있 습 니 다.그 다음 에 Gamma 는 할인 인자 로 시간의 원근 이 수익 에 미 치 는 영향 정 도 를 나타 내 고 0 은 현재 상 태 를 보고 행동 하 는 reward 를 나타 낸다.Max [Q (next state, all actions)] 는 재 귀 함수 로 모든 상황 을 보 았 음 을 나타 내 고 마지막 으로 현재 수익 이 가장 좋 은 경 로 를 선택 합 니 다.
epsilon - greedy 는 Epsilon greedy 는 의사 결정 에 사용 되 는 전략 이 라 고 말 했다. 예 를 들 어 epsilon = 0.9 일 때 90% 의 상황 이 Q 표 의 최 우수 치 에 따라 행 위 를 선택 하고 10% 의 시간 에 무 작위 선택 행 위 를 사용 한 다 는 것 을 의미한다.
몇 개의 episode 를 수 동 으로 연산 합 니 다. 초 매개 변수 Gamma = 0.8, epsilon - greedy 에서 epsilon = 0.4. Episode = 1: 무 작위 선택 상 태 는 state = 1 입 니 다. 먼저 action 을 확인 합 니 다. 상태 1 을 돌 릴 때 가능 한 동작 은 3 과 5 입 니 다. 처음에 초기 값 이 똑 같 았 고 무 작위 로 state 5 를 선 택 했 습 니 다. 상태 5 에서 가능 한 동작 은 1, 4, 5 입 니 다. 이때 Q (1, 5) 의 값 을 계산 할 수 있 습 니 다. Q(1, 5) = R (1, 5) + 0.8 * max {Q {5, 1}, Q (5, 4), Q (5, 5)} = 100 + 0 = 100. 이때 state 5 는 목표 state 이 고 Q 행렬 을 업데이트 하 며 Q (1, 5) = 100 만 업데이트 합 니 다. Episode = 2: 무 작위 선택 상 태 는 state = 3 입 니 다. 먼저 action 을 확인 합 니 다. 상태 1 을 돌 릴 때 할 수 있 는 동작 은 1, 2, 4 입 니 다. max {Q (3, 1), Q {3, 2}, Q (3, 4)} 입 니 다.세 개의 값 이 모두 0 이 고 action 1 을 선택 하면 state 가 1 이 됩 니 다. 상태 1 일 때 가능 한 동작 은 3, 5 입 니 다. 이때 Q (3, 1) 의 값 을 계산 할 수 있 습 니 다. Q (3, 1) = R (3, 1) + 0.8 * max {Q (1, 3), Q (1, 5)} = 0 + 80 = 80, 업데이트 Q (3, 1)= 80. 그러나 이때 state 1 은 최종 상태 5 가 아니 기 때문에 계속 탐색 합 니 다. 이때 가설 은 가장 좋 은 전략 을 선택 하여 action, Q (1, action) = max {Q (1, 3), Q (1, 5)}, action = 5 를 선택 하면 상태 5 에 들 어가 면 앞 과 같은 Q (1, 5) = R (1, 5) + 0.8 * max {Q {5, 1}, Q (5, 4), Q (5, 5)} = 100 + 0 = 100. 업데이트 Q (1, 5)= 100 은 이렇게 계속 교체 되 고 전체 과정 은 두 개의 초 매개 변수 로 인해 결 과 는 예측 할 수 없다.
Code:
import numpy as np
# Q 0
q = np.matrix(np.zeros([6, 6]))
# Reward 。 HMM 。-1
r = np.matrix([[-1, -1, -1, -1, 0, -1],
[-1, -1, -1, 0, -1, 100],
[-1, -1, -1, 0, -1, -1],
[-1, 0, 0, -1, 0, -1],
[ 0, -1, -1, 0, -1, 100],
[-1, 0, -1, -1, 0, 100]])
# hyperparameter
#
gamma = 0.8
#
epsilon = 0.4
# the main training loop
for episode in range(101):
# random initial state
state = np.random.randint(0, 6)
#
while (state != 5):
#
# Even in random case, we cannot choose actions whose r[state, action] = -1.
possible_actions = []
possible_q = []
for action in range(6):
if r[state, action] >= 0:
possible_actions.append(action)
possible_q.append(q[state, action])
# Step next state, here we use epsilon-greedy algorithm.
action = -1
if np.random.random() < epsilon:
# choose random action
action = possible_actions[np.random.randint(0, len(possible_actions))]
else:
# greedy
action = possible_actions[np.argmax(possible_q)]
# Update Q value
q[state, action] = r[state, action] + gamma * q[action].max()
# Go to the next state
state = action
# Display training progress
if episode % 10 == 0:
print("------------------------------------------------")
print("Training episode: %d" % episode)
print(q)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Visual Studio/WPF > 확인 대화 상자 > 아이콘 표시 | 기본 버튼운영 환경 다음 기능을 가진 확인 대화 상자를 표시합니다. 아이콘 (? 또는! 등) 기본 버튼 MessageBox.Show()로 처리하는 것 같다. MainWindow.xaml.cs MainWindow.xaml 검색...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.