成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

實驗研究工作流程詳解:如何把你的機器學(xué)習(xí)想法變成現(xiàn)實

開發(fā) 開發(fā)工具
基于此種情況,哥倫比亞大學(xué)計算機科學(xué)博士生及 OpenAI 研究者 Dustin Tran 從其個人角度概述了從研究思想到實驗過程的步驟。

從研究思想的提出到實驗的具體實現(xiàn)是工程中的基礎(chǔ)環(huán)節(jié)。但是這一過程常常被一些明顯的小瑕疵所影響。在學(xué)術(shù)界,研究生需要辛苦的科研——大量的編寫代碼,撰寫說明以及論文創(chuàng)作。新的工程項目經(jīng)常需要全新的代碼庫,而且通常很難把過去應(yīng)用過的代碼直接延伸到這些新項目當(dāng)中去。

基于此種情況,哥倫比亞大學(xué)計算機科學(xué)博士生及 OpenAI 研究者 Dustin Tran 從其個人角度概述了從研究思想到實驗過程的步驟。其中最關(guān)鍵的步驟是提出新觀點,這往往需要大量時間;而且至少對作者來說,實驗環(huán)節(jié)不僅是學(xué)習(xí),更是解決無法預(yù)測的問題的關(guān)鍵所在。另外,作者還明確說明:這個工作流程僅適用于實驗方面的研究,理論研究則需要遵循另外的流程,盡管這兩者也有一些共同點。機器之心對該工作流程進(jìn)行了編譯介紹,你有什么想法呢?不妨在評論中與我們分享。

找對問題

在真正開始一個項目之前,如何讓你的想法「落地」成為更正式的議題是非常關(guān)鍵的。有時它很簡單——就像導(dǎo)師會給你分配任務(wù);或者處理一個特定的數(shù)據(jù)集或?qū)嶋H問題;又或是和你的合作者進(jìn)行談話來確定工作內(nèi)容。

更為常見的是,研究其實是一系列想法(idea)不斷迭代所產(chǎn)生的結(jié)果,這些想法通常是通過日常談話、近期工作、閱讀專業(yè)內(nèi)和專業(yè)外領(lǐng)域文獻(xiàn)和反復(fù)研讀經(jīng)典論文所產(chǎn)生的。

我的所有尚未探索過的研究思想的主文檔

我的所有尚未探索過的研究思想的主文檔

我發(fā)現(xiàn)了一種方法非常有用——即保持一個單一的主文檔(master document),這通常需要很多工作。

首先,它有一個項目列表來排列所有的研究想法、問題和題目。有時它們可以是比較高層面的問題,就像「用于強化學(xué)習(xí)的貝葉斯/生成方法」、「解決機器學(xué)習(xí)領(lǐng)域的公平性問題」;也可以是一些很具體的議題,比如「處理 EP 中記憶復(fù)雜度的推理網(wǎng)絡(luò)」、「規(guī)模偏置的與對稱的 Dirichlet 先驗的分析」。我經(jīng)常努力把項目列表寫得更加簡明:子內(nèi)容通過一些鏈接進(jìn)行展開。

然后,根據(jù)接下來要做的工作來對 idea 清單進(jìn)行分類。這通常會給我的后續(xù)研究指明方向。我也可以根據(jù)其方向是否和我的研究觀點一致、其必要性和有效性隨時修改這些項目的優(yōu)先級。更重要的是,這個列表清單不僅僅是關(guān)于后續(xù)觀點的,更是關(guān)于接下來我更愿意研究什么內(nèi)容的。從長遠(yuǎn)角度來考慮,這對于找到重要問題和提出簡單新穎的解決方法是有重要貢獻(xiàn)的。我經(jīng)常訪問這個清單,重新安排事務(wù),添加新想法,刪除不必要的議題。最終當(dāng)我可以詳細(xì)說明一個 idea 的時候,它就可以成為一篇比較正式的論文了。一般來說,我發(fā)現(xiàn)在同一個位置(同一個格式)迭代 idea 的過程可以使正式論文寫作中的銜接和實驗過程都變得更加流暢。

管理一個項目

我們?yōu)榻诘?arXiv 預(yù)印本搭建的 repository

我們?yōu)榻诘?arXiv 預(yù)印本搭建的 repository

我喜歡在 GitHub 存儲庫中維護(hù)研究項目。不管一個「單元」的研究是多少,我都會將其定義成某種相對自我包含的東西;比如,它可能會連接到一篇特定的論文、一個已被應(yīng)用的數(shù)據(jù)分析或目前一個特定主題。

