시작은 미약하였으나 , 그 끝은 창대하리라

[2]강화학습 Dummy Q Learning 본문

인공지능/강화학습

[2]강화학습 Dummy Q Learning

애플파ol 2023. 1. 20. 18:20

출처: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 실험결과

실험 결과

 

Comments