主頁 >  其他 > 強化學習入門筆記 | UCL silver RL | UC Berkely cs285 DRL

強化學習入門筆記 | UCL silver RL | UC Berkely cs285 DRL

2022-03-03 07:58:50 其他

學習情況:

先后聽了兩門課程,分別是David Silver的RL和Sergey Levin的DRL,各耗時一周左右,后者更難一些,對RL基本概念、常用演算法原理及其偽代碼有了大致了解,但是因為時間有點趕,沒有敲完整的演算法代碼,

由于已經有寫得比較好的課程筆記 (RL 和 DRL),就不重復造輪子了,兩位博主對課程內容理解得都相對透徹,尤其是前者,解答了我很多看視頻沒太聽懂的疑惑,

這份筆記是我在聽完兩門課程后想梳理的一些東西,并不描述演算法、公式的推導細節,大概只是對這些天學的RL基礎知識的一份簡單梳理,可以說只是一個目錄,大致思路跟著Silver的課整理,對部分演算法補充cs285講的內容,cs285的課程要難很多,講的很多內容都涉及到復雜的數學公式推導,感覺很多part都能單獨出長筆記,在這篇基礎筆記中就不提及了,挖坑以后寫,

由于初學,了解得比較淺薄,可能有理解錯誤的地方,也歡迎幫我指出錯誤,閱讀這篇筆記時最好有一定RL基礎,因為有些名詞出現時可能不做解釋,全文共1.2w字,純手敲,


目錄

RL基礎概念

動態規劃DP

Policy Iteration

Value Iteration

蒙特卡洛MC

時序差分TD

n-step TD

TD(λ)

SARSA

Q-learning

DQN

Nature DQN

DDQN

Prioritized Repay DQN

Dueling DQN

Policy Gradient

REINFORCE

Actor-Critic

DPG

DDPG

A3C

Model-based method

Dyna

Dyna-Q

MCTS


RL基礎概念

RL (Reinforcement Learning) 是一門決策學科,而且解決的是Sequential Decision,關于RL的意義,Sergey在cs285中講到,它提供了一種build intelligent model的新方式,不是模擬大腦結構(神經網路),而是模擬人的成長程序,圖靈說,"與其通程序式模擬成人,不如通程序式模擬兒童,并給予適當的教育",

Sequential Decision的意思是,做的上一個決策會影響到下一個決策,agent做出的action會對environment造成影響,互動使得該agent的下個state受影響,進而影響下個action決策,


model-free RL:資料驅動,通過大量采樣,使用sampling模擬,估計agent的value function,從而優化策略\begin{equation} \pi^{\prime}(s)=\underset{a \in A}{\arg \max } Q(s, a) \end{equation}

model-based RL:最優控制,首先建立具體問題的模型,通過高斯程序(GP)或貝葉斯網路(BN)等方法,然后對問題求解,使用模型預測控制(MPC)、線性二次調節器(LQR)、線性二次高斯(LQG)、迭代學習控制(ICL)等方法求解,\begin{equation} \pi^{\prime}(s)=\underset{a \in A}{\arg \max }\left(R_{s}^{a}+P_{s s^{\prime}}^{a} V\left(s^{\prime}\right)\right) \end{equation}

最開始想把所有演算法分到model-free和model-based中,但是理思路時候感覺RL演算法分類并不是非黑即白的,有些RL演算法間的邊界是模糊的,并不像傳統的ML可以直接分為監督學習和非監督學習(它們之間的界限很明確),

分類方式很多,但是應該每種分類方式都有相交的部分,model-free/model-based,policy-based/value-based/actor-critic,引入DL否,on-policy/off-policy,同步/異步,


RL情景大概為,在某個state下,agent依據policy,采取action,與environment互動,agent獲得反饋reward,agent獲得的reward會指導policy改進,在state'下選擇action',回圈往復,policy不斷被優化,

比如學生 (agent) 上英語課 (state) 選擇睡覺 (action),考了59分被家長一頓打 (reward<0);他上課選擇學習 (action),考100分且被一頓夸 (reward>0),下次就知道在上幼ò肝(state)該選擇干什么了(action),

