triplet loss后面不收敛_Policy Gradient——一种不以loss来反向传播的策略梯度方法...
目錄
1.前言
2.核心算法
3.Add a Baseline
4.總結
1.前言
這次介紹的基于策略梯度的Policy Gradient的算法屬實比之前的算法沒那么好理解,筆者看完莫煩教程之后還是有許多細節沒搞懂,又看了李宏毅教授的DRL Lecture才弄懂,希望能把他講清楚。
2.核心算法
之前我們所學的DQN,Q-Learning都是通過計算動作得分來決策的,我們是在確定了價值函數的基礎上采用某種策略(貪婪-epsilon)的方式去選取價值最大的動作。仔細一想可以得知其實這種方式是間接的,因為還需要通過價值來選取動作。
Policy Gradient就是一種直接的方法,他可以直接輸出每種動作的概率進行直接的選擇。這里有一點要注意,Policy Gradient沒有誤差,他不通過誤差進行反向傳播,它是通過觀測信息選出一個行為直接進行反向傳播。他利用reward獎勵直接對選擇行為的可能性進行增強和減弱,好的行為會被增加下一次被選中的概率,不好的行為會被減弱下次被選中的概率。舉例如下圖所示:輸入當前的狀態,輸出動作的概率分布,選擇概率最大的一個action作為執行的操作。
而一個完整的策略τ代表的是一整個回合中,對于每個狀態下所采取的的動作所構成的序列,而每個回合episode中每個動作的回報和等于一個回合的回報值
通過以上可知π在參數為θ情況下時 τ 發生的概率:
我們可以看到概率是拆分為我們可以控制的(上圖的紅色部分,與自身actor有關)與我們不可控制的(上圖的黃色部分,來自環境)。
得到概率之后我們就可以根據采樣得到的回報值計算出數學期望。
得到獎勵的數學期望后我們要做的自然就是max這個獎勵的數學期望,如何做呢,就是Gradient Asent(注意是梯度上升不是梯度下降)這個期望。
這里我們要注意兩點:首先R這個獎勵期望不需要是可微分的,即使是不可微分也是可以做這個運算。另外這里用到一個技巧,就是公式推導的第二步,大家也可以直接看藍色框背下來。
后面那項的梯度由于概率中我們只能控制之前我們說過跟actor有關的部分,所以后面那項就可以簡化為:
所以最后整個式子就可以化為:
最后化出來的整個式子也十分地好理解,假如在某個state下采取的action最后的Reward為正的,那就增加最后一項的概率,反之如果Reward為負的,那就減少這項的概率。 所以在這里,如果reward為正,那就最大化這個好的動作的G概率。
3.Add a Baseline
我們來考慮一種情況,在游戲中可能我們的期望永遠是正的,比如一場游戲某個好的動作可以得20分,而不好的動作也能得1分,這樣會導致什么樣的后果呢,我們可以看上圖。
- 在理想的情況,考慮某個state下有三個動作a,b,c,每一項的概率加起來為1,每一項的weight(R)是不一樣的,可能有的大,有的小,乘起來之后經過Normalize,獎勵高的自然概率就高了,這也是我們想要的。
- 在現實中,由于我們采用的是采樣的方法,我們只能是采樣到部分的action,我們可能只采樣到了b和c,沒采樣到a的,但是由于采樣到的b和c概率在上升,沒采樣到的a只能下降,這樣是非常不科學的。
解決的辦法就是讓期望減掉一個Baseline,讓一些不那么好的行為能得到一個負的反饋,也就是讓我們的獎勵減去一個b,這個b有很多取法,只要能達到目的就行。
4.總結
優點:
- 連續的動作空間或高維空間中更加高效。
- 可以實現隨機化策略
- 某種情況下,價值函數可能比較難以計算,而策略函數容易
缺點:
- 通常收斂到局部最優而非全局最優
- 評估一個策略通常低效(這個過程可能慢,但是具有更高的可變性,其中也會出現很多并不有效的嘗試,而且方差高)
參考:
總結
以上是生活随笔為你收集整理的triplet loss后面不收敛_Policy Gradient——一种不以loss来反向传播的策略梯度方法...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tcp c++ bind 端口_计算机端
- 下一篇: 东线苦撑危局的德军“犀牛”坦克歼击车