亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Policy Gradient算法的研究與實現

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

        劉俊利

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

        0 引言

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

        1 Policy-based簡介

        value-based和policy-based是機器學習的兩大類算法。value-based方法采用的策略(例如ε-greedy[4])是確定性策略,即無論什么時候,只要給定一個狀態(tài)si就有唯一一個動作ai輸出與之對應;而policy-based方法采用的策略是帶參數θ的策略π(一個參數化函數,具體公式見式(1)),不斷調整θ并利用策略評分函數J(θ)(具體公式見式(2))測量不同θ下的策略π的質量,待J(θ)函數值達到最大,此時對應的策略π即為最優(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]算法是強化學習的一種基于策略的算法。與其他基于價值的算法不同,該算法直接通過模型輸出需要采取的動作,不需要學習價值函數Q。策略網絡(Policy Network)和優(yōu)化目標是Policy Gradient算法的核心。

        2. 1 Policy Network 框架

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

        圖3 Policy Network框架

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

        2.2.1 目標函數

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

        2.2.2 優(yōu)化函數

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

        3 Python實現

        3. 1 初始化

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

        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然后再根據損失loss定義Adam優(yōu)化器,最后再計算并保存梯度。具體實現如下:

        #定義和訓練、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函數

        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數組形式

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

        圖4運行效果

        5 結語

        本文首先介紹了強化學習中policy-based方法的基本概念,之后分析了Policy Gradient算法的策略網絡結構和目標優(yōu)化,然后利用TensorFlow搭建環(huán)境,定義并訓練策略網絡,最終實現Policy Gradient算法的一個簡單示例:一個CartPole小游戲。運行結果良好,在不斷的訓練中,平均獎勵穩(wěn)步上升,直到達到200,整個訓練結束,最終實現了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
        亚洲AV伊人久久综合密臀性色| 中文天堂一区二区三区| 亚洲中文字幕人妻诱惑| 日韩av在线不卡一区二区| 又大又长粗又爽又黄少妇视频| 鲁丝片一区二区三区免费| 中文亚洲欧美日韩无线码| 亚洲色偷拍区另类无码专区| 国产老妇伦国产熟女老妇高清| 午夜国产精品一区二区三区| 少妇爽到高潮免费视频| 一本色道久久hezyo无码 | 中文有码人妻字幕在线| 中文字幕aⅴ人妻一区二区| 日韩在线精品国产成人| 天堂av在线一区二区| 极品少妇一区二区三区四区视频| 亚洲天堂av一区二区| 女人脱了内裤趴开腿让男躁| 久久国产精品无码一区二区三区| 国产资源在线视频| 少妇人妻系列中文在线| 亚洲成人av在线第一页| 国产成人涩涩涩视频在线观看| 成人无码h真人在线网站| 久久这黄色精品免费久 | 国产免费观看黄av片| 东北老女人高潮大喊舒服死了| 18禁超污无遮挡无码免费游戏| 亚洲激情成人| 国产目拍亚洲精品二区| 色综合天天综合网国产成人网| 97精品超碰一区二区三区| 久久久久成人亚洲综合精品| 久久久久久久久久91精品日韩午夜福利| 美腿丝袜中文字幕在线观看| 久久日日躁夜夜躁狠狠躁| 中文字幕人妻中文| 久久精品国产99精品九九| 99视频偷拍视频一区二区三区| 强开小婷嫩苞又嫩又紧视频韩国|