強化學習Numpy相關知識整理

2021-10-01 09:14:21 字數 1669 閱讀 6348

在使用python進行強化學習**實驗的時候,numpy一定是會用到的乙個工具庫。numpy提供了很多有用的介面函式,但是要熟悉全部函式是有一定困難的。這裡整理一些強化學習中比較常用的api函式,並說明它們一般使用的位置。

這個函式主要用於取出矩陣中最大元素的位置,常用於對dqn的輸出向量

import numpy as np

a = np.array([3

,5,6

,8,1

])b = np.argmax(a)

print

('b='

, b)

輸出結果

b= 3
簡單地介紹一下這個函式在強化學習用到的相關的語法,以下面這個案例為例

import numpy as np

# replace 表示抽完仍舊放回去

# np.random.choice(a, size = none, replace = true, p = none)

# 從0到5之間隨機選取3個數

a = np.random.choice(5,

3)# 表示分別以p=[0.1, 0, 0.3, 0.6, 0]的概率從[0,1,2,3,4]這四個數中選取3個數

b = np.random.choice(5,

2, p=

[0.1

,0.1

,0.2

,0.2

,0.4])

print

('a='

, a)

print

('b='

, b)

執行結果

a=

[2 3 1]

b=[3 4]

因為dqn需要保證一定的隨機動作選擇,來確保整個神經網路不會陷入區域性最優的陷阱中,所以np.random.choice 函式通常用於dqn中非貪婪的隨機動作的選擇。通常的用法是

action = np.randon.choice(number_of_action,

1)

這個函式主要用於產生乙個0-1之間的隨機數

import numpy as np

# np.random.uniform(low=0,high=1,size=1) 返回[low,high)大小為size的陣列,

a = np.random.uniform(

)print

('a='

, a)

執行結果

a= 0.22582848580242054
在強化學習中,一般都會有乙個隨機動作的選擇,以保證機械人實驗不同的可能性,np.randon.uniform就是用於產生乙個隨機數,通常用法是

if np.random.uniform(

)> self.epsilon:

action = np.randon.choice(number_of_action,1)

else

action = np.argmax(self.model.predict(observation)

)

表示如果產生的隨機數大於貪婪度,則產生隨機行為;否則選取神經網路**的動作。

強化學習相關知識的整理

對於強化學習,之前有一種說法 深度學習是昨天,強化學習是今天,遷移學習是明天。雖說有些言過其實,但強化學習的思想,筆者看來還是最接近於人工智慧的思想。剛剛開始接觸強化學習時,研究生剛剛入學,組裡需要做關於自動駕駛決策相關方面的研究,導師就把這任務給了我。emm.現在想想,讓乙個當時機器學習是什麼都不...

強化學習筆記整理

強化學習 自動進行決策並且可以做連續決策,包括agent 狀態 行動 獎勵四部分,目標是獲得最多的累計獎勵 原理 求解最優策略等價於求解最優的值函式 值函式選取策略更新的方式 原理 通過隨機取樣的經驗平均來估計期望值 一次實驗,學習速度慢,效率不高 步驟 agent與環境互動後得到互動序列,通過序列...

強化學習知識總結

參考文章 研一接觸了強化學習,然後對其就產生了很大的興趣。雖然有在莫煩python上學習,也自己做過很簡單的專案,但是之前對rl的學習比較混亂並不系統。正好看到這篇文章,感覺對自己有很大的幫助,就根據作者列出的知識點進行擴充套件學習。model free就是不去學習和理解環境,環境給出什麼資訊就是什...