自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

機器學習研究重現(xiàn)難,難于上青天

人工智能 機器學習
可重現(xiàn)性 / 一致性是計算科學研究的一項基本要求,機器學習也不例外。現(xiàn)有的很多機器學習研究結(jié)果要么不可重現(xiàn),要么難以重現(xiàn)。如何確保研究成果的可靠性和可重現(xiàn)性,是很多機器學習研究者致力于解決的問題。

 [[223551]]

導讀:可重現(xiàn)性 / 一致性是計算科學研究的一項基本要求,機器學習也不例外。

機器學習研究論文毫無疑問是一筆寶貴的資產(chǎn)。這些論文可以用來啟發(fā)未來的研究;它們可以成為對學生有用的教學工具;它們可以為工業(yè)界的應(yīng)用研究人員提供指導。也許最重要的是,它們可以幫助我們回答那些有關(guān)人類存在的最基本的問題:比如,學習到底是什么意思?人類的存在意味著什么?雖然可重現(xiàn)性在科學研究中并不總能夠做到,但它是提高研究質(zhì)量的有力標準。如果研究結(jié)果可重現(xiàn),那就證明這個研究結(jié)果有可能更穩(wěn)健、更有意義,至少排除了許多由實驗者帶來的錯誤(比如弄虛作假或偶然得出的結(jié)果)。

然而,現(xiàn)有的很多機器學習研究結(jié)果要么不可重現(xiàn),要么難以重現(xiàn)。如何確保研究成果的可靠性和可重現(xiàn)性,是很多機器學習研究者致力于解決的問題。甚至在 2017 年的 ICML 上,還專門組織了一場名為“Reproducibility in Machine Learning”的 Workshop,以探討機器學習研究結(jié)果的可重現(xiàn)性和可復制性問題。

為什么機器學習研究重現(xiàn)起來那么難?來看看在谷歌 TensorFlow 團隊研究深度學習的工程師 Pete Warden 怎么說。

Pete Warden 的文章發(fā)出后,很多正在研究機器學習的工程師、研究員紛紛表示贊同,包括谷歌大腦研究員、SketchRNN 的爸爸 David Ha(@hardmaru)也默默轉(zhuǎn)發(fā)了他的推文。

 

我有個朋友創(chuàng)辦了一家機器學習初創(chuàng)公司,最近,他碰到了一些麻煩。他們的機器學習模型雜亂無章,當他的團隊想基于這些模型構(gòu)建一些東西或把它們展示給客戶時,出現(xiàn)了嚴重的問題。有時候,即使是模型原作者都無法正常地運行自己創(chuàng)建的模型,或者得到與之前同樣的結(jié)果。他向我求助,希望我給他建議一個解決方案,但我不得不承認,我在工作中也正遭遇著同樣的問題。向不了解機器學習的人解釋這些東西真的很難,我們***還是回到了那個不使用代碼版本控制系統(tǒng)的年代,并從頭開始訓練模型,盡管有時候覺得這樣做簡直糟透了。

 

我從 90 年代中期開始我的代碼生涯,那個時候,微軟的 Visual SourceSafe 是標準的代碼版本控制系統(tǒng)。為了提供良好的體驗,它不支持提交代碼原子操作,所以多個開發(fā)者不能同時修改同一個文件。在晚上的時候需要進行掃描和拷貝,避免出現(xiàn)意外的沖突,但即使是這樣,也無法保證在早上的時候數(shù)據(jù)庫是完整的。只能說我足夠幸運,我所在的團隊準備了一面墻,他們在墻上貼上便條,每張便條對應(yīng)項目里的一個文件。當某個開發(fā)人員想要修改某個文件時,就拿走對應(yīng)的便條,等改完了再把便條放回去。

可以說,在版本控制系統(tǒng)面前,我是毫無畏懼的。我曾經(jīng)使用過一些非常糟糕的系統(tǒng),如果有必要,我甚至可以使用同步工具自己搗鼓出一些解決方案。但即使是這樣,在機器學習開發(fā)的變更跟蹤和協(xié)作這個問題上,我可以非常坦誠地說,我也是束手無措。

