色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何利用TensorForce框架快速搭建深度強化學習模型

DPVg_AI_era ? 來源:lp ? 2019-03-29 08:44 ? 次閱讀

深度強化學習已經在許多領域取得了矚目的成就,并且仍是各大領域受熱捧的方向之一。本文深入淺出的介紹了如何利用TensorForce框架快速搭建深度強化學習模型。

深度強化學習(Deep Reinforcement Learning, DRL)是目前最熱門的方向之一,從視頻游戲、圍棋、蛋白質結構預測到機器人、計算機視覺、推薦系統等領域已經取得了很多令人矚目的成就且仍在蓬勃發展中。

AlphaGo第一作者Davild Silver就認為通用人工智能需要強化學習結合深度學習來實現,即AGI=DL+RL。

框架

為了便于研究人員快速搭建出強化學習模型,很多機構發布了強化學習基準算法或框架,其中較早的有OpenAI Baselines [1]、伯克利的rllab [2],最新的有18年谷歌發布的Dopamine [3]、Facebook發布的Horizon [4]。具體見下表:

本文介紹的是TensorForce并非由這些大機構發布,而是由幾個劍橋大學的博士生開發、維護的。

當時選擇TensorForcce是因為需要在ROS框架下開發,而如上表列出的,它完全支持Python2,且包含很多主流的強化學習算法、支持OpenAI Gym、DeepMind Lab等常用于強化學習算法測試的基準環境。

TensorForce是架構在TensorFlow上的強化學習API,最早在17年就開源了,并發布了博客[5]介紹其背后的設計思想及基本應用。

這里簡單介紹一下TensorForce的設計思想。

框架設計的難點在于如何解耦出其它層面的內容,盡可能將共用的部分抽象出來。拿強化學習來說,智能體與環境不斷通過交互試錯來學習,如果由我們從頭自己編程實現某個RL任務,為了方便智能體與環境很自然地會寫在一起。但作為框架卻不行,需要將智能體從環境中解耦出來。

TensorForce包括了下面四個層面的概念:

Environment <-> Runner <-> Agent <-> Model

Agent在訓練前可以加載model,訓練后保存model,運行時接收state,(預處理后)作為model的輸入,返回action。模型會根據算法及配置自動更新。Runner將Agent和Environment之間的交互抽象出來作為函數。Environment根據應用場景的不同需要自己寫接口,后文會提供一個機器人導航環境的接口案例。如果是學習或者算法測試,可以使用現成的基準環境,TensorForce提供了OpenAI Gym、OpenAI Universe和DeepMind Lab的接口。

第一行代碼

下面通過使用近端策略優化(Proximal Policy Optimization, PPO)算法訓練OpenAI Gym中倒立擺來初識TensorForce的簡潔和強大。

from tensorforce.agents import PPOAgentfrom tensorforce.execution import Runnerfrom tensorforce.contrib.openai_gym import OpenAIGym# Create an OpenAIgym environment.environment=OpenAIGym('CartPole-v0',visualize=True)network_spec=[dict(type='dense',size=32,activation='relu'),dict(type='dense',size=32,activation='relu')]agent = PPOAgent(states=environment.states,actions=environment.actions,network=network_spec,step_optimizer=dict(type='adam',learning_rate=1e-3),saver=dict(directory='./saver/',basename='PPO_model.ckpt',load=False,seconds=600),summarizer=dict(directory='./record/',labels=["losses","entropy"],seconds=600),)# Create the runnerrunner=Runner(agent=agent,environment=environment)# Start learningrunner.run(episodes=600, max_episode_timesteps=200)runner.close()

很快,倒立擺能夠平衡:

使用TensorBoard查看訓練過程(左圖是loss,右圖是entropy):

上面我們只用了30行代碼實現了PPO算法訓練倒立擺,代碼首先定義了環境和網絡(兩層32個節點的全連接網絡,激活函數為relu),然后定義了agent,agent的參數中states, actions, network三個參數是必填的,step_optimizer定義了優化器,saver和summarizer分別保存模型和訓練過程。最后通過runner來實現agent和environment的交互,總共跑了600個episodes,每個episode的最大步長是200。

