日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

强化学习笔记:Q_learning (Q-table)示例举例

發布時間:2025/4/5 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 强化学习笔记:Q_learning (Q-table)示例举例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 示例介紹

在右側有寶藏,探險者到達寶藏所在的位置,就可以獲得獎勵

比如某一時刻的狀態是這個樣子的:“-o---T”

?T 就是寶藏的位置, o 是探索者的位置

如果在某個地點?s1, 探索者計算了他能有的兩個行為,?Q(s1, a1) > Q(s1, a2), 那么探索者就會選擇?left?這個行為. 否則就是right

參考內容:小例子 - 強化學習 (Reinforcement Learning) | 莫煩Python (mofanpy.com)

2? 導入庫& 超參數設定

import numpy as np import pandas as pd import timenp.random.seed(2) # 隨機種子N_STATES = 6 # 探寶者可能在的位置ACTIONS = ['left', 'right'] # 探索者的可用動作EPSILON = 0.9 # 貪婪度 greedy #0.9的概率選擇最大的Q對應的action #0.1的概率隨機選actionALPHA = 0.1 # 學習率GAMMA = 0.9 # 獎勵遞減值MAX_EPISODES = 13 # 最大回合數FRESH_TIME = 0.3 # 移動間隔時間

3 創建Q-table

這是一個DataFrame

python 庫整理:pandas_UQI-LIUWJ的博客-CSDN博客

index是目前探寶者的位置,columns是對應的動作
?

