編程自動化之AlphaCode

作為一名不專業(yè)的數據分析人員,最近常常會被AlphaCode即將取代各種編程工作的消息所刷屏。想想也是,寫代碼的過程中經常會遇到許多的內容是重復的。例如,對于基因ID轉換的工作,明明是一件再簡單不夠的任務,卻仍需要幾行代碼(如無現(xiàn)有工具的前提下),即使是復雜點需要添加一點正則的內容,也并不代表這是一種有意義的工作。實際上,許多個性化分析的工作內容僅對當次分析有用,但對于編程而言,卻是一種重復的且無意義的一類工作。因此,如果存在一種工具,可以根據我們的代碼邏輯直接生成代碼,便可使大家抽身出來,思考抽象層次更高的問題,專注于整體架構,而不是ID轉換這樣細節(jié)的東西。對于生信分析人員而言,有了這類工具,我們便可集中在分析流程的架構與生物學問題的思考上。而本章介紹AlphaCode,即有可能在未來可能就會成為這樣的工具。
一?AlphaCode代碼的邏輯


從圖中可以看出,谷歌deepmind開發(fā)的AlphaCode先根據github上的代碼進行訓練,隨后通過CodeContests進行微調,生成成熟的模型,隨后,針對codeforces中的問題進行大范圍的采樣、過濾與聚類分析,最終篩選到能夠解決問題且代碼行最短的AI-code。

圖3 AlphaCode生成代碼與人類代碼的比較
實際上通過對論文的閱讀我們發(fā)現(xiàn),谷歌的這一模型主要基于NLP(自然語言處理)的邏輯。即通過模型大量閱讀github代碼(包含問題、注釋和代碼),將每句話的語義對應代碼片段,通過達到能夠閱讀codeforces中的問題,并生成大批量的測試代碼。之后,通過對測試代碼的檢驗和篩選,從而挑出最優(yōu)的代碼段。

不過,這個模型應該不是簡單的copy和paste,應該是在某些程度上在對語義的理解上有更高層次的抽象了(本文作者不是專業(yè)的機器學習工程師,僅簡單理解而已)。只是個人感覺來看,這種策略相對于人類而言,在實際問題的邏輯思考方面,應該還是差挺多的。但是對于許多簡單和重復的工作,已經由很大的進步空間了,這也表明那些只會搬運和復制代碼的分析人員而言,未來的工作很有可能會被自動化取代。
論文作者也提到了該模型的一些局限性,但是相信未來應該能夠克服這些困難,從而達到徹底解放人類雙手的程序。下面是摘自論文的兩句話,或許也能幫助生信分析工程師們減輕一些焦慮。
1.Proving a sorting algorithm is correct is usually easier than proving anetwork will sort numbers correctly in all cases.
2.his is partially mitigated because writing code is only one portion ofthe job, and previous instances of partially automating programming (e.g.compilers and IDEs) have only moved programmers to higher levels of abstractionand opened up the field to more people.
二慣例小結
應該在不遠的將來,或許我們需要做的就不是碼代碼,更多的是一種代碼審核的工作(畢竟有些代碼還是非常重要的,比如醫(yī)學類的代碼)。另一方面,我們或許也不應該將自己的精力過多的聚焦于編程上,而是應該將自己的精力專注于具體的生物學問題的提出和解決。因此,或許當下需要做的或許是培養(yǎng)自己解決問題的高級邏輯思維能力和代碼實現(xiàn)的底層邏輯,而不是具體的某個語言(未來的編程語言會越來越簡單,輔助編程的IDE也會越來越智能,寫代碼的門檻越來越低,代碼生成的速度越來越快)。
本公眾號開發(fā)的相關軟件,Multi-omics Hammer軟件和Multi-omics Visual軟件歡迎大家使用。文末是本公眾號在其他平臺的賬戶,也歡迎大家關注并多提意見。
簡書:WJ的生信小院
公眾號:生信小院
博客園:生信小院
最后,也歡迎各位大佬能夠在本平臺上:1傳播和講解自己發(fā)表的論文;2:發(fā)表對某一科研領域的看法;3:想要達成的合作或者相應的招聘信息;4:展示自己以尋找博后工作或者博士就讀的機會;5:博導提供博后工作或者博士攻讀機會,都可以后臺給筆者留言。希望本平臺在進行生信知識分享的同時,能夠成為生信分析者的交流平臺,能夠實現(xiàn)相應的利益互補和雙贏(不一定能實現(xiàn),但是夢想總得是有的吧)。
另外,怎么說呢,投幣也可,不強求,但奢求。?


