999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Policy Gradient算法的研究與實現(xiàn)

2019-12-11 11:25:48劉俊利
現(xiàn)代計算機 2019年30期
關鍵詞:定義動作優(yōu)化

劉俊利

(西南科技大學計算機科學與技術學院,綿陽 621000)

0 引言

強化學習[1]是機器學習的重要研究方向之一。不同于傳統(tǒng)的監(jiān)督學習和非監(jiān)督學習,它對數(shù)據(jù)沒有任何要求,只需要通過接收環(huán)境對動作的反饋并據(jù)此不斷對行動方案進行改進,就能讓機器逐步學會一項新的技能。按照基于值和基于策略兩個方向可以對強化學習到的眾多算法進行分類。基于值的(Value-Based)算法其本質上都是學習價值函數(shù)Q(state,action)[2],在具體應用時,需要先確定state(當前時刻的環(huán)境狀態(tài))和action(當前時刻的行為),然后再根據(jù)Q(state,action)選擇價值最大的動作執(zhí)行。基于值的算法是一種間接選擇策略的做法,而基于策略的(policy-based)算法是直接對策略進行建模,不需要學習價值函數(shù)Q通過模型即可輸出下一時刻的動作。Policy Gradient算法是強化學習中基于策略的經典算法之一。本文將分析Policy Gradient算法的原理及公式,然后借助Tensor-Flow[3]訓練框架的算力,最終完成該算法的運行與實現(xiàn)。

1 Policy-based簡介

value-based和policy-based是機器學習的兩大類算法。value-based方法采用的策略(例如ε-greedy[4])是確定性策略,即無論什么時候,只要給定一個狀態(tài)si就有唯一一個動作ai輸出與之對應;而policy-based方法采用的策略是帶參數(shù)θ的策略π(一個參數(shù)化函數(shù),具體公式見式(1)),不斷調整θ并利用策略評分函數(shù)J(θ)(具體公式見式(2))測量不同θ下的策略π的質量,待J(θ)函數(shù)值達到最大,此時對應的策略π即為最優(yōu)策略。

policy-based方法和value-based方法的使用對比效果如圖1、圖2所示。其中√表示寶藏;×表示陷阱;箭頭表示策略。在運用value-based方法時,由于該方法的確定性策略和迷宮的對稱結構,導致當智能體處在灰色格子上時無法分辨自己處于哪個灰色格子上,所以最后學習到的策略如圖1所示:當初始位置在第一個白格子上,就會陷入死循環(huán);而運用policy-based方法時,因為學習的策略不是確定輸出一個具體的動作,而是輸出在這個狀態(tài)下可以執(zhí)行的動作的概率分布,所以即使在相同狀態(tài)下,每次采取的動作也很可能是不一樣的。所以最后學習到的策略如圖2所示,不會造成死循環(huán)。

圖1 value-based RL

圖2 policy-based RL

2 Policy Gradient算法

Policy Gradient[5]算法是強化學習的一種基于策略的算法。與其他基于價值的算法不同,該算法直接通過模型輸出需要采取的動作,不需要學習價值函數(shù)Q。策略網絡(Policy Network)和優(yōu)化目標是Policy Gradient算法的核心。

2. 1 Policy Network 框架

Policy Gradient算法的實現(xiàn)過程主要是訓練一個策略網絡(Policy Network)。Policy Network框架具體如圖3所示。該網絡輸入為當前狀態(tài)(State),輸出為各個動作的概率(State)。

圖3 Policy Network框架

2. 2 優(yōu)化目標

2.2.1 目標函數(shù)

Policy Gradient算法采用的是帶參數(shù)θ的策略,不斷的調整參數(shù)θ可以實現(xiàn)策略的優(yōu)化,為了評估不同參數(shù)對策略的影響,引入目標函數(shù),目標函數(shù)的值越大,模型質量越高。一般而言,目標函數(shù)主要有三種形式:對于episode任務,優(yōu)化目標是初始狀態(tài)收獲的期望(式3);對于連續(xù)性任務,沒有明確的初始狀態(tài),優(yōu)化目標是平均價值(式4);其他情況可以將每一時間步的平均獎勵作為優(yōu)化目標(式5)。

2.2.2 優(yōu)化函數(shù)

在明確了目標函數(shù)以后,為了實現(xiàn)最優(yōu)模型,需要找到一個參數(shù)θ使得目標函數(shù)能夠取到最大值。對目標函數(shù)求導可以表示為式(6)。

3 Python實現(xiàn)

3. 1 初始化

初始化的內容包括變量初始化,獲得觀察量以及清空gradBuffer等,具體實現(xiàn)如下:

running_reward=None

reward_sum=0

episode_number=1

total_episodes=10000

init=tf.global_variables_initializer()

#開始訓練

with tf.Session()as sess:

rendering=False

sess.run(init)

observation=env.reset()#observation 是環(huán)境的初始觀察量(輸入神經網絡的值)

gradBuffer=sess.run(tvars)#gradBuffer會存儲梯度,此處做一初始化

for ix,grad in enumerate(gradBuffer):

gradBuffer[ix]=grad*0

3. 2 定義策略網絡

定義策略網絡的過程包括定義輸入層,定義損失loss然后再根據(jù)損失loss定義Adam優(yōu)化器,最后再計算并保存梯度。具體實現(xiàn)如下:

#定義和訓練、loss有關的變量

tvars=tf.trainable_variables()

input_y=tf.placeholder(tf.float32,[None,1],name="input_y")

advantages=tf.placeholder(tf.float32,name="reward_signal")

#定義loss函數(shù)

loglik=tf.log(input_y*(input_y-probability)+(1-input_y)*(input_y+probability))

loss=-tf.reduce_mean(loglik*advantages)