def build_q_table(n_states, actions):table = pd.DataFrame(np.zeros((n_states, len(actions))), # q_table 初始狀態全0columns=actions, # columns 對應的是action名稱)return table#對于我們這個示例來說,出來的Q-table將會是 # q_table: """left right 0 0.0 0.0 1 0.0 0.0 2 0.0 0.0 3 0.0 0.0 4 0.0 0.0 5 0.0 0.0 """

4 定義動作

定義探寶者如何挑選行為的

這里我們使用ε-greedy

強化學習筆記: generalized policy iteration with MC_UQI-LIUWJ的博客-CSDN博客

# 在某個 state 地點, 選擇行為 def choose_action(state, q_table):state_actions = q_table.iloc[state, :] # 選出這個 state 的所有 action 值(把這一行挑出來 pd.Series)if (np.random.uniform() > EPSILON) or (state_actions.all() == 0): # 非貪婪的10% , 或者這個 state 還沒有探索過action_name = np.random.choice(ACTIONS)#exploration 探索else:action_name = state_actions.idxmax() # 貪婪模式的90% # exploitation 利用return action_name

5 設置狀態轉換和獎勵reward

????????做出行為后, 環境也要給我們的行為一個反饋, 反饋出下個 state (S_) 和 在上個 state (S) 做出 action (A) 所得到的 reward (R).

????????這里定義的規則就是, 只有?移動到了?T, 探寶者才會得到唯一的一個獎勵, 獎勵值 R=1, 其他情況都沒有獎勵.

def get_env_feedback(S, A):# This is how agent will interact with the environmentif A == 'right': # move rightif S == N_STATES - 2: #現在在位置4,再往右1格是5,也就是寶藏所在的位置S_ = 'terminal'R = 1else:S_ = S + 1R = 0else: # move leftR = 0if S == 0:S_ = S # 在最右側,碰壁了,所以不變狀態else:S_ = S - 1return S_, R

6 環境更新可視化

def update_env(S, episode, step_counter):env_list = ['-']*(N_STATES-1) + ['T'] # 沒有探寶者的環境if S == 'terminal':interaction = 'Episode %s: total_steps = %s' % (episode+1, step_counter)print('\r{}'.format(interaction), end='')time.sleep(2)print('\r ', end='')#探寶者在終點else:env_list[S] = 'o'interaction = ''.join(env_list)print('\r{}'.format(interaction), end='')time.sleep(FRESH_TIME)#探寶者所在的位置替換為o

7 Q-learning

使用的是TD:

?

?

def rl():q_table = build_q_table(N_STATES, ACTIONS) # 創建初始 q tablefor episode in range(MAX_EPISODES): #每一個回合step_counter = 0#從初始位置到達藏寶地需要多少步?我們設置一個計數器S = 0 # 回合初始位置is_terminated = False # 是否回合結束update_env(S, episode, step_counter) # 環境更新'''如果在終點,那么輸出這一回合的一些信息如果非重點,那么輸出當前探寶者所在的狀態'''while not is_terminated:A = choose_action(S, q_table) # 選行為(ε-greedy)S_, R = get_env_feedback(S, A) # 實施行為并得到環境的反饋q_predict = q_table.loc[S, A] # 估算的(狀態-行為)值#Q(s,a)if S_ != 'terminal':q_target = R + GAMMA * q_table.iloc[S_, :].max() # 實際的(狀態-行為)值 (回合沒結束)# q_table.iloc[S_, :].max() ——> max Q(s',a') else:q_target = R # 實際的(狀態-行為)值 (回合結束)#沒有后續狀態了,所以也不用加那一項#當然get_env_feedback 當遇到terminal 的時候,直接返回'terminal' ,也算不出它的max Q(s',a') is_terminated = True # 此時已經到達terminal了#if-else的作用就是計算q-target,也就是TD更新里面 減號之前的部分q_table.loc[S, A] += ALPHA * (q_target - q_predict) # q_table 更新(TD)S = S_ # 探索者移動到下一個狀態update_env(S, episode, step_counter+1) # 環境更新'''如果在終點,那么輸出這一回合的一些信息如果非重點,那么輸出當前探寶者所在的狀態'''step_counter += 1#一致循環,直到拿到寶藏為止print(q_table)return q_table

8 訓練

直接調用函數即可

q_table = rl() print(q_table)

在上面的實現中,命令行一次只會出現一行狀態(這個是在update_env里面設置的('\r'+end=''))

??????python筆記 print+‘\r‘ (打印新內容時刪除打印的舊內容)_UQI-LIUWJ的博客-CSDN博客

如果不加這個限制,我們看一個episode:

然后我們綜合考量下每個episode之后的Q-table

138
222
39
45
57
65
75
85
95
105

可以發現 left? 不會增長,但right的會一直增大?

?

?

?

?

?

?

?

?

?

總結

以上是生活随笔為你收集整理的强化学习笔记:Q_learning (Q-table)示例举例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 91打屁股| 成人免费在线 | 亚洲蜜臀av| 久久综合婷婷国产二区高清 | 99久久久久久 | 国产一级做a爰片久久毛片男 | 中文在线观看免费视频 | 四虎影视成人 | 天天操天天操天天干 | 色骚网| 三上悠亚亚洲一区 | 亚洲最大成人av | 欧美性网址 | 91亚洲国产成人精品性色 | 久久欲 | 国产素人av | 九九99久久 | 国内精品人妻无码久久久影院蜜桃 | 91麻豆一区二区 | 香蕉视频网页版 | 天天做日日干 | 国产成人无码一区二区在线观看 | 日本一区二区三区免费在线观看 | 欧美日韩免费 | 国产免费黄色片 | 性av在线 | 精品人妻一区二区三区日产 | 无码少妇一区二区 | 红桃视频一区二区三区免费 | 国模精品视频一区二区 | 国产一区二区三区精品在线观看 | 成人在线视频网址 | 国语对白一区二区 | 无码人妻一区二区三区在线 | 一级全黄毛片 | 欧美亚洲国产视频 | 亚洲资源站 | 91成人精品一区在线播放 | 懂色av蜜臀av粉嫩av分享吧 | 亚洲好骚综合 | 草比网站| 国产在线日本 | 亚洲自拍激情 | 大乳女喂男人吃奶 | 欧美大片免费看 | 久久久久三级 | www.五月天婷婷.com | 成人av资源网 | 亚洲一卡二卡在线观看 | 少妇无码吹潮 | 日韩网站在线观看 | 神马久久久久久久 | 看国产毛片 | 天天干天天搞天天射 | 人妻色综合网站 | 少妇视频网站 | 毛片在线视频 | 国偷自拍| 成年人网站免费视频 | 天天操天天干天天插 | 国产二级一片内射视频播放 | 性做久久久久久免费观看 | 山村大伦淫第1部分阅读小说 | 黄色aa级片 | 精品午夜久久久 | 日韩插插 | 国产成人精品视频在线 | 国产精品久久久久91 | 黄频视频在线观看 | 毛片一区二区三区 | 欧美日韩精品一区二区三区视频播放 | 国产真人无遮挡作爱免费视频 | 草比网站 | 日韩区欧美区 | 日本无遮羞调教打屁股网站 | 91视频黄色| 日韩av成人在线观看 | 欧美日韩免费视频 | 琪琪久久 | 亚洲国产一区二区三区a毛片 | 久久久7777 | 深夜福利视频导航 | 国产成人精品一区 | 91精品人妻一区二区三区四区 | 日本黄色三级 | www.婷婷.com| 99国内揄拍国内精品人妻免费 | 国产精品视频免费播放 | 伊人一区二区三区四区 | 国产欧美日韩 | 久久成人一区二区 | 欧美偷拍综合 | 国产一级二级视频 | 婷婷亚洲激情 | 自拍第1页| 亚洲一区国产一区 | 视频黄页在线观看 | 熟女俱乐部五十路六十路av | 女人下边被添全过视频 |