在RL中Reward很顯然是一種延時價值,比如考了59分(action)后才挨了打(reward),動作后才知道這個動作的價值,所以Reward這個反饋出現在動作執行之后


在什么state下該采取怎樣的action,這就是策略policy,策略分為deterministic policy和stochastic policy兩種,

deterministic policy指每個state都有確定的action,即\begin{equation} \pi(s)=a \end{equation},經典的deterministic policy,如Q-learning,SARSA,TD.

stochastic policy指state下可以采取不同action,它用條件概率表示,\begin{equation} \pi\left(s, a_{i}\right)=p_{i} \end{equation},輸出的是在該state下采取不同action的概率,經典的stochastic policy,如Vanilla/Nature PG,REINFORCE,Natural Actor-Critic.

為什么要輸出概率呢?舉一個例子,比如我 (agent) 站在宿舍門口(state),Π判斷我往前走的概率是0.7,向后/左/右走的概率各是0.1,那么policy會隨機選擇我接下來的action(概率大的被選到的可能性大),這樣agent就能自主移動啦,


RL演算法目的為,優化策略policy,以更好地決策,agent根據policy自主與環境互動,而policy的好壞由reward評估,


RL有兩個基本問題,其一是預測問題,或者叫策略評估(Policy Evaluation),例如對model-free模型中,是給定狀態集S,動作集A,即時獎勵R,衰減因子γ,策略Π,求解該策略的狀態價值函式v(Π),其二是控制問題,或者叫策略提升(Policy Improvment),給定狀態集S,動作集A,即時獎勵R,衰減因子γ,探索率ε,求解最優價值函式\begin{equation} v_{*} \end{equation}和最優策略\begin{equation} \pi_{*} \end{equation},在model-based中還給定了概率轉移矩陣P,


實際環境是復雜的,建模很麻煩,于是引入馬爾可夫性質定義問題,它指,"The future is independent of the past given the present",即未來只與現在有關,

則將RL情景定義為MDP (Markov Decision Process):

上圖中,引數,如S,P,R的定義都用是Markovian的


策略Π也由MDP定義為:\begin{equation} \pi(a \mid s)=P\left(A_{t}=a \mid S_{t}=s\right) \end{equation} ,即在狀態s時采取動作a的概率只與擋墻狀態s有關,與過去狀態無關


狀態的價值v(利用Bellman Equation):

\begin{equation} \begin{aligned} v_{\pi}(s) &=\mathbb{E}_{\pi}\left(G_{t} \mid S_{t}=s\right) \\ &=\mathbb{E}_{\pi}\left(R_{t+1}+\gamma R_{t+2}+\gamma^{2} R_{t+3}+\ldots \mid S_{t}=s\right) \\ &=\mathbb{E}_{\pi}\left(R_{t+1}+\gamma v_{\pi}\left(S_{t+1}\right) \mid S_{t}=s\right) \end{aligned} \end{equation}

其中,G(t)是從當前狀態開始的一條trajectory上的reward,用了discount factor是為了削弱較遠狀態的影響


在狀態s下采取動作a的價值q(利用Bellman Equation):

\begin{equation} \begin{aligned} q_{\pi}(s, a)&=\mathbb{E}_{\pi}\left(R_{t+1}+\gamma q_{\pi}\left(S_{t+1}, A_{t+1}\right) \mid S_{t}=s, A_{t}=a\right) \\ &=R_{s}^{a}+\gamma \sum_{s^{\prime} \in S} P_{s s^{\prime}}^{a} v_{\pi}\left(s^{\prime}\right)\end{aligned}\end{equation}


v和q關系:\begin{equation} v_{\pi}(s)=\sum_{a \in A} \pi(a \mid s) q_{\pi}(s, a) \end{equation}


通常使用v或q評估policy的好壞、以及指導policy優化\begin{equation} \pi=\operatorname{argmax} V_{\pi(S)} \end{equation}


動態規劃DP

動態規劃(Dynamic Programming ,DP)用于解決model-based RL problem,它需要提前知道模型的狀態轉移矩陣P(即知道某個state采取某個action后next state的分布情況),

