0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于強化學(xué)習(xí)的MADDPG算法原理及實現(xiàn)

lviY_AI_shequ ? 來源:未知 ? 作者:胡薇 ? 2018-11-02 16:18 ? 次閱讀

之前接觸的強化學(xué)習(xí)算法都是單個智能體的強化學(xué)習(xí)算法,但是也有很多重要的應(yīng)用場景牽涉到多個智能體之間的交互,比如說,多個機(jī)器人的控制,語言的交流,多玩家的游戲等等。本文,就帶你簡單了解一下Open-AI的MADDPG(Multi-Agent Deep Deterministic Policy Gradient)算法,來共同體驗一下多智能體強化學(xué)習(xí)的魅力。

1、引言

強化學(xué)習(xí)中很多場景涉及多個智能體的交互,比如多個機(jī)器人的控制,語言的交流,多玩家的游戲等等。不過傳統(tǒng)的RL方法,比如Q-Learning或者policy gradient都不適用于多智能體環(huán)境。主要的問題是,在訓(xùn)練過程中,每個智能體的策略都在變化,因此從每個智能體的角度來看,環(huán)境變得十分不穩(wěn)定(其他智能體的行動帶來環(huán)境變化)。對DQN來說,經(jīng)驗重放的方法變的不再適用(如果不知道其他智能體的狀態(tài),那么不同情況下自身的狀態(tài)轉(zhuǎn)移會不同),而對PG的方法來說,環(huán)境的不斷變化導(dǎo)致了學(xué)習(xí)的方差進(jìn)一步增大。

因此,本文提出了MADDPG(Multi-Agent Deep Deterministic Policy Gradient)方法。為什么要使用DDPG方法作為基準(zhǔn)模型呢?主要是集中訓(xùn)練和分散執(zhí)行的策略。

本文提出的方法框架是集中訓(xùn)練,分散執(zhí)行的。我們先回顧一下DDPG的方式,DDPG本質(zhì)上是一個AC方法。訓(xùn)練時,Actor根據(jù)當(dāng)前的state選擇一個action,然后Critic可以根據(jù)state-action計算一個Q值,作為對Actor動作的反饋。Critic根據(jù)估計的Q值和實際的Q值來進(jìn)行訓(xùn)練,Actor根據(jù)Critic的反饋來更新策略。測試時,我們只需要Actor就可以完成,此時不需要Critic的反饋。因此,在訓(xùn)練時,我們可以在Critic階段加上一些額外的信息來得到更準(zhǔn)確的Q值,比如其他智能體的狀態(tài)和動作等,這也就是集中訓(xùn)練的意思,即每個智能體不僅僅根據(jù)自身的情況,還根據(jù)其他智能體的行為來評估當(dāng)前動作的價值。分散執(zhí)行指的是,當(dāng)每個Agent都訓(xùn)練充分之后,每個Actor就可以自己根據(jù)狀態(tài)采取合適的動作,此時是不需要其他智能體的狀態(tài)或者動作的。DQN不適合這么做,因為DQN訓(xùn)練和預(yù)測是同一個網(wǎng)絡(luò),二者的輸入信息必須保持一致,我們不能只在訓(xùn)練階段加入其他智能體的信息。

2、DDPG算法的簡單回顧

什么是DDPG什么是DDPG呢?一句話描述,它是Actor-Critic 和 DQN 算法的結(jié)合體。

DDPG的全稱是Deep Deterministic Policy Gradient。

我們首先來看Deep,正如Q-learning加上一個Deep就變成了DQN一樣,這里的Deep即同樣使用DQN中的經(jīng)驗池和雙網(wǎng)絡(luò)結(jié)構(gòu)來促進(jìn)神經(jīng)網(wǎng)絡(luò)能夠有效學(xué)習(xí)。

再來看Deterministic,即我們的Actor不再輸出每個動作的概率,而是一個具體的動作,這更有助于我們連續(xù)動作空間中進(jìn)行學(xué)習(xí)。

