99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

LSTM之父Ju?rgen Schmidhuber再發(fā)新作!

ml8z_IV_Technol ? 來源:未知 ? 作者:李倩 ? 2018-05-30 10:01 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

LSTM之父Ju?rgen Schmidhuber,借鑒了人類認(rèn)知世界的模式,為機器建造了一個世界觀模型,本文帶你一起來讀LSTM之父的一篇最新力作,同時,手把手教你訓(xùn)練出一個有簡單世界觀的AI賽車手。

LSTM之父Ju?rgen Schmidhuber再發(fā)新作!

這一次,他借鑒了人類認(rèn)知世界的模式,為機器建造了一個世界觀模型。

諸多證據(jù)表明,人腦為了處理日常生活中的海量信息,學(xué)會了對這些時空信息作出抽象化的處理。借此,我們能夠在面對周遭復(fù)雜的信息時,進行迅速而準(zhǔn)確的分析。而我們在當(dāng)前所“看”到的這個世界,也受到了大腦對未來世界預(yù)測的影響。

比方說,棒球選手可以毫不費力地?fù)糁袝r速100英里的棒球,正是得益于大腦對棒球運動軌跡的精確判斷。

那么,我們能不能讓機器也學(xué)會這樣的世界觀呢?機器有了世界觀后又將具備怎么樣的能力呢?

今天,我們就帶你一起來讀LSTM之父的一篇最新力作。同時,也會手把手教你訓(xùn)練出一個有簡單世界觀的AI賽車手。到底有多厲害,試了就知道!

提出問題

讓我們通過一個具體案例來探究這個問題:如何讓機器擁有世界觀?

假設(shè)我們要訓(xùn)練出一個AI賽車手,讓它擅長在2D賽道上駕駛汽車。示例如下圖。

在每個時間節(jié)點,這個AI賽車手都會觀察它的周圍環(huán)境(64×64像素彩色圖像),然后決定并執(zhí)行操作——設(shè)定方向(-1到1)、加速(0到1)或制動(0到1)。在它執(zhí)行操作后,它所處的環(huán)境會返回下一個觀測結(jié)果。以此類推,這個過程講不斷重復(fù)。

它的目標(biāo)是,在盡可能短的時間內(nèi)走完賽道。

解決方案

我們給出一個由三部分組成的解決方案。

變分自編碼器(VAE)

當(dāng)你在開車的時候做決定時,你并不會主動分析你視圖中的每一個“像素”——相反,你的大腦會將視覺信息凝聚成較少數(shù)量的“隱藏”實體,比如道路的筆直程度、即將到來的彎道以及你在道路中的相對位置,從而判斷出你需要操作的下一個動作。

這正是VAE的要義所在——將64x64x3(RGB)輸入圖像壓縮成一個長度為32的特征向量(z)。

借此,我們的AI賽車手可以用更少的信息去表示周圍的環(huán)境,從而提高學(xué)習(xí)效率。

遞歸神經(jīng)網(wǎng)絡(luò)(RNN)

沒有遞歸神經(jīng)網(wǎng)絡(luò)的AI賽車手可能會把車開成這樣。。。

回想一下。當(dāng)你開車的時候,其實是會對下一秒可能出現(xiàn)的情況進行持續(xù)預(yù)估的。

而RNN就能夠模擬這種前瞻性思維。

與VAE類似,RNN試圖捕捉到汽車在其所處環(huán)境中當(dāng)前狀態(tài)的隱藏特性,但這次的目的是要基于先前的“z”和先前的動作來預(yù)測下一個“z”的樣子。

控制器(Controller)

目前為止,我們還沒有提到任何有關(guān)選擇動作的事情。因為,這些選擇都是控制器要做的。

控制器是一個密集連接的神經(jīng)網(wǎng)絡(luò),輸入是z(VAE的當(dāng)前隱藏狀態(tài)——長度為32)和h(RNN的隱藏狀態(tài)——長度為256)的串聯(lián),3個輸出神經(jīng)元對應(yīng)于三個動作,并被縮放到適當(dāng)?shù)姆秶鷥?nèi)。

為了理解這三個組成部分所擔(dān)任的不同角色,以及他們是如何一起工作的,我們可以想象他們之間的一段對話:

世界模型體系結(jié)構(gòu)圖

VAE:(關(guān)注最新的64 * 64 * 3的觀測結(jié)果)這看起來像一條直路,前方稍微向左彎曲,汽車朝向道路方向(z)。

