NASA開源加速宇宙探索

「開源」全名是「開放原始碼」(open source),意思是程式使用者在許可證(License)的範圍內,可以自由研究、修改和散佈軟體給任何人,為了任何目的。「開源軟體」(Open-Source Software)舉例來說有,維基百科(Wikipedia), Mozilla Firefox, VLC player, GIMP, Vim, Linux mint等。

與開源軟體相對的是「版權軟體」或「閉源軟體」(Proprietary software),例如Microsoft Word, Photoshop, iOS。這類軟體在使用前需要同意許多條款,並且不得在未經原始開發者的同意前做任何修改。

在2017年12月,Google的機器學習演算法和NASA的克卜勒太空望遠鏡合作發現了兩顆新行星,分別叫做Kepler-90 i和 Kepler-80 g,但宇宙浩瀚無垠,太多行星等著被探索,為了加快速度,Google乾脆公開搜尋系外行星的代碼,讓大家幫忙想辦法。只要你有興趣,上看看,說明書和程式碼都放在那裏。

用機器學習尋找系外行星

由於系外行星距離太遠,無法直接觀察,科學家利用「凌日現象」(Transit Photometry)來推論其存在。當系外行星通過一顆恆星前方時,恆星的亮度會暫時下降,如此就可推論系外行星的存在。不過造成恆星亮度下降還有很多可能,像是被衛星擋到,望遠鏡的髒污、星斑、宇宙射線和聯星系統。透過機器學習找出「亮度對時間作圖」的圖形樣式中最有可能者。

像上圖第一欄,呈現V型曲線的,代表一個非常大的恆星通過一個克卜勒正在觀察的恆星;第二欄有兩個地方亮度下降,代表一個雙星系統裡面有一顆亮的一顆暗的恆星,凹下去比較深代表比較暗的恆星擋在比較亮的恆星前面,反之亦然;第三欄則非恆星或行星的訊號。

以前是用「訊號雜訊比」(Signal-to-Noise Ratio)當作篩選門檻,篩選出3萬筆資料用人工分析,最後只有2500個是真正的行星。現在有了機器學習的幫助,則可以從第一步就被淘汰的12萬筆資料重新找出漏網之魚,Kepler-90 i和 Kepler-80 g就是最好的例子。

NASA 開源計畫首頁

現在這個網頁有560個開源計畫,包括 “LivingStone2”,是一套可重複使用的A.I.軟體,可以對複雜系統進行自動診斷和離散控制(Discrete Control),目的是讓太空船、生命維持系統、化工廠等複雜系統用最小的人力穩定運行; “CODE”,是一個監測和控制分散式服務、資源和應用程式的工具,主要架構分成四大塊: “Manager”, “Registry”, “Observer”, “Controller”,語法是用JAVA完成,在Linux, Solaris, Irix, MacOS都可以運行; “Mission Simulation Toolkit, (MST)”,讓登月或登陸其他行星的車輛可以擁有自動探索的能力,程式包含機械手臂、感測器和自動駕駛等; “JavaGenes”,用Java語言編寫的系統,最初用在排程對地觀察的衛星,用到遺傳演算法和隨機爬山演算法,這個軟體被用在分子學、原子力場引數、數位電路、對地觀測計畫和天線領域。

開源軟體MST簡介

NASA開源軟體 “CODE”架構圖

NASA組織龐大,架構複雜,如許多大型企業一樣,難免走向官僚化的作風,如今開放原始碼,注入民間思想、活力,也為那些當年無法躬逢火箭發射之盛的青年們,看看什麼叫做 “Rocket Science”的複雜度!