runner解耦出了交互過程,實際上是是下面過程的循環:

# Query the agent for its action decisionaction = agent.act(state)# Execute the decision and retrieve the current informationobservation, terminal, reward = GazeboMaze.execute(action)# Pass feedback about performance (and termination) to the agentagent.observe(terminal=terminal, reward=reward)

在上述過程中,agent會儲存相關信息來更新模型,比如DQNAgent會存儲(state, action, reward, next_state)。

視頻游戲

TensorForce提供了豐富的observation預處理功能,視頻游戲是DRL最先取得突破的方向,以Flappy Bird為例,需要進行四個步驟的預處理:

轉化為灰度圖,去除不必要的顏色信息;

縮小輸入的游戲截屏,resize為80*80;

堆疊連續的四幀,推導出運行信息;

歸一化處理,以便于訓練。

使用TensorForce可以很方便地進行預處理:

states = dict(shape=(3264, 18723, 3), type='float')states_preprocessing_spec = [dict( type='image_resize', width=80, height=80), dict( type='grayscale'),dict( type='normalize')dict( type='sequence', length=4)]agent = DQNAgent( states=states, actions=actions, network=network_spec, states_preprocessing=states_preprocessing_spec)

環境搭建

如果要在具體的應用場景中使用TensorForce就需要根據應用場景手動搭建環境,環境的模板為environment.py [7],其中最重要的函數是execute,該函數接收agent產生的action,并在環境中執行該action,然后返回next_state,reward,terminal。這里我以搭建的Gazebo中的機器人導航環境為例,進行介紹。

首先搭建仿真環境如下圖:

設計環境的接口及其與agent交互的過程:

仿真開始,init函數打開Gazebo并加載對應的導航環境,reset函數初始化機器人,execute函數接收到action后通過ROS發送對應的速度命令,Gazebo中的機器人接收到速度命令后執行對應的速度,機器人傳感器返回相應的信息,計算對應的reward,讀取視覺傳感器的RGB圖像作為next_state,判斷是否到達目標點或者碰撞,如果是Terminal為True,該episode結束。完整的代碼見 [8]。

復雜網絡

DRL網絡和算法是智能體最重要的兩部分,一個確定模型結構、一個決定模型更新。上面只介紹了簡單的模型,對于有些復雜網絡需要層疊的方式來定義,如下如:

該網絡的輸入為64*48*3的RGB圖像,由卷積層提取特征后與2維的速度信息和運動信息共同輸入全連接層進行決策。首先定義state:

