HOME 首頁
SERVICE 服務(wù)產(chǎn)品
XINMEITI 新媒體代運(yùn)營
CASE 服務(wù)案例
NEWS 熱點(diǎn)資訊
ABOUT 關(guān)于我們
CONTACT 聯(lián)系我們
創(chuàng)意嶺
讓品牌有溫度、有情感
專注品牌策劃15年

    openai社區(qū)(openanolis 社區(qū))

    發(fā)布時(shí)間:2023-03-13 00:40:31     稿源: 創(chuàng)意嶺    閱讀: 124        問大家

    大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于openai社區(qū)的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。

    ChatGPT國內(nèi)免費(fèi)在線使用,一鍵生成原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對話答疑等等

    只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁版、PC客戶端

    官網(wǎng):https://ai.de1919.com

    本文目錄:

    openai社區(qū)(openanolis 社區(qū))

    一、一個(gè)pytorch的bug,居然能讓整個(gè)Python社區(qū)崩潰?

    明敏 發(fā)自 凹非寺

    量子位 報(bào)道 | 公眾號 QbitAI

    到底是怎樣的一個(gè)bug,能讓95%的Pytorch庫中招,就連特斯拉AI總監(jiān)深受困擾?

    還別說,這個(gè)bug雖小,但有夠“狡猾”的。

    這就是最近Reddit上熱議的一個(gè)話題,是一位網(wǎng)友在使用再平常不過的Pytorch+Numpy組合時(shí)發(fā)現(xiàn)。

    最主要的是,在代碼能夠跑通的情況下,它甚至還會(huì)影響模型的準(zhǔn)確率!

    除此之外,網(wǎng)友熱議的另外一個(gè)點(diǎn),竟然是:

    而是它到底算不算一個(gè)bug?

    這究竟是怎么一回事?

    事情的起因是一位網(wǎng)友發(fā)現(xiàn),在PyTorch中用NumPy來生成隨機(jī)數(shù)時(shí),受到數(shù)據(jù)預(yù)處理的限制,會(huì)多進(jìn)程并行加載數(shù)據(jù),但最后每個(gè)進(jìn)程返回的隨機(jī)數(shù)卻是相同的。

    他還舉出例子證實(shí)了自己的說法。

    如下是一個(gè)示例數(shù)據(jù)集,它會(huì)返回三個(gè)元素的隨機(jī)向量。這里采用的批量大小分別為2,工作進(jìn)程為4個(gè)。

    然后神奇的事情發(fā)生了:每個(gè)進(jìn)程返回的隨機(jī)數(shù)都是一樣的。

    這個(gè)結(jié)果會(huì)著實(shí)讓人有點(diǎn)一頭霧水,就好像數(shù)學(xué)應(yīng)用題求小明走一段路程需要花費(fèi)多少時(shí)間,而你卻算出來了負(fù)數(shù)。

    發(fā)現(xiàn)了問題后,這位網(wǎng)友還在GitHub上下載了超過10萬個(gè)PyTorch庫,用同樣的方法產(chǎn)生隨機(jī)數(shù)。

    結(jié)果更加令人震驚:居然有超過95%的庫都受到這個(gè)問題的困擾!

    這其中不乏PyTorch的官方教程和OpenAI的代碼,連特斯拉AI總監(jiān)Karpathy也承認(rèn)自己“被坑過”!

    但有一說一,這個(gè)bug想要解決也不難:只需要在每個(gè)epoch都重新設(shè)置seed,或者用python內(nèi)置的隨機(jī)數(shù)生成器就可以避免這個(gè)問題。

    到底是不是bug?

    如果這個(gè)問題已經(jīng)可以解決,為什么還會(huì)引起如此大的討論呢?

    因?yàn)榫W(wǎng)友們的重點(diǎn)已經(jīng)上升到了“哲學(xué)”層面:

    這到底是不是一個(gè)bug?

    在Reddit上有人認(rèn)為:這不是一個(gè)bug。

    雖然這個(gè)問題非常常見,但它并不算是一個(gè)bug,而是一個(gè)在調(diào)試時(shí)不可以忽略的點(diǎn)。

    就是這個(gè)觀點(diǎn),激起了千層浪花,許多人都認(rèn)為他忽略了問題的關(guān)鍵所在。

    這不是產(chǎn)生偽隨機(jī)數(shù)的問題,也不是numpy的問題,問題的核心是在于PyTorch中的DataLoader的實(shí)現(xiàn)

    對于包含隨機(jī)轉(zhuǎn)換的數(shù)據(jù)加載pipeline,這意味著每個(gè)worker都將選擇“相同”的轉(zhuǎn)換。而現(xiàn)在NN中的許多數(shù)據(jù)加載pipeline,都使用某種類型的隨機(jī)轉(zhuǎn)換來進(jìn)行數(shù)據(jù)增強(qiáng),所以不重新初始化可能是一個(gè)預(yù)設(shè)。

    另一位網(wǎng)友也表示這個(gè)bug其實(shí)是在預(yù)設(shè)程序下運(yùn)行才出現(xiàn)的,應(yīng)該向更多用戶指出來。

    并且95%以上的Pytorch庫受此困擾,也絕不是危言聳聽。

    有人就分享出了自己此前的慘痛經(jīng)歷:

    我認(rèn)識到這一點(diǎn)是之前跑了許多進(jìn)程來創(chuàng)建數(shù)據(jù)集時(shí),然而發(fā)現(xiàn)其中一半的數(shù)據(jù)是重復(fù)的,之后花了很長的時(shí)間才發(fā)現(xiàn)哪里出了問題。

    也有用戶補(bǔ)充說,如果 95% 以上的用戶使用時(shí)出現(xiàn)錯(cuò)誤,那么代碼就是錯(cuò)的。

    順便一提,這提供了Karpathy定律的另一個(gè)例子:即使你搞砸了一些非常基本代碼,“neural nets want to work”。

    你有踩過PyTorch的坑嗎?

    如上的bug并不是偶然,隨著用PyTorch的人越來越多,被發(fā)現(xiàn)的bug也就越來越多,某乎上還有PyTorch的坑之總結(jié),被瀏覽量高達(dá)49w。

    其中從向量、函數(shù)到model.train(),無論是真bug還是自己出了bug,大家的血淚史還真的是各有千秋。

    所以,關(guān)于PyTorch你可以分享的經(jīng)驗(yàn)血淚史嗎?

    歡迎評論區(qū)留言討論~

    參考鏈接:

    [1]https://tanelp.github.io/posts/a-bug-that-plagues-thousands-of-open-source-ml-projects/

    [2]https://www.reddit.com/r/MachineLearning/comments/mocpgj/p_using_pytorch_numpy_a_bug_that_plagues/

    [3]https://www.zhihu.com/question/67209417/answer/866488638

    — 完 —

    二、特斯拉自動(dòng)駕駛儀3D技術(shù)將成為即將爆發(fā)的新引擎

    摘要

    1. 特斯拉即將發(fā)布的3D更新將增加AI輔助駕駛功能。

    2. 未能意識到特斯拉在自動(dòng)駕駛技術(shù)上的競爭優(yōu)勢的分析師和投資者,將會(huì)突然覺醒。

    3.大多數(shù)金融模型仍將特斯拉視為傳統(tǒng)的 汽車 制造商,但這在未來將不再適用。

    分析師和投資者系統(tǒng)性地低估了特斯拉(Tesla)在自動(dòng)駕駛領(lǐng)域的競爭地位。對競爭環(huán)境的評估過于依賴于對演示視頻中自動(dòng)駕駛 汽車 性能的定性判斷,以及其他公關(guān)、營銷和品牌塑造活動(dòng)。從 歷史 上看,被指派到特斯拉的賣方分析師大多是 汽車 分析師,這意味著他們沒有時(shí)間或精力深度學(xué)習(xí)和研究機(jī)器人技術(shù)。這意味著特斯拉的自主優(yōu)勢正在被低估,或者根本無法在市場上定價(jià)。

    在我撰寫關(guān)于特斯拉的文章的三年中,我一直堅(jiān)持認(rèn)為數(shù)據(jù)規(guī)模比幾乎所有其他事情都重要。我也一次又一次地指出,認(rèn)為特斯拉在自動(dòng)駕駛方面的進(jìn)展將是平穩(wěn)而持續(xù)的,而不是磕磕絆絆、斷斷續(xù)續(xù)的。我推測,深度學(xué)習(xí)研發(fā)有兩個(gè)階段。數(shù)據(jù)收集和標(biāo)記階段可能相對快速。速度取決于公司在野外擁有的機(jī)器人數(shù)量以及它雇傭的數(shù)據(jù)標(biāo)簽工人數(shù)量。

    接下來是一個(gè)緩慢而不可預(yù)測的階段,人工智能科學(xué)家和工程師致力于構(gòu)建一個(gè)系統(tǒng),以適當(dāng)?shù)臅r(shí)間、合適的力度攝取標(biāo)簽數(shù)據(jù)并輸出有用的機(jī)器人行為,比如轉(zhuǎn)向、加速和剎車。獲取數(shù)據(jù)就像給油箱加油。AI科學(xué)家和工程師的工作就像制造引擎一樣。從里程表的角度來看,進(jìn)展可能是什么都沒有,然后,在一瞬間,點(diǎn)火開關(guān)被打開, 汽車 就啟動(dòng)了。

    AI非線性發(fā)展的一個(gè)顯著例子就是OpenAI在經(jīng)典視頻 游戲 Montezuma's Revenge上的突破。這張圖表說明了一切:

    在這種情況下,數(shù)據(jù)是從 游戲 中收集并自動(dòng)標(biāo)記,因此數(shù)據(jù)集創(chuàng)建階段要比科學(xué)和工程階段快得多。此外,蒙特祖瑪(Montezuma)的復(fù)仇在AI社區(qū)的整體進(jìn)展也不是順利和持續(xù)的。

    特斯拉在路上有超過90萬個(gè)機(jī)器人。在美國,其所有競爭對手的合計(jì)機(jī)器人數(shù)量不到2000輛,而且鑒于大多數(shù)測試都在美國進(jìn)行,因此全球總數(shù)可能不會(huì)高很多。深度神經(jīng)網(wǎng)絡(luò)的性能可預(yù)測地隨著數(shù)據(jù)的變化而變化,這樣的數(shù)據(jù)優(yōu)勢可以產(chǎn)生2倍到30倍的性能優(yōu)勢。

    一個(gè)重要的警告是,數(shù)據(jù)需要手動(dòng)或自動(dòng)地標(biāo)記。正如我所寫的那樣,特斯拉有許多很有前途的選擇來自動(dòng)標(biāo)記數(shù)據(jù),并使用其龐大的車隊(duì)來使手動(dòng)數(shù)據(jù)標(biāo)記更加高效。(也就是說,在同樣的人力資源中獲得更多的神經(jīng)網(wǎng)絡(luò)性能。)特斯拉的AI科學(xué)家和工程師面臨的挑戰(zhàn)是,尋求這些選擇,并讓它們在商業(yè)規(guī)模上像在概念的學(xué)術(shù)證明中那樣發(fā)揮作用。換句話說,就是制造一個(gè)能使用充足的燃料運(yùn)行的引擎。

    走向3D

    顯然,特斯拉AI團(tuán)隊(duì)目前最重要的工作是將計(jì)算機(jī)視覺從2D范式轉(zhuǎn)換為3D范式。埃隆·馬斯克(Elon Musk)在特斯拉第三行播客中首次描述了這一概念:

    馬斯克最近詳細(xì)闡述了這一轉(zhuǎn)變所涉及的工作:

    “Whole Mars

    @WholeMarsBlog

    回復(fù)@elonmusk @romanhistory1和@HardcoreHistory

    自動(dòng)駕駛儀的重寫怎么樣了?

    你們叫它 PlaidNet么?

    Elon Musk

    @elonmusk

    順利。團(tuán)隊(duì)很出色,和他們一起工作是一種榮耀。幾乎所有的東西都需要重寫,包括我們的標(biāo)簽軟件,所以從訓(xùn)練到推理的每一步都是“3D”的。

    2020年7月2日凌晨4:54”

    2020年7月2日

    回復(fù)了@elonmusk @WholeMarsBlog和其他兩個(gè)博客

    反向召喚有什么更新嗎?

    Elon Musk

    @elonmusk

    當(dāng)我們轉(zhuǎn)換到新的軟件棧時(shí),許多功能將同時(shí)發(fā)生。最有可能的是,它將在2到4個(gè)月內(nèi)發(fā)布。接下來的問題是,什么樣的功能被證明足夠安全,可以讓用戶使用。

    從2D到3D的轉(zhuǎn)變意味著什么?就我所能猜測到的來說,這與傳感器數(shù)據(jù)表示為神經(jīng)網(wǎng)絡(luò)有關(guān)。

    LiDAR激光脈沖通過在光線撞擊物體并返回傳感器時(shí)創(chuàng)建一個(gè)點(diǎn)來創(chuàng)建周圍物體的3D表示。世界的3D表示稱為點(diǎn)云。

    2018年,來自康奈爾大學(xué)的計(jì)算機(jī)視覺研究人員(包括王燕和趙衛(wèi)麟)發(fā)表了一份預(yù)印本,顯示可以使用相機(jī)來創(chuàng)建3D點(diǎn)云,更重要的是,使用這種形式的表示方式不是2D圖像提高了神經(jīng)網(wǎng)絡(luò)使用相機(jī)預(yù)測深度的能力。相機(jī)可以通過立體視覺獲得點(diǎn),這也是人類和其他哺乳動(dòng)物在一定距離下感知深度的方式。事實(shí)證明,使LiDAR(激光雷達(dá))如此有效的不僅僅在于激光器,還有將LiDAR(激光雷達(dá))輸入解析為點(diǎn)云的常見做法。Wang等人將利用相機(jī)生成點(diǎn)云的方法稱為“偽LiDAR(激光雷達(dá))”。自2018年以來,其他研究人員也在此基礎(chǔ)上開展了研究。

    如今,至少在某些學(xué)術(shù)基準(zhǔn)上,偽LiDAR及其相關(guān)方法(如偽LiDAR ++和ViDAR(代表可視LiDAR或視頻LiDAR))在3D對象檢測和深度估計(jì)上與匹配LiDAR非常接近。據(jù)我了解,偽LiDAR ++的準(zhǔn)確度大約是流行的KITTI Vision基準(zhǔn)上LiDAR的三分之一。

    今年早些時(shí)候,特斯拉的AI高級總監(jiān)安德烈·卡帕西(Andrej Karpathy)公開透露,特斯拉目前正在研究一種用于深度估算的偽LiDAR方法?;氐?019年的自治日(Autonomy Day ),卡帕西演示了通過立體視覺獲得的3D深度信息:

    在他最近的演講中,Karpathy分享了3D表示與2D表示中獲得的準(zhǔn)確性的一小部分。這些可視化顯示了路緣檢測,左側(cè)是“ground truth”(可能來自LiDAR),右側(cè)是使用2D表示的基于攝像頭的檢測,中間是使用3D表示的基于攝像頭的檢測:

    如果這一定性的結(jié)果真正代表了特斯拉的整體性能提升,那么3D更新必將給特斯拉的AI輔助駕駛軟件帶來巨大的改進(jìn)。從外部來看,這種改善會(huì)出現(xiàn)突發(fā)性和斷續(xù)性。

    錢來了

    談到特斯拉和自治(autonomy)方面,大多數(shù)分析師和投資者采取的是“我看到就相信”的態(tài)度。當(dāng)然,這是他們的權(quán)利,但在我看來,這意味著低估了特斯拉在2021年及以后的收益和現(xiàn)金流。在實(shí)現(xiàn)完全的自動(dòng)駕駛之前,特斯拉將繼續(xù)大力推進(jìn)AI輔助駕駛。特斯拉已經(jīng)可以在紅綠燈和停車標(biāo)志前自動(dòng)停車:

    AI輔助駕駛可以說是特斯拉使用者最喜歡的功能,也是特斯拉和其他 汽車 之間最明顯的區(qū)別。與之競爭的 汽車 制造商在實(shí)施無線軟件更新這樣的基礎(chǔ)技術(shù)方面進(jìn)展緩慢,據(jù)我所知,還沒有一家公司像特斯拉那樣,公開宣布計(jì)劃圍繞其 汽車 生產(chǎn)建立一個(gè)深度學(xué)習(xí)渠道。我相信,2021年以后,差異化軟件將為特斯拉 汽車 帶來更多需求。

    對于沒有其他附加組件的Model 3 Standard Range Plus,售價(jià)8,000美元的“完全自動(dòng)駕駛功能”選項(xiàng)為購買價(jià)格的17%。這是一筆高利潤收入,因?yàn)橄螺d軟件的邊際成本可以忽略不計(jì)。馬斯克多次表示,隨著功能的增加,價(jià)格將會(huì)上漲。此外,特斯拉計(jì)劃以每月訂購的形式銷售該軟件。這必將擴(kuò)大客戶基礎(chǔ)。

    AI輔助駕駛軟件帶來的收入不斷增長,意味著分析師們應(yīng)該考慮特斯拉的預(yù)期利潤率,而不是僅與其業(yè)內(nèi)同行進(jìn)行比較。此外,特斯拉在軟件方面的優(yōu)勢證明了樂觀的增長假設(shè)。

    摩根士丹利(Morgan Stanley)的亞當(dāng)·喬納斯(Adam Jonas)最近發(fā)布了特斯拉2030年 汽車 銷量為600萬輛的看漲預(yù)測,認(rèn)為特斯拉的股價(jià)將上漲2070美元。在我看來,考慮到特斯拉正步入 汽車 公司與人工智能(AI)和機(jī)器人公司之間的灰色地帶,這種2030年的銷量水平是合理的。目前尚不清楚,競爭對手如何能將 汽車 制造能力、軟件和人工智能能力迅速合并,以減緩特斯拉目前的高速增長軌跡。因此,即使股價(jià)在1400美元左右,我仍然認(rèn)為該股仍有很大的上漲空間。

    我們還可以考慮 汽車 銷售以外的問題。我預(yù)計(jì),在“3D更新”向客戶推出后,會(huì)有更多的分析師和投資者開始認(rèn)真考慮機(jī)器人(robotaxis)出租車。雖然鑒于這種不確定性,很難知道如何為機(jī)器人出租車(robotaxis)的機(jī)會(huì)定價(jià)。然而,私人市場投資者已經(jīng)通過Waymo (GOOG, GOOGL)和Cruise (GM)成功做到了這一點(diǎn)。為什么特斯拉無法在公眾市場上做到這一點(diǎn)呢?

    注:我/我們是long TSLA。這篇文章是我自己寫的,表達(dá)了我自己的觀點(diǎn)。我沒有因此得到補(bǔ)償(除了尋求阿爾法)。我和本文中提到的任何公司都沒有業(yè)務(wù)關(guān)系。

    英文原文:https://seekingalpha.com/article/4357831-tesla-autopilot-3d-update-will-be-significant-stock-catalyst?li_source=LI&li_medium=liftigniter-widget

    (未經(jīng)同意,請勿轉(zhuǎn)載)

    三、程序員們說說看:TensorFlow到底難不難學(xué)?

    強(qiáng)化學(xué)習(xí)的進(jìn)展速度遠(yuǎn)遠(yuǎn)低于深度學(xué)習(xí)。 雖然OpenAI Five和谷歌的AlphaGo等有值得注意的新聞突破,但實(shí)際情況下的強(qiáng)化學(xué)習(xí)實(shí)踐并未發(fā)生。

    正如谷歌AI的團(tuán)隊(duì)在這篇博文中提到的那樣,開發(fā)這類算法需要大量的實(shí)驗(yàn)而沒有任何明確的方向。 不幸的是,大多數(shù)現(xiàn)有的框架都沒有這種靈活性。 如果你在這個(gè)領(lǐng)域工作或研究過,你就知道重現(xiàn)現(xiàn)有方法有多困難(如果不是不可能的話)。

    因此,為了幫助加速研究,并希望讓社區(qū)更多地參與強(qiáng)化學(xué)習(xí),Google AI團(tuán)隊(duì)開放了一個(gè)名為Dopamine的TensorFlow框架,旨在通過使其更靈活和可重復(fù)性來創(chuàng)建研究。 根據(jù)團(tuán)隊(duì)的官方文檔,他們的設(shè)計(jì)原則是:

    簡單的實(shí)驗(yàn):幫助新用戶運(yùn)行基準(zhǔn)實(shí)驗(yàn)

    靈活的開發(fā):為新用戶提供新的創(chuàng)新想法

    緊湊和可靠:為一些較舊和更流行的算法提供實(shí)現(xiàn)

    可重復(fù):確保結(jié)果可重復(fù)

    意識到新人們根據(jù)基準(zhǔn)檢查結(jié)果的重要性,研究人員還發(fā)布了整個(gè)培訓(xùn)數(shù)據(jù)。 它可用作Python pickle文件,JSON文件和用戶可以可視化每個(gè)訓(xùn)練迭代的網(wǎng)站。

    我們對此有所了解

    請注意,DeepMind對多巴胺的研究與Google AI的這項(xiàng)工作無關(guān)。 雖然兩者都在很大程度上植根于強(qiáng)化學(xué)習(xí),但Google AI通過公開采購的方式參與了整個(gè)社區(qū)。 它肯定有助于它以TensorFlow為基礎(chǔ),這是深度學(xué)習(xí)社區(qū)中每個(gè)人都熟悉的框架。

    強(qiáng)化學(xué)習(xí)可能是一個(gè)令人生畏的主題,但我鼓勵(lì)大家嘗試一下。 這個(gè)領(lǐng)域仍然具有潛力,并將在未來幾年取得很大進(jìn)展。 這是一個(gè)很好的入門資源,您也可以參考我們的文章了解初學(xué)者。

    如果你想更加了解TensorFlow,或者說想實(shí)踐一下人工智能項(xiàng)目,谷歌的另一款工具或許可以幫到你,也就是谷歌的AIY Projects 項(xiàng)目。

    在2017 年上半年,谷歌宣布了一個(gè)新的開源計(jì)劃--AIY Projects(AIY計(jì)劃),其目標(biāo)是讓每個(gè)Maker(創(chuàng)客)都能DIY自己的 AI 人工智能產(chǎn)品,讓更多人能學(xué)習(xí)、探索并體驗(yàn)人工智能。 AIY 全稱是 Artificial Intelligence Yourself ,顧名思義就是利用 AI 來進(jìn)行的 DIY 功能套件。借助 AIY 項(xiàng)目,創(chuàng)客可以利用人工智能來實(shí)現(xiàn)更像人與人交流的人機(jī)交互。谷歌目前為 AIY Projects 推出了兩款硬件產(chǎn)品--AIY Voice Kit 和 AIY Vision Kit。

    AIY Vision Kit(視覺套件)是一套簡單的計(jì)算機(jī)視覺系統(tǒng),可運(yùn)行 3 種基于 TensorFlow 的類神經(jīng)網(wǎng)路模型應(yīng)用程序。

    這次 AIY 計(jì)劃推出兩款新品,Edge TPU 是谷歌專用的 ASIC 芯片,專為在 Edge 運(yùn)行 TensorFlow Lite ML 模型而設(shè)計(jì), 用來處理 AI 預(yù)測部分。它的特點(diǎn)是比訓(xùn)練模型的計(jì)算強(qiáng)度要小。而且 Edge TPU 還可以自己運(yùn)行計(jì)算,不需要與多臺強(qiáng)大計(jì)算機(jī)相連,因此應(yīng)用程序可以更快、更可靠地工作。它們可以在傳感器或網(wǎng)關(guān)設(shè)備中與標(biāo)準(zhǔn)芯片或微控制器共同處理 AI 工作。 針對Edge TPU的新設(shè)備是:AIY Edge TPU Dev 開發(fā)板和 AIY Edge TPU 加速器,二者皆采用 Google 的 Edge TPU 芯片。

    四、TensorForce是怎樣煉成的

    TensorForce是怎樣煉成的

    本文將圍繞一個(gè)實(shí)際的問題進(jìn)行介紹:應(yīng)用強(qiáng)化學(xué)習(xí)的社區(qū)可以如何從對腳本和單個(gè)案例的收集更進(jìn)一步,實(shí)現(xiàn)一個(gè)強(qiáng)化學(xué)習(xí) API——一個(gè)用于強(qiáng)化學(xué)習(xí)的 tf-learn 或 skikit-learn?在討論 TensorForce 框架之前,我們將談一談啟發(fā)了這個(gè)項(xiàng)目的觀察和思想。如果你只想了解這個(gè) API,你可以跳過這一部分。我們要強(qiáng)調(diào)一下:這篇文章并不包含對深度強(qiáng)化學(xué)習(xí)本身的介紹,也沒有提出什么新模型或談?wù)撟钚碌淖罴阉惴?,因此對于純研究者來說,這篇文章可能并不會(huì)那么有趣。

    開發(fā)動(dòng)機(jī)

    假設(shè)你是計(jì)算機(jī)系統(tǒng)、自然語言處理或其它應(yīng)用領(lǐng)域的研究者,你一定對強(qiáng)化學(xué)習(xí)有一些基本的了解,并且有興趣將深度強(qiáng)化學(xué)習(xí)(deep RL)用來控制你的系統(tǒng)的某些方面。

    對深度強(qiáng)化學(xué)習(xí)、DQN、vanilla 策略梯度、A3C 等介紹文章已經(jīng)有很多了,比如 Karpathy 的文章對策略梯度方法背后的直觀思想就進(jìn)行了很好的描述。另外,你也能找到很多可以幫助上手的代碼,比如 OpenAI 上手智能體、rllab以及 GitHub 上許多特定的算法。

    但是,我們發(fā)現(xiàn)在強(qiáng)化學(xué)習(xí)的研究框架開發(fā)和實(shí)際應(yīng)用之間還存在一個(gè)巨大的鴻溝。在實(shí)際應(yīng)用時(shí),我們可能會(huì)面臨如下的問題:

    •強(qiáng)化學(xué)習(xí)邏輯與模擬句柄的緊密耦合:模擬環(huán)境 API 是非常方便的,比如,它們讓我們可以創(chuàng)建一個(gè)環(huán)境對象然后將其用于一個(gè) for 循環(huán)中,同時(shí)還能管理其內(nèi)部的更新邏輯(比如:通過收集輸出特征)。如果我們的目標(biāo)是評估一個(gè)強(qiáng)化學(xué)習(xí)思想,那么這就是合理的,但將強(qiáng)化學(xué)習(xí)代碼和模擬環(huán)境分開則要艱難得多。它還涉及到流程控制的問題:當(dāng)環(huán)境就緒后,強(qiáng)化學(xué)習(xí)代碼可以調(diào)用它嗎?或者當(dāng)環(huán)境需要決策時(shí),它會(huì)調(diào)用強(qiáng)化學(xué)習(xí)智能體嗎?對于在許多領(lǐng)域中實(shí)現(xiàn)的應(yīng)用強(qiáng)化學(xué)習(xí)庫,我們往往需要后者。

    •固定的網(wǎng)絡(luò)架構(gòu):大多數(shù)實(shí)現(xiàn)案例都包含了硬編碼的神經(jīng)網(wǎng)絡(luò)架構(gòu)。這通常并不是一個(gè)大問題,因?yàn)槲覀兛梢院苤苯拥匕凑招枨蠹尤牖蛞瞥煌木W(wǎng)絡(luò)層。盡管如此,如果有一個(gè)強(qiáng)化學(xué)習(xí)庫能夠提供聲明式接口的功能,而無需修改庫代碼,那么情況就會(huì)好得多。此外,在有的案例中,修改架構(gòu)(出人意外地)要難得多,比如當(dāng)需要管理內(nèi)部狀態(tài)的時(shí)候(見下文)。

    •不兼容狀態(tài)/動(dòng)作接口:很多早期的開源代碼都使用了流行的 OpenAI Gym 環(huán)境,具有平坦的狀態(tài)輸入的簡單接口和單個(gè)離散或連續(xù)動(dòng)作輸出。但 DeepMind Lab 則使用了一種詞典格式,一般具有多個(gè)狀態(tài)和動(dòng)作。而 OpenAI Universe 則使用的是命名關(guān)鍵事件(named key events)。理想情況下,我們想讓強(qiáng)化學(xué)習(xí)智能體能處理任意數(shù)量的狀態(tài)和動(dòng)作,并且具有潛在的不同類型和形狀。比如說,TensorForce 的一位作者正在 NLP 中使用強(qiáng)化學(xué)習(xí)并且想要處理多模態(tài)輸入,其中一個(gè)狀態(tài)在概念上包含兩個(gè)輸入——一張圖像和一個(gè)對應(yīng)的描述。

    •不透明的執(zhí)行設(shè)置和性能問題:寫 TensorFlow 代碼的時(shí)候,我們很自然地會(huì)優(yōu)先關(guān)注邏輯。這會(huì)帶來大量重復(fù)/不必要的運(yùn)算或?qū)崿F(xiàn)不必要的中間值。此外,分布式/異步/并行強(qiáng)化學(xué)習(xí)的目標(biāo)也有點(diǎn)不固定,而分布式 TensorFlow 需要對特定的硬件設(shè)置進(jìn)行一定程度的人工調(diào)節(jié)。同樣,如果最終有一種執(zhí)行配置只需要聲明可用設(shè)備或機(jī)器,然后就能在內(nèi)部處理好其它一切就好了,比如兩臺有不同 IP 的機(jī)器可以運(yùn)行異步 VPG。

    明確一下,這些問題并不是要批評研究者寫的代碼,因?yàn)檫@些代碼本來就沒打算被用作 API 或用于其它應(yīng)用。在這里我們介紹的是想要將強(qiáng)化學(xué)習(xí)應(yīng)用到不同領(lǐng)域中的研究者的觀點(diǎn)。

    TensorForce API

    TensorForce 提供了一種聲明式接口,它是可以使用深度強(qiáng)化學(xué)習(xí)算法的穩(wěn)健實(shí)現(xiàn)。在想要使用深度強(qiáng)化學(xué)習(xí)的應(yīng)用中,它可以作為一個(gè)庫使用,讓用戶無需擔(dān)心所有底層的設(shè)計(jì)就能實(shí)驗(yàn)不同的配置和網(wǎng)絡(luò)架構(gòu)。我們完全了解當(dāng)前的深度強(qiáng)化學(xué)習(xí)方法往往比較脆弱,而且需要大量的微調(diào),但這并不意味著我們還不能為強(qiáng)化學(xué)習(xí)解決方案構(gòu)建通用的軟件基礎(chǔ)設(shè)施。

    TensorForce 并不是原始實(shí)現(xiàn)結(jié)果的集合,因?yàn)檫@不是研究模擬,要將原始實(shí)現(xiàn)用在實(shí)際環(huán)境的應(yīng)用中還需要大量的工作。任何這樣的框架都將不可避免地包含一些結(jié)構(gòu)決策,這會(huì)使得非標(biāo)準(zhǔn)的事情變得更加惱人(抽象泄漏(leaky abstractions))。這就是為什么核心強(qiáng)化學(xué)習(xí)研究者可能更傾向于從頭打造他們的模型的原因。使用 TensorForce,我們的目標(biāo)是獲取當(dāng)前最佳研究的整體方向,包含其中的新興見解和標(biāo)準(zhǔn)。

    接下來,我們將深入到 TensorForce API 的各個(gè)基本方面,并討論我們的設(shè)計(jì)選擇。

    創(chuàng)建和配置智能體

    這個(gè)示例中的狀態(tài)和動(dòng)作是更一般的狀態(tài)/動(dòng)作的短形式(short-form)。比如由一張圖像和一個(gè)描述構(gòu)成多模態(tài)輸入按如下方式定義。類似地,也可以定義多輸出動(dòng)作。注意在整個(gè)代碼中,單個(gè)狀態(tài)/動(dòng)作的短形式必須被持續(xù)不斷地用于與智能體的通信。

    配置參數(shù)依賴于所用的基本智能體和模型。

    TensorForce 目前提供了以下強(qiáng)化學(xué)習(xí)算法:

    •隨機(jī)智能體基線(RandomAgent)

    •帶有 generalized advantage estimation 的 vanilla 策略梯度(VPGAgent)

    •信任區(qū)域策略優(yōu)化(TRPOAgent)

    •深度 Q 學(xué)習(xí)/雙深度 Q 學(xué)習(xí)(DQNAgent)

    •規(guī)范化的優(yōu)勢函數(shù)(NAFAgent)

    •對專家演示的深度 Q 學(xué)習(xí)(DQFDAgent)

    •Asynchronous Advantage Actor-Critic(A3C)(可以隱含地通過 distributed 使用)

    最后一項(xiàng)的意思是說并沒有 A3CAgent 這樣的東西,因?yàn)?A3C 實(shí)際上描述的是一種異步更新的機(jī)制,而不是一種特定的智能體。因此,使用分布式 TensorFlow 的異步更新機(jī)制是通用 Model 基類的一部分,所有智能體都衍生于此。正如論文《Asynchronous Methods for Deep Reinforcement Learning》中描述的那樣,A3C 是通過為 VPGAgent 設(shè)置 distributed flag 而隱含地實(shí)現(xiàn)的。應(yīng)該指出,A3C 并不是對每種模型而言都是最優(yōu)的分布式更新策略(對一些模型甚至完全沒意義),我們將在本文結(jié)尾處討論實(shí)現(xiàn)其它方法(比如 PAAC)。重要的一點(diǎn)是要在概念上將智能體和更新語義的問題與執(zhí)行語義區(qū)分開。

    我們還想談?wù)勀P停╩odel)和智能體(agent)之間的區(qū)別。Agent 類定義了將強(qiáng)化學(xué)習(xí)作為 API 使用的接口,可以管理傳入觀察數(shù)據(jù)、預(yù)處理、探索等各種工作。其中兩個(gè)關(guān)鍵方法是 agent.act(state) 和 agent.observe(reward, terminal)。agent.act(state) 返回一個(gè)動(dòng)作,而 agent.observe(reward, terminal) 會(huì)根據(jù)智能體的機(jī)制更新模型,比如離策略記憶回放(MemoryAgent)或在策略批處理(BatchAgent)。注意,要讓智能體的內(nèi)在機(jī)制正確工作,必須交替調(diào)用這些函數(shù)。Model 類實(shí)現(xiàn)了核心強(qiáng)化學(xué)習(xí)算法,并通過 get_action 和 update 方法提供了必要的接口,智能體可以在相關(guān)點(diǎn)處內(nèi)在地調(diào)用。比如說,DQNAgent 是一個(gè)帶有 DQNModel 和額外一行(用于目標(biāo)網(wǎng)絡(luò)更新)的 MemoryAgent 智能體。

    神經(jīng)網(wǎng)絡(luò)配置

    強(qiáng)化學(xué)習(xí)的一個(gè)關(guān)鍵問題是設(shè)計(jì)有效的價(jià)值函數(shù)。在概念上講,我們將模型看作是對更新機(jī)制的描述,這有別于實(shí)際更新的東西——在深度強(qiáng)化學(xué)習(xí)的例子中是指一個(gè)(或多個(gè))神經(jīng)網(wǎng)絡(luò)。因此,模型中并沒有硬編碼的網(wǎng)絡(luò),而是根據(jù)配置不同的實(shí)例化。

    在上面的例子中,我們通過編程創(chuàng)造了一個(gè)網(wǎng)絡(luò)配置作為描述每一層的詞典列表。這樣的配置也可以通過 JSON 給出,然后使用一個(gè)效用函數(shù)將其變成一個(gè)網(wǎng)絡(luò)構(gòu)建器(network constructor)。

    默認(rèn)的激活層是 relu,但也還有其它激活函數(shù)可用(目前有 elu、selu、softmax、tanh 和 sigmoid)。此外也可以修改層的其它性質(zhì).

    我們選擇不使用已有的層實(shí)現(xiàn)(比如來自 tf.layers),從而能對內(nèi)部運(yùn)算施加明確的控制,并確保它們能與 TensorForce 的其余部分正確地整合在一起。我們想要避免對動(dòng)態(tài) wrapper 庫的依賴,因此僅依賴于更低層的 TensorFlow 運(yùn)算。

    我們的 layer 庫目前僅提供了非常少的基本層類型,但未來還會(huì)擴(kuò)展。

    到目前為止,我們已經(jīng)給出了 TensorForce 創(chuàng)建分層網(wǎng)絡(luò)的功能,即一個(gè)采用單一輸入狀態(tài)張量的網(wǎng)絡(luò),具有一個(gè)層的序列,可以得出一個(gè)輸出張量。但是在某些案例中,可能需要或更適合偏離這樣的層堆疊結(jié)構(gòu)。最顯著的情況是當(dāng)要處理多個(gè)輸入狀態(tài)時(shí),這是必需的,使用單個(gè)處理層序列無法自然地完成這一任務(wù)。

    我們目前還沒有為自動(dòng)創(chuàng)建對應(yīng)的網(wǎng)絡(luò)構(gòu)建器提供更高層的配置接口。因此,對于這樣的案例,你必須通過編程來定義其網(wǎng)絡(luò)構(gòu)建器函數(shù),并像之前一樣將其加入到智能體配置中。

    內(nèi)部狀態(tài)和 Episode 管理

    和經(jīng)典的監(jiān)督學(xué)習(xí)設(shè)置(其中的實(shí)例和神經(jīng)網(wǎng)絡(luò)調(diào)用被認(rèn)為是獨(dú)立的)不同,強(qiáng)化學(xué)習(xí)一個(gè) episode 中的時(shí)間步取決于之前的動(dòng)作,并且還會(huì)影響后續(xù)的狀態(tài)。因此除了其每個(gè)時(shí)間步的狀態(tài)輸入和動(dòng)作輸出,可以想象神經(jīng)網(wǎng)絡(luò)可能有內(nèi)部狀態(tài)在 episode 內(nèi)的對應(yīng)于每個(gè)時(shí)間步的輸入/輸出。下圖展示了這種網(wǎng)絡(luò)隨時(shí)間的工作方式:

    這些內(nèi)部狀態(tài)的管理(即在時(shí)間步之間前向傳播它們和在開始新 episode 時(shí)重置它們)可以完全由 TensorForce 的 agent 和 model 類處理。注意這可以處理所有的相關(guān)用例(在 batch 之內(nèi)一個(gè) episode,在 batch 之內(nèi)多個(gè) episode,在 batch 之內(nèi)沒有終端的 episode)。

    在這個(gè)示例架構(gòu)中,稠密層的輸出被送入一個(gè) LSTM cell,然后其得出該時(shí)間步的最終輸出。當(dāng)向前推進(jìn)該 LSTM 一步時(shí),其內(nèi)部狀態(tài)會(huì)獲得更新并給出此處的內(nèi)部狀態(tài)輸出。對于下一個(gè)時(shí)間步,網(wǎng)絡(luò)會(huì)獲得新狀態(tài)輸入及這個(gè)內(nèi)部狀態(tài),然后將該 LSTM 又推進(jìn)一步并輸出實(shí)際輸出和新的內(nèi)部 LSTM 狀態(tài),如此繼續(xù)……

    對于帶有內(nèi)部狀態(tài)的層的自定義實(shí)現(xiàn),該函數(shù)不僅必須要返回該層的輸出,而且還要返回一個(gè)內(nèi)部狀態(tài)輸入占位符的列表、對應(yīng)的內(nèi)部狀態(tài)輸出張量和一個(gè)內(nèi)部狀態(tài)初始化張量列表(這些都長度相同,并且按這個(gè)順序)。

    預(yù)處理狀態(tài)

    我們可以定義被應(yīng)用于這些狀態(tài)(如果指定為列表的詞典,則可能是多個(gè)狀態(tài))的預(yù)處理步驟.

    這個(gè) stack 中的每一個(gè)預(yù)處理器都有一個(gè)類型,以及可選的 args 列表和/或 kwargs 詞典。比如 sequence 預(yù)處理器會(huì)取最近的四個(gè)狀態(tài)(即:幀)然后將它們堆疊起來以模擬馬爾可夫?qū)傩?。隨便一提:在使用比如之前提及的 LSTM 層時(shí),這顯然不是必需的,因?yàn)?LSTM 層可以通過內(nèi)部狀態(tài)建模和交流時(shí)間依賴。

    探索

    探索可以在 configuration 對象中定義,其可被智能體應(yīng)用到其模型決定所在的動(dòng)作上(以處理多個(gè)動(dòng)作,同樣,會(huì)給出一個(gè)規(guī)范詞典)。比如,為了使用 Ornstein-Uhlenbeck 探索以得到連續(xù)的動(dòng)作輸出,下面的規(guī)范會(huì)被添加到配置中。

    用 Runner 效用函數(shù)使用智能體

    讓我們使用一個(gè)智能體,這個(gè)代碼是在我們測試環(huán)境上運(yùn)行的一個(gè)智能體,我們將其用于連續(xù)積分——一個(gè)為給定智能體/模型的工作方式驗(yàn)證行動(dòng)、觀察和更新機(jī)制的最小環(huán)境。注意我們所有的環(huán)境實(shí)現(xiàn)(OpenAI Gym、OpenAI Universe、DeepMind Lab)都使用了同一個(gè)接口,因此可以很直接地使用另一個(gè)環(huán)境運(yùn)行測試。

    Runner 效用函數(shù)可以促進(jìn)一個(gè)智能體在一個(gè)環(huán)境上的運(yùn)行過程。給定任意一個(gè)智能體和環(huán)境實(shí)例,它可以管理 episode 的數(shù)量,每個(gè) episode 的最大長度、終止條件等。Runner 也可以接受 cluster_spec 參數(shù),如果有這個(gè)參數(shù),它可以管理分布式執(zhí)行(TensorFlow supervisors/sessions/等等)。通過可選的 episode_finished 參數(shù),你還可以周期性地報(bào)告結(jié)果,還能給出在最大 episode 數(shù)之前停止執(zhí)行的指標(biāo)。

    正如在引言中說的一樣,在一個(gè)給定應(yīng)用場景中使用 runner 類取決于流程控制。如果使用強(qiáng)化學(xué)習(xí)可以讓我們合理地在 TensorForce 中查詢狀態(tài)信息(比如通過一個(gè)隊(duì)列或網(wǎng)絡(luò)服務(wù))并返回動(dòng)作(到另一個(gè)隊(duì)列或服務(wù)),那么它可被用于實(shí)現(xiàn)環(huán)境接口,并因此可以使用(或擴(kuò)展)runner 效用函數(shù)。

    更常見的情況可能是將 TensorForce 用作驅(qū)動(dòng)控制的外部應(yīng)用庫,因此無法提供一個(gè)環(huán)境句柄。對研究者來說,這可能無足輕重,但在計(jì)算機(jī)系統(tǒng)等領(lǐng)域,這是一個(gè)典型的部署問題,這也是大多數(shù)研究腳本只能用于模擬,而無法實(shí)際應(yīng)用的根本原因。

    另外值得提及的一點(diǎn)是聲明式的中心配置對象使得我們可以直接用超參數(shù)優(yōu)化為強(qiáng)化學(xué)習(xí)模型的所有組件配置接口,尤其還有網(wǎng)絡(luò)架構(gòu)。

    進(jìn)一步思考

    我們希望你能發(fā)現(xiàn) TensorForce 很有用。到目前為止,我們的重點(diǎn)還是讓架構(gòu)先就位,我們認(rèn)為這能讓我們更持續(xù)一致地實(shí)現(xiàn)不同的強(qiáng)化學(xué)習(xí)概念和新的方法,并且避免探索新領(lǐng)域中的深度強(qiáng)化學(xué)習(xí)用例的不便。

    在這樣一個(gè)快速發(fā)展的領(lǐng)域,要決定在實(shí)際的庫中包含哪些功能是很困難的?,F(xiàn)在的算法和概念是非常多的,而且看起來在 Arcade Learning Environment (ALE) 環(huán)境的一個(gè)子集上,每周都有新想法得到更好的結(jié)果。但也有一個(gè)問題存在:許多想法都只在易于并行化或有特定 episode 結(jié)構(gòu)的環(huán)境中才有效——對于環(huán)境屬性以及它們與不同方法的關(guān)系,我們還沒有一個(gè)準(zhǔn)確的概念。但是,我們能看到一些明顯的趨勢:

    •策略梯度和 Q 學(xué)習(xí)方法混合以提升樣本效率(PGQ、Q-Prop 等):這是一種合乎邏輯的事情,盡管我們還不清楚哪種混合策略將占上風(fēng),但是我們認(rèn)為這將成為下一個(gè)「標(biāo)準(zhǔn)方法」。我們非常有興趣理解這些方法在不同應(yīng)用領(lǐng)域(數(shù)據(jù)豐富/數(shù)據(jù)稀疏)的實(shí)用性。我們一個(gè)非常主觀的看法是大多數(shù)應(yīng)用研究者都傾向于使用 vanilla 策略梯度的變體,因?yàn)樗鼈円子诶斫?、?shí)現(xiàn),而且更重要的是比新算法更穩(wěn)健,而新算法可能需要大量的微調(diào)才能處理潛在的數(shù)值不穩(wěn)定性(numerical instabilities)。一種不同的看法是非強(qiáng)化學(xué)習(xí)研究者可能只是不知道相關(guān)的新方法,或者不愿意費(fèi)力去實(shí)現(xiàn)它們。而這就激勵(lì)了 TensorForce 的開發(fā)。最后,值得考慮的是,應(yīng)用領(lǐng)域的更新機(jī)制往往沒有建模狀態(tài)、動(dòng)作和回報(bào)以及網(wǎng)絡(luò)架構(gòu)重要。

    •更好地利用 GPU 和其他可用于并行/一步/分布式方法的設(shè)備(PAAC、GA3C 等):這一領(lǐng)域的方法的一個(gè)問題是關(guān)于收集數(shù)據(jù)與更新所用時(shí)間的隱含假設(shè)。在非模擬的領(lǐng)域,這些假設(shè)可能并不成立,而理解環(huán)境屬性會(huì)如何影響設(shè)備執(zhí)行語義還需要更多的研究。我們?nèi)匀辉谑褂?feed_dicts,但也在考慮提升輸入處理的性能。

    •探索模式(比如,基于計(jì)數(shù)的探索、參數(shù)空間噪聲……)

    •大型離散動(dòng)作空間、分層模型和子目標(biāo)(subgoal)的分解。比如 Dulac-Arnold 等人的論文《Deep Reinforcement Learning in Large Discrete Action Spaces》。復(fù)雜離散空間(比如許多依賴于狀態(tài)的子選項(xiàng))在應(yīng)用領(lǐng)域是高度相關(guān)的,但目前還難以通過 API 使用。我們預(yù)計(jì)未來幾年會(huì)有大量成果。

    •用于狀態(tài)預(yù)測的內(nèi)部模塊和基于全新模型的方法:比如論文《The Predictron: End-To-End Learning and Planning》。

    •貝葉斯深度強(qiáng)化學(xué)習(xí)和關(guān)于不確定性的推理

    總的來說,我們正在跟蹤這些發(fā)展,并且將會(huì)將此前錯(cuò)過的已有技術(shù)(應(yīng)該有很多)納入進(jìn)來;而一旦我們相信一種新想法有變成穩(wěn)健的標(biāo)準(zhǔn)方法的潛力,我們也會(huì)將其納入進(jìn)來。在這個(gè)意義上,我們并沒有與研究框架構(gòu)成明確的競爭,而是更高程度的覆蓋。

    以上就是關(guān)于openai社區(qū)相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會(huì)為您講解更多精彩的知識和內(nèi)容。


    推薦閱讀:

    pop軟件安卓版(pop安卓版下載)

    chat.openia

    pop下載安卓(pop聊天軟件官網(wǎng))

    2022年銷售工作計(jì)劃怎么寫(2022年銷售工作計(jì)劃怎么寫呢)

    浙江文化特色元素(浙江文化特色元素簡筆畫)