RNN:基于該描述(z)和控制器在上一個時間節(jié)點(動作)選擇加速的情況,我將更新我的隱藏狀態(tài)(h),以便預(yù)測下一個觀測結(jié)果仍然是筆直的道路,但要略微左轉(zhuǎn)一點。

Controller:基于VAE(z)的描述和RNN(h)反饋的當(dāng)前隱藏狀態(tài),我的神經(jīng)網(wǎng)絡(luò)下一個輸出的動作為[0.34,0.8,0]。

然后,這個操作會被傳遞給環(huán)境,該環(huán)境會返回更新后的觀測結(jié)果,并重新開始循環(huán)。

現(xiàn)在,讓我們來實際演練一下吧!

實現(xiàn)代碼來了

如果你使用的是高規(guī)格筆記本電腦,則可以在本地運行此解決方案,但我建議你在谷歌云計算平臺(Google Cloud Compute)上用功能更強大的計算機來運行,從而在短時間內(nèi)完成。

以下步驟已經(jīng)在Linux(Ubuntu 16.04)上進行了測試——在Mac或Windows上只需要更改軟件包安裝的相關(guān)命令即可。

第一步:下載代碼

在命令行中輸入以下內(nèi)容:

git clone https://github.com/AppliedDataSciencePartners/WorldModels.git

第二步:創(chuàng)建虛擬環(huán)境

創(chuàng)建一個Python3虛擬環(huán)境(這里使用的是virutalenv和virtualenvwrapper):

sudo apt-get install python-pipsudo pip install virtualenvsudo pip install virtualenvwrapperexport WORKON_HOME=~/.virtualenvssource /usr/local/bin/virtualenvwrapper.shmkvirtualenv --python=/usr/bin/python3 worldmodels

第三步:安裝程序包

sudo apt-get install cmake swig python3-dev zlib1g-dev python-openglmpich xvfb xserver-xephyr vnc4servercd WorldModelspip install -r requirements.txt

第四步:生成隨機訓(xùn)練數(shù)據(jù)

對于這個塞車問題,VAE和RNN都可以使用隨機生成的訓(xùn)練數(shù)據(jù)——也就是在每個時間節(jié)點隨機采取動作所生成的觀測數(shù)據(jù)。實際上,我們可以使用偽隨機動作,使車在初始狀態(tài)就能加速離開起跑線。

由于VAE和RNN獨立于決策控制器,我們需要確保遇到各種各樣的觀測結(jié)果,并且選擇不同行動來應(yīng)對,并將結(jié)果保存為訓(xùn)練數(shù)據(jù)。

要生成隨機策略,請從命令行運行以下命令:

python 01_generate_data.py car_racing --total_episodes 2000 –start_batch 0 --time_steps 300

如果你的服務(wù)器沒有顯示結(jié)果,你可以運行以下命令:

xvfb-run -a -s "-screen 0 1400x900x24" python 01_generate_data.pycar_racing --total_episodes 2000 --start_batch 0 --time_steps 300

以上命令將會產(chǎn)生2000個策略,保存在200個批次中,每個批次10個)。

在./data文件夾中,你會看到以下文件(*為批次號):

obs_data_*.npy(此文件將64 * 64 * 3圖像存儲為numpy數(shù)組)

action_data_*.npy(此文件存儲三維動作)

第五步:訓(xùn)練VAE

這里我們只需要用obs_data_*.npy就可以訓(xùn)練VAE。確保你已經(jīng)完成了第四步,否則這個文件不在./data文件夾下。

在命令行中運行下列語句:

python 02_train_vae.py --start_batch 0 --max_batch 9 --new_model

在每一批從0到9的數(shù)據(jù)中都會訓(xùn)練出一個新的變分自編碼器VAE。模型的權(quán)重保存在./vae/weights.h5中?!?-new_model”參數(shù)表明從頭開始訓(xùn)練模型。

如果文件夾中已經(jīng)存在weights.h5,也沒有聲明“--new_model”參數(shù),腳本將直接導(dǎo)入這個文件中的權(quán)重,繼續(xù)訓(xùn)練現(xiàn)有的模型。這樣的話,你就可以實現(xiàn)模型的迭代訓(xùn)練,而不需要對每批數(shù)據(jù)都重新運行。

VAE架構(gòu)的相關(guān)參數(shù)都在./vae/arch.py文件里聲明。

第六步:生成循環(huán)神經(jīng)網(wǎng)絡(luò)RNN數(shù)據(jù)

現(xiàn)在我們就可以利用這個訓(xùn)練好的VAE模型生成RNN模型的訓(xùn)練集。