GitHub 存儲庫不僅可用于跟蹤代碼,而且還可用于跟蹤一般的研究進(jìn)程、論文寫作進(jìn)度或嘗試其它合作項目。但項目的組織方式一直以來都是一個痛點。我比較喜歡以下的結(jié)構(gòu),該結(jié)構(gòu)來自 Dave Blei,可參閱:http://www.cs.columbia.edu/~blei/seminar/2016_discrete_data/notes/week_01.pdf

  1. -- doc/ 
  2.   -- 2017-nips/ 
  3.     -- preamble/ 
  4.     -- img/ 
  5.     -- main.pdf 
  6.     -- main.tex 
  7.     -- introduction.tex 
  8. -- etc/ 
  9.   -- 2017-03-25-whiteboard.jpg 
  10.   -- 2017-04-03-whiteboard.jpg 
  11.   -- 2017-04-06-dustin-comments.md 
  12.   -- 2017-04-08-dave-comments.pdf 
  13. -- src/ 
  14.   -- checkpoints/ 
  15.   -- codebase/ 
  16.   -- log/ 
  17.   -- out/ 
  18.   -- script1.py 
  19.   -- script2.py 
  20. -- README.md 

README.md 為自己和合作者保持了一個需要去做的事的列表,這讓面臨的問題和前進(jìn)的方向變得明確。

doc/包含所有的記錄事項,每個子目錄都包含一個會議紀(jì)要或是文獻(xiàn)提交,main.tex 是主要文檔,每一章節(jié)都是不同文件,如 introduction.tex,讓每個章節(jié)分開可以讓多人同時處理不同的章節(jié),避免合并沖突。有些人喜歡在主要實驗完成后一次寫出完整論文,但我更喜歡把論文作為目前想法的記錄,并且讓它和想法本身一樣,隨著實驗的進(jìn)展不斷推進(jìn)。

etc/是其他與前面的目錄無關(guān)的內(nèi)容。我通常用它來存儲項目中討論留下的白板內(nèi)容的圖片。有時候,我在日常工作中獲得了一些靈感,我會將它們都記錄在 Markdown 文檔中,它也是一個用于處置對于工作的各種評論的目錄,如合作者對于論文內(nèi)容的反饋。

src/是編寫所有代碼的位置。可運行的腳本都是直接寫在 src/上的,類和實用程序?qū)懺诹? codebase/上。下面我將詳細(xì)說明一下(還有一個是腳本輸出目錄)。

編寫代碼

我現(xiàn)在寫所有代碼的工具都是 Edward,我發(fā)現(xiàn)它是快速實驗現(xiàn)代概率模型和算法的***框架。

Edward 鏈接:http://edwardlib.org/

在概念層面上,Edward 的吸引力在于語言遵循數(shù)學(xué):模型的生成過程被轉(zhuǎn)化為每行 Edward 代碼;隨后希望寫出的算法被轉(zhuǎn)化為下一行……這種純凈的轉(zhuǎn)換過程免去了在未來試圖將代碼拓展為自然研究問題時的麻煩:例如,在之前使用了不同的方法,或者調(diào)整了梯度估值,或嘗試了不同的神經(jīng)網(wǎng)絡(luò)架構(gòu),或是在大數(shù)據(jù)集中應(yīng)用了其他方法等等。

在實踐層面上,我總是從 Edward 的現(xiàn)有模型示例(在 edward/examples 或 edward/notebooks)中受益,我將預(yù)置算法源代碼(在 edward/inferences)作為一個新文件粘貼到我的項目中的 codebase/目錄中,然后進(jìn)行調(diào)整。這樣從零開始就變得非常簡單了,我們也可以避免很多低級細(xì)節(jié)上的缺失。