states=dict(image=dict(shape=(48,64,3),type='float'),#Observationprevious_act=dict(shape=(2,),type='float'),#velocityrelative_pos=dict(shape=(2,),type='float')#target)

然后定義action即velocity,這里為機器人的線速度(限制在[0,1])和角速度(限制在[-1,1]):

dict(linear_vel=dict(shape=(),type='float',min_value=0.0,max_value=1.0),angular_vel=dict(shape=(),type='float',min_value=-1.0,max_value=1.0))

然后通過層疊的方式來定義網絡結構:

network_spec=[[dict(type='input',names=['image']),dict(type='conv2d',size=32,window=(8,6),stride=4,activation='relu',padding='SAME'),dict(type='conv2d',size=64,window=(4,3),stride=2,activation='relu',padding='SAME'),dict(type='pool2d',pooling_type='max',window=2,stride=2,padding='SAME'),dict(type='conv2d',size=64,window=2,stride=2,activation='relu',padding='SAME'),dict(type='flatten'),dict(type='output',name='image_output')],[dict(type='input',names=['image_output','previous_act','relative_pos'],aggregation_type='concat'),dict(type='dense',size=512,activation='relu'),dict(type='dense',size=512,activation='relu'),]]

完整代碼見[8]

其它

1. agent會有actions_exploration參數來定義exploration,默認值為'none',但這并不代表不探索,以PPO為例,模型在輸出的時候不輸出直接的確定性動作(只有DPG才會輸出確定性動作),而是分布,輸出在分布上采樣輸出,這可以看作是一種exploration。

2. 網絡的輸出層是根據action自動添加的,在network中定義輸入層和隱藏層即可

3. 如果不再需要exploration而只是exploitation,則運行:

agent.act(action,deterministic=True)

此時agent執行greedy策略。而如果模型訓練完成,不再訓練則:

agent.act(action,independent=True)

此時函數只執行act不執行observe來更新模型

4. PPO算法相比于DQN,不僅性能好,并且對超參數更魯棒,建議優先選擇PPO

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 人工智能
    +關注

    關注

    1792

    文章

    47432

    瀏覽量

    238976
  • 計算機視覺
    +關注

    關注

    8

    文章

    1698

    瀏覽量

    46032
  • 強化學習
    +關注

    關注

    4

    文章

    268

    瀏覽量

    11270

原文標題:快速上手深度強化學習?學會TensorForce就夠了

文章出處:【微信號:AI_era,微信公眾號:新智元】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    什么是深度強化學習?深度強化學習算法應用分析

    什么是深度強化學習? 眾所周知,人類擅長解決各種挑戰性的問題,從低級的運動控制(如:步行、跑步、打網球)到高級的認知任務。
    發表于 07-01 10:29 ?1489次閱讀
    什么是<b class='flag-5'>深度</b><b class='flag-5'>強化學習</b>?<b class='flag-5'>深度</b><b class='flag-5'>強化學習</b>算法應用分析

    深度強化學習實戰

    一:深度學習DeepLearning實戰時間地點:1 月 15日— 1 月18 日二:深度強化學習核心技術實戰時間地點: 1 月 27 日— 1 月30 日(第一天報到 授課三天;提前
    發表于 01-10 13:42

    深度學習強化學習相結合的深度強化學習DRL

    深度強化學習DRL自提出以來, 已在理論和應用方面均取得了顯著的成果。尤其是谷歌DeepMind團隊基于深度強化學習DRL研發的AlphaGo,將
    發表于 06-29 18:36 ?2.8w次閱讀

    如何構建強化學習模型來訓練無人車算法

    本文作者通過簡單的方式構建了強化學習模型來訓練無人車算法,可以為初學者提供快速入門的經驗。
    的頭像 發表于 11-12 14:47 ?4905次閱讀

    深度強化學習的概念和工作原理的詳細資料說明

    深度學習DL是機器學習中一種基于對數據進行表征學習的方法。深度學習DL有監督和非監督之分,都已經
    的頭像 發表于 05-16 09:20 ?3512次閱讀

    深度強化學習到底是什么?它的工作原理是怎么樣的

    深度學習DL是機器學習中一種基于對數據進行表征學習的方法。深度學習DL有監督和非監督之分,都已經
    的頭像 發表于 06-13 11:39 ?6090次閱讀

    機器學習中的無模型強化學習算法及研究綜述

    模型強化學習(Mode- based reinforcement Lear-ning)和無模型強化學習( Model- ree reirη forcement Learning)。
    發表于 04-08 11:41 ?11次下載
    機器<b class='flag-5'>學習</b>中的無<b class='flag-5'>模型</b><b class='flag-5'>強化學習</b>算法及研究綜述

    模型深度強化學習應用研究綜述

    深度強化學習(DRL)作為機器學習的重要分攴,在 Alphago擊敗人類后受到了廣泛關注。DRL以種試錯機制與環境進行交互,并通過最大化累積獎賞最終得到最優策略。強化學習可分為無
    發表于 04-12 11:01 ?9次下載
    <b class='flag-5'>模型</b>化<b class='flag-5'>深度</b><b class='flag-5'>強化學習</b>應用研究綜述

    基于深度強化學習的路口單交叉信號控制

    利用深度強化學習技術實現路口信號控制是智能交通領域的硏究熱點?,F有硏究大多利用強化學習來全面刻畫交通狀態以及設計有效
    發表于 04-23 15:30 ?21次下載
    基于<b class='flag-5'>深度</b><b class='flag-5'>強化學習</b>的路口單交叉信號控制

    基于深度強化學習仿真集成的壓邊力控制模型

    壓邊為改善板料拉深制造的成品質量,釆用深度強化學習的方法進行拉深過程旳壓邊力優化控制。提岀一種基于深度強化學習與有限元仿真集成的壓邊力控制模型
    發表于 05-27 10:32 ?0次下載

    基于深度強化學習的無人機控制律設計方法

    基于深度強化學習的無人機控制律設計方法
    發表于 06-23 14:59 ?46次下載

    《自動化學報》—多Agent深度強化學習綜述

    多Agent 深度強化學習綜述 來源:《自動化學報》,作者梁星星等 摘 要?近年來,深度強化學習(Deep reinforcement le
    發表于 01-18 10:08 ?1638次閱讀
    《自動<b class='flag-5'>化學</b>報》—多Agent<b class='flag-5'>深度</b><b class='flag-5'>強化學習</b>綜述

    ESP32上的深度強化學習

    電子發燒友網站提供《ESP32上的深度強化學習.zip》資料免費下載
    發表于 12-27 10:31 ?0次下載
    ESP32上的<b class='flag-5'>深度</b><b class='flag-5'>強化學習</b>

    ICLR 2023 Spotlight|節省95%訓練開銷,清華黃隆波團隊提出強化學習專用稀疏訓練框架RLx2

    模型時代,模型壓縮和加速顯得尤為重要。傳統監督學習可通過稀疏神經網絡實現模型壓縮和加速,那么同樣需要大量計算開銷的強化學習任務可以基于稀疏
    的頭像 發表于 06-11 21:40 ?694次閱讀
    ICLR 2023 Spotlight|節省95%訓練開銷,清華黃隆波團隊提出<b class='flag-5'>強化學習</b>專用稀疏訓練<b class='flag-5'>框架</b>RLx2

    深度學習框架是什么?深度學習框架有哪些?

    深度學習框架是什么?深度學習框架有哪些?? 深度
    的頭像 發表于 08-17 16:03 ?2774次閱讀
    主站蜘蛛池模板: 亚洲成色WWW久久网站夜月| 18av 在线| 成人在线视频免费看| 全文都是肉高h文| 国产 亚洲 中文在线 字幕| 少妇的肉体AA片免费观看| 国产精品久久久久久人妻精品蜜桃 | 国产产一区二区三区久久毛片国语 | 丰满的女朋友 在线播放| a级销魂美女| 青娱乐极品视觉盛宴国产视频| 超级最爽的乱淫片免费| 侮辱丰满美丽的人妻| 精品国产乱码久久久久久免费| 纵欲(高H)| 色女仆影院| 久久99re7在线视频精品| 99久久久无码国产精品免费人妻 | 国产又粗又黄又爽的大片| 最近最新中文字幕MV高清在线| 欧美最猛性XXXXX肛交| 777福彩社区| 日本亚洲精品色婷婷在线影院| 黑色丝袜美女被网站| 99热免费精品店| 亚洲高清视频网站| 蜜桃久久久亚洲精品成人| 国产WW久久久久久久久久| 2021国产精品久久久久精品免费网 | 纯肉高H啪短文合集| 亚洲精品久久午夜麻豆| 男人J放进女人屁股免费观看| 国产精品美女WWW爽爽爽视频| 538prom精品视频我们不只是| 天天噜日日噜夜夜噜| 邻家美姨在线观看全集免费| 调教椅上的调教SM总裁被调教| 又色又爽又黄gif动态视频| 体育生爆操| 欧美激情精品久久久久久不卡| 精品国产九九|