newGrads=tf.gradients(loss,tvars)

#優(yōu)化器、梯度。

adam =tf.train.AdamOptimizer(learning_rate=learning_rate)

W1Grad=tf.placeholder(tf.float32,name="batch_grad1")

W2Grad=tf.placeholder(tf.float32,name="batch_grad2")

batchGrad=[W1Grad,W2Grad]

updateGrads=adam.apply_gradients(zip(batchGrad,tvars))

3. 3 訓練

訓練的過程包括:使用當前決策進行游戲交互、計算并保存每一局的梯度、將保存的梯度應用到網絡并輸出結果。其中計算并保存每一局的梯度在整個過程中起承上啟下的作用,具體代碼如下:

#一局游戲結束

if done:

episode_number+=1

# 將 xs、ys、drs從 list變成 numpy數(shù)組形式

epx=np.vstack(xs)

epy=np.vstack(ys)

epr=np.vstack(drs)

tfp=tfps

xs,hs,dlogps,drs,ys,tfps=[],[],[],[],[],[]

#對epr計算期望獎勵

discounted_epr=discount_rewards(epr)

#對期望獎勵做歸一化

discounted_epr-=np.mean(discounted_epr)

discounted_epr//=np.std(discounted_epr)

#將梯度存到gradBuffer中

tGrad=sess.run(newGrads,feed_dict={observations:epx,input_y:epy,advantages:discounted_epr})

for ix,grad in enumerate(tGrad):

gradBuffer[ix]+=grad

4 程序運行界面效果

利用深度學習框架TensorFlow實現(xiàn)一個簡單的Policy Gradient算法示例:一個CartPole小游戲,該游戲通過控制下面的黑色小車向左向右移動使連接在上面的桿保持垂直不倒,如果桿子過于傾斜,或者小車移出一個范圍,那么游戲結束。不停地訓練,直到在游戲中平均能拿到200的獎勵,訓練停止。在訓練過程中,游戲持續(xù)時間越來越長,連接在小車上面的桿也越來越向垂直靠攏,可以明顯感受到“學習”的過程。

圖4運行效果

5 結語

本文首先介紹了強化學習中policy-based方法的基本概念,之后分析了Policy Gradient算法的策略網絡結構和目標優(yōu)化,然后利用TensorFlow搭建環(huán)境,定義并訓練策略網絡,最終實現(xiàn)Policy Gradient算法的一個簡單示例:一個CartPole小游戲。運行結果良好,在不斷的訓練中,平均獎勵穩(wěn)步上升,直到達到200,整個訓練結束,最終實現(xiàn)了Policy Gradient算法。

猜你喜歡
定義動作優(yōu)化
超限高層建筑結構設計與優(yōu)化思考
房地產導刊(2022年5期)2022-06-01 06:20:14
民用建筑防煙排煙設計優(yōu)化探討
關于優(yōu)化消防安全告知承諾的一些思考
一道優(yōu)化題的幾何解法
動作描寫要具體
畫動作
動作描寫不可少
成功的定義
山東青年(2016年1期)2016-02-28 14:25:25
非同一般的吃飯動作
修辭學的重大定義
當代修辭學(2014年3期)2014-01-21 02:30:44
主站蜘蛛池模板: 国产成人久视频免费| 国产精品福利社| 在线精品欧美日韩| 第九色区aⅴ天堂久久香| 伊人久久婷婷| 精品视频一区在线观看| 久久99国产综合精品女同| 日韩第九页| 欧美97色| 激情无码视频在线看| 国产欧美另类| 久久99国产精品成人欧美| 中文字幕 91| 久久综合色天堂av| 亚洲Va中文字幕久久一区| 国产高清国内精品福利| 99re66精品视频在线观看 | 国禁国产you女视频网站| 美女裸体18禁网站| 亚洲av片在线免费观看| 另类欧美日韩| 在线观看91香蕉国产免费| 亚洲第一视频网| 久久毛片网| 国产嫖妓91东北老熟女久久一| 美女潮喷出白浆在线观看视频| 亚洲欧美一级一级a| 亚洲一区二区约美女探花| 国产三级视频网站| 在线日韩一区二区| 手机在线免费不卡一区二| 亚洲国产日韩一区| 无码又爽又刺激的高潮视频| 久久这里只有精品66| 午夜无码一区二区三区在线app| 亚洲第一天堂无码专区| 网友自拍视频精品区| 国产免费一级精品视频| 亚洲男人天堂网址| 午夜老司机永久免费看片| 亚洲第一色网站| 成人午夜天| 欧美另类图片视频无弹跳第一页| 精品成人一区二区三区电影| 欧美成人手机在线观看网址| 亚洲永久色| 亚洲第一国产综合| 国产男女免费视频| 国产自无码视频在线观看| 欧美国产三级| 亚洲精品国产首次亮相| 992Tv视频国产精品| 久久国产高清视频| 国产精品不卡片视频免费观看| 福利片91| 99久视频| 国产极品嫩模在线观看91| 久久特级毛片| 国产人人射| 国产特级毛片aaaaaa| 欧美人人干| 久久久亚洲色| 自拍偷拍一区| 午夜不卡视频| 国产尤物在线播放| 成人午夜久久| 亚洲国产成人久久精品软件| 色网站在线视频| 97久久精品人人| 色综合中文| 国产精品久久久久久久伊一| 国产视频大全| 欧美精品导航| 国产亚洲高清在线精品99| 999精品在线视频| 精品久久综合1区2区3区激情| 亚洲成人网在线播放| 99国产在线视频| 久久精品无码中文字幕| 亚洲天堂2014| 97超爽成人免费视频在线播放| 国产综合另类小说色区色噜噜|