強韌學習Q-learning 優化作法

甘果-avatar-img
發佈於程式
更新於 發佈於 閱讀時間約 8 分鐘

在上一篇的強韌學習中,可以看到行為 (action) 的主要還是依據 Q-Table 的最大數值來決定;而 Q-Table 中的數值是依照過去的行為經驗累積而來;在經驗累積的過程中,每次單純累計回饋 (reward) 的數值;所以,可以觀察到最後形成的 Q-Table 各個數值內容會逐漸地累計而出現離散而極端的差異;這樣的現象,會使得愈後面訓練的回饋數值相較於 Q-Table 的數值,影響力愈來愈小;因此,在建立 Q-Table 時,要儘量將不同時間加入的回饋值對 Q-Table 有一定的影響。

  • 優化強韌學習參數

作法上可以除了回饋 (reword) 值以外,再將 Q-Table 中的最大值,作為加權相加;接下來,在建立 Q-Table 時,將以上的加權相加值打折後加入 Q-Table,作為數值平滑過濾,來減少 Q-Table 極端值產生,例如:

maxValue=1.0+0.8*np.max(qtable[observation,:])
qtable[observation,action]+=0.2*(maxValue-qtable[observation,action])

所以完整的訓練程式可以寫成:

import numpy as np
qtable=np.zeros((16,4))
#--------------
np.random.seed(13)
epochs=2000
for epoch in range(epochs):
state=env.reset()
path=[]
terminated=False
while (not terminated):
action=np.random.randint(4)
path.append(action)
observation, reward, terminated,_,_=env.step(action)
if(reward>0):
env.reset()
for j in range(len(path)):
action=path[j]
observation,_,_,_,_=env.step(action)
#----------------------
maxValue=1.0+0.8*np.max(qtable[observation,:])
qtable[observation,action]+=0.2*(maxValue-qtable[observation,action])
#----------------------
# print('successful path:',path)
print('table:',qtable)
#-------
np.save('qtable',qtable)

再用測試程式執行

qtable=np.load('qtable.npy')

np.random.seed(13)
epochs=400
for epoch in range(epochs):
env.reset()
observation=0
path=[]
terminated=False
while (not terminated):
dice=np.random.randint(6)
if(dice>2):
action=np.argmax(qtable[observation,:])
else:
action=np.random.randint(4)
path.append(action)
observation, reward, terminated,_,_=env.step(action)
if(reward>0):
print('successful path:',path)
raw-image

我們可以發現,增加了訓練的學習能力之後,成功完成的次數又再增加;由原來 400 次的嘗試成功 8 次,增加到 12 次;約 50%的成功。

  • 自我學習

另一方面,如果可同時進行訓練及測試程式,每次的測試結果都可以不斷地進行學習,可以更進一步增加強韌學習的效率;因此可以將程式再更新如下:

import numpy as np
qtable=np.zeros((16,4))
#--------------
np.random.seed(13)
epochs=400
for epoch in range(epochs):
env.reset()
observation=0
path=[]
terminated=False
inDB=False
while (not terminated):
dice=np.random.randint(6)
if not inDB:
dice=0
if(dice>2):
action=np.argmax(qtable[observation,:])
else:
action=np.random.randint(4)
path.append(action)
observation, reward, terminated,_,_=env.step(action)

if(reward>0):
inDB=True
env.reset()
for j in range(len(path)):
action=path[j]
observation,_,_,_,_=env.step(action)
#----------------------
maxValue=1.0+0.8*np.max(qtable[observation,:])
qtable[observation,action]+=0.2*(maxValue-qtable[observation,action])
#----------------------
print('successful path:',path)

print('table:',qtable)
raw-image

透過同步學習及測試的作法,既使只有 400 次的嘗試,也會由原來的僅有一次成功的結果,增加到 8 次成功結果;更重要的是,可以從原來累計學習成功的結果,加入成為學習的輸入,也就是「自我學習」的效果。