DP用于求value,它將problem劃分成更小的sub-problem,在回溯更新某個狀態的價值時,需要回溯該狀態所有的后續價值,\begin{equation} v_{k+1}(s)=\max _{a \in A}\left(R_{s}^{a}+\gamma \sum_{s^{\prime} \in S} P_{s s^{\prime}}^{a} v_{k}\left(s^{\prime}\right)\right) \end{equation}

講一講使用動態規劃的Policy Iteration 和 Value Iteration,


Policy Iteration

就是這個圖:

好好看懂這個圖Π是怎么收斂的就懂這個演算法的意思了,這里是deterministic policy

具體步驟silver的ppt講得特別明白,一遍沒看懂,第二遍就看懂個七八十了,寫得很清晰:


Value Iteration

從上面的演算法流程得知,Policy Iteration中value是不斷通過更新的策略得出的,但是,通過\begin{equation} v_{k+1}(s)=\max _{a \in A}\left(R_{s}^{a}+\gamma \sum_{s^{\prime} \in S} P_{s s^{\prime}}^{a} v_{k}\left(s^{\prime}\right)\right) \end{equation}定義得出value 后,其實可以不用顯式地定義policy,直接每次貪婪地選擇value最大的action就可以了


蒙特卡洛MC

蒙特卡洛(Monte Carlo,MC)通過sampling近似求解,通過采樣若干經歷complete episode評估狀態的真實價值,真實價值是多條episode的G(t)的均值,即 \begin{equation} v_{\pi}(s) \approx \text { average }\left(G_{t}\right), \text { s.t. } S_{t}=s \end{equation}

由Incremental Mean推導公式,得出價值函式和狀態-價值函式: \begin{equation} V\left(S_{t}\right)=V\left(S_{t}\right)+\alpha\left(G_{t}-V\left(S_{t}\right)\right) \end{equation}

\begin{equation} Q\left(S_{t}, A_{t}\right)=Q\left(S_{t}, A_{t}\right)+\alpha\left(G_{t}-Q\left(S_{t}, A_{t}\right)\right) \end{equation}

根據是否計算序列中重復狀態的G(t),分為first-visit MC和every-visit MC,后者用得更多,

Policy Evaluation時,套上面的V或Q公式就行了,Policy Improment時,相對于動態規劃的優化\begin{equation} v_{*} \end{equation},MC一般優化\begin{equation} q_{*} \end{equation},在使用deterministic policy選擇action時,不同于DP一般用貪婪,MC一般用ε-貪婪,增加Exploaration,ε會逐漸減小至0便于收斂


時序差分TD

時序差分(Temporal-Difference,TD)通過sampling近似求解,通過采樣若干incomplete sequence評估狀態的真實價值,由Bellman Equation,

\begin{equation} v_{\pi}(s)=\mathbb{E}_{\pi}\left(R_{t+1}+\gamma v_{\pi}\left(S_{t+1}\right) \mid S_{t}=s\right) \end{equation}

這種用TD目標值(\begin{equation} R_{t+1}+\gamma V\left(S_{t+1}\right) \end{equation})代替G(t)的程序稱為引導(bootstrapping),TD誤差為\begin{equation} R_{t+1}+\gamma V\left(S_{t+1}\right)-V\left(S_{t}\right) \end{equation}

對TD,同樣的,價值函式和狀態-價值函式定義為:

\begin{equation} V\left(S_{t}\right)=V\left(S_{t}\right)+\alpha\left(G_{t}-V\left(S_{t}\right)\right) \end{equation}

\begin{equation} Q\left(S_{t}, A_{t}\right)=Q\left(S_{t}, A_{t}\right)+\alpha\left(G_{t}-Q\left(S_{t}, A_{t}\right)\right) \end{equation}

其中,α∈[0,1]


n-step TD

n-step TD就是不只往前看一步了,比如2-step往前多看兩步,此時某個狀態的價值變成\begin{equation} G_{t}^{(2)}=R_{t+1}+\gamma R_{t+2}+\gamma^{2} V\left(S_{t+2}\right) \end{equation}


TD(λ)

