国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【強(qiáng)化學(xué)習(xí)】常用算法之一 “SARSA”

這篇具有很好參考價(jià)值的文章主要介紹了【強(qiáng)化學(xué)習(xí)】常用算法之一 “SARSA”。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

【強(qiáng)化學(xué)習(xí)】常用算法之一 “SARSA”

?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-508046.html

作者主頁(yè):愛(ài)笑的男孩。的博客_CSDN博客-深度學(xué)習(xí),活動(dòng),python領(lǐng)域博主愛(ài)笑的男孩。擅長(zhǎng)深度學(xué)習(xí),活動(dòng),python,等方面的知識(shí),愛(ài)笑的男孩。關(guān)注算法,python,計(jì)算機(jī)視覺(jué),圖像處理,深度學(xué)習(xí),pytorch,神經(jīng)網(wǎng)絡(luò),opencv領(lǐng)域.https://blog.csdn.net/Code_and516?type=blog個(gè)人簡(jiǎn)介:打工人。

持續(xù)分享:機(jī)器學(xué)習(xí)、深度學(xué)習(xí)、python相關(guān)內(nèi)容、日常BUG解決方法及Windows&Linux實(shí)踐小技巧。

如發(fā)現(xiàn)文章有誤,麻煩請(qǐng)指出,我會(huì)及時(shí)去糾正。有其他需要可以私信我或者發(fā)我郵箱:zhilong666@foxmail.com?

????????強(qiáng)化學(xué)習(xí)是一種機(jī)器學(xué)習(xí)方法,通過(guò)與環(huán)境不斷交互來(lái)學(xué)習(xí)最優(yōu)行為策略。SARSA(State-action-reward-state-action)算法是強(qiáng)化學(xué)習(xí)中的經(jīng)典算法之一,用于求解馬爾可夫決策過(guò)程(Markov Decision Process, MDP)中的最優(yōu)策略。本文將詳細(xì)介紹SARSA算法的發(fā)展歷程、算法原理、功能以及使用方法,并附帶示例代碼和運(yùn)行結(jié)果。

本文將詳細(xì)講解強(qiáng)化學(xué)習(xí)常用算法之一“SARSA”


【強(qiáng)化學(xué)習(xí)】常用算法之一 “SARSA”

?

目錄

一、簡(jiǎn)介

二、發(fā)展史

三、算法公式

1. SARSA算法公式

2. SARSA算法原理

四、算法功能

五、示例代碼

六、總結(jié)


一、簡(jiǎn)介

????????強(qiáng)化學(xué)習(xí)是一種通過(guò)學(xué)習(xí)與環(huán)境交互來(lái)最大化累積獎(jiǎng)勵(lì)的方法。在強(qiáng)化學(xué)習(xí)中,一個(gè)智能體在特定環(huán)境中根據(jù)當(dāng)前狀態(tài)選擇一個(gè)動(dòng)作,執(zhí)行該動(dòng)作后,環(huán)境將轉(zhuǎn)移到新的狀態(tài),并且智能體將獲得獎(jiǎng)勵(lì)。強(qiáng)化學(xué)習(xí)的目標(biāo)是通過(guò)學(xué)習(xí),使智能體能夠選擇一系列能夠獲取最大累積獎(jiǎng)勵(lì)的動(dòng)作序列,即找到最優(yōu)策略。SARSA算法是一種基于狀態(tài)-動(dòng)作值的強(qiáng)化學(xué)習(xí)算法,用來(lái)學(xué)習(xí)最優(yōu)策略。

二、發(fā)展史

????????SARSA算法最早由Richard Sutton和Andrew Barto在他們的著作《強(qiáng)化學(xué)習(xí)導(dǎo)論》中提出。SARSA是Q-learning算法的一種特例,也是一種基于值函數(shù)的算法。