為了解釋這個問題,先來看看典型的機器學習模型生命周期:

  • 研究人員想嘗試一個新的圖像分類架構(gòu)。
  • 她從之前的項目拷貝了一些代碼用于處理輸入數(shù)據(jù)集。
  • 數(shù)據(jù)集存放在網(wǎng)絡(luò)上的某個文件目錄下,有可能是從 ImageNet 上下載下來的,但不清楚是哪個目錄。在某個時候,可能有人移除了部分非 JPEG 格式的圖像,或者做了其他一些細微的修改,但沒有留下任何修改歷史。
  • 她想方設(shè)法修復 bug,并調(diào)整算法。這些變更都發(fā)生在她的本地機器上,為了訓練模型,她需要把大量的代碼拷貝到 GPU 集群上。
  • 她反復訓練了幾次模型,并在本地機器上繼續(xù)修改代碼,因為訓練一次模型需要幾天甚至幾周的時間。
  • 在訓練接近尾聲時可能出現(xiàn)了 bug,她就在趕緊修改了其中一個文件,并把它拷貝到集群的機器上。
  • 她可能將某一次訓練得到的半成品權(quán)重用在了新的訓練上,而新的訓練是基于剛修改過的代碼。
  • 因為時間的關(guān)系,她評估了這幾次的訓練結(jié)果,并選擇其中一個作為最終要發(fā)布的模型,但這個模型有可能是使用不同的代碼訓練出來的。
  • 她把代碼提交到版本控制系統(tǒng)的個人目錄下。
  • 她把代碼和模型發(fā)布出來。

這已經(jīng)是當研究人員足夠小心謹慎時的一種比較樂觀的情況了,但你已經(jīng)可以想象到,如果換了另外一個人,要重復上面這些步驟,并保證得到同樣的結(jié)果,會有多難。上述的每一個步驟都有可能出現(xiàn)不一致,更何況機器學習框架有時候會在性能和數(shù)字準確性之間做出權(quán)衡,就算真的有人可以按部就班地重復上述的步驟,仍然會出現(xiàn)不一樣的結(jié)果。

大多數(shù)情況下,研究人員可能沒有記下自己都做了些什么,所以無法生成同樣的模型。即使她記下了所有步驟,并再次執(zhí)行這些步驟,但因為框架會隨時發(fā)生變化,她必須記錄下這個系統(tǒng)的快照,才有可能做到與之前的模型保持一致。我曾經(jīng)找研究人員幫忙,讓他們重新生成模型,他們很慷慨,但通常需要花上幾個月時間,即使他們是模型的原作者。

為什么一致性這么重要?我有幾個朋友跟我說,他們在寫論文時不知道該如何重現(xiàn)模型。如果他們無法得到與原作者一樣的準確率,那么該如何說服別人自己的新方法是對原有方法的改進呢?如果你沒有辦法為了應(yīng)對變更的需求或平臺完全重建一個模型,那么重度依賴生產(chǎn)系統(tǒng)已有的模型也是很正常的。在進行研究實驗時,這也是個大問題,因為代碼變更和訓練數(shù)據(jù)很難進行回滾。在嘗試執(zhí)行上述的那些步驟時,可能存在更多的風險,這就好比不使用版本控制系統(tǒng)會增加代碼變更所帶來的成本。