RNN模型要求把經(jīng)由VAE編碼后的圖像數(shù)據(jù)(z)和動作(a)作為輸入,把一個時間步長前的由VAE模型編碼后的圖像數(shù)據(jù)作為輸出。

運行這行命令可以生成這些數(shù)據(jù):

python 03_generate_rnn_data.py --start_batch 0 --max_batch 9

這一步需要把第0至9批的obs_data_*.npy和action_data_*.npy文件轉(zhuǎn)成在RNN中訓(xùn)練所需要的格式。

這兩組文件保存在./data(*是批量編號)

rnn_input_*.npy(存儲了[z a]串聯(lián)向量)

rnn_output_*.npy(存儲了前一個時間步長的z向量)

第七步:訓(xùn)練RNN模型

訓(xùn)練RNN只需要用到rnn_input_*.npy和rnn_output_*.npy文件。確認(rèn)你已經(jīng)完成了第六步,否則這個文件不在./data文件夾下。

在命令行運行:

python 04_train_rnn.py --start_batch 0 --max_batch 9 --new_model

在每一批從0到9的數(shù)據(jù)中都會訓(xùn)練出一個新的VAE。模型的權(quán)重保存在./rnn/weights.h5?!?-new_model”表明從頭開始訓(xùn)練模型。

和VAE訓(xùn)練很相似的是,如果文件夾中已經(jīng)存在weights.h5,也沒有聲明“--new_model”標(biāo)志,腳本將直接導(dǎo)入文件中的權(quán)重,繼續(xù)訓(xùn)練現(xiàn)有的模型。這樣的話,你就可以實現(xiàn)RNN模型的迭代訓(xùn)練,而不需要對每批數(shù)據(jù)都重新運行。

RNN循環(huán)神經(jīng)網(wǎng)絡(luò)模型的具體參數(shù)都在./rnn/arch.py文件里聲明。

第八步:訓(xùn)練控制器

到了最有趣的部分了!

到目前為止,我們已經(jīng)使用深度學(xué)習(xí)搭建了VAE模型和RNN模型。VAE能把高維的圖片降至低維的隱藏數(shù)據(jù),RNN用來預(yù)測隱藏空間中數(shù)據(jù)的時序變化。正因為我們可以對每個模型都采用隨機抽取的數(shù)據(jù)來創(chuàng)建訓(xùn)練集,模型才有可能達到預(yù)期效果。

為了訓(xùn)練控制器,我們將采用強化學(xué)習(xí)的方法,它使用了名叫CMA-ES(自適應(yīng)協(xié)方差矩陣進化算法)的進化算法。

輸入是一個288(32+256)維向量,輸出是一個3維向量,因此我們要訓(xùn)練的參數(shù)有288 * 3 + 1 (bias) = 867個。

CMA-ES算法,首先隨機生成867個參數(shù)(即一個群體)的副本,然后對環(huán)境中每個群體成員變量做測試,并記錄其平均得分。正如自然選擇中的法則一樣,產(chǎn)生最高得分的權(quán)重變量允許其繼續(xù)“繁殖”,并生出下一代。

運行下列代碼將在你的機器上啟動這個過程,并為變量選擇合適的值。

python 05_train_controller.py car_racing --num_worker 16 –num_worker_trial 4 --num_episode 16 --max_length 1000 --eval_steps 25

或者在服務(wù)器上運行,但不顯示結(jié)果:

xvfb-run -s "-screen 0 1400x900x24" python 05_train_controller.py car_racing --num_worker 16 --num_worker_trial 2 --num_episode 4 –max_length 1000 --eval_steps 25

--num_worker 16:worker的個數(shù)不要超過可用內(nèi)核的數(shù)量

--num_work_trial 2:每個worker測試的群體成員的數(shù)量(num_worker * num_work_trial表示每一代群體的總規(guī)模)

--num_episode 4:為群體的每個成員進行打分的次數(shù)(分?jǐn)?shù)將是該次打分的平均得分)

--max_length 1000:一次打分中最大時間步長

--eval_steps 25:每隔25步對權(quán)重進行評估

默認(rèn)情況下,控制器每次運行都會從零開始,將進程的當(dāng)前狀態(tài)保存到controller目錄的pickle文件中。這樣你就可以通過指定相關(guān)文件,從上一次保存的地方繼續(xù)訓(xùn)練。

每生成一代后,算法的當(dāng)前狀態(tài)和最佳權(quán)重的集合將會輸出到./controller文件夾。