TD(λ)為了避免n-step TD不知道怎么選n的問題,引入了引數λ以便于調超參,sampling時G(t)變成\begin{equation} G_{t}^{\lambda}=(1-\lambda) \sum_{n=1}^{\infty} \lambda^{n-1} G_{t}^{(n)} \end{equation}


Policy Evaluation時,套TD的Q公式就行了,Policy Improvment時,TD常見的on-policy是SARSA,常見的off-policy是Q-learning,TD思想是主流RL的基礎,

on-policy是指只使用1個policy 選擇動作實際與環境互動 和 更新價值函式,off-policy指使用2個policy,1個policy用于選擇動作與環境互動(為了保證Exploration;一般用ε-貪婪),1個policy用于優化價值函式(為了保證Exploitation;一般用貪婪)


SARSA

SARSA (state → action → reward → state → action),是TD思想的演算法,Policy Evaluation部分和TD的v(s)一樣,Policy Improvment時使用on-policy,價值迭代公式也與TD一樣,使用ε-貪婪選擇action,其實SARSA就是最簡單的TD思想的體現,


Q-learning

TD采樣模擬求q(s,a),off-policy,想想off-policy這個想法的提出還真是挺妙的,相較于ε-貪婪更能在E&E間取平衡


關于Q-learning受資料影響較大的問題:

Q-learing直接學習最優策略,而最優策略對訓練資料的依賴性較大(后面的演算法使用buffer降低資料的相關性和策略的資料依賴性),所以受資料影響較大,如果訓練資料的方差很大,這可能會影響Q函式的收斂,可能陷入一些特殊的最優"陷阱",比如"Cliff Walk",

因此在實際生產中,如果在模擬環境中訓練強化學習模型,推薦使用Q-learning,如果是在線生產環境中訓練模型,則推薦使用SARSA


Q-learning演算法的tips:


DQN

DQN (Deep Q-learning) 和Q-learning的不同之處就在于使用神經網路來模擬q\begin{equation} \hat{q}(s, a, w) \approx q_{\pi}(s, a) \end{equation} 其中,w是神經網路的權重,DQN向神經網路中輸入state,神經網路會自動映射出q(其實還有一種是向其輸入s和a,自動映射出q),神經網路用CNN、RNN等都可以,

很顯然的Q-learning和DQN都是value-based method

為了適應大規模復雜問題,向RL中引入DL,傳統的RL演算法,如SARSA、Q-learning需要保存一張很大的Q(state,action),當問題規模增大,記憶體溢位,所以不想保存Q表,需要一種從(s,a)到s直接映射到Q的方法,線性近似、決策樹、最近鄰、傅里葉變換、神經網路等都能用,目前最主流的是神經網路,所以向RL中引入了DL,DRL演算法比如DQN,通過神經網路構建從state到action的映射,即向神經網路輸入state,直接就能輸出action,不需要保存Q表,保存網路引數就行,所需存盤空間小了很多,


Nature DQN

DQN中目標Q的計算和訓練Q都是用一個模型計算的,相關性太強了,不利于收斂,于是Nature DQN想到了用兩個Q網路,一個current Q網路用來選擇動作,更新模型引數,另一個target Q'網路用于計算目標Q值,target Q'網路的引數不需要一直更新,過段時間從current Q網路復制過來就行了,兩個網路結構是完全一樣的,才可以復制


DDQN

它也用了像Nature DQN一樣的兩個網路,但是它改動了一點,就是對target Q的計算,Q-learning和DQN在計算target Q的時候都是通過貪婪直接得到的,即取Qmax的那個,但是這容易陷入Over Estimate,使模型有很大bias,

DDQN將target Q的選擇解耦合為兩步,第一步是選擇Qmax的action,第二步將這個action代入計算target Q

對比下

DQN的target Q:\begin{equation} R_{j}+\gamma \max _{a^{\prime}} Q^{\prime}\left(\phi\left(S_{j}^{\prime}\right), A_{j}^{\prime}, w^{\prime}\right) \end{equation}