????????Q-learning算法是一種基于狀態(tài)-動(dòng)作值的強(qiáng)化學(xué)習(xí)算法,它通過(guò)維護(hù)一個(gè)Q值表(存儲(chǔ)每個(gè)狀態(tài)-動(dòng)作對(duì)的狀態(tài)-動(dòng)作值)來(lái)學(xué)習(xí)最優(yōu)策略。然而,Q-learning算法必須對(duì)Q值表進(jìn)行離散化處理,因此只適用于狀態(tài)空間和動(dòng)作空間較小且離散的問(wèn)題。為了解決這個(gè)問(wèn)題,Richard Sutton等人提出了SARSA算法。

????????SARSA算法是一種基于值函數(shù)和策略的算法,它不需要對(duì)狀態(tài)空間和動(dòng)作空間進(jìn)行離散化處理,適用于連續(xù)狀態(tài)和動(dòng)作的問(wèn)題。該算法使用一個(gè)Q值函數(shù)和一個(gè)策略函數(shù)來(lái)近似最優(yōu)策略。

三、算法公式

1. SARSA算法公式

????????SARSA算法的更新公式如下:

【強(qiáng)化學(xué)習(xí)】常用算法之一 “SARSA”

????????其中,Q(s, a)表示在狀態(tài)s下選擇動(dòng)作a的狀態(tài)-動(dòng)作值,r表示執(zhí)行動(dòng)作a后獲得的即時(shí)獎(jiǎng)勵(lì),α表示學(xué)習(xí)率,γ表示折扣因子,s’表示轉(zhuǎn)移到的新?tīng)顟B(tài),a’表示在新?tīng)顟B(tài)s’下選擇的動(dòng)作。?

2. SARSA算法原理

????????SARSA算法的核心思想是通過(guò)不斷更新?tīng)顟B(tài)-動(dòng)作值函數(shù)Q(s, a)來(lái)學(xué)習(xí)最優(yōu)策略。該算法按照以下步驟進(jìn)行:

  • 初始化狀態(tài)-動(dòng)作值函數(shù)Q(s, a)和策略函數(shù)π(a|s)的值。
  • 在每個(gè)時(shí)間步t中,依據(jù)當(dāng)前狀態(tài)s和策略函數(shù)π選擇一個(gè)動(dòng)作a。
  • 執(zhí)行動(dòng)作a,觀察獲得的即時(shí)獎(jiǎng)勵(lì)r和新?tīng)顟B(tài)s’。
  • 根據(jù)新?tīng)顟B(tài)s’和策略函數(shù)π選擇一個(gè)新動(dòng)作a’。
  • 更新?tīng)顟B(tài)-動(dòng)作值函數(shù)Q(s, a)的值,使用SARSA更新公式。
  • 將新?tīng)顟B(tài)s’和新動(dòng)作a’作為下一步的狀態(tài)s和動(dòng)作a。
  • 重復(fù)上述步驟,直到達(dá)到終止條件。

????????通過(guò)不斷迭代更新?tīng)顟B(tài)-動(dòng)作值函數(shù)Q(s, a),SARSA算法可以逐步逼近最優(yōu)狀態(tài)-動(dòng)作值函數(shù),從而得到最優(yōu)策略。

四、算法功能

????????SARSA算法具有以下功能:

  1. 模型無(wú)關(guān)性:SARSA算法不需要對(duì)環(huán)境模型進(jìn)行假設(shè),只通過(guò)與環(huán)境交互來(lái)學(xué)習(xí)最優(yōu)策略。
  2. 收斂性:在一定條件下,SARSA算法保證會(huì)收斂到最優(yōu)策略。
  3. 適用性:SARSA算法適用于狀態(tài)空間和動(dòng)作空間較大且連續(xù)的問(wèn)題,而不需要對(duì)狀態(tài)空間和動(dòng)作空間進(jìn)行離散化處理。

五、示例代碼

import numpy as np

# 定義迷宮環(huán)境
maze = np.array([
    [0, 0, 0, 0],
    [0, -1, 0, -1],
    [0, 0, 0, -1],
    [-1, 0, 0, 1]
])

# 定義起始狀態(tài)和終止?fàn)顟B(tài)
start_state = (3, 0)
goal_state = (3, 3)