avatar-img
4會員
21內容數
作者從國內主要的半導體公司退休,重回校園唸書;開始第三人生。分享退休投資規劃、科技產業經驗以及校園學習點滴。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
甘果的沙龍 的其他內容
本文介紹如何使用 OpenAI Gym中的Frozen Lake環境,利用Q-table學習機制提升機器人成功率。文章首先說明基本隨機移動機器人的方法,接著說明如何建立Q-table學習機器人,並透過實驗數據展示學習機制的效果。
本篇文章介紹如何使用Python和OpenAI Gym在Nvidia Jetson Orin Nano上實作強化學習,並以Frozen Lake遊戲為例,說明如何透過學習機器的行為與環境互動,來逐步提升學習機器的能力。
類神經網路在圖形辨識應用中需要大量資料進行訓練,並常透過分批訓練來優化模型。本文介紹如何使用「MNIST」資料庫進行手寫數字辨識,並透過「資料分批」來有效處理訓練資料。最終,分批訓練的手法能夠提升模型的辨識能力,實現持續學習。
本篇文章探討瞭如何透過叢集類神經網路對圖形資料進行分類。叢集類神經網路針對多個相互獨立的分類目標,提升訓練收斂速度。文中說明介紹了叢集類神經網路的建立和訓練過程,最終達成準確的分類預測。透過這種方法,即使處理複雜的分類問題,也能保持較高的訓練效率和準確度。
本文介紹使用 PyTorch 及類神經網路進行圖形資料集的分類。Fashion-MNIST 提供了機器學習研究上的著名範例;服飾的灰階圖像的分類。本文指導讀者從安裝 torchvision 到建立類神經網路,進行圖形分類的完整過程。也詳述了資料處理及訓練過程,幫助理解類神經網路在圖形分類上的應用。
本文探討類神經網路在多元分類問題的應用,以scikit-learn 程式庫中的鳶尾花分類問題為例。該問題涉及三種不同的鳶尾花分類,並詳細說明瞭資料整理、類神經網路的建立及訓練過程,最終達到高準確率的預測結果。本文將幫助讀者理解如何應用類神經網路、PyTorch 及 CUDA 來進行高效的模型訓練。
本文介紹如何使用 OpenAI Gym中的Frozen Lake環境,利用Q-table學習機制提升機器人成功率。文章首先說明基本隨機移動機器人的方法,接著說明如何建立Q-table學習機器人,並透過實驗數據展示學習機制的效果。
本篇文章介紹如何使用Python和OpenAI Gym在Nvidia Jetson Orin Nano上實作強化學習,並以Frozen Lake遊戲為例,說明如何透過學習機器的行為與環境互動,來逐步提升學習機器的能力。
類神經網路在圖形辨識應用中需要大量資料進行訓練,並常透過分批訓練來優化模型。本文介紹如何使用「MNIST」資料庫進行手寫數字辨識,並透過「資料分批」來有效處理訓練資料。最終,分批訓練的手法能夠提升模型的辨識能力,實現持續學習。
本篇文章探討瞭如何透過叢集類神經網路對圖形資料進行分類。叢集類神經網路針對多個相互獨立的分類目標,提升訓練收斂速度。文中說明介紹了叢集類神經網路的建立和訓練過程,最終達成準確的分類預測。透過這種方法,即使處理複雜的分類問題,也能保持較高的訓練效率和準確度。
本文介紹使用 PyTorch 及類神經網路進行圖形資料集的分類。Fashion-MNIST 提供了機器學習研究上的著名範例;服飾的灰階圖像的分類。本文指導讀者從安裝 torchvision 到建立類神經網路,進行圖形分類的完整過程。也詳述了資料處理及訓練過程,幫助理解類神經網路在圖形分類上的應用。
本文探討類神經網路在多元分類問題的應用,以scikit-learn 程式庫中的鳶尾花分類問題為例。該問題涉及三種不同的鳶尾花分類,並詳細說明瞭資料整理、類神經網路的建立及訓練過程,最終達到高準確率的預測結果。本文將幫助讀者理解如何應用類神經網路、PyTorch 及 CUDA 來進行高效的模型訓練。
你可能也想看
Google News 追蹤
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
調整慣性的聚焦方式, 問題,可以挫敗你, 但也可以成為你成長與進化的動力。
Thumbnail
透過「習慣養成」來提升實力,每天穩定成長1%能成為No.1! 大家都非天才,但能透過努力發展出獨特優勢,準確掌握逆勢突圍契機。
Thumbnail
每個人生的經驗都在教導我們一件事:只要你堅持多年,起初,看似微不足道的改變終將以複利計算,利滾利,滾出非比尋常的結果。 原子習慣指的是微小的改變、微不足道的增長、百分之一的改善。 而行為的改變便始於覺察。 成功,便是來自於一連串微小的勝利與突破,它是數百個微小的改善,所累積起來的成
Thumbnail
這本文章介紹了一本有關高效習慣的書籍,探討如何培養好的習慣,包括清晰、活力、必要性、生產力、影響力、勇氣等。文章內容非常豐富,值得一讀。
Thumbnail
✨閱讀後你將學會: 認識習慣形成的底層原理:瞭解習慣是如何透過「提示-行為-獎勵」的模式形成。 具體的習慣形成策略:提供具體步驟來介紹讀者養成新習慣,從設置清晰的提示、規範行為模式,到創造實質的獎勵。 實際案例的應用:發現習慣養成的步驟如何在日常生活中成功應用。
成長,沒有一蹴可及的, 透過紀律和耐力的練習, 我們會越專注堅定, 有勇氣去嘗試突破, 接收豐盛與喜悅, 活出優雅自信的人生。
Thumbnail
第一章 心態   定型心態fixed mindset:急於證明自己的智能、性格、品格達到標準。 成長心態Growth mindset:你可以透過努力來培養你的基本素質。   不用證明自己有多出色來掩飾自己的不足,而是設法克服自己的不足。   舉例來說,你今天考試拿了C+,車子被開了罰單
Thumbnail
本篇文章分享了《彈性習慣》一書的核心思想,探討了彈性習慣對個人成長和生活品質的重要性。作者提出了實用的建議,如建立小習慣、結合大小目標等,幫助讀者更好地應用彈性原則。透過這些主題的探討和應用場景的示例,讀者可以更好地理解和應用彈性習慣的理念和方法,從而提高自己的生活品質,擺脫固定習慣的束縛。
Thumbnail
彈性習慣是一種適應生活波動的方式,可以讓目標更容易達成。透過設定迷你目標、進階目標、和卓越目標,以及垂直和水平彈性的擴展,可以更有效地培養習慣,並更有效分配資源和時間。
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
調整慣性的聚焦方式, 問題,可以挫敗你, 但也可以成為你成長與進化的動力。
Thumbnail
透過「習慣養成」來提升實力,每天穩定成長1%能成為No.1! 大家都非天才,但能透過努力發展出獨特優勢,準確掌握逆勢突圍契機。
Thumbnail
每個人生的經驗都在教導我們一件事:只要你堅持多年,起初,看似微不足道的改變終將以複利計算,利滾利,滾出非比尋常的結果。 原子習慣指的是微小的改變、微不足道的增長、百分之一的改善。 而行為的改變便始於覺察。 成功,便是來自於一連串微小的勝利與突破,它是數百個微小的改善,所累積起來的成
Thumbnail
這本文章介紹了一本有關高效習慣的書籍,探討如何培養好的習慣,包括清晰、活力、必要性、生產力、影響力、勇氣等。文章內容非常豐富,值得一讀。
Thumbnail
✨閱讀後你將學會: 認識習慣形成的底層原理:瞭解習慣是如何透過「提示-行為-獎勵」的模式形成。 具體的習慣形成策略:提供具體步驟來介紹讀者養成新習慣,從設置清晰的提示、規範行為模式,到創造實質的獎勵。 實際案例的應用:發現習慣養成的步驟如何在日常生活中成功應用。
成長,沒有一蹴可及的, 透過紀律和耐力的練習, 我們會越專注堅定, 有勇氣去嘗試突破, 接收豐盛與喜悅, 活出優雅自信的人生。
Thumbnail
第一章 心態   定型心態fixed mindset:急於證明自己的智能、性格、品格達到標準。 成長心態Growth mindset:你可以透過努力來培養你的基本素質。   不用證明自己有多出色來掩飾自己的不足,而是設法克服自己的不足。   舉例來說,你今天考試拿了C+,車子被開了罰單
Thumbnail
本篇文章分享了《彈性習慣》一書的核心思想,探討了彈性習慣對個人成長和生活品質的重要性。作者提出了實用的建議,如建立小習慣、結合大小目標等,幫助讀者更好地應用彈性原則。透過這些主題的探討和應用場景的示例,讀者可以更好地理解和應用彈性習慣的理念和方法,從而提高自己的生活品質,擺脫固定習慣的束縛。
Thumbnail
彈性習慣是一種適應生活波動的方式,可以讓目標更容易達成。透過設定迷你目標、進階目標、和卓越目標,以及垂直和水平彈性的擴展,可以更有效地培養習慣,並更有效分配資源和時間。