第九步:可視化結(jié)果

經(jīng)過200代的訓(xùn)練,我已經(jīng)訓(xùn)練出一個平均得分約為833.13的角色。我在谷歌云上使用配置為Ubuntu 16.04, 18 vCPU, 67.5GB RAM的機器,采用的是本文給出的步驟和參數(shù)。

在論文中,作者試圖在2000代訓(xùn)練后達到約906的平均得分,這是迄今為止該環(huán)境下的最高分。他利用了稍高的規(guī)格設(shè)置(例如10,000集訓(xùn)練數(shù)據(jù),群體大小設(shè)為64,64臺核心機器,每次試驗16次)。

如果你想可視化控制器的當(dāng)前狀態(tài),那你只需要運行下列代碼:

python model.py car_racing –filename ./controller/car_racing.cma.4.32.best.json --render_mode –record_video

--filename:想要添加到控制器的權(quán)重json的路徑

--render_mode :在屏幕上顯示環(huán)境

--record_video:輸出mp4文件到./video文件夾,展現(xiàn)出每個片段

--final_mode:運行100次控制器測試,輸出平均得分

就是這樣啦!

第十步:幻覺學(xué)習(xí)

到這一步已經(jīng)很了不起了——但下一步則更令人興奮哦,同時對人工智能未來的發(fā)展也很有啟發(fā)意義。

增加難度,我們可以讓賽車在行進過程中避免火球的襲擊。

作者展示了角色將怎樣實際地學(xué)會如何在自己的VAE / RNN模型啟發(fā)的幻覺夢境中玩游戲,而不是在實際的游戲環(huán)境中。

我們唯一需要做出的改變是,訓(xùn)練RNN使其也可以預(yù)測出在下一個時間步長中賽車被火球擊中的概率。這樣,VAE / RNN組合模型可以作為一個獨立的環(huán)境被封裝起來,并用于訓(xùn)練控制器。這就是“世界模式”的概念。

我們將幻覺學(xué)習(xí)的概念總結(jié)如下:

角色的初始訓(xùn)練數(shù)據(jù)不過是與真實環(huán)境的隨機互動。通過這一互動,它對世界“如何運作”形成了一種潛在的理解——世界運作的物理規(guī)律,以及自己的行為會如何影響世界的狀態(tài)。

然后,它可以利用這種理解為一個給定的任務(wù)建立一個最佳策略,甚至無需在現(xiàn)實環(huán)境中進行測試,因為它可以使用自己的一套環(huán)境模型作為各種測試的“試驗場”。

就像嬰兒學(xué)走路一樣。小嬰兒通過自己的探索建立一個初步的世界觀,明白自己的動作會帶來的后果,然后一步步調(diào)整自己的策略。在這一過程中,嬰兒甚至能夠在腦海中進行自我模擬。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 控制器
    +關(guān)注

    關(guān)注

    114

    文章

    17113

    瀏覽量

    184311
  • 神經(jīng)網(wǎng)絡(luò)

    關(guān)注

    42

    文章

    4814

    瀏覽量

    103622
  • 機器
    +關(guān)注

    關(guān)注

    0

    文章

    791

    瀏覽量

    41284

原文標(biāo)題:LSTM之父最新力作:教你如何訓(xùn)練一個有世界觀的AI賽車手