# 定義動(dòng)作空間
actions = [(0, 1), (0, -1), (-1, 0), (1, 0)]

# 初始化狀態(tài)-動(dòng)作值函數(shù)
Q = np.zeros((4, 4, 4))

# 定義參數(shù)
alpha = 0.1
gamma = 0.9
epsilon = 0.1
max_episodes = 100

# SARSA算法 
for episode in range(max_episodes):
    state = start_state
    action = np.random.choice(range(4)) if np.random.rand() < epsilon else np.argmax(Q[state])

    while state != goal_state:
        # next_state = (state[0] + actions[action][0], state[1] + actions[action][1])
        a = state[0] + actions[action][0]
        b = state[1] + actions[action][1]
        if a > 3:
            a-=1
        elif b > 3:
            b-=1
        elif a < -4:
            a+= 1
        elif b < -4:
            b+= 1
        next_state = (a,b)
        reward = maze[next_state]
        next_action = np.random.choice(range(4)) if np.random.rand() < epsilon else np.argmax(Q[next_state])
        Q[state][action] += alpha * (reward + gamma * Q[next_state][next_action] - Q[state][action])

        state = next_state
        action = next_action

# 輸出結(jié)果
for i in range(4):
    for j in range(4):
        print("State:", (i, j))
        print("Up:", Q[i][j][0])
        print("Down:", Q[i][j][1])
        print("Left:", Q[i][j][2])
        print("Right:", Q[i][j][3])
        print()

????????運(yùn)行結(jié)果如下:?

State: (0, 0)
Up: -0.008042294056935573
Down: -0.007868742418369764
Left: -0.016173595452674966
Right: 0.006662566560762523

State: (0, 1)
Up: 0.048576025675988774
Down: -0.0035842473161881465
Left: 0.024420015715567546
Right: -0.46168987981312615

State: (0, 2)
Up: 0.04523751845081987
Down: 0.04266319340558091
Left: 0.044949583791193154
Right: 0.026234839551098416

State: (0, 3)
Up: 0.01629652821649763
Down: 0.050272192325180515
Left: -0.009916869922464355
Right: -0.4681667868865369

State: (1, 0)
Up: -0.09991342319696966
Down: 0.0
Left: 0.0
Right: 0.036699099068340166

State: (1, 1)
Up: 0.008563965102313987
Down: 0.0
Left: 0.0
Right: 0.3883250678150607

State: (1, 2)
Up: -0.3435187267522706
Down: -0.2554776873673874
Left: 0.05651543121932354
Right: 0.004593450910446022

State: (1, 3)
Up: -0.1
Down: -0.013616634831997914
Left: 0.01298827764814053
Right: 0.0

State: (2, 0)
Up: 0.28092113053540924
Down: 0.0
Left: 0.0024286388798406364
Right: 0.06302299434701504

State: (2, 1)
Up: 0.0
Down: 0.0
Left: -0.16509175606504775
Right: 1.9146361697676122

State: (2, 2)
Up: -0.1
Down: 0.0
Left: 0.03399106390140035
Right: 0.0

State: (2, 3)
Up: -0.3438668479533914
Down: 0.004696957810272524
Left: -0.19
Right: 0.0

State: (3, 0)
Up: 3.3060693607932445
Down: 0.8893977121867367
Left: 0.0
Right: 0.13715553550041798

State: (3, 1)
Up: 4.825854511712306
Down: -0.03438123168566812
Left: 0.10867882029322147
Right: 1.0015572397722665

State: (3, 2)
Up: 5.875704328143301
Down: 0.9315770230698863
Left: 0.0006851481810742227
Right: 0.47794799892127526

State: (3, 3)
Up: 5.4028951599661275
Down: 2.6989177956329757
Left: -0.6454474033238188
Right: 0.018474082554518417

????????通過(guò)運(yùn)行示例代碼,我們可以得到每個(gè)狀態(tài)下的最優(yōu)動(dòng)作及對(duì)應(yīng)的狀態(tài)-動(dòng)作值。

六、總結(jié)