DDQN的target Q:\begin{equation} y_{j}=R_{j}+\gamma Q^{\prime}\left(\phi\left(S_{j}^{\prime}\right), a^{\max }\left(S_{j}^{\prime}, w\right), w^{\prime}\right) \end{equation}


Prioritized Repay DQN

它也像Nature DQN一樣有兩個網路,它對buffer中取樣改進了一點,不再是隨機取樣了,而是給樣本賦予了權重,TD誤差大的賦予的權重高(因為對神經網路誤差反向傳播有利)


如何根據樣本權重選擇樣本:SumTree,其葉子節點是樣本權重,往上加和,

比如想在[0-42]間抽樣一個優先級,肯定是[13-25]這個區間長的被抽到啊,比如抽到了20,順著樹往下找,就找到12了,而優先級高的區間長,真挺巧妙的,


Dueling DQN

Dueling DQN在Nature DQN上就改進了一點,將神經網路的結構稍微改了一下,將最終Q值輸出變成兩部分,一部分是只與狀態s有關的Value Fuction V,另一部分是同時與狀態s和動作a有關的Advantage Function A,

\begin{equation} Q(S, A, w, \alpha, \beta)=V(S, w, \alpha)+A(S, A, w, \beta) \end{equation}


Policy Gradient

比較主流的是Nature DQN,Prioritized DQN和Dueling DQN,三種演算法思路不相互排斥,可以混著用,當然還有很多對DQN的改進,比如改網路什么的,但是DQN有一個缺陷是只能處理離散的動作,對于連續動作的處理能力不行,policy-based method可以解決這個問題,因為\begin{equation} \pi(a \mid s) \end{equation}是一個連續函式,不同于value-based method的\begin{equation} q_{\pi}(s, a) \end{equation},value-based method還有一個問題是一般都是取max value的動作,直接貪婪,但是有時候現實問題是隨機的,不是每次都要做最好的選擇,這時也可以考慮用policy-based method

就像在value-based method中對q做近似:\begin{equation} \hat{q}(s, a, w) \approx q_{\pi}(s, a) \end{equation},在policy-based method中可以對策略Π做近似:\begin{equation} \pi_{\theta}(s, a)=P(a \mid s, \theta) \approx \pi(a \mid s) \end{equation},然后對引數θ(模型權重)求解優化就好了,以下還是用DL神經網路做近似,其它傳統ML的近似方法應該也可以,

定義一個優化目標,可以用狀態s的價值的期望,\begin{equation} J_{1}(\theta)=V_{\pi \theta}\left(s_{1}\right)=\mathbb{E}_{\pi \theta}\left(G_{1}\right) \end{equation},然后基于這個目標函式梯度上升就行了,對θ求導得梯度,\begin{equation} \nabla_{\theta} J(\theta)=\mathbb{E}_{\pi \theta}\left[\nabla_{\theta} \log \pi_{\theta}(s, a) Q_{\pi}(s, a)\right] \end{equation}


cs285這節課推導比前幾節課多太多了,就手推了一下幾個公式,有時候看看不懂,但是動筆推一遍就差不多懂了


在實踐中,對PG的一些訓練tips:

  • 調非常大batch size(由于MC從trajectory積累reward求期望,PG的variance很大,gradient噪聲也較大)
  • PG學習率比較難調(因為gradient噪聲大),勉強能用ADAM,一般使用PG專用的自動確定學習步長的方式,如PPO/TRPO

REINFORCE

一個最簡單policy gradient:REINFORCE

可見在policy-based method,確實可以講沒有value function V,但是確實有每個狀態的value v啊,value指導policy的引數的優化,


Actor-Critic

結合了一下value-based method和policy-based method

其中,Actor(演員)是策略函式,負責生成action,與環境互動,Critic(批判者)是價值函式,負責評估、優化Actor的表現,即優化策略,


在PG,用MC計算每個狀態的價值,其實也相當于一種Critic,但是場景比較受限(需要多條完整episode路徑),在Actor-Critic中將Critic的功能進一步加重,這里使用了類似DQN中的價值函式


在Critic-Actor中需要對q和Π都做近似,即

\begin{equation} \hat{q}(s, a, w) \approx q_{\pi}(s, a) \end{equation}