文章出處:【微信號:IV_Technology,微信公眾號:智車科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    版主新作。廢舊筆記本屏幕改成顯示器。申請加精。

    `版主新作。廢舊筆記本屏幕改成顯示器。申請加精。由于個人原因。很久沒在論壇露臉了。對不起大家。最近一直覺得沒有拿得出手的diy作品。今天趁放假把跟隨了我很多很多很多年的徹底報廢了的筆記本電腦的屏幕
    發(fā)表于 04-06 19:54

    新作

    `最新作品, 基于STC89c52rc+`
    發(fā)表于 04-10 18:13

    新作

    新作品, 基于STC89c52rc+
    發(fā)表于 04-10 18:13

    JU38200WA000,JU38250WN000 日本CHINO晶閘管

    JU38200WA000,JU38250WN000日本CHINO晶閘管JU38200WA000,JU38250WN000日本CHINO晶閘管代理日本CHINO千野儀器儀表詳詢請致電
    發(fā)表于 03-05 15:31

    調(diào)整器JU40100WA000 JU119k098

    調(diào)整器JU40100WA000 JU119k098調(diào)整器JU40100WA000 JU119k098吳 經(jīng) 理:132,466.75433工-作-q:16625,43848CHINO千
    發(fā)表于 01-20 11:45

    什么是LSTM神經(jīng)網(wǎng)絡(luò)

    簡單理解LSTM神經(jīng)網(wǎng)絡(luò)
    發(fā)表于 01-28 07:16

    22JU6.pdf 電子管資料數(shù)據(jù)手冊

    22JU6.pdf 電子管資料數(shù)據(jù)手冊
    發(fā)表于 08-01 15:47 ?5次下載

    深度解析LSTM的全貌

    原來,LSTM是神經(jīng)網(wǎng)絡(luò)的擴展,非常簡單。深度學(xué)習(xí)在過去的幾年里取得了許多驚人的成果,均與LSTM息息相關(guān)。因此,在本篇文章中我會用盡可能直觀的方式為大家介紹LSTM——方便大家日后自己進行相關(guān)的探索。
    的頭像 發(fā)表于 02-02 10:39 ?1.1w次閱讀
    深度解析<b class='flag-5'>LSTM</b>的全貌

    圖靈獎為什么沒頒給LSTM之父rgen Schmidhuber

    因為他堅持認(rèn)為現(xiàn)在大火的GAN就是PM的變種,兩者的區(qū)別就在于方向是反的,為此,Jürgen Schmidhuber還和GAN的提出者Ian Goodfellow有過線上線下激烈的交鋒,業(yè)界至今記憶猶新。
    的頭像 發(fā)表于 04-08 11:54 ?9603次閱讀

    LSTM的硬件加速方式

    Long-short term memory,簡稱LSTM,被廣泛的應(yīng)用于語音識別、機器翻譯、手寫識別等。LSTM涉及到大量的矩陣乘法和向量乘法運算,會消耗大量的FPGA計算資源和帶寬。為了實現(xiàn)硬件加速,提出了稀疏LSTM。
    發(fā)表于 08-24 10:32 ?3227次閱讀
    <b class='flag-5'>LSTM</b>的硬件加速方式

    人工智能300年!LSTM之父萬字長文:詳解現(xiàn)代AI和深度學(xué)習(xí)發(fā)展史

    來源:新智元 編輯:昕朋 好困 導(dǎo)讀 最近,LSTM之父rgen Schmidhuber梳理了17世紀(jì)以來人工智能的歷史。在這篇萬字長文中,Sc
    的頭像 發(fā)表于 01-10 12:25 ?848次閱讀

    PyTorch教程-10.1. 長短期記憶 (LSTM)

    10.1. 長短期記憶 (LSTM)? Colab [火炬]在 Colab 中打開筆記本 Colab [mxnet] Open the notebook in Colab Colab
    的頭像 發(fā)表于 06-05 15:44 ?1095次閱讀
    PyTorch教程-10.1. 長短期記憶 (<b class='flag-5'>LSTM</b>)

    人工智能300年!LSTM之父萬字長文:詳解現(xiàn)代AI和深度學(xué)習(xí)發(fā)展史

    來源:新智元編輯:昕朋好困導(dǎo)讀最近,LSTM之父JürgenSchmidhuber梳理了17世紀(jì)以來人工智能的歷史。在這篇萬字長文中,Schmidhuber為讀者提供了一個大事年表,其中包括神經(jīng)網(wǎng)絡(luò)
    的頭像 發(fā)表于 01-13 11:02 ?1346次閱讀
    人工智能300年!<b class='flag-5'>LSTM</b><b class='flag-5'>之父</b>萬字長文:詳解現(xiàn)代AI和深度學(xué)習(xí)發(fā)展史

    C++之父新作帶你勾勒現(xiàn)代C++地圖

    為了幫助大家解決這些痛點問題,讓大家領(lǐng)略現(xiàn)代C++之美,掌握其中的精髓,更好地使用C++,C++之父Bjarne Stroustrup坐不住了,他親自操刀寫就了這本《C++之旅》!
    的頭像 發(fā)表于 10-30 16:35 ?1296次閱讀
    C++<b class='flag-5'>之父</b><b class='flag-5'>新作</b>帶你勾勒現(xiàn)代C++地圖

    LSTM神經(jīng)網(wǎng)絡(luò)的優(yōu)缺點分析

    長短期記憶(Long Short-Term Memory, LSTM)神經(jīng)網(wǎng)絡(luò)是一種特殊的循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN),由Hochreiter和Schmidhuber在1997年提出。LSTM因其在處理
    的頭像 發(fā)表于 11-13 09:57 ?4831次閱讀