本科生搞AI在線崩潰:3個(gè)月才跑通GitHub模型,機(jī)器學(xué)習(xí)科研入門太難了吧
“還要跟博士生開會(huì),怕了!”
金磊 蕭簫 發(fā)自 凹非寺
量子位 報(bào)道 | 公眾號(hào) QbitAI
“機(jī)器學(xué)習(xí),太難了!”
“3個(gè)月才跑通GitHub模型代碼,要崩潰了!”
“還要跟博士生開會(huì),怕了!”
發(fā)出如此絕望聲音的,正是一名在讀本科生,起初興致勃勃參與了機(jī)器學(xué)習(xí)興趣小組。
但誰曾想到,卻演變成了一入ML深似海,從此半點(diǎn)不由人的這般境遇。
在Reddit上的一通“吐槽”,引來了網(wǎng)友們的高度關(guān)注。
很好奇。
一個(gè)本科生,觸及了大主流的機(jī)器學(xué)習(xí),具體發(fā)生了怎樣頭禿的事情?
為什么ML會(huì)讓這位本科生如此痛苦?
這段“痛苦”的故事,是這樣的。
一開始,這位本科生同學(xué)自告奮勇地參加了一個(gè)“機(jī)器學(xué)習(xí)小組”,而后被分配去協(xié)助一位博士生的工作。
從去年9月份開始,這位博士生就給他布置了一些與“知識(shí)圖譜”相關(guān)的任務(wù),并讓他去實(shí)現(xiàn)。
問題從這里就開始出現(xiàn)了。
這位本科生,花了整整3個(gè)月的時(shí)間,才讓GitHub上一些模型的代碼跑通。
不僅如此,自己還苦訴道:
在此之前,我還花了無數(shù)個(gè)小時(shí)去搞懂預(yù)處理和評(píng)估相關(guān)的代碼。
結(jié)果如何呢?
我現(xiàn)在還是搞不懂如何讓這些ML代碼跑起來!
本就很是苦惱,沒想到讓他更加崩潰的事情,來得如此猝不及防。
博士生給他提了個(gè)“更上一層樓”的要求——讓他從一篇論文中,找到了另一個(gè)實(shí)現(xiàn)類似功能的GitHub repo。
于是,這位本科生便把現(xiàn)有的代碼插了進(jìn)去……結(jié)果可想而知,一團(tuán)糟。
原地爆炸!
我把每一個(gè)步驟都做了一遍,但就是想不明白問題出在了哪里。
Hold不住了,“再也做不下去了”……
他現(xiàn)在每周與博士見面都會(huì)感到恐懼,“因?yàn)槲抑涝僖矝]有進(jìn)展可以匯報(bào)了”。
但是痛定思痛,作為本科生的他,便在Reddit上發(fā)出了一個(gè)“靈魂拷問”:
機(jī)器學(xué)習(xí)代碼本來就這么難嗎?
是我腦袋有什么問題嗎?
你們又是怎么做到的呀?
問題出在了哪里?
“用了一周時(shí)間,卻連一個(gè)問題都沒解決,根本沒有進(jìn)展可以匯報(bào)?”
網(wǎng)友@santiagobmx1993 提出了一種解決方法。根據(jù)實(shí)驗(yàn)期限,這位本科生可以迅速定下遇到問題的解決時(shí)間,如果完不成,就去尋求同級(jí)、上一級(jí)的幫助,快速提升效率。
例如,如果自己花了1天時(shí)間未能完成,就再花5小時(shí)找同級(jí)本科生一起解決,如果依舊不行,再試著花上2小時(shí)找博士生、導(dǎo)師梳理。
“我一直在重復(fù)操作步驟,卻想不明白問題出在哪里?”
網(wǎng)友@help-me-grow 認(rèn)為,在科研實(shí)驗(yàn)中,一定要尋求幫助。有時(shí)候自己看不出來的問題,有經(jīng)驗(yàn)的人一看就能發(fā)現(xiàn)。
網(wǎng)友@linverlan作為博士生,也認(rèn)為溝通非常重要。于他而言,幫助本科生助理完成代碼調(diào)試、解決困難,或是換份更有興趣的工作,都是可以通過溝通實(shí)現(xiàn)的。
“被分配到了完全不在研究范圍內(nèi)的任務(wù),比其他人落后了一大截?”
網(wǎng)友@starfries 表示,這位本科生或許也需要找準(zhǔn)自己擅長(zhǎng)的任務(wù),做起來才有成就感。否則如果給本科生分配博士才能完成的任務(wù),那自然會(huì)很困難。
“我的代碼能通過編譯,但一運(yùn)行起來就出錯(cuò)?”
網(wǎng)友@todeedee則提出了基礎(chǔ)技能:學(xué)習(xí)做模塊測(cè)試(unit test)。
將機(jī)器學(xué)習(xí)模型分解成數(shù)據(jù)收集代碼、網(wǎng)絡(luò)代碼和訓(xùn)練代碼幾部分,并進(jìn)一步將代碼拆分成5~25行的小模塊,分別進(jìn)行調(diào)試,有助于盡快找出問題所在。
“給我的一些代碼,我真的沒辦法看懂,這是我的問題嗎?”
網(wǎng)友@milkteaoppa 認(rèn)為,代碼運(yùn)行不起來,也可能是因?yàn)殡S便搞來的代碼質(zhì)量非常差,理解起來也同樣困難。
如果只是希望運(yùn)行機(jī)器學(xué)習(xí)代碼的話,學(xué)會(huì)識(shí)別低質(zhì)量代碼、并與博士生溝通改進(jìn)代碼質(zhì)量,都是有必要的。
“身為本科生,調(diào)試代碼沒問題,但卻完全沒辦法調(diào)試機(jī)器學(xué)習(xí)的代碼?”
網(wǎng)友@TachyonGun 認(rèn)為,對(duì)本科生來說,機(jī)器學(xué)習(xí)代碼確實(shí)困難,因?yàn)榈谜莆赵S多必要知識(shí),例如數(shù)學(xué)。而在代碼調(diào)試時(shí),會(huì)出現(xiàn)許多數(shù)值問題,例如奇異矩陣、數(shù)值穩(wěn)定性……
因此,想運(yùn)行機(jī)器學(xué)習(xí)代碼,必須先學(xué)會(huì)數(shù)學(xué)知識(shí)(數(shù)值分析、應(yīng)用線性代數(shù)、數(shù)學(xué)建模、概率論/高級(jí)統(tǒng)計(jì)學(xué))、以及熟練掌握方法(數(shù)值和可視化方法)。
事實(shí)上,對(duì)于這位本科生遇到的困難,對(duì)于搞科研的網(wǎng)友們來說,同樣感同身受:
辛辛苦苦做實(shí)驗(yàn)一個(gè)月卻匯報(bào)不出任何進(jìn)展,被導(dǎo)師無情吐槽;
想要復(fù)現(xiàn)一篇論文的代碼,結(jié)果光是解決“代碼出錯(cuò)、編譯出錯(cuò)、環(huán)境代碼不兼容”等問題,就耗費(fèi)了大量時(shí)間……
但也正是如此,他們積攢了對(duì)應(yīng)的經(jīng)驗(yàn),幫助這位本科生找到合適的解決辦法。
“感謝大家的幫助”
在網(wǎng)友們的幫助下,這位本科生也冷靜了下來,并仔細(xì)歸納了網(wǎng)友們給出的建議。
他找出了自己崩潰的原因:缺乏與那位博士生和其他研究者的溝通,不了解項(xiàng)目應(yīng)該如何進(jìn)行;此外,也的確缺乏對(duì)機(jī)器學(xué)習(xí)模型和參數(shù)設(shè)置的理論基礎(chǔ)知識(shí)。
當(dāng)然,他也意識(shí)到,交到自己手里的那些代碼,的確質(zhì)量不高:不僅難以閱讀,而且各個(gè)模塊非常破碎,很難整合到一起。
他現(xiàn)在決定,去找那位博士生溝通一下,坦白自己遇到的問題。
……
不過話說回來,作為一名本科生,無論是做畢設(shè)還是進(jìn)實(shí)驗(yàn)室,或多或少的都會(huì)有這位“發(fā)帖者”遇到的困惑。
是否存在快速上手、入道的方法呢?
清華特獎(jiǎng)本科生的秘訣
其實(shí),同是本科生,也有同學(xué)已經(jīng)手握四篇論文。
這是清華特獎(jiǎng)得主高天宇的真實(shí)經(jīng)歷,而發(fā)表的4篇論文,均在AI頂會(huì)上:兩篇AAAI,兩篇EMNLP。
對(duì)于這些科研成果,他同樣有話說,不過都是實(shí)打?qū)嵉母韶浄窒怼?/p>
例如,讓這位本科生崩潰的、很多人同樣難以啟齒的“拖延壓力”,高天宇就給出了緩解辦法:
經(jīng)常高負(fù)荷做實(shí)驗(yàn)的同學(xué),在忙碌的時(shí)候可以切換一下任務(wù),平時(shí)也可以記錄日常工作,緩解自己拖延工作造成的心理壓力。
另外,還有一條看似違反常理的建議,那就是把事情推到明天,這不是鼓勵(lì)拖延,而是讓你從一天的忙碌中跳出思維定式,也許明天會(huì)有更好的解決方案。
以及,高天宇也同樣建議,要多與導(dǎo)師、學(xué)長(zhǎng)學(xué)姐進(jìn)行溝通:
他們對(duì)過往研究更了解,也在實(shí)驗(yàn)中擁有更豐富的經(jīng)驗(yàn),能防止你走很多彎路。
當(dāng)然,如果想要加強(qiáng)自己機(jī)器學(xué)習(xí)的基礎(chǔ)理論,高天宇也給出了快速讀論文的方法:
大部分論文只需要看摘要,然后快速分類。如果確實(shí)覺得有幫助,再按下面的結(jié)構(gòu)進(jìn)行分析。
- 摘要:研究意義(包括前人研究、研究的缺陷),研究方法,研究結(jié)果
- 簡(jiǎn)介:很多大道理(解決了什么問題)
- 相關(guān)工作:文獻(xiàn)綜述
- 方法:細(xì)節(jié)
- 實(shí)驗(yàn):打臉專用(論文試金石)
- 結(jié)論:基本沒用(重復(fù)摘要)
文獻(xiàn)管理工具也是有必要的:
Nature:成為“本科研究員”的三個(gè)步驟
除了高天宇的個(gè)人“秘訣”之外,Nature也曾發(fā)表過與“本科生做科研”相關(guān)的文章。
Nature在文中指出,本科生參與科研項(xiàng)目,在頂尖大學(xué)是一個(gè)普遍的現(xiàn)象。
更具體一些,例如在MIT,這一比例就超過了90%。
從在課堂上課,到實(shí)驗(yàn)室的生活,確實(shí)是一個(gè)巨大的轉(zhuǎn)變。
對(duì)此,Nature認(rèn)為在這種轉(zhuǎn)變過程中個(gè),通常會(huì)經(jīng)歷三個(gè)階段?(并不適用于每個(gè)人)。
第一個(gè)階段是“在不理解的情況下做科研”。
對(duì)于初來乍到的本科生而言,要做什么事情肯定是頭等的問題。
以及正在做著某項(xiàng)實(shí)驗(yàn),對(duì)于其背后的原因、本質(zhì),或許還不是特別清楚。
第二個(gè)階段是“在理解的基礎(chǔ)上做科研”。
Nature表示,以此狀態(tài)搞科研的學(xué)生,是實(shí)驗(yàn)室往往想要留住的人才。
他們?cè)趯?shí)驗(yàn)室之外,會(huì)投入更多時(shí)間和經(jīng)歷,去觀察實(shí)驗(yàn)所存在的局限性。這將有助于培養(yǎng)參與團(tuán)隊(duì)的意識(shí)。
第三個(gè)階段是“學(xué)生研究員(student research)”。
這個(gè)階段的學(xué)生,就會(huì)像研究員一樣進(jìn)行思考:制定新的問題和假設(shè)、計(jì)劃新的實(shí)驗(yàn)來測(cè)試等等。
Nature認(rèn)為,這一階段的學(xué)生對(duì)于實(shí)驗(yàn)室的貢獻(xiàn)是最大的。
除此之外,Nature進(jìn)一步還提出了一些細(xì)節(jié)的建議,例如時(shí)間管理方面,做研究和休息時(shí)間要得當(dāng)、要做到批判性閱讀、要有保存記錄的習(xí)慣等等。
……
最后,作為正在經(jīng)歷或者過來者,你是否也遇到過什么類似的問題?
以及,如果你有更好的本科生科研方法,歡迎在評(píng)論區(qū)留言分享、討論。
參考鏈接:
https://www.reddit.com/r/MachineLearning/comments/l6bncg/r\_why\_is\_it\_so\_hard\_to\_get\_ml\_code\_to\_work\_i\_am/
https://www.nature.com/articles/d41586-018-05823-5
- 商湯林達(dá)華萬字長(zhǎng)文回答AGI:4層破壁,3大挑戰(zhàn)2025-08-12
- 商湯多模態(tài)大模型賦能鐵路勘察設(shè)計(jì),讓70年經(jīng)驗(yàn)“活”起來2025-08-13
- 以“具身智能基座”為核,睿爾曼攜全產(chǎn)品矩陣及新品亮相2025 WRC2025-08-11
- 哇塞,今天北京被機(jī)器人人人人人塞滿了!2025-08-08