\begin{equation} \pi_{\theta}(s, a)=P(a \mid s, \theta) \approx \pi(a \mid s) \end{equation}


具體程序為,Critic通過神經網路計算評估點(可以是state value function / state-action value funciton / advantage function / TD誤差 ),Actor使用神經網路梯度反向傳播(目標函式是Critic的評估點)不斷更新策略函式的引數θ, Critic和Actor的神經網路可以是相同的,也可以是不同的,


DPG

DPG (Deterministic policy gradient),deterministic就是策略不隨機了,在某個state下就采取這個action:\begin{equation} \pi_{\theta}(s)=a \end{equation}


DDPG

DDPG (Deep Deterministic policy gradient) 是使用了雙Actor(這倆結構相同)和雙Critic結構(這倆結構相同),就是DQN到Nature DQN的思想

這個博主就對這四個網路的功能總結得挺好:

DDPG還有兩個挺有意思的點,其一,當前網路從目標網路復制引數w、θ的時候,不是一下全部復制過來的,而是加了一個更新系數(一般取0.1/0.01),即每次改變一點點,其二是在Actor當前網路中選擇動作的時候,為了增加隨機性,會給動作加點噪聲,即\begin{equation} A=\pi_{\theta}(S)+\mathcal{N} \end{equation}

其實DDPG中的Critic當前網路、Critic目標網路和DDQN中的當前Q網路、目標Q網路的功能差不多,但是DDQN中沒有單獨的policy function Π(因為是value-based method),每次選擇動作就用ε-貪婪這樣的方法,在Actor-Critic的DDPG中,Actor網路來選動作,就不用ε-貪婪了,


A3C

A3C中用了多執行緒,一個主執行緒負責更新Actor網路和Critic網路的引數,多個輔執行緒負責與環境互動,得到梯度更新值,匯總更新主執行緒的引數(異步并發),所有輔執行緒定期從主執行緒更新網路引數,這些輔執行緒起到了類似DQN中經驗回放的作用,

A3C中的多個輔執行緒還改進累類似repay experience的問題,就是buffer中的資料相關性比較強,比如一直跟一個人下棋,那水平很難得到提高,應該跟有不同思考方式的多個人對弈,

A3C中的Critic用了Advantage Function作為評估點,\begin{equation} A(S, A, t)=Q(S, A)-V(S) \end{equation},這里的V(s)其實就相當于baseline的作用,因為V(s)代表該狀態價值,是Q關于所有action的期望,代表了所有state-action的平均好壞,如果A>0,則在該狀態下采取該動作會更好,反之則更差,而advantage function中的Q可以用V表示出來,即\begin{equation} Q(S, A)=R+\gamma V\left(S^{\prime}\right) \end{equation},則優勢函式表示為,\begin{equation} A(S, t)=R+\gamma V\left(S^{\prime}\right)-V(S) \end{equation},A3C中用了n-step sampling,則優勢函式進一步表示為,\begin{equation} A(S, t)=R_{t}++\gamma R_{t+1}+\ldots \gamma^{n-1} R_{t+n-1}+\gamma^{n} V\left(S^{\prime}\right)-V(S) \end{equation}


Model-based method

