一個很少受到關注的追求是計算機編程——既包括編寫代碼的苦差事,也包括試圖理解一段已經編寫好的代碼這一同樣令人困惑的任務。麻省理工學院計算機科學與人工智能實驗室(CSAIL)的博士生Shashank Srikant說:“考慮到計算機程序在我們日常生活中的重要性,這當然值得研究。現在很多人都在處理代碼——閱讀、編寫、設計、調試——但沒有人真正知道當這些事情發生時他們的腦子里在想什么。”
幸運的是,他在本月早些時候在新奧爾良舉行的神經信息處理系統會議上發表的一篇論文中,在這個方向上取得了一些“進展”——與麻省理工學院的同事Benjamin Lipkin(論文的另一位主要作者,與Srikant一起),Anna Ivanova, Evelina Fedorenko和Una-May O 'Reilly共同撰寫。
這篇新論文建立在2020年由許多相同作者撰寫的一項研究的基礎上,該研究使用功能磁共振成像來監測程序員“理解”小塊或代碼片段時的大腦。(在這種情況下,理解意味著查看代碼段并正確確定由代碼段執行的計算結果。)大腦與認知科學(BCS)教授、早期研究的合著者Fedorenko解釋說,2020年的研究表明,代碼理解并沒有持續激活語言系統,即處理語言處理的大腦區域。“相反,多需求網絡——一種與一般推理有關、支持數學和邏輯思維等領域的大腦系統——非常活躍。”她說,目前的工作還利用了對程序員的核磁共振掃描,需要“更深入的研究”,以尋求獲得更細粒度的信息。
之前的研究調查了20到30個人,以確定他們平均依賴哪些大腦系統來理解代碼,而這項新研究則調查了單個程序員在處理計算機程序的特定元素時的大腦活動。例如,假設有一行代碼涉及文字操作,另一段代碼涉及數學運算。“我能從我們在大腦中看到的活動,實際的大腦信號,嘗試逆向工程,弄清楚程序員具體在看什么嗎?”Srikant問道。“這將揭示與程序有關的信息在我們的大腦中是唯一編碼的。”他指出,對于神經科學家來說,如果他們可以通過觀察某人的大腦信號來推斷該物理屬性,那么該物理屬性就被認為是“編碼”的。
舉個例子,循環——程序中重復特定操作直到達到預期結果的指令——或者分支——一種不同類型的編程指令,可以使計算機從一個操作切換到另一個操作。根據觀察到的大腦活動模式,研究小組可以判斷出某人是在評估一段涉及循環還是分支的代碼。研究人員還能分辨出這些代碼是與單詞還是數學符號有關,以及人們閱讀的是實際的代碼還是僅僅是對該代碼的書面描述。
這解決了一個調查員可能會問的第一個問題,即某樣東西實際上是否被編碼了。如果答案是肯定的,那么下一個問題可能是:它在哪里編碼?在上面引用的例子中——循環或分支,單詞或數學,代碼或其描述——大腦激活水平在語言系統和多需求網絡中都是相當的。
然而,當涉及到與所謂的動態分析相關的代碼屬性時,觀察到一個明顯的差異。
程序可以具有“靜態”屬性——例如序列中數字的數量——不隨時間變化。“但是程序也可以有動態的方面,比如循環運行的次數,”Srikant說。“我不能總是閱讀一段代碼,并提前知道該程序的運行時間。”麻省理工學院的研究人員發現,在動態分析中,信息在多需求網絡中的編碼比在語言處理中心中的編碼要好得多。這一發現是他們探索代碼理解在大腦中如何分布的線索之一——哪些部分參與其中,哪些部分在任務的某些方面發揮了更大的作用。
該團隊進行了第二組實驗,其中包含了被稱為神經網絡的機器學習模型,這些模型是在計算機程序上專門訓練的。近年來,這些模型在幫助程序員完成代碼段方面取得了成功。研究小組想要弄清楚的是,當參與者檢查一段代碼時,他們在研究中看到的大腦信號是否與神經網絡分析同一段代碼時觀察到的激活模式相似。他們得到的答案是肯定的。
Srikant說:“如果你把一段代碼放入神經網絡中,它會生成一系列數字,以某種方式告訴你這個程序是關于什么的。對學習計算機程序的人的大腦掃描同樣會產生一系列數字。例如,當一個程序被分支主導時,你會看到一種獨特的大腦活動模式,當機器學習模型試圖理解同一片段時,你也會看到類似的模式。”
馬普軟件系統研究所的Mariya Toneva認為這樣的發現“特別令人興奮”。他們提高了使用代碼計算模型來更好地理解我們閱讀程序時大腦中發生的事情的可能性,”她說。
麻省理工學院的科學家們對他們所發現的聯系非常感興趣,這些聯系揭示了計算機程序的離散片段是如何在大腦中編碼的。但他們還不知道這些最近收集到的見解能告訴我們人們在現實世界中如何執行更精細的計劃。完成這類任務——比如去看電影,這需要檢查放映時間、安排交通、買票等等——不能由單個代碼單元和單個算法來處理。這樣一個計劃的成功執行反而需要“組合”——將不同的片段和算法串在一起,形成一個合理的序列,從而產生新的東西,就像將單獨的音樂小節組合起來,形成一首歌甚至交響樂一樣。CSAIL的首席研究科學家O 'Reilly說,創建代碼組合模型“目前超出了我們的能力范圍”。
Lipkin是BCS的博士生,他認為這是下一個合乎邏輯的步驟——弄清楚如何“將簡單的操作結合起來構建復雜的程序,并使用這些策略有效地解決一般的推理任務。”他進一步認為,到目前為止,該團隊在實現這一目標方面取得的一些進展歸功于其跨學科的組成。利普金說:“我們能夠從程序分析和神經信號處理的個人經驗,以及機器學習和自然語言處理的結合工作中汲取經驗。隨著神經科學家和計算機科學家聯手探索理解和構建通用智能,這種類型的合作正變得越來越普遍。”