????????本文詳細(xì)介紹了強(qiáng)化學(xué)習(xí)中的SARSA算法,包括其發(fā)展歷程、算法原理、功能以及使用方法,并給出了求解迷宮問(wèn)題的示例代碼。SARSA算法能夠?qū)崿F(xiàn)模型無(wú)關(guān)性和收斂性,適用于狀態(tài)空間和動(dòng)作空間較大且連續(xù)的問(wèn)題。通過(guò)對(duì)狀態(tài)-動(dòng)作值函數(shù)的迭代更新,SARSA算法可以逐步逼近最優(yōu)策略,并通過(guò)與環(huán)境交互來(lái)學(xué)習(xí)最優(yōu)行為策略。

【強(qiáng)化學(xué)習(xí)】常用算法之一 “SARSA”

?

?

到了這里,關(guān)于【強(qiáng)化學(xué)習(xí)】常用算法之一 “SARSA”的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • C#常用的加密算法之一 MD5

    MD5加密概述,原理及實(shí)現(xiàn) C#常用的加密算法:MD5、Base64、SHA1、SHA256、HmacSHA256、DES、AES、RSA MD5消息摘要算法,屬Hash算法一類。MD5算法對(duì)輸入任意長(zhǎng)度的消息進(jìn)行運(yùn)行,產(chǎn)生一個(gè)128位的消息摘要(32位的數(shù)字字母混合碼)。 不可逆,相同數(shù)據(jù)的MD5值肯定一樣,不同數(shù)據(jù)的MD5值不一

    2024年02月10日
    瀏覽(27)
  • 【強(qiáng)化學(xué)習(xí)】——Q-learning算法為例入門Pytorch強(qiáng)化學(xué)習(xí)

    【強(qiáng)化學(xué)習(xí)】——Q-learning算法為例入門Pytorch強(qiáng)化學(xué)習(xí)

    ???♂? 個(gè)人主頁(yè):@Lingxw_w的個(gè)人主頁(yè) ???作者簡(jiǎn)介:計(jì)算機(jī)研究生在讀,研究方向復(fù)雜網(wǎng)絡(luò)和數(shù)據(jù)挖掘,阿里云專家博主,華為云云享專家,CSDN專家博主、人工智能領(lǐng)域優(yōu)質(zhì)創(chuàng)作者,安徽省優(yōu)秀畢業(yè)生 ?? 希望大家多多支持,我們一起進(jìn)步!?? 如果文章對(duì)你有幫助的話

    2024年02月10日
    瀏覽(17)
  • 【機(jī)器學(xué)習(xí)】十大算法之一 “邏輯回歸”

    【機(jī)器學(xué)習(xí)】十大算法之一 “邏輯回歸”

    ? 作者主頁(yè): 愛(ài)笑的男孩。的博客_CSDN博客-深度學(xué)習(xí),活動(dòng),python領(lǐng)域博主 愛(ài)笑的男孩。擅長(zhǎng)深度學(xué)習(xí),活動(dòng),python,等方面的知識(shí),愛(ài)笑的男孩。關(guān)注算法,python,計(jì)算機(jī)視覺(jué),圖像處理,深度學(xué)習(xí),pytorch,神經(jīng)網(wǎng)絡(luò),opencv領(lǐng)域. https://blog.csdn.net/Code_and516?type=blog 個(gè)人簡(jiǎn)介:打工人。 持續(xù)分

    2024年02月10日
    瀏覽(26)
  • 【機(jī)器學(xué)習(xí)】十大算法之一 “PCA”

    【機(jī)器學(xué)習(xí)】十大算法之一 “PCA”

    ? 作者主頁(yè): 愛(ài)笑的男孩。的博客_CSDN博客-深度學(xué)習(xí),活動(dòng),python領(lǐng)域博主 愛(ài)笑的男孩。擅長(zhǎng)深度學(xué)習(xí),活動(dòng),python,等方面的知識(shí),愛(ài)笑的男孩。關(guān)注算法,python,計(jì)算機(jī)視覺(jué),圖像處理,深度學(xué)習(xí),pytorch,神經(jīng)網(wǎng)絡(luò),opencv領(lǐng)域. https://blog.csdn.net/Code_and516?type=blog 個(gè)人簡(jiǎn)介:打工人。 持續(xù)分

    2024年02月11日
    瀏覽(22)
  • 【機(jī)器學(xué)習(xí)】十大算法之一 “線性回歸”

    【機(jī)器學(xué)習(xí)】十大算法之一 “線性回歸”

    ? 作者主頁(yè): 愛(ài)笑的男孩。的博客_CSDN博客-深度學(xué)習(xí),活動(dòng),python領(lǐng)域博主 愛(ài)笑的男孩。擅長(zhǎng)深度學(xué)習(xí),活動(dòng),python,等方面的知識(shí),愛(ài)笑的男孩。關(guān)注算法,python,計(jì)算機(jī)視覺(jué),圖像處理,深度學(xué)習(xí),pytorch,神經(jīng)網(wǎng)絡(luò),opencv領(lǐng)域. https://blog.csdn.net/Code_and516?type=blog 個(gè)人簡(jiǎn)介:打工人。 持續(xù)分

    2024年02月09日
    瀏覽(17)
  • 【機(jī)器學(xué)習(xí)】十大算法之一 “決策樹(shù)”

    【機(jī)器學(xué)習(xí)】十大算法之一 “決策樹(shù)”

    作者主頁(yè): 愛(ài)笑的男孩。的博客_CSDN博客-深度學(xué)習(xí),活動(dòng),python領(lǐng)域博主 愛(ài)笑的男孩。擅長(zhǎng)深度學(xué)習(xí),活動(dòng),python,等方面的知識(shí),愛(ài)笑的男孩。關(guān)注算法,python,計(jì)算機(jī)視覺(jué),圖像處理,深度學(xué)習(xí),pytorch,神經(jīng)網(wǎng)絡(luò),opencv領(lǐng)域. https://blog.csdn.net/Code_and516?type=blog 個(gè)人簡(jiǎn)介:打工人。 持續(xù)分享

    2024年02月11日
    瀏覽(22)
  • 強(qiáng)化學(xué)習(xí)專題:回合更新算法

    游戲開(kāi)始 玩家收到兩張明牌,荷官發(fā)給自己一張明牌和一張暗牌 根據(jù)自己手中的牌和荷官的明牌,玩家需要決定是否要牌(Hit)或停牌(Stand) 選擇要牌,荷官發(fā)一張額外的牌 如果玩家的牌總點(diǎn)數(shù)超過(guò)21點(diǎn),即爆牌(Bust),該玩家輸。 否則可以繼續(xù)要牌直到停止 選擇停牌

    2024年02月11日
    瀏覽(17)
  • 【機(jī)器學(xué)習(xí)】強(qiáng)化學(xué)習(xí)(三)蒙特卡洛算法

    【機(jī)器學(xué)習(xí)】強(qiáng)化學(xué)習(xí)(三)蒙特卡洛算法

    策略迭代算法和價(jià)值迭代算法為什么可以得到理論上的最優(yōu)解,在實(shí)際問(wèn)題中使用價(jià)值有限? 無(wú)模型算法 三、蒙特卡洛算法 蒙特卡洛(Monte Carlo)方法是一種基于樣本的強(qiáng)化學(xué)習(xí)算法,它通過(guò)執(zhí)行和學(xué)習(xí)代理(也就是我們編程的AI)環(huán)境交互的樣本路徑來(lái)學(xué)習(xí)。它不需要初始知

    2024年01月19日
    瀏覽(18)
  • python算法中的深度學(xué)習(xí)算法之強(qiáng)化學(xué)習(xí)(詳解)

    目錄 學(xué)習(xí)目標(biāo): 學(xué)習(xí)內(nèi)容: 強(qiáng)化學(xué)習(xí) Ⅰ. 環(huán)境建模 Ⅱ . Markov決策過(guò)程

    2024年02月01日
    瀏覽(29)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包