출처:
Reinforcement Learning with TensorFlow&OpenAI Gym Sung Kim ,https://tensorflow.blog/tag/richard-s-sutton/
많은 알고리즘 중 Q-알고리즘을 대상으로 시작한다.
테이블을 만들어서 0으로 초기화 시킨다
관찰할수 있는 현재의 상태는 s로 표기한다
무한 반복을 하면서
- 액션 a 를 실행
- 액션에 대해 즉시 보상을 한다
- 새로은 상태를 s 프라임이라한다.
- 다음과 같은 방법으로 보상+ q를 업데이트 하고
- 상태가 바뀌었으므로 이또한 업데이트 처리한다.
사실 코딩을 해보고 개발을 해봤던 사람이라면 쉬운내용인데 이를 수학으로 표기한것 뿐이다.
실습
import gym
import numpy as np
import matplotlib.pyplot as plt
from gym.envs.registration import register
import random as pr
def rargmax(vector):
m = np.amax(vector)
indices = np.nonzero(vector == m)[0]
return pr.choice(indices)
register(
id='FrozenLake-v3',
entry_point='gym.envs.toy_text:FrozenLakeEnv',
kwargs={'map_name': '4x4',
'is_slippery': False}
)
env = gym.make('FrozenLake-v3')
Q = np.zeros([env.observation_space.n,env.action_space.n])
num_episodes = 2000
rList = []
for i in range(num_episodes):
state = env.reset()
rAll = 0
done = False
while not done:
action = rargmax(Q[state, :])
new_state, reward, done, _ = env.step(action)
Q[state,action] = reward + np.max(Q[state, :])
rAll += reward
state = new_state
rList.append(rAll)
print("Success rate: " + str(sum(rList)/num_episodes))
print("FV")
print(Q)
plt.bar(range(len(rList)), rList, color="blue")
plt.show()
잘정리하신분이 있더라...
출처 링크.jaynewho.com/post/10
'4Z1 - Artificial Intelligence > 강화학습 개론' 카테고리의 다른 글
MRL - 5 : 마지막 (0) | 2020.09.09 |
---|---|
MRL - 4 (0) | 2020.09.09 |
MRL - 3 (0) | 2020.09.09 |
Recap - 강화 학습 정리 시작하기 (0) | 2020.09.05 |
MRL - 1 : 시작하기 (0) | 2020.08.31 |