DDPG的網(wǎng)絡(luò)結(jié)構(gòu)盜用莫煩老師的一張圖片來形象的表示DDPG的網(wǎng)絡(luò)結(jié)構(gòu),同圖片里一樣,我們稱Actor里面的兩個網(wǎng)絡(luò)分別是動作估計網(wǎng)絡(luò)和動作現(xiàn)實網(wǎng)絡(luò),我們稱Critic中的兩個網(wǎng)絡(luò)分別是狀態(tài)現(xiàn)實網(wǎng)絡(luò)和狀態(tài)估計網(wǎng)絡(luò):

我們采用了類似DQN的雙網(wǎng)絡(luò)結(jié)構(gòu),而且Actor和Critic都有target-net和eval-net。我們需要強調(diào)一點的事,我們只需要訓(xùn)練動作估計網(wǎng)絡(luò)和狀態(tài)估計網(wǎng)絡(luò)的參數(shù),而動作現(xiàn)實網(wǎng)絡(luò)和狀態(tài)現(xiàn)實網(wǎng)絡(luò)的參數(shù)是由前面兩個網(wǎng)絡(luò)每隔一定的時間復(fù)制過去的。

我們先來說說Critic這邊,Critic這邊的學(xué)習(xí)過程跟DQN類似,我們都知道DQN根據(jù)下面的損失函數(shù)來進(jìn)行網(wǎng)絡(luò)學(xué)習(xí),即現(xiàn)實的Q值和估計的Q值的平方損失:

上面式子中Q(S,A)是根據(jù)狀態(tài)估計網(wǎng)絡(luò)得到的,A是動作估計網(wǎng)絡(luò)傳過來的動作。而前面部分R + gamma * maxQ(S',A')是現(xiàn)實的Q值,這里不一樣的是,我們計算現(xiàn)實的Q值,不在使用貪心算法,來選擇動作A',而是動作現(xiàn)實網(wǎng)絡(luò)得到這里的A'??偟膩碚f,Critic的狀態(tài)估計網(wǎng)絡(luò)的訓(xùn)練還是基于現(xiàn)實的Q值和估計的Q值的平方損失,估計的Q值根據(jù)當(dāng)前的狀態(tài)S和動作估計網(wǎng)絡(luò)輸出的動作A輸入狀態(tài)估計網(wǎng)絡(luò)得到,而現(xiàn)實的Q值根據(jù)現(xiàn)實的獎勵R,以及將下一時刻的狀態(tài)S'和動作現(xiàn)實網(wǎng)絡(luò)得到的動作A' 輸入到狀態(tài)現(xiàn)實網(wǎng)絡(luò) 而得到的Q值的折現(xiàn)值加和得到(這里運用的是貝爾曼方程)。

我們再來說一下Actor這邊,論文中,我們基于下面的式子進(jìn)行動作估計網(wǎng)絡(luò)的參數(shù):

這個式子看上去很嚇人,但是其實理解起來很簡單。假如對同一個狀態(tài),我們輸出了兩個不同的動作a1和a2,從狀態(tài)估計網(wǎng)絡(luò)得到了兩個反饋的Q值,分別是Q1和Q2,假設(shè)Q1>Q2,即采取動作1可以得到更多的獎勵,那么Policy gradient的思想是什么呢,就是增加a1的概率,降低a2的概率,也就是說,Actor想要盡可能的得到更大的Q值。所以我們的Actor的損失可以簡單的理解為得到的反饋Q值越大損失越小,得到的反饋Q值越小損失越大,因此只要對狀態(tài)估計網(wǎng)絡(luò)返回的Q值取個負(fù)號就好啦。是不是很簡單。

DDPG學(xué)習(xí)中的小trick

與傳統(tǒng)的DQN不同的是,傳統(tǒng)的DQN采用的是一種被稱為'hard'模式的target-net網(wǎng)絡(luò)參數(shù)更新,即每隔一定的步數(shù)就將eval-net中的網(wǎng)絡(luò)參數(shù)賦值過去,而在DDPG中,采用的是一種'soft'模式的target-net網(wǎng)絡(luò)參數(shù)更新,即每一步都對target-net網(wǎng)絡(luò)中的參數(shù)更新一點點,這種參數(shù)更新方式經(jīng)過試驗表明可以大大的提高學(xué)習(xí)的穩(wěn)定性。'soft'模式到底是如何更新網(wǎng)絡(luò)的?我們可以通過代碼更好的理解。