model-based method要知道環境轉換的模型,即用狀態轉移概率(s采取動作a到s'的概率),\begin{equation} S_{t+1} \sim P\left(S_{t+1} \mid S_{t}, A_{t}\right) \end{equation} 和Reward\begin{equation} R_{t+1} \sim R\left(R_{t+1} \mid S_{t}, A_{t}\right) \end{equation}描述

表示環境模型,即表示這兩個問題:\begin{equation} S_{T-1}, A_{T-1} \rightarrow S_{T} \end{equation}\begin{equation} S_{T_{1}}, A_{T-1} \rightarrow R_{T} \end{equation},很顯然,前者是分類問題,后者是回歸問題,用傳統的監督學習演算法求解就可以了,

有模型時,就知道state下采取action后會到什么狀態,能得到什么動作獎勵,就不必和環境互動了,model-based method是從模型中學習,而不是從與環境互動的程序中學習,所以環境模型的表示十分重要

model-based method整體流程:

model-based method一般不單獨用,而是與model-free method結合起來,比如Dyna、MCTS,


Dyna

Dyna不是具體的演算法,而是一類演算法框架的統稱,它結合了model-based method 和 model-free method,即既從模型中學習,也從實際與環境互動中學習,從而更新策略函式或價值函式,Dyna和不同model-free強化學習演算法結合起來,就能得到不同演算法,


Dyna-Q


MCTS

它也是一種比較流行的model-based和model-free method結合的RL演算法,是基于模擬的搜索(stimulate based search),適合海量資料,兩個關鍵點,其一是stimulate,即資料不是真實地與環境互動得來的,而是"模擬"的,其二是search,是利用stimulated data找策略(到底該采取什么樣的action才能使value最大化)

基本MCTS就是根據模擬的輸出結果,按照節點構造搜索樹,于MCTS的樹結構,如果是最簡單的方法,只需要在節點上保存狀態對應的歷史勝負記錄,在每條邊上保存采樣的動作,這樣MCTS的搜索需要走4步

第一步是選擇(Selection):這一步會從根節點開始,每次都選一個“最值得搜索的子節點”,一般使用UCT(Upper Confidence Bound Applied to Trees, 上限置信區間演算法,為達E&E平衡)選擇分數最高的節點,直到來到一個“存在未擴展的子節點”的節點(沒有后續走法),如圖中的 3/3 節點,

第二步是擴展(Expansion),在這個搜索到的存在未擴展的子節點,加上一個0/0的子節點,表示沒有歷史記錄參考,

第三步是仿真(simulation),從上面這個沒有試過的著法開始,用一個簡單策略比如快速走子策略(Rollout policy)走到底,得到一個勝負結果,快速走子策略一般適合選擇走子很快可能不是很精確的策略,因為如果這個策略走得慢,結果雖然會更準確,但由于耗時多了,在單位時間內的模擬次數就少了,所以不一定會棋力更強,有可能會更弱,這也是為什么一般只模擬一次,因為如果模擬多次,雖然更準確,但更慢,

第四步是回溯(backpropagation), 將最后得到的勝負結果回溯加到MCTS樹結構上,


還有一些其它有意思的點:

上述這些演算法的Reward都是基于人工設計的,這就引入了人工知識,也在一定程度上引入了偏差,也有一些在尋求避免人工設計Reward的方法(cs285第一課),第一種是learning from demonstrations,要么是從以往案例中學習,imitation learning,要么是agent基于人類樣例學習reward如何表示,即IRL (Inverse RL),第二種是learning from observing the world,這個每太聽懂,好像就是model-based對環境建模,第三種是learning from other tasks,包括transfer learning(從其它任務中學會知識以遷移)和meta-learning(從其它任務中學會學習的方法)


參考資料

上確界(sup)和下確界(inf)

共軛函式通俗解釋1:線性函式yTx和原始函式f(x)的最大gap

共軛函式數學定義2

Daul Ascent對偶上升法

對偶函式也稱為拉格朗日對偶函式(Lagrange daul function)

Daul Ascent將優化目標的約束條件轉化為優化目標的一部分,

從而將對目標函式在約束下進行優化的程序等價為直接優化對偶目標函式的行為,

s.t.指約束條件

Jocab矩陣(一階導)和Hessian矩陣(二階導)

矩陣求導

LQR和iLQR

貝葉斯

聯合概率、邊際概率、條件概率

特征向量表示了向量的"變換"特征

在機器學習里面,張量通常意味著陣列,沒有實際物理意義,如TensorFlow的意思是:N維陣列從資料流圖的一端流動到另一端的計算程序,

極大似然估計,通俗理解來說,就是利用已知的樣本結果資訊,反推最具有可能(最大概率)導致這些樣本結果出現的模型引數值換句話說,極大似然估計提供了一種給定觀察資料來評估模型引數的方法,即:“模型已定,引數未知”

KL divergence指當某分布q(x)被用于近似p(x)時的資訊損失,即q(x)能在多大程度上表達p(x)所包含的資訊,KL divergence越大,表達效果越差

on-policy和off-policy區別

二者區別在于采樣的policy和improve的policy是否相同

①on-policy只有行為策略,就是跟實際資料產生、實際與環境互動相關的,是訓練中的策略

②off-policy同時有行為策略和目標策略,目標策略根據行為策略優化、調整

Sarsa和Q-learning區別

①都屬于TD演算法(temporal difference RL)(時序差分演算法)

②Sarsa是on-policy,Q-learning是off-policy

③Q-learning的行為策略和Sarsa相同,都是利用該狀態S的即時獎勵和下個狀態S’的Q值來更新S的Q值,但是其選擇的下個狀態價值對(s’,a’)中的a’是根據ε-greedy策略選取的,具備一定的Exploration;其目標策略和行為策略唯一的不同是選取下個狀態價值對(s’,a’)是選的最大Q值的,更加貪婪

全連接FC到卷積CNN

卷積神經網路基礎概念

卷積神經網路channel

池化:減少冗余資訊,看一下這個回答中的卷積、池化的兩個動圖就發現區別了,池化一般選滑動視窗中最值/均值,不是像卷積核一樣帶權重地滑動

DQN

Policy Gradient

貝葉斯神經網路(BNN)

BNN(Bayesian Neural Network)將權重看作服從μ,δ的高斯分布,普通CNN優化的是權重,BNN優化的是權重的均值和方差,所以其優化引數是普通CNN的兩倍,

在預測時,BNN會從每個高斯分布中采樣,得到權重值,反向傳播,

BNN(二值化神經網路)

跟上面那個不一樣,還查資料查串了最后發現,BNN (Binary Neural Network) 的結構和CNN一樣,只是在梯度下降、權值更新、卷積運算熵做了一些改進,其權值、激活值只能為1或-1,

FCN:解決影像分割問題

熵、資訊量、相對熵(KL convergence)、交叉熵

熵是不確定性的度量,是對所有可能發生的事件產生的資訊量的期望,資訊量和確定性成反比,相對熵(KL convergence)一般衡量兩個分布p(x)和q(x)的差異,如樣本的真實分布和預測分布,交叉熵其實就是把相對熵中的常數部分去掉了,作為優化的目標,其實用KL convergence也一樣,

softmax

將輸入映射為(0,1),可視為多分類的概率

書籍PRML(Pattern Recognition And Machine Learning)第十章:Approximate Inference

近似計算有隨機和確定兩種方法,變分是后者,

mean field是統計物理學中常用思想,將無法處理得復雜多體問題分解成可以處理得單體問題來近似,例如在計算某個分布的積分時,可以變成多個較低維度的積分,這是一種可分解的變分近似思想,

變分推斷,實際就是用形式簡單、做積分比較容易的分布,去近似形式復雜、不易求積分的分布,衡量分布差異大小用到了KLD,最小化KLD為優化目標,使用coordinate ascent收斂至區域最優

Online learning:其實就是跑一個樣本更新一次引數

Online learning和batch learning這兩者存在于對機器學習演算法的訓練中,是訓練方法,以訓練神經網路為例,訓練神經網路時需要計算損失函式,根據損失函式計算引數的梯度,從而去更新引數,這就涉及到神經網路學習多少樣本后去計算損失函式,更新引數了,如果每學習一個樣本,就去更新引數的話,這就是online learning,如果學習所有樣本后,再去更新引數,這就是batch learning,顯然,batch learning的優點是容易找到全域最優解,但樣本較大時訓練程序很慢,而online learning則相反,為了折中,出現了小批量學習,即學習小批量樣本后更新引數,這個小批量的樣本數量自己制定,

Boostrap是一種抽樣方法,在ensemble learning中很常見,是指對樣本每次有放回的抽樣,抽樣K個,一共抽N次

反向傳播

回歸問題用于建模和分析變數間的關系,多用于預測問題,如根據某地多年房價預測今年的

LQR

PID控制

sum tree

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/436385.html

標籤:AI

上一篇:使用conda關于虛擬環境常用命令

下一篇:李宏毅2021&2022機器學習

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more