출처:https://www.youtube.com/watch?v=Vd-gmo-qO5E&ab_channel=SungKim
(기반으로 작성된 글입니다)
1. Q의 역할:
2. MaxQ , π*(s) 란?
3. Q(s,a)의미
4. Q Learning 예시
그림설명:
마지막 부부(초록색)에서의 reward는 1 이다. Q햇 (s,a) 식에 의해서,
빨간색박스의값= 1+max(0,0,0,0) = 1 이다.
그림설명:
Q(s_13,a_right)의 값은 위와 같은 계산 과정에 따라 결정 된다.
그림설명:
Optimal policy 를 따라 이동하며 agent가 성공함(초록색에 도착함), 1의 숫자만 따라서 감.
5. Q Learning 정리
6. 실습
6_1 코드
import gym
import numpy as np
import matplotlib.pyplot as plt
from gym.envs.registration import register
import random as pr
def rargmax(vector): # 랜덤하게 argument 간다.
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",render_mode='human') # 환경생성
## 학습시키는 과정
Q=np.zeros([env.observation_space.n,env.action_space.n]) # Q 라는 테이블을 만든다.
num_episodes=2000 #반복횟수
rList=[] #2000번 동안 성공횟수
for i in range(num_episodes):
state=env.reset()
state = state[0]
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[new_state,:])
rALL+=reward
state=new_state
rList.append(rALL)
##결과 출력
print("Sucess rate: "+str(sum(rList)/num_episodes))
print("Final Q-Table Values")
print(Q)
plt.bar(range(len(rList)),rList,color='blue')
plt.show()
주의:
1. state[0]를 함으로 필요한 숫자만 뽑아낸다.
2. env.step(action) 출력 인자값은 5개이다(release 0.25.0 기준)
6_2 실험결과
'인공지능 (강화학습) > 강화학습' 카테고리의 다른 글
[1] 강화학습 기본 개념 정리 (0) | 2024.03.20 |
---|---|
[5] 강화학습 Q-Network (0) | 2023.02.15 |
[4] 강화학습 Windy Frozen Lake Nondeterministic world! (0) | 2023.02.07 |
[3] 강화학습 Exploit&Exploration and discounted future reward (1) | 2023.02.04 |
[1] 강화학습이란? (0) | 2023.01.17 |