論文中提到的另一個小trick是對采取的動作增加一定的噪聲:

DDPG的完整流程

介紹了這么多,我們也就能順利理解原文中的DDPG算法的流程:

3、MADDPG算法簡介

算法流程

理解了DDPG的算法過程,那么MADDPG的過程也是不難理解的,我們一起來看一下吧。

每個Agent的訓(xùn)練同單個DDPG算法的訓(xùn)練過程類似,不同的地方主要體現(xiàn)在Critic的輸入上:在單個Agent的DDPG算法中,Critic的輸入是一個state-action對信息,但是在MADDPG中,每個Agent的Critic輸入除自身的state-action信息外,還可以有額外的信息,比如其他Agent的動作。

多Agent之間的關(guān)系形式

不同的Agent之間的關(guān)系大體可以分為三種,合作型,對抗性,半合作半對抗型。我們可以根據(jù)不同的合作關(guān)系來設(shè)計我們的獎勵函數(shù)。

4、模型實驗

文章中設(shè)置了多組實驗環(huán)境,有合作型的,有對抗型的也有半合作半對抗型的。如下圖所示:

這里只重點講我們后面代碼中實現(xiàn)的實驗。

實驗的名稱為Predator-prey。其英文解釋為Good agents (green) are faster and want to avoid being hit by adversaries (red). Adversaries are slower and want to hit good agents. Obstacles (large black circles) block the way.

不過我們在代碼中只實現(xiàn)了三個Adversaries,而Good agents處于隨機(jī)游走狀態(tài)。

在合作交流的環(huán)境下,論文中將MADDPG與傳統(tǒng)的算法進(jìn)行了對比,得到的結(jié)果如下:

可以看到,MADDPG與傳統(tǒng)的RL算法相比,在多智能體的環(huán)境下,能夠取得更加突出的效果。

5、MADDPG算法的簡單實現(xiàn)

本文實踐了Predator-prey這一環(huán)境,如下圖所示:

綠色的球為目標(biāo),在二維空間中隨機(jī)游走,躲避紅色的球的攻擊。三個紅色的球是我們定義的Agent,它們處在互相對抗的環(huán)境中,想要擊中綠色的球,從而獲得獎勵。黑色的地方時障礙。

本文的github地址為:https://github.com/princewen/tensorflow_practice/tree/master/RL/Basic-MADDPG-Demo

實驗環(huán)境安裝

下載https://github.com/openai/multiagent-particle-envs中的代碼。

進(jìn)入到代碼主路徑中,執(zhí)行命令安裝所需的環(huán)境

pip install -e .

代碼結(jié)構(gòu)本項目的代碼結(jié)構(gòu)如下:

model_agent_maddpg.py:該文件定義了單個Agent的DDPG結(jié)構(gòu),及一些函數(shù)replay_buffer.py:定義了兩種不同的經(jīng)驗池,一種是普通的經(jīng)驗池,一種是優(yōu)先采樣經(jīng)驗池segment_tree.py:只有在使用優(yōu)先采樣經(jīng)驗池的時候才用到。定義一種樹結(jié)構(gòu)根據(jù)經(jīng)驗的優(yōu)先級進(jìn)行采樣test_three_agent_maddpg.py:對訓(xùn)練好的模型進(jìn)行測試three_agent_maddpg.py:模型訓(xùn)練的主代碼

DDPG-Actor實現(xiàn)我們首先來實現(xiàn)單個的DDPG結(jié)構(gòu)Actor的輸入是一個具體的狀態(tài),經(jīng)過兩層的全鏈接網(wǎng)絡(luò)輸出選擇的Action。

def actor_network(name): with tf.variable_scope(name) as scope: x = state_input x = tf.layers.dense(x, 64) if self.layer_norm: x = tc.layers.layer_norm(x, center=True, scale=True) x = tf.nn.relu(x) x = tf.layers.dense(x, 64) if self.layer_norm: x = tc.layers.layer_norm(x, center=True, scale=True) x = tf.nn.relu(x) x = tf.layers.dense(x, self.nb_actions, kernel_initializer=tf.random_uniform_initializer(minval=-3e-3, maxval=3e-3)) x = tf.nn.tanh(x) return x

