科學方法學物理與人工智慧(43_80)─實做PPO (Advantage Actor-Critic (A2C)機器人(robot)的強化學習(可設定中文字幕 or English subtitles)

諸位大家好,我是陳華夫,
今天來講這個人工智慧43講啊,
我們來實做這個PPO,就是這個啊,
是近端策略最佳化啊,中文翻譯啊,
近端就是啊,這個策略就是policy,
歐式optimization。
做這個PPO的機器人的強化學習啊,
那我們還是要再先講一下這個啊,
所謂的這個策略優化啊,
策略優化就是這個policy
optimization
policy
optimization這個這個在強
化學習中的位置啊,一切。
前幾講也有提到這張圖,
可是我們沒有詳細講啊,那麼強化學習呢?
當然,它的這個哈是也就是呃,
它的這個我們講這個model
free的這個這個這個
reinforcement
learning啊,也就是強化學習哈。
是沒有model的啊,
沒有model的,
那這一半呢是這個有model的哈,
你可以嗯先設一個model去學習,
不過現在我們大概學習一個未知的環境啊,
大概都是model free,
那就分成兩大類啊,
有一類就是在左邊這一類就是這個
policy
optimization,
然後右邊。
這個就是Q learning啊,
那我們這兩個啊,這兩個啊也算法,
我們都呃過去的這個過去的這個視頻都講
了啊,都講了Q learning,
也就是這個最早哈,我們來講這個他們啊,
difference哈,
Q learning就是在講這個這個
alpha go哈。
他們當初怎麼樣去做這個這個這個Q啊
learning跟這個value這個
這個這個view function就
q function這個通常來講就是
像像這種啊環境啊像這個呃這個打遊戲啊。
啊,那這都比較是低維的啊,
那麼我們從我們43講哈,
就42講前面一兩講就講到這個
Policy哈,
也就是Policy Grading
PG啊,這個就是講PG啊,
就是第一個啊,
現在應用到最火的這個DeepSeek
來Fine Tune啊,是用這個。
這個group relative
policy這個
optimization也就是
GRPO哈,就是諸位可以看一下,
沒有看著回上一節講這個是在Tune大
模型啊,那我們要講機器人的學習哈,
大概就是用這個這個POO啊PPO就是
這個我們這這次的主題是Proxy的啊,
是Proxy的這個。
這個啊,
policy
optimization啊,那我們呃,
為了完整起見啊,
我們這個就因為上一次沒有講什麼叫
A2C,什麼叫A3C,
也沒有講這個PPO啊,
那PPO就是稍微講一下,
那我們這一次啊,
因為我們要實做這個PPO來在這個。
機器人的學習,
所以我們有系統的再把這四個
policy
optimization的這個這個再
回顧一下啊啊,
那我們會來呃解釋為什麼我們要用PPO
啊,
那先講最基礎的這個policy
grading啊,就是PG啊,
就我們前面還專門做了一個視頻在講這個
PG啊。
因為我們要做這個呃PR,
這個PRPO啊,不GRPO啊,
也就是在這個大於上面的應用的時候是
GRPO,
它的基礎事實上哈也就是PPO,
那PPO的基礎又是PG哈,
所以我們都詳細講過PG還做了一節啊。
專門講PG,就等於是PG,
等於是這個強化學習的演算法裡面用
Policy來來做這個演算法的這個最
基本的第一級啊,那它啊,
我們現在只是簡單回顧啊,
諸位講還不了解,
前面有兩三集啊都講的詳細有講。
啊,那那個policy呢,
也就是在做這個呃,
這個像這個J系的是一個loss
function,
那因因為我們要做呃這個policy
policy grading的話就要
求什麼,
求它的grading也就它的微分哈,
就求它的梯度,
那梯度的呃公式就是這樣子那。
梯度啊,
loss function的梯度呢,
事實上是在求什麼啊,
求啊後面這個式子啊,
就是log啊的policy啊,
乘上我們的報酬的的梯度啊,
那這個期望值呢就可以啊,
這個期望值是exact
solution值啊,叫正解啊。
的solution是沒辦法解,
所以我們通常都要做
approximate,
我們就是要近似這個期呃期望值。
假如要近似這個期望值,
approximate這個
expectation value的
話,
通常的方法是採樣n個樣品啊,
你看這採樣的n個樣品,
然後再除以n求平均值啊,諸位假如。
你陌生很不了解啊,
請看前面的這個這個幾個視頻呢,
有詳細的講啊,
可是可是這個是一個最基礎的概念啊,
因為所有的我們等一下會講啊,
所有的A2C和A3C或者PPO、
TPO啊,都是哈要利用這個公式啊,
要利用這個。
loss function的梯度是等
於呢,
我們取這個也就是categoric
distribution,
然後我們求這個地方去採樣
sampling n個樣品,
然後求出這個log
probability,
因為拍戲的是policy,
那這樣子就假如你的n很大。
就基本上這個近似值哈,
近似這個期望值呃也就就很準啊,
否則的話哈,它這個這個呃,
它要它要去近似哈,
近似這個值它有一個variance哈,
也要有一個這個方差,
它事實上那個方差大小是跟什麼。
跟你根號n分之一啊,有關啊,
也就是n越大啊,它的方差越小,
也就是近似的值越準啊。
那麼我們得到了這個loss方形的這個
細檔,呃,這個規定的話就可以來更新啊,
所有的細檔我們就在。
在remind各位也也就是提起在強調
一下這個細打事實上是這個neural
network的什麼啊權重還有它的
bios啊也就是它的東西呃bios也
就是偏差,
所以當你得到這個就是把所有的權重跟這
個bios都更新,
然後把這個loss不斷的減小。
那就會得就會得到一個很好的
policy啊,
能夠呢來來這個來把這個model來能
夠玩遊戲啊或是能能夠嗯訓練機器人啊走
路啊之類的那什麼叫做A to C呢哈,
那A to C裡面就是
advantage actor
credit啊。
這個所謂的actor哈
creditor,那因為你看到沒有,
這邊a two的意思就代表什麼是兩個
advantage,呃,
然後有個actor,
那等下有個a三c呢,
那就是a synchronous
advantage,
這個這個actor也就有三個a啊,
現在諸位要了解這個a two啊,一般。
在電腦裡面to好像是這個go to的
to,不是這個to是兩個三個的意思,
那麼那麼這個呃這個a to c是要改
善這個policy grading,
也是我們剛講的這個policy
grading是loss
function啊,
這個loss function是這樣
子,
然後你approximate也就是我
們剛剛講的這個sampling。
那這個呃,這個actor的啊,
這個policy grading呢,
你看這跟這個不太一樣,
我們在這邊是什麼,
在這邊是它的return啊,
你把這個log
probability啊乘上
return啊,
就是你的loss function,
可是在這個嗯呃a to c哈,
也就actor這個這個。
這個framework啊,裡面呢,
這個policy grading呢,
事實上是是你的log
property啊,
log probability
log probability
log policy乘上什麼乘上的
advantage那麼這個是
actor的啊,
那這個這個value
function update啊,
這個呢是credit啊,
也就是你的批評者啊,就這裡面的c。
這裡面C呢,它是這樣寫,
這是兩個不同的這個什麼network
啊,那我們等一下會看它用處啊,
它們兩個不同的呃用處啊,
那總之在這邊的參數是C的,
在這邊的參數是是W,
所以當你得到這個呃。
這個呃,W的這個梯度啊,得到W的梯度,
那麼得到啊,這個細的這個梯度啊,
就可以來update,
就可以這個來更新這兩個網絡的參數啊,
那為什麼要兩個網絡呢,
這個這個這個下面的圖形就。
可以告訴你啊,因為你看這個環境哈,
我們不是採取了一個動作嘛,
這個就強化學習裡面採取取一個動作給這
個environment的環境,
那環境就會產生一個什麼,
產生一個state啊,
也就是會產生一個狀態,
環境產生那個狀態就進入了第一個這個網
絡哈,那樣這個actor的網絡啊。
那進入這個網路呢,就會產生什麼,
就會產生啊state啊,
就會產生一個action啊,
那這個action呢,
就就會進入到哪裡呢,
進入到這個的這個這個網路,
你現在有一個state啊,
有狀態也有action,就會產生什麼。
就會產生這個loss
function啊,
其實這個loss function就
是這個a啦,
也就是advantage啊。
那你的,
所以說這個呃actor啊actor的
這個這個這個loss
function呢,在第一次啊,
你沒有辦法,你沒有辦法產生這個。
這個advantage啊,為什麼?
因為你只有一個什麼,
你只有一個state進來啊,
那你要有個state進來產生從這個網
路產生這個什麼產生action,
這個action跑到這裡面state
action兩個才可以產生
advantage,
所以在這裡面你沒有產生。
那你沒有產生,
那你要怎麼樣去求這個loss
function來update呢?
那你就是使用這個地方產生的啊。
我們再講一遍啊,
因為你一開始來一個state啊,
然後這個這個放入我們的網絡裡面產生一
個action啊,
然後這個action就放到我們
critics裡面去啊,
就產生了這個這個。
這個action你有s跟a都有,
所以就產生了這個advantage,
這個advantage定義就是跟這個
一樣啊,啊你一般定義是q減v,
可是你是平方啊,這個v減q也是一樣啊,
然後就產生了這個這個這個loss
function,
然後也產生了這個advantage
function。
那這個再帶到我們的裡面去啊啊,
就會產生什麼,
就會產生產生這個這個actor的這個
這個neuralnetwork啊,
這裡的loss function啊,
所以這兩個loss function
的這個grade梯度都有了,
就可以產生什麼啊,就可以產生各種更新。
啊,這個就是他的agree啊,
我就這看起來有點啊復雜confuse
啊,不過沒有關系,
我們等一下會給諸位看這個城市嘛,
就其實假假如我們把這個A放到這裡就比
較簡單了哈,然後呢它是寫成兩個好,
那也就它跟這個什麼,
它跟這個我們這個呃純粹的這個PG呢差
異就是說。
它的log probability哈
是乘上這個什麼就是乘上它的
return啊是乘它的報酬,
那可是在這個advantage
actor credit呢,
這個報酬就變成a,
那a其實哈啊也是跟報酬有關,
因為q function也就是所有的
這個報酬。
啊,把它加起來,
那就是q function啊,
諸位要去看我們前面的定義啊,
這個這個這個有好幾個視頻都這樣講,
那q function你把這個a積分
起來就變成v啊,所以說呢,
這個advantage事實上也就是q
跟v之間的差異就對好,那這個這個這個。
這個看起來啊,很很confuse啊,
也就是大家看的很不懂,
可是我們用城市諸位就就看得懂了,
也就它的動線啊,那它的動線啊,
也就是說你看啊,我們就是從第一行哈,
也就是要怎麼樣產生這個action啊,
要怎麼產生這個action啊,
所以你看到沒有。
我們進入這個actor的這個
actor的這個啊,也就是它的什麼,
就它的network就這個。
假如你把這個actor的這個網絡裡面
加上個state,
這個state也就是你
initialize的哈,
也就是一開始是initialize的
這個state這個s零。
那以後呢,
因為它是在一個loop裡面的,
也就是每次每次經過這個環境來的s啊,
你actor的網路啊,
neural network接受
state就就得到了什麼就得到了
action probability
啊,
這裡要解釋一下啊,
因因為我們這個網路的最後一層啊是有什
麼。
是有個softmax,
我們就把它變成什麼,就變變成啊啊,
所以所以這個是為什麼我們講
action的probability,
並不是action這個這個
action的假設以這個couple
來講也就是向左向向右嘛,
可是我們把向左向右的這個這個這個數字
呢經過這個activation
function啊,
softmax就變成
probability啊。
啊,因為我們是Policy啊,
我們我們是要用這個Policy這個這
個Algorithm並不是用它的大小
啊,
假設我們沒有經過Softmax就會用
就會得到什麼就會得到這個Q啊Q
Function就是Q
Learning也就是沒有經過
Softmax變成
Probability好,
我們在這裡變成Probability
以後呢,然後呢這個。
這個probability啊啊,
也就是這個這個呃,
要把它再經過某一種處理啊,
要因為我們要把它放到哪裡呢,
要放到這個環境裡面啊,
因為你現在有action要送到這個環
境裡面啊,去產生什麼啊,
產生下面一個state。
也就你有action,
假如送到環境裡面,你就會得到什麼啊?
next date啊?
那為什麼需要這個next date啊?
這個next date也就是這個在這
個我們講的這個這個要去算這個這個q
w減的v w的時候是怎麼樣呢?
你可以用time
difference也就用bell。
用Billman Equation啊,
也就是可以把這個事情呢變成什麼變成
current state加上
next state啊的這個伽馬就可
以得到什麼啊,
就可以得到advantage
function,
因為你現在是你現在是這兩個啊V跟qw。
啊,那你要去呃,假如這樣計算,
你要去把V找到Q找到麻煩,那這QW呢,
假如說我們用啊equipation來
approximate的話,
就變成什麼,
就變成current state啊,
也就是vw啊,
加上一個伽馬乘上這個v的next
next state v啊,
這個諸位要回回去再。
看一下前面啊,
也就是他們difference的這個
這個計算呢,
也可以算出來這個advantage啊,
所以說在這裡面就我們先把什麼先把
nextday找到啊,
那麼你把這個這個day的這找到是為了
等一下要算advantage啊,那。
再回來就剛才這個action出來以後
呢,就放到critic啊,
你你看到沒有啊,這個是actor,
這是actor啊,這是critic。
現在我們把你剛才得到的這個
action做兩個動作,
第一個是得到next day,
第二個就放到critic裡面啊,
放到critic裡面state,
就得到了state value。
啊,那你要注意這個是credit,
這個是呃,這個是actor。
我們剛剛講的說,
你必須你要算這個算這個這個呃
advantage的時候,
第一個沒有辦法算啊,第就是actor,
他沒有辦法算這個advantage啊
啊,因為他沒有什麼,
他沒有這個next day啊啊。
他沒有辦法算啊,
所以說要要由這個要由critic裡面
得到next date value,
然後呢就是可以算advantage了
啊,你看要怎麼算advantage呢,
也就是你要把這個這個action啊得
到的這個state啊啊你要要得要得到
的這個state呢要要怎麼樣。
要放到這個什麼credit裡面去,
就得到next state
value啊,
就可以得到next啊,
從它這裡面要得到啊,
你這邊得到的是你這邊state放進去
得到的是action
probability啊,
它這裡啊state放到我這裡面啊會。
會得到state value,
然後從這個這個next state哈,
我們剛剛看到了這個next
state啊啊啊,
從這邊得到action得到這next
state呢,
就得到next state
value好,
那麼這個advantage
function就可以算了,
advantage function
怎麼算呢,就是reward。
加上伽馬乘next state減掉什
麼啊,就減掉current
state,
就現在state。
這個我剛剛講的這個就是他們
differences哈,
這個這個的算法啊,也就是你看到沒有,
我們在算這個的時候不是走這個公式,
是把這個地方變成了呃next
state current
state乘上一個伽馬啊。
就比較簡單了,否則我們還要去叫啊,
去叫這個去去叫這個Q方
function啊,
那Q方function就需要我們還需
要去去做做一個這個什麼呃做個網路或做
個table要要去存它哈,
可是現在就不需要了啊,現在就簡單那,
然後你得到了這個advantage呢
就。
就可以去算它的這個就成了
advantage這個就公式啊,
重點是說啊,
critical loss也就是要做
什麼advantage square
啊,
所以就就是我剛剛講的這個其實也就是a
呀平方嘛,你看它在這裡得到了什麼。
得到了這個這個這個advantage,
放到actor裡面去算,也放到哪裡呢,
也放到credit裡面去loss去算
啊,
那然後就得到什麼就得到這個這個你的
reward就不斷的加哈,
我們為什麼要去做這個loss呢哈,
因為在啊在這邊啊。
諸位要去看上面的圖形啊,
你只要得到loss以後,
我們grading啊,事實上啊,
我們現在都有很多方式都可以寫啊,
就是就叫它得grading,
然後再叫它呃backward啊,
也就是說,然後再做grading,
再做這個optimizer這個
step啊。
啊,就會更新了所有的這個什麼,
就是這個actor啊,
在這邊呢也更新了,
然後在這個credit也更新了啊,
就是這個每次都更新,
然後就不斷的這個這個重復啊,
這樣子做就會讓什麼讓所有的這個
loss啊就變小啊,
這個就所謂的它的algorithm。
那麼我們在這順便講一下,
也就是A synchronous
advantage actor
critic就是A3C,
A3C跟A2C我們今天講的有什麼差異
呢?
事實上是啊是沒有差異啊,
它是用這個parallel的這個多個
代理啊來非同步的啊,
也就用兩三個代理啊。
啊,非同步就呃來更新策略啊,
因為不能同時更新策略啊,也就是策略啊,
在不同步的時候更新,
那那然後策略就會怎麼樣更穩定啊,
更快的學習啊,這個就是所謂的A3C哈,
我們現在就要講到的是這個A3C啊,
A2C哈,我們講的是這個地方。
啊,
那然後我們再來講一下這個這個這個
TRPO啊,
TRPO也就這最下面這個啊,
最下面這個這個中民就叫做什麼就叫做呃
trust region信賴策略的最
佳策略演算法好,
那我們為什麼要採取策略呢哈這個。
這個演算法呢,也就是說,
主要的還是要解決這個PG的問題啊,
PG這個是非常有效啊,我們也有例子啊,
它可以,它可以在可以打到一千多分啊,
也就是它根本就不會打,
可是它最大的問題是它不不穩定啊,
它不穩定的時候也就是說因因為我們就是
用這個。
這個loss function來做這
個sampling就update啊,
那可是假設有時候update的太太激
進了啊,就會怎麼樣啊,
它會crash crash的意思就是
說本來它的這個呃技術很好可以打個
500分1000分哎就又打回20分鍾
啊,那為了要解決這個問題呢,
所以它來了一個這個這個
advantage啊,
這個advantage中間也就是會有
什麼。
啊,
它不是純粹的用什麼用你的return
來update這個policy,
它是return裡面又減掉了這個
value呢,
也就是我們在這裡啊啊用這個
advantage啊,
它是next state value
減掉這個什麼state value啊
啊,
也就是這個v啊。
裡面有把這個V減掉我們的return,
嗯,你這個return假設說這個太啊,
這個報酬太多,
但什麼就這個策略變化的很快啊,
所以他就減低這個是A to C的,
要使這個PG穩定啊,
這就是Party Schooling
穩定採取這個做法,
那這個Trusted Region的
做法呢?
他也就是呢,他覺得啊,
你這個像這個拍戲的也是他的策略嘛啊,
是老的策略啊,這個呢,這個是新的策略,
他認為老策略新策略呢,不要啊,
這個這個這個變化的很大啊,所以說呢,
他就是在這個cos這個。
這個cost function裡面呢
啊,
它呢就loss function裡面
呢,
它就是要把這個事情希望啊,
它們假如新的這個策略要變化的話是變化
在什麼在這個小於某一個這個範圍啊,
delta是很小的數啊,
接近零很小的數。
那這個DKL啊,
也就是divergence啊,
就會要去看以前的哈,也就是說啊,
假如這兩個策略啊,
這個這個都是distribution
啊,
這兩個policy這兩個policy
哈就distribution,
他們之間的差異度呢太大啊啊會不穩定啊,
所以我們希望。
產生的新的策略呢,
是跟它的差異只是在這個什麼正負
delta裡面啊,所以說呢,
這個TRPO不是使用普通的梯度下降啊,
跟這個PG不太一樣,就直接求什麼,
直接求它的規定,而是解決受限啊,
我們求規定呢,不止求規定,
我們還希望這個規定呢,不要變化很大啊。
啊,就把它局局限在這個什麼小塔裡面好,
那可是這個這個這個其實很難做做到哈,
也就是說呃呃,
你雖然說這個這個可以讓這個PG啊就是
策略這個規定呢。
穩定可是你的難度啊增加很大,
這個難度增加很大也不見得就可以實現更
穩定的這個參數更新啊,
所以這這個就來到了這個來到了這個這個
PPO啊,那我們講的是希望這個啊啊。
不要變化太大啊,
那可是他採取的這個做法呢,
實際上我們要寫城市要來
implement很復雜啊,
就代價很大。
那PPO就改進了TRPO啊,呃,你,
你不是要這個,你不是要用這個,
你不是希望這兩個哈,
你看這個拍戲的拍O的啊,
在這邊拍戲的拍O的,
你不是希望他不要很大嘛。
啊,那你是採取這個約束的做法啊,
那PPO呢是採取採取clip,
它就直接呢把這它求這兩個的比啊,
然後呢啊就把它怎麼就把它把它刪掉啊,
也就把這個這個這個值假如小於這個。
呃,
小於這個一減這個這個這個呃這
epsilon是很小的數嘛,
這個假假如是一的話啊,
這個epsilon就等於零嘛,
就假如小於這個啊,
那就是把它等於一減一減epsilon,
假如大於這個。
呃,
這個就用就用什麼就用一加一加一加啊,
這個是超參數,我們可以設啊,
也就是說它可以達到它用這個這個
clip就是我們講的用這個剪裁哈,
它是用剪裁的東西來限制啊策略更新,
也就是更新的不要幅度太大,
是用這個clip而。
而這個啊TRPO呢,
是用用這種啊復雜的辦法啊,
是想辦法限制在它的這個這個
divergence這個
Coolback No Noble啊
Noble啊這個東西要來做這個事情。
所以說呢,
PPO就會得到這個TRPO的好處呢,
可是它的做起來也比較簡單啊,
所以說你現在看到沒有哈,
PPO結合了advantage
function哈,它也是用a,
所以說呢,
它有advantage actor
critic的好處,
結果它有這個有這個有這個有這個
clip啊,它也有什麼。
有這個TRPO的好處啊,
然後計算起來呢也很簡單啊,
所以說PPO呢就變成這個呃可以取代
PG啊穩定啊,就是在在這個。
啊,
在這個policy
optimization裡面,
雖然有很多種的這個這個PG的這個
policy gradient的這個
變種,
最後啊最流行的啊最有效的還是PPO啊,
對,那我我們就解釋了為什麼啊,
基本上啊很多的這個軟體哈都有PPO的
這個啊。
也就是它是這個強化學習裡面啊,
algorithm裡面啊最重要的這個
policy
optimization的最好的哈最
佳的algorithm啊,
所以說呢啊結論呢就是PPO有什麼優點
啊,PPO基於策略優化的演算法,
它並不是基於這個DQ哈。
就是Deep Q Network的方
法,
Deep Q Network也就是走
這條路啊啊,
那麼PPO的好處哈就是說它可以呃來完
成呃來完成控制機器人的手臂或是走路哈
的任務,
這些東西都是高維度的high
dimension,
然後它是continues哈。
然後呢,它可以在穩定性和性能中間啊,
穩定性也就是stable啊,
你就要訓練了半天,它又本來變得很好,
結果又回來了,又變差了。
然後呢,
它的quality啊,也就是說啊,
它本來是什麼不能夠去抓取一個東西,
舉個例子或者本來不能夠走得很穩,
現在走得很穩,這個叫做性能。
可是這個性能呢,假如沒有穩定性,
就是前兩天還走的很好,怕又走的不好啊,
所以這個PPO在這兩個之間取得了良好
的平衡,
所以說我們所以說我們在在這個訓練機器
人的時候都是用PPO,
也沒有用TRPO,
也沒有A2C或者A3C那麼。
基於減氣的目標哈,
也就是在講它的cost,
它的cost function也是
objective function,
就是目標函數呢,
它是有這個有有clip啊,
也就是間接不要變動太大,
目標變變動可以防止災難性的策略更新,
這是我們在原文中遇到的問題,
所謂災難性的策略更新也就是穩定性的問
題,昨天他還。
走得好好的,結果我們一訓練,不訓練好,
一訓練就怎麼越了,就反而摔跤了,
走得不好。
那PPO通常哈,
因為有這個有這個啊,
有這個有這個clip的這個功能在目標
函數裡面,所以基本上這個新的策略呢。
跟這個舊的策略呢,不會差很大。
昨天假如就可以走的很好,
今天也不會馬上就摔了啊。
這個就是所謂的什麼啊,它的穩定性啊,
這個拆災難性的也就是我們我們傳我們呃
訓練這個半天啊,昨天走的好,
今天就走的不好,這個叫災難性的更新。
用PPO就不會有這個問題啊。
都是策略呃,
policy的方法就連續空間呢,
有很很有效。
所謂連續空間的話,
你看像像這個什麼,像走路啊,
還有這些東西,它是連連續走的啊。
那我們下圍棋啊,
那個就是discreet哈,
那個是就用這個什麼。
用這個是比較更適合的啊,
就離散的動作空間呢,
discrete動作空間好,
那麼我們確定哈是用這個這個PPO啊做
我們的演算法,
那確定以後我們就要要確定機器人的模擬
環境啊,我們就是你今天有一個很好的。
這個策略哈要訓練很好的策略,
我們都是先在一個模擬環境下面做哈啊,
你假如一開始就把它放在真的機器人上去
啊,
那到時候撞撞牆啊摔摔跤哈啊啊就就造成
機器人的危險啊,
那所以說我們基本上都是在這個啊。
Simulator啊,
就是模擬器上做那Simulator啊,
至少有三類啊,也就是第一個就是拍呃,
還有一第二個就是沒有啊,
第三個是給Robo啊,
這給給Robo啊,還沒有啊,
這個這個啊,像這個給Robo。
的話,
通常在Windows上是沒有
implement的啊,沒有標準的,
在呃,在在在烏烏烏邦兔有啊,
那這個呃也是哈,
也在這個Linux上面可能有啊,
在Windows上安裝哈都比較困難啊,
那可是拍bullet就沒有問題啊,在。
Window上的拍啊,輕量級的,
然後呢,所謂輕量級就就是它沒有,
它可能沒有這個呃給Roper啊,
還有這個沒有的這個圖形界面之類的哈,
那麼它是可以快速的啊來設計這個機器人
的策略啊,
所以start starting
point是它。
啊,
這個做好了以後再想辦法在或是給
Robo裡面去用啊,
所以我我們今天這個實作也是在這個拍啊
的這個拍玻呃拍玻璃的這個這個這個環境
下做那麼。
這個這個環境下做的話,
我們通常是有是有這個考量啊,
假如你馬上你這個呃策略已經訓練的非常
好了啊,馬上要轉到真的機器人上啊,
可能就是要選取這個給這個這個模擬環境,
假如說你要還是在不斷的。
做實驗啊,
還要做這個迭代的話是用拍玻璃的,
如果是精確度要很高的啊,
也就是這個要去抓取精確東西,
你可能就是沒有沒有救口,可是啊,
一開始啊就要從建議就從這個拍玻璃的啊,
那這個我們我們在做這個啊。
環境的模擬的時候呢,
事實上是你我們可以用這個的他們提供的
啊,這個這個這個啊,
提供的什麼提供的
environment啊,那可是呢,
你說我現在要自己要做啊,
自己要做這個環境是不是可以呢哈啊,
也是可以的,我們下面就有就有個例子啊。
也就是你今天做了一個類啊class啊,
你說我這個是custom啊
environment,
然後呢你就把它說我的這個這個嗯
action space啊這個
opposition space是什
麼是要100呀還是4啊,
然後你希望怎麼怎麼總之也就是說哈你可
以制定啊這個這個什麼有類型的這個這個
dynamics logic啊。
它的reward是什麼?
假如你往前走啊,得五十分往後走,
得二十分啊,諸如此類的事情,
最後你就給就給他講說,
我這個環境也就是custom
environment啊,
就就是EMV,
然後你就可以輸入啊我們的model裡
面好,
那我們現在實做啊一個PPO的這個
Robo訓練啊。
那這個呃,並不是customer啊,
是啊,
是用什麼是用這個這個這個我們叫出來的
這個environment啊,
那叫出這個environment有很
多種啊,
那啊你可以用啊在這個這個原版啊我們這
個。
這個這個原版的這個哈啊,
我們這一篇文章呃,
也就是原版的這個去找到原版的這個的時
候呢,
它這個它的environment設定
是用這個什麼是用呃用stable呃
base三啊,它就。
stable base三啊,
common啊,
然後environment
utility,
它import了這個make
vector environment,
可是我去執行的時候呢,
就會發現說這這條不行啊,
這一條每次都出錯啊,
這個make vector
environment,
這個是stable啊,
stable base三,那我改變什
麼,
我改變成這樣子哈。
就是import這個拍的啊,
Envelopment S啊,
假如用拍啊這個這個
Envelopment S的時候呢,
那我就我們可以呢啊來做來做這個這個
Initialize啊,也可以啊,
那當然也可以用這個這個Gym
Make啊,因為我們這邊有。
有put gym啊,你用這個
email,
呃,
bully的environments
來做environment,
用gym也可以啊,
這個用用這個ant啊,
這個ant這個這個是一個螞蟻哈,
諸位可以去在網上看到這個圖形啊,
然後你就說我要用virtual
there啊,
然後你就說environment
cert。
就設定這個,
然後就做Environment
Reset,就得到第一個State。
那第一個State就可以什麼呢?
就可以啊,你這個這個就會怎麼樣,
你把這個放放進去哈啊,
Environment就可以得到這個
PPO的Policy的Model啊。
然後呢,現現在一切都很方便啊,這個。
然後你就model就開始要勸他,
就是你model去認啊,認什麼呢?
這個這個的哈,也就是一千個啊,
這個是多少啊?
十十萬個啊,
十萬個以後呢,
經過這個他就會去去不斷的update
PPO啊,也就是我們剛剛講的啊。
剛講的剛講的這些東西哈,
也就是他把這個loss
function呢去做grading,
然後去update他們所有的什麼權重
跟什麼跟這個bios啊,
所以也就是這一句話就可以了,
所以我們剛剛花了很多時間去講什麼叫
PPO啊,
那執行起來也就是你把model放在這
個PPO,
這個叫做machine
learning啊。
啊,這個MLP的policy啊啊,
然後呢,這個environment哈,
這個這個verbose是等於一哈,
然後呢,你就叫model learn
哈,
這個model因為剛才已經是PPO的
這個model,
然後你說是要走幾個回合。
然後呢,
做完了以後就把這個Model
Safe啊,就是PPO End啊,
就這個螞蟻,
然後呢就可以灌到這個你的機器人上面了
啊,那我們那然後來來看看這個這個,
然後我們就打出來這個Model
Trend Safe的啊,
Safe裡為什麼因為這個沒有錯嘛啊,
那就是成功的。
好,我們看看這個輸輸出哈,
這個輸出也就是說啊,
它是這個什麼用Cuda Device
啊,
因為我我的電腦上面有GPU,然後呢,
它是用Dami的Vector
Environment,
然後它打出第一個來哈,
也就是說你的這個什麼啊,
這個這個這個什麼。
什麼這個FPS哈,
這個total的time step是
2048,然後它第一個哈,
第一個打出來,
我們看這個loss是多少呢啊,
loss是0.637哈,
因為你就要做10萬啊,10萬個嘛哈,
它就不斷要打的很長啊,最後呢,
這個loss就是變成0.
啊,這個loss變成0.574啊啊,
這個loss有有降低,
那這個這個這個最後他講什麼啊啊,
這個value是2.011哈,
那這個是11哈,
也就是說他的這個啊這個。
這個loss有有降低啊,
那然後呢就是model
trained safed
successfully啊,
這個也就是用PPO來做的這個標準啊,
也就是你設定設定環境,
然後來把這個model設好啊,
把這個model設好就叫它model
learn啊,learn多久啊。
結果就出來了,
這個PPO的這個這個model就可以
用,那麼通常來講啊,
這個PPO的這個model啊,
在訓練的時候你看它打出來的是是什麼啊,
它有這個很多超參數啊,有超參數,
它對PPO是對超參數是啊是這個。
嗯,影響很大啊,
也就是你把這我們呃照經驗來講這個啊,
這伽馬啊,
也就是在這個loss方序裡面,
我們有設這個有設有設這個設這個設這個
伽馬。
啊,這個伽馬大概啊,
基本上啊是0.95啊,
995到0.99啊,這個值是最好。
那還有這個learning rate
啊,
你也要這個啊,就0.95到0.99。
learning rate呢,
最好是一乘十的負四啊。
為什麼呢?
因為你叫learning學的太快啊。
這個就是會不穩定,
覺得太慢就就花時間嘛,
啊通常是設這個東西,
可是這個這個只是啊我們一般的想法,
那有沒有好辦法來真的找到是最佳的這個
learning rate,
最佳的超參數是多少呢啊,
也就是run run這個城市哈,
run run什麼城市就是就是他會自
己調整學習厲害。
折扣因子,
然後決定什麼決定這個這個超參數啊,
最佳了啊,像我們這個哈,
像我們像我們這個哈,這個這個式子跟啊,
跟上次是完全一樣啊啊,只不過呢,
這是因為我們要找到最最佳參數嘛哈。
這個,所以說呢,要把這個在這裡啊,
study啊,
run optimization就是
uptuner啊,
create study啊,
然後就我們要maximize,
然後呢我們就要叫它做個十次啊,
也就是當你這個model做完了以後我
們再來run這個什麼啊。
再來run這個這個哈啊啊,那然後呢,
十次然後打出這個這個
parameter啊,
那這個要花點時間哈,
這個就是打出來了啊啊,就一次兩次三次,
一二三四五六七八九十,那他說最好的。
參數是呢是0.0023啊,
因為我們剛剛講的一般是0.00191
的負4次方啊,這樣子就節省你訓練了,
否則你在那邊試了半天,
你也不曉得到底是0.001好還是
0.0012好,
這個啊就可以省了很多時間,那麼。
我們剛剛講的哈,
就是這個都是在學這個學這個model
啊,學這個PPO的這個model啊,
然後我們調整參數啊,怎麼怎麼的,
學了一個非常好的要怎麼樣放到真實世界
呢哈,也就是你把這個學好的哈,
這個model的這個這個end
save啊,
把它所有的這些所謂save就是它的這
個place的wait啊。
還有所有的這個什麼BIOS啊,
存在這個檔案啊,
這個檔案叫做PTH啊啊,
這個通常啊有CKPT啊什麼反正有很多
名字啊,就就是Model的名字,
然後呢你就要要灌到這個這個你買的
Model啊,你看你是哪一種機器人哈。
這個機器人它有個interface啊,
你可能啊用這個用這個用這個WiFi呀
還是怎麼樣,
反正就是把這個model灌進去,
然後呢再去執行什麼啊,
再執行這個interface的這個哈
灌進去的這個。
它在現在就是這個是在機機器人裡面的啊,
就把它說你要run啊,
load policy的這個位置這個
這個權重,然後你就說如果把它run啊,
這個真的機器人就動了啊,
那假如情況不理想啊,
再回到前面這個整個的這個circle
啊,就是重新設立這個policy。
好,那我們結論呢,
就是機器人的強化學習啊,不僅涉及理論,
也涉及實驗啊,
我們理論就是前面講的這些PPO啊,
這理論然後實驗就是模擬啊,
剛剛講的是這個拍bullet啊,那啊。
這通通都要做啊,
所以我們也定義了這個任務啊,
也就是就是這個這個我們的這個這個目標
函數啊,
這個object的function,
然後呢我們有設定的環境啊,
environment你自己也可以設
定你的自己的環境啊,
然後選擇這個嗯正確的算法,
正確算法我們就選擇的是PPO。
然後我們偵測哈,
我們用各種的辦法來來看它它是不是有效,
最後會灌到什麼實際的什麼季節裡面啊,
在這邊啊有資源呢,
也就是沙等含這個巴頭的這個強化學習哈
啊,有2022版啊,
還有各種的paper,
那麼各種的韓式褲哈。
像這個Stable Base
Line 3跟這個拍Bullet或者
是Mujoco或者是Jim或者我們呃
我們講的這個呃給Robo啊這個作為這
個可以下載啊那我們這一篇的文章大概都
是呃基於這個網頁啊作為可以在上面看到
這個城市啊就看到細節。
好,謝謝諸位。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注