不是我不明白,這世界變化快。
IT系統的困境
IT技術是用來管理和處理信息的技術,IT系統是使用IT技術構建的系統。經過幾十年的發展,IT系統越來越複雜,動輒幾百萬上千萬行代碼。然而,現代IT系統依然非常脆弱,一個業務上的變化,就可能導致一個子系統的重新設計;而一個顛覆性業務模式的出現,可能會導致整個IT系統被替換。
當我們在觀察或了解昆蟲以及其他低等生物時,會產生一種毛骨悚然的感覺:活動熱鬧非凡,可家裡一個人都沒有!——丹尼爾·丹尼特
設計實現IT系統的最大挑戰來自於需求的變化。
各種程式語言、設計模式,以及軟體工程實踐等,都在試圖解決這個挑戰。當前,用效率最高的軟體開發方式——使用具有高級抽象能力的程式語言,採用響應式編程(Reactive Programming)範式和微服務架構,引入DevOps和持續交付等工程實踐等開發一個新需求,也要以天為單位;如果要開發一個新的組件,可能需要以周為單位;而如果要開發一個全新的業務模式,至少要以月為單位。
對大部分程式設計師來說,各種新技術層出不窮,每一項都打著提高開發效率的旗號,然而事實是:程式設計師的工作並沒有因為技術的進步而減少,相反,我們感覺自己越來越累,不僅要學習新技術,同時還要應對越來越頻繁的需求變化。
於2000年左右出現的電子商務顛覆傳統零售行業大概用了10年時間,2006年左右出現的社交網絡顛覆門戶網站大概用了五六年的時間,2012年左右出現的共享經濟顛覆傳統商業模式大概用了3年時間。
一個合理但未經驗證的猜想是:顛覆性業務模式的出現頻率以及顛覆速度近似符合摩爾定律,即每18個月,顛覆性業務模式的出現頻率和顛覆速度會提高一倍。
不管我們使用什麼樣的程式語言,採用什麼樣的架構,引入什麼樣的工程實踐,一個業務需求的生命周期都要包含產品規劃、業務分析、方案設計、開發、測試、上線。這樣的研發周期,在不遠的未來,將無法跟上業務需求變化的速度。
自然的啟示
《自私的基因》一書提到,基因為了將自己的遺傳信息傳遞下去,進化出各種載體——即生物體——以應對環境的變化,讓基因得以生存並傳遞下去。對於一些早期的生物載體,基因通過硬編碼的方式,將一些複雜功能固化到生物體的遺傳信息中。比如有一種名為「掘地蜂」的昆蟲,在產卵時會嚴格遵照預定的程序:用自己的刺麻痺一隻蟋蟀、將蟋蟀拖到挖好的洞口、進洞查看並確保安全、回到洞口把麻痺的蟋蟀拖進洞、產卵、密封洞口、走人。
這套程序看起來非常複雜,我們不禁要感嘆,一個簡單的生物體,竟然可以完成這麼複雜的事情。然而,當掘地蜂進入洞穴查看時,實驗人員將麻痺的蟋蟀移動幾英寸,等掘地蜂從洞口出來,並不會直接將移動過的蟋蟀拖進洞,而是將其拖到洞口,然後再一次進洞檢查。如果期間蟋蟀又一次被移動,哪怕只是一英寸,掘地蜂也會重複前面的過程。正如丹尼特所說:看起來「活動熱鬧非凡,可家裡一個人都沒有!」
《機器人叛亂》對這一觀點提出了進一步的擴展。為了讓生物載體能夠更好地適應快速變化的環境,基因發展出了弱約束目標。相比硬編碼複雜行為,基因只是給其載體下達要完成的目標,而不再是具體的操作計劃,由載體針對當時的環境做出符合目標的最佳選擇。
如果基因會說話,基因會給我們的大腦發出類似的指令:「事情發展太快,沒辦法一一詳述,大腦,你只需在考慮我們的通用目標(生存和繁殖)前提下,做你認為最好的選擇。」
生物體適應能力越來越強,同時也導致環境變化越來越快,反過來迫使我們不得不發展出更強的適應能力,就像進入正反饋的自動控制系統,系統開始進入不穩定狀態,直到崩潰,然後重新尋找平衡。
IT系統的轉折點
程式設計師之於IT系統,就如同基因之於載體。基因在生物進化早期也遇到過這樣的困難,儘管進化出了非常複雜的生物載體,但是對於顛覆性的環境變化(比如火山爆發、地殼運動、彗星撞地球等),這些載體依然表現的不堪一擊。
5億年前的寒武紀大爆發,大量生物出現在地球上,基因像是想通過這樣的方式,發展出複雜的載體,來應對變化的環境,然而,複雜並沒有帶來期望的適應能力。結果大家都知道了,6500萬年前,基因進化出來的最複雜、最具有統治力的載體——恐龍——滅絕了。今天我們發明了新語言、新框架、新實踐,期望通過這樣的方式可以更快的開發出更複雜的系統。然而,再複雜的系統,面對不停變化的混沌世界,依然不堪一擊。
是時候換個思路了。
我們也該考慮類似基因的弱約束目標,讓IT系統具備一定的自主性,可以根據人類制定的目標,做出它認為最優的決策。具備自主性的IT系統,能夠根據人類制定的目標,針對複雜業務變化,做出認為的最優選擇。 這就是未來的IT系統。
DITS - Differentiable IT System
目前最有希望能夠讓IT系統具備自主性的技術,來自深度學習。深度學習通過建立層級化表徵的方式,讓計算機可以從經驗中學習並理解這個世界。
深度學習和經典機器學習方法的最大區別在於,深度學習不需要某個領域的專家來設計特徵提取規則,可以在輸入數據和業務目標之間實現端到端的模型訓練。對於深度學習的使用者來說,只需要準備好訓練數據,設定好訓練目標(即設定Loss Function,損失函數),確定深度神經網絡的結構,然後進行訓練,就可以得到滿足目標的神經網絡模型。
這其中的魔法發生在訓練過程中。我們可以將複雜的神經網絡用計算圖的方式表達出來。在神經網絡的末端,也就是輸出層,通過損失函數計算出實際值和目標值之間的差別。得益於微積分中的鏈式法則,損失函數的結果誤差可以在計算圖中反向傳播(Back Propagation),一層一層的調整神經網絡參數,讓神經網絡在下一次的計算中距離目標更近一步。
在反向傳播的過程中,每一層網絡參數的修正值是通過計算誤差和參數之間的梯度得到的。一個函數在某個點存在梯度,需要在這一點保證函數可微分,也就是本文題目中的Differentiable。所以,深度神經網絡的學習能力,來自神經網絡的可微分性(Differentiable)。
如果我們能夠讓IT系統具備可微分性,IT系統就可以基於人類指定的業務目標,從歷史數據中學習,並不斷更新自己,從而具備自主性。當變化來臨,系統可以在沒有人類參與的情況下自主學習並調整,最終適應變化。寫出具有可微分性程序的編程方式,叫做可微分編程(Differentiable Programming)。3這樣的IT系統,稱之為「可微分IT系統」,即DITS,Differentiable IT System。
當前,大部分AI技術只是作為獨立的服務存在,用來輔助傳統IT系統,比如圖像識別、語音識別、自然語言處理等。而DITS本身就是一個AI系統,或者說,是一個內建AI能力的IT系統。
現在,我們經常使用A/B測試來改進程序,然而開發A/B測試代碼、設計策略、收集反饋、分析、修改代碼,一系列過程下來我們發現,用戶點擊紅色按鈕的比例比藍色按鈕多出30%,於是我們決定按鈕使用紅色。這就是所謂數據驅動的產品運營。
而對於DITS來說,我們可以設定弱約束目標為提高用戶點擊按鈕的比例。每當用戶執行一次操作,DITS就會計算這次操作和期望目標之間的差別,調整內部神經網絡參數,從而自主地改進用戶體驗。更進一步,DITS甚至還可以對不同的用戶展示不同的顏色,比如對於喜歡點紅色按鈕的用戶展示紅色,對於喜歡點藍色按鈕的用戶展示藍色。
這還只是一個具備自我學習能力的IT系統所做事情的一個簡單例子,對於更複雜的業務場景,DITS所能做的,會超出我們的想像。
實現DITS
基於可微分性構造電腦程式,讓計算機具備學習能力,目前是深度學習領域的熱點。早期的嘗試來自於DeepMind在2014年發表的神經圖靈機(Neural Turing Machine,NTM)4,2016年DeepMind在Nature上發表了NTM的更新版本,可微分神經計算機(Differentiable Neural Computer,DNC)5。DNC已經可以根據一些零散的路線信息,推測出地圖上個點之間的連接情況,並計算最短路徑。
另外一些基於記憶網絡(Memory Network)的嘗試也已經取得一些突破,比如Facebook在ICLR 2017上發表的遞歸實體網絡(Recurrent Entity Network)6可以通過所有Facebook提出的bAbI測試。
倫敦大學學院(University College London,UCL)的研究人員實現了一種具有可微分性的Forth語言解釋器7,程式設計師編寫Forth程序時,可以留下一些空白(slot),這些空白會被解釋器在運行時填充,並且在運行過程中,解釋器會根據程序的輸入和輸出調整這些空白部分的邏輯。
在工程領域,這一編程方式還處於早期階段,尚不成熟,但已經有很多人在這一方向上做出嘗試8,以及ThoughtWorks的開源項目DeepLearning.scala和DeepDarkFantasy。
要想完整的實現DITS,還需要很多努力,尤其是要想用DITS替代目前已有的複雜IT系統,還需要很長的一段路。不過,變革已然在醞釀之中。
在計算機被建造出來的早期,大部分人認為那只是學術領域的玩具,是只有書呆子模樣的黑客們才能掌握的黑科技。然而,不過幾十年的時間,計算機就完全改變了我們的生活。
今天的AI技術,包括Differentiable Programming和DITS,就像50年前的編程技術一樣,還處於黑科技的範疇。然而,我們也許不用再等50年,就會看到今天的黑科技,將再一次改變世界。
One More Thing
《機器人叛亂》一書提到,「某些行為服務於載體的目標,它們未必有助於實現基因的目標」。那麼,作為人類未來的信息載體——DITS——也會出現目標衝突的情況,到時候,我們人類要何去何從呢?
- 相關閱讀 -
點擊[閱讀原文]查看文章全部內容&綠字部分。
本文版權屬ThoughtWorks公司所有,如需轉載請在後臺留言聯繫。