DDPG-Critic實現(xiàn)

Critic的輸入是state,以及所有Agent當(dāng)前的action信息:

def critic_network(name, action_input, reuse=False): with tf.variable_scope(name) as scope: if reuse: scope.reuse_variables() x = state_input x = tf.layers.dense(x, 64) if self.layer_norm: x = tc.layers.layer_norm(x, center=True, scale=True) x = tf.nn.relu(x) x = tf.concat([x, action_input], axis=-1) x = tf.layers.dense(x, 64) if self.layer_norm: x = tc.layers.layer_norm(x, center=True, scale=True) x = tf.nn.relu(x) x = tf.layers.dense(x, 1, kernel_initializer=tf.random_uniform_initializer(minval=-3e-3, maxval=3e-3)) return x

訓(xùn)練Actor和Critic

Actor的訓(xùn)練目標(biāo)是Q值的最大化,而Critic的訓(xùn)練目標(biāo)是最小化Q估計值和Q實際值之間的差距:

self.actor_optimizer = tf.train.AdamOptimizer(1e-4)self.critic_optimizer = tf.train.AdamOptimizer(1e-3)# 最大化Q值self.actor_loss = -tf.reduce_mean( critic_network(name + '_critic', action_input=tf.concat([self.action_output, other_action_input], axis=1), reuse=True))self.actor_train = self.actor_optimizer.minimize(self.actor_loss)self.target_Q = tf.placeholder(shape=[None, 1], dtype=tf.float32)self.critic_loss = tf.reduce_mean(tf.square(self.target_Q - self.critic_output))self.critic_train = self.critic_optimizer.minimize(self.critic_loss)

定義三個Agent

隨后,我們分別建立三個Agent,每個Agent對應(yīng)兩個DDPG結(jié)構(gòu),一個是eval-net,一個是target-net:

agent1_ddpg = MADDPG('agent1')agent1_ddpg_target = MADDPG('agent1_target')agent2_ddpg = MADDPG('agent2')agent2_ddpg_target = MADDPG('agent2_target')agent3_ddpg = MADDPG('agent3')agent3_ddpg_target = MADDPG('agent3_target')

模型訓(xùn)練

在訓(xùn)練過程中,假設(shè)當(dāng)前的狀態(tài)是o_n,我們首先通過Actor得到每個Agent的動作,這里我們將動作定義為一個二維的向量,不過根據(jù)OpenAi的環(huán)境設(shè)置,我們需要將動作展開成一個五維的向量,同時綠色的球也需要定義動作,因此一共將四組動作輸入到我們的環(huán)境中,可以得到獎勵及下一個時刻的狀態(tài)o_n_next以及當(dāng)前的獎勵r_n:

agent1_action, agent2_action, agent3_action = get_agents_action(o_n, sess, noise_rate=0.2)#三個agent的行動a = [[0, i[0][0], 0, i[0][1], 0] for i in [agent1_action, agent2_action, agent3_action]]#綠球的行動a.append([0, np.random.rand() * 2 - 1, 0, np.random.rand() * 2 - 1, 0])o_n_next, r_n, d_n, i_n = env.step(a)

隨后,我們需要將經(jīng)驗存放到經(jīng)驗池中,供Critic反饋和訓(xùn)練:

agent1_memory.add(np.vstack([o_n[0], o_n[1], o_n[2]]), np.vstack([agent1_action[0], agent2_action[0], agent3_action[0]]), r_n[0], np.vstack([o_n_next[0], o_n_next[1], o_n_next[2]]), False)agent2_memory.add(np.vstack([o_n[1], o_n[2], o_n[0]]), np.vstack([agent2_action[0], agent3_action[0], agent1_action[0]]), r_n[1], np.vstack([o_n_next[1], o_n_next[2], o_n_next[0]]), False)agent3_memory.add(np.vstack([o_n[2], o_n[0], o_n[1]]), np.vstack([agent3_action[0], agent1_action[0], agent2_action[0]]), r_n[2], np.vstack([o_n_next[2], o_n_next[0], o_n_next[1]]), False)