當然,事情也不是那么悲觀,社區(qū)正在這方面做出努力,以解決模型的一致性問題。其中我最喜歡的是由 Toby Boyd 領(lǐng)導的 TensorFlow Benchmarks 系項目(https://www.tensorflow.org/performance/benchmarks)。這個團隊的使命不僅是要實現(xiàn)如何在多平臺上快速訓練當前的一些主流模型,而且要讓這些模型達到足夠高的準確率。我曾親眼目睹他揮汗如雨地為提高模型準確性而做出努力,因為上述的那些步驟都有可能影響結(jié)果,而且沒有簡單的調(diào)試方法,即使有模型原作者的幫助也無濟于事。而且這看起來就像是一項無止境的工作,TensorFlow 框架在變化,GPU 驅(qū)動器在變化,數(shù)據(jù)集在變化,這些都會影響到結(jié)果。Toby 的團隊可以幫助我們發(fā)現(xiàn)和修復因 TensorFlow 的變更引起的 bug,并找出由外部依賴導致的問題,但要把規(guī)模擴大仍然很困難。

我也知道有些團隊對于在生產(chǎn)系統(tǒng)中使用機器學習模型非常小心翼翼,他們?yōu)榱舜_保訓練模型的一致性花了很多時間和精力,但問題是,這一過程仍然是手動進行的?,F(xiàn)在還不存在一種版本控制系統(tǒng)或被大家一致認可的***實踐,可以確保模型在未來仍然可以產(chǎn)出相同的結(jié)果。我暫時也想不到更好的辦法,不過在這里拋磚引玉一下,在嘗試解決這個問題時,還是有一些原則可以遵循的:

  • 新想法需要足夠容易被研究人員所理解,不需要研究人員花費太多時間和精力,否則的話,他們可能壓根不愿意使用這些系統(tǒng)。理想情況下,這些系統(tǒng)應(yīng)該要能幫助他們大大提升效率。
  • 如果某個研究人員不小心被車撞了(大誤,劃掉)出走去搞創(chuàng)業(yè)了,需要保證,哪怕是第二天新加入的研究員也能夠重新訓練他們之前創(chuàng)建好的模型,并得到相同的結(jié)果。
  • 應(yīng)該存在某種打包方式,將訓練某個模型所需的元素打成包,這個包可以被共享出來,并且不會露模型作者不希望暴露的歷史細節(jié)。
  • 為了重現(xiàn)結(jié)果,代碼、訓練數(shù)據(jù)和整個平臺需要被準確地記錄下來。

我已經(jīng)看到一些開源社區(qū)和初創(chuàng)公司正致力于解決這個問題。我也迫不及待地想要用我的余生來解決這個問題,但在短期內(nèi)難有完整的解決方案。在訓練模型這件事情上,我們需要一次變革,就像版本控制系統(tǒng)的出現(xiàn)給我們的編碼流程帶來的巨變那樣。

在嘗試重現(xiàn)機器學習研究結(jié)果的過程中,你踩過哪些坑?對于機器學習結(jié)果難以重現(xiàn),你是否也想吐槽?歡迎留言分享你的看法。

原文鏈接:https://petewarden.com/2018/03/19/the-machine-learning-reproducibility-crisis/

責任編輯:龐桂玉 來源: AI前線
相關(guān)推薦

2018-03-16 08:46:51

2022-07-07 14:06:39

LiBai模型庫

2021-01-13 14:50:02

智能華為云IoT

2012-12-28 16:23:50

2015-09-17 18:53:17

諸葛io

2013-01-21 13:07:31

傲游云瀏覽器

2016-02-02 10:31:03

華三/大安全

2017-04-07 09:32:20

機器學習調(diào)試算法

2015-12-09 15:54:09

網(wǎng)絡(luò)線路建設(shè)華為

2013-08-23 10:34:43

諾基亞Windows Pho塞班之死

2017-04-11 14:45:22

機器學習學習平臺大數(shù)據(jù)平臺

2020-10-28 13:51:45

機器學習化學研發(fā)AI

2022-06-28 09:00:00

機器學習人工智能安全

2015-12-01 17:16:16

華為

2019-10-23 09:41:12

機器學習人工智能計算機

2017-04-10 18:00:11

2020-11-26 18:30:33

機器學習Kubernetes開發(fā)

2018-05-25 19:45:44

企業(yè)機器學習研究

2018-05-27 11:37:07

Cloudera機器學習研究

2017-03-17 08:30:08

機器學習深度學習人工智能
點贊
收藏

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