在編寫代碼時,我一直遵循 PEP8(我特別喜歡 pep8 軟件包:https://pypi.python.org/pypi/pep8),隨后嘗試從腳本共享的類和函數(shù)定義中分離每個腳本;前者被放在 codebase/中以備導(dǎo)入。從***步開始維護(hù)代碼質(zhì)量總是***的選擇,這個過程非常重要,因為項目會隨著時間不斷膨脹,同時其他人也會逐漸加入。

Jupyter 記事本。許多人在使用 Jupyter 記事本(鏈接:http://jupyter.org/)用作可交互式代碼開發(fā)的方法,它也是嵌入可視化和 LaTeX 的簡單方法。對于我來說,我并沒有將它整合到自己的工作流中。我喜歡將自己所有的代碼寫入 Python 腳本中,然后運行腳本。但 Jupyter 等工具的交互性值得稱贊。

實驗管理

在好的工作站或云服務(wù)商做投資是必要的事。GPU 這樣的特性基本上普遍可用,而我們應(yīng)該有權(quán)限并行運行許多工作。

我在本地計算機完成腳本編寫之后,我主要的工作流是:

1. 運行 rsync 同步我本地計算機的 Github Repository(包含未授權(quán)文檔)到服務(wù)器的 directory。

2. ssh 到服務(wù)器。

3. 開始 tmux 并運行腳本。眾事駁雜,tmux 能讓你超脫此進(jìn)程,從而不需要等待它的結(jié)束才與服務(wù)器再次交互。

在腳本可行之后,我開始用多個超參數(shù)配置鉆研實驗。這里有一個有幫助的工具 tf.flags,它使用命令行論證增強一個 Python 腳本,就像下面這樣為你的腳本增加一些東西:

  1. flags = tf.flagsflags.DEFINE_float('batch_size', 128, 'Minibatch during training')flags.DEFINE_float('lr', 1e-5, 'Learning rate step-size')FLAGS = flags.FLAGSbatch_size = FLAGS.batch_sizelr = FLAGS.lr 

然后,你可以運行下面這樣的終端命令:

  1. python script1.py --batch_size=256 --lr=1e-4 

這使得提交超參數(shù)更改的服務(wù)器任務(wù)變得容易。

***,說到管理實驗時輸出的任務(wù),回想一下前文中 src/目錄的結(jié)構(gòu):

  1. -- src/ 
  2.   -- checkpoints/ 
  3.   -- codebase/ 
  4.   -- log/ 
  5.   -- out/ 
  6.   -- script1.py 
  7.   -- script2.py 

我們描述了每個腳本和 codebase/。其他三個目錄被用于組織實驗輸出:

  • checkpoints/記錄在訓(xùn)練中保存的模型參數(shù)。當(dāng)算法每固定次數(shù)迭代時,使用 tf.train.Saver 來保存參數(shù)。這有助于維護(hù)長時間的實驗——你可能會取消一些任務(wù),后來又要恢復(fù)參數(shù)。每個實驗的輸出都會存儲在 checkpoints/中的一個子目錄下,如 20170524_192314_batch_size_25_lr_1e-4/。***個數(shù)字是日期(YYYYMMDD),第二個是時間(HMS),其余的是超參數(shù)。
  • log/存儲用于可視化學(xué)習(xí)的記錄。每次實驗都有屬于自己的和 checkpoints/中對應(yīng)的子目錄。使用 Edward 的一個好處在于,對于日志,你可以簡單地傳遞一個參數(shù) inference.initialize(logdir='log/' + subdir)。被追蹤的默認(rèn) TensorFlow 摘要可以用 TensorBoard 可視化。
  • out/記錄訓(xùn)練結(jié)束后的探索性輸出;例如生成的圖片或 matplotlib 圖,每個實驗都有自己的和 checkpoints/中對應(yīng)的子目錄。

軟件容器。virtualenv 是管理 Python 安裝環(huán)境的必備軟件,可以減少安裝 Python 的困難程度。如果你需要更強大的工具,Docker containers 可以滿足你的需要。

  • Virtualenv 鏈接:http://python-guide-pt-br.readthedocs.io/en/latest/dev/virtualenvs/
  • Docker containers 鏈接:https://www.docker.com/

探索、調(diào)試和診斷

探索、調(diào)試和診斷

TensorBoard 是可視化和探索模型訓(xùn)練的一種優(yōu)秀工具。因為 TensorBoard 具有良好的交互性,你會發(fā)現(xiàn)它非常易于使用,因為這意味著不需要配置大量 matplotlib 函數(shù)來了解訓(xùn)練。我們只需要在代碼的 tensor 上加入 tf.summary。

Edward 默認(rèn)記錄了大量摘要,以便可視化訓(xùn)練迭代中損失的函數(shù)值、漸變和參數(shù)的變化。TensorBoard 還包括經(jīng)過時間的比較,也為充分修飾的 TensorFlow 代碼庫提供了很好的計算圖。對于無法只用 TensorBoard 進(jìn)行診斷的棘手問題,我們可以在 out/目錄中輸出內(nèi)容并檢查這些結(jié)果。

調(diào)試錯誤信息。我的調(diào)試工作流非常糟糕。對此,我在代碼中嵌入打印語句并通過消去過程來尋找錯誤。這種方法非常原始。雖然還沒有嘗試過,但我聽說 TensorFlow 的 debugger 功能非常強大。

提升研究理解

不斷考研你的模型與算法,通常,學(xué)習(xí)過程會讓你對自己的研究和模型有更好的了解。這可以讓你回到制圖板上,重新思考自己所處的位置,尋求進(jìn)一步提升的方法。如果方法指向成功,我們可以從簡單的配置逐漸擴(kuò)大規(guī)模,試圖解決高維度的問題。

從更高層級上看,工作流在本質(zhì)上就是讓科學(xué)方法應(yīng)用到真實世界中。在實驗過程中的每一次迭代里,拋棄主要想法都是不必要的。但另一方面,這一切的理論基礎(chǔ)必須穩(wěn)固。

在這個過程中,實驗并不是孤立的。合作、與其他領(lǐng)域的專家溝通、閱讀論文、基于短期以及長期角度考慮問題、參加學(xué)術(shù)會議都有助于拓寬你看待問題的思路并能幫助解決問題。

說明

本工作流主要用于實證研究,但其中的一些方法是值得其他任務(wù)參考的。

主文檔結(jié)構(gòu)的模板可以參考:https://github.com/dustinvtran/latex-templates

參考文獻(xiàn)

1. Gelman, A., & Shalizi, C. R. (2012). Philosophy and the practice of Bayesian statistics. British Journal of Mathematical and Statistical Psychology, 66(1), 8–38.

2. Pearl, J. (2000). Causality. Cambridge University Press.

 

3. Wainwright, M. J., & Jordan, M. I. (2008). Graphical Models, Exponential Families, and Variational Inference. *Foundations and Trends in Machine Learning, 1(1–2), 1–305.

【本文是51CTO專欄機構(gòu)“機器之心”的原創(chuàng)譯文,微信公眾號“機器之心( id: almosthuman2014)”】

戳這里,看該作者更多好文

責(zé)任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2009-12-03 14:53:49

.NET Framew

2017-07-13 11:20:30

機器學(xué)習(xí)業(yè)務(wù)問題MVP

2017-07-21 13:45:48

機器學(xué)習(xí)分類器MVP模型

2010-07-28 17:19:28

ICMP協(xié)議

2011-08-08 15:14:11

PPPOE

2022-10-09 15:18:31

SwaggerOpenAPI工具

2011-03-31 10:54:01

Cacti工作流程

2010-08-23 10:00:49

DHCP服務(wù)器

2023-05-05 08:29:15

Spring后臺服務(wù)器

2010-07-13 16:21:22

FIX協(xié)議

2010-06-12 17:44:19

ARP協(xié)議

2020-06-29 19:31:46

GIMPPhotoShop開源

2010-09-27 10:19:09

DHCP工作流程

2009-06-05 10:26:05

struts工作流程

2022-11-02 15:11:44

LightHouseChrome插件

2010-06-23 14:46:54

DHCP協(xié)議

2021-08-25 10:37:47

物聯(lián)網(wǎng)人工智能IoT

2014-02-20 09:50:15

云存儲云服務(wù)工作流程

2024-07-10 09:45:58

2010-06-24 16:40:16

Bittorrent協(xié)
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 在线播放国产一区二区三区 | 亚洲欧美综合 | 精品国产乱码久久久久久a丨 | 成在线人视频免费视频 | 三级在线视频 | 欧美高清视频一区 | 国产精品视频中文字幕 | 亚洲一区二区三区 | 男女羞羞免费网站 | 国产一区91精品张津瑜 | 欧美在线视频观看 | 中文字幕乱码一区二区三区 | 欧美αv | 成人高清在线 | 日本精品一区二区三区视频 | 中文字幕一区二区三区在线观看 | 中文字幕黄色大片 | 国产激情在线看 | 国产亚洲一区精品 | 成人精品免费视频 | 国产精品精品视频一区二区三区 | av中文字幕在线 | 久久99精品久久久97夜夜嗨 | 免费电影av | 久久久久久久久久久国产 | 国产黄色大片在线免费观看 | 视频一区在线 | 91精品国产欧美一区二区成人 | 欧美aⅴ在线观看 | 国产综合精品一区二区三区 | 色网站视频| 国产精品毛片在线 | 久草新在线 | 99精品国产一区二区三区 | 国产精品久久精品 | 中文字幕一区二区三区乱码图片 | 久久久精品综合 | 人人人人爽 | 免费一区二区三区 | 91精品国产综合久久小仙女图片 | 国产精品高清在线 |