當(dāng)經(jīng)驗池中存儲了一定的經(jīng)驗之后,我們就可以根據(jù)前文介紹過的雙網(wǎng)絡(luò)結(jié)構(gòu)和損失函數(shù)來訓(xùn)練每個Agent的Actor和Critic:

train_agent(agent1_ddpg, agent1_ddpg_target, agent1_memory, agent1_actor_target_update, agent1_critic_target_update, sess, [agent2_ddpg_target, agent3_ddpg_target])train_agent(agent2_ddpg, agent2_ddpg_target, agent2_memory, agent2_actor_target_update, agent2_critic_target_update, sess, [agent3_ddpg_target, agent1_ddpg_target])train_agent(agent3_ddpg, agent3_ddpg_target, agent3_memory, agent3_actor_target_update, agent3_critic_target_update, sess, [agent1_ddpg_target, agent2_ddpg_target])

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4677

    瀏覽量

    94264
  • 強化學(xué)習(xí)
    +關(guān)注

    關(guān)注

    4

    文章

    269

    瀏覽量

    11463

原文標(biāo)題:探秘多智能體強化學(xué)習(xí)-MADDPG算法原理及簡單實現(xiàn)

文章出處:【微信號:AI_shequ,微信公眾號:人工智能愛好者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    什么是深度強化學(xué)習(xí)?深度強化學(xué)習(xí)算法應(yīng)用分析

    什么是深度強化學(xué)習(xí)? 眾所周知,人類擅長解決各種挑戰(zhàn)性的問題,從低級的運動控制(如:步行、跑步、打網(wǎng)球)到高級的認(rèn)知任務(wù)。
    發(fā)表于 07-01 10:29 ?1752次閱讀
    什么是深度<b class='flag-5'>強化學(xué)習(xí)</b>?深度<b class='flag-5'>強化學(xué)習(xí)</b><b class='flag-5'>算法</b>應(yīng)用分析

    反向強化學(xué)習(xí)的思路

    強化學(xué)習(xí)的另一種策略(二)
    發(fā)表于 04-03 12:10

    深度強化學(xué)習(xí)實戰(zhàn)

    內(nèi)容2:課程一: TensoRFlow入門到熟練:課程二:圖像分類:課程三:物體檢測:課程四:人臉識別:課程五:算法實現(xiàn):1、卷積神經(jīng)網(wǎng)絡(luò)CNN2、循環(huán)神經(jīng)網(wǎng)絡(luò)RNN3、強化學(xué)習(xí)DRL4、對抗性生成
    發(fā)表于 01-10 13:42

    將深度學(xué)習(xí)強化學(xué)習(xí)相結(jié)合的深度強化學(xué)習(xí)DRL

    深度強化學(xué)習(xí)DRL自提出以來, 已在理論和應(yīng)用方面均取得了顯著的成果。尤其是谷歌DeepMind團(tuán)隊基于深度強化學(xué)習(xí)DRL研發(fā)的AlphaGo,將深度強化學(xué)習(xí)DRL成推上新的熱點和高度,成為人工智能歷史上一個新的里程碑。因此,深
    發(fā)表于 06-29 18:36 ?2.8w次閱讀

    如何構(gòu)建強化學(xué)習(xí)模型來訓(xùn)練無人車算法

    本文作者通過簡單的方式構(gòu)建了強化學(xué)習(xí)模型來訓(xùn)練無人車算法,可以為初學(xué)者提供快速入門的經(jīng)驗。
    的頭像 發(fā)表于 11-12 14:47 ?5023次閱讀

    基于PPO強化學(xué)習(xí)算法的AI應(yīng)用案例

    Viet Nguyen就是其中一個。這位來自德國的程序員表示自己只玩到了第9個關(guān)卡。因此,他決定利用強化學(xué)習(xí)AI算法來幫他完成未通關(guān)的遺憾。
    發(fā)表于 07-29 09:30 ?2972次閱讀

    機(jī)器學(xué)習(xí)中的無模型強化學(xué)習(xí)算法及研究綜述

    強化學(xué)習(xí)( Reinforcement learning,RL)作為機(jī)器學(xué)習(xí)領(lǐng)域中與監(jiān)督學(xué)習(xí)、無監(jiān)督學(xué)習(xí)并列的第三種學(xué)習(xí)范式,通過與環(huán)境進(jìn)行
    發(fā)表于 04-08 11:41 ?11次下載
    機(jī)器<b class='flag-5'>學(xué)習(xí)</b>中的無模型<b class='flag-5'>強化學(xué)習(xí)</b><b class='flag-5'>算法</b>及研究綜述

    一種新型的多智能體深度強化學(xué)習(xí)算法

    一種新型的多智能體深度強化學(xué)習(xí)算法
    發(fā)表于 06-23 10:42 ?36次下載

    強化學(xué)習(xí)的基礎(chǔ)知識和6種基本算法解釋

    來源:DeepHub IMBA 強化學(xué)習(xí)的基礎(chǔ)知識和概念簡介(無模型、在線學(xué)習(xí)、離線強化學(xué)習(xí)等) 機(jī)器學(xué)習(xí)(ML)分為三個分支:監(jiān)督學(xué)習(xí)、無
    的頭像 發(fā)表于 12-20 14:00 ?1242次閱讀

    7個流行的強化學(xué)習(xí)算法及代碼實現(xiàn)

    作者:Siddhartha Pramanik 來源:DeepHub IMBA 目前流行的強化學(xué)習(xí)算法包括 Q-learning、SARSA、DDPG、A2C、PPO、DQN 和 TRPO。這些算法
    的頭像 發(fā)表于 02-03 20:15 ?1319次閱讀

    徹底改變算法交易:強化學(xué)習(xí)的力量

    強化學(xué)習(xí)(RL)是人工智能的一個子領(lǐng)域,專注于決策過程。與其他形式的機(jī)器學(xué)習(xí)相比,強化學(xué)習(xí)模型通過與環(huán)境交互并以獎勵或懲罰的形式接收反饋來學(xué)習(xí)。
    發(fā)表于 06-09 09:23 ?655次閱讀

    強化學(xué)習(xí)的基礎(chǔ)知識和6種基本算法解釋

    來源:DeepHubIMBA強化學(xué)習(xí)的基礎(chǔ)知識和概念簡介(無模型、在線學(xué)習(xí)、離線強化學(xué)習(xí)等)機(jī)器學(xué)習(xí)(ML)分為三個分支:監(jiān)督學(xué)習(xí)、無監(jiān)督
    的頭像 發(fā)表于 01-05 14:54 ?1196次閱讀
    <b class='flag-5'>強化學(xué)習(xí)</b>的基礎(chǔ)知識和6種基本<b class='flag-5'>算法</b>解釋

    7個流行的強化學(xué)習(xí)算法及代碼實現(xiàn)

    作者:SiddharthaPramanik來源:DeepHubIMBA目前流行的強化學(xué)習(xí)算法包括Q-learning、SARSA、DDPG、A2C、PPO、DQN和TRPO。這些算法已被用于在游戲
    的頭像 發(fā)表于 02-06 15:06 ?1832次閱讀
    7個流行的<b class='flag-5'>強化學(xué)習(xí)</b><b class='flag-5'>算法</b>及代碼<b class='flag-5'>實現(xiàn)</b>

    基于強化學(xué)習(xí)的目標(biāo)檢測算法案例

    摘要:基于強化學(xué)習(xí)的目標(biāo)檢測算法在檢測過程中通常采用預(yù)定義搜索行為,其產(chǎn)生的候選區(qū)域形狀和尺寸變化單一,導(dǎo)致目標(biāo)檢測精確度較低。為此,在基于深度強化學(xué)習(xí)的視覺目標(biāo)檢測算法基礎(chǔ)上,提出聯(lián)
    發(fā)表于 07-19 14:35 ?0次下載

    如何使用 PyTorch 進(jìn)行強化學(xué)習(xí)

    的計算圖和自動微分功能,非常適合實現(xiàn)復(fù)雜的強化學(xué)習(xí)算法。 1. 環(huán)境(Environment) 在強化學(xué)習(xí)中,環(huán)境是一個抽象的概念,它定義了智能體(agent)可以執(zhí)行的動作(acti
    的頭像 發(fā)表于 11-05 17:34 ?737次閱讀