人工智慧領域的突破
近幾年來,人工智慧領域許多存在了幾十年的挑戰忽然間被攻克了,幾乎沒有任何預兆。以長期以來被人工智慧純化論者所鄙視的途徑——從海量資料中學習概率的方式——解決了。
從此你無需把問題編碼成可執行的格式,更不依賴人自身解決問題的技巧——從目標分類和語音識別到圖片標註和合成特定藝術家風格的影像,甚至指導機器人執行尚未被程式設計的任務,都被一一解決。這個占主導地位的新進展最初被冠以“神經網路”之名,如今被稱作“深度學習”——用來定性地強調相比以前的長足進展。
“深度學習”最近的成功常被歸功於更大量的可用資料、更強大的計算系統,以及大科技公司對這一領域突然增加的興趣和投入。這些不斷增長的資源確實客觀上有助於當前人工智慧的快速發展,雖然大公司一直以來都投入了大量資源到各種機器學習方法中,但只有深度學習取得了如此令人難以置信的進展;其他機器學習方法雖然也有改進,但是遠遠沒有達到可以與深度學習相提並論的程度。
探尋深度學習成功的祕訣
到底是什麼因素將深度學習與其他方法區分開?它是否能夠解決那些到目前為止沒有人能用程式設計提供解決方案的問題?
第一個成功因素,是自神經網路早期以來就不斷被重複發現、一直行之有效的演算法,被稱之為“後向傳輸”。它其實只是規則鏈(一種簡單的微積分技巧)以非常簡潔優雅的方式被應用。它被深入應用於連續數學和離散數學領域,使得一系列複雜的潛在解決方案可以在向量微積分運算過程中自動優化。
關鍵之處在於,將這些潛在解決方案的模板組織成一個有向圖(例如,在很多節點中,給一幅照片自動新增標註說明),反向遍歷這個圖使得演算法可以自動計算“梯度向量”,而梯度向量指導搜尋進一步優化的解決方案。你只要稍微檢視一下大部分當前深度學習技術就不難發現,他們與傳統神經網路在結構上有諸多相似之處。因此,後向傳輸演算法無論對傳統的還是新的構架都至關重要。
但是傳統神經網路對後向傳輸的使用遠不及新的深度學習技術,哪怕使用現有的硬體和海量資料來實現也如此。
所以當前架構成功的另一個關鍵是又一個簡單到具有欺騙性的想法:神經網路的元件可以同時被用在多個地方。當神經網路被優化後,它的每個元件的拷貝都被強制保持不變(這個想法被稱作“權重繫結”)。這一點給權重繫結的元件附加了一個限制條件:它們必須同時學習在不同地方生效,而不是侷限在特定位置。權重繫結驅使神經網路去學習更普遍有效的函式功能,因為一個單詞可能出現在一段文字中的任意位置,或者一個實際物體可能會出現在影像中的任意位置。
把普遍適用的元件放在神經網路中的很多位置,可以類比於在程式中編寫一個函式然後在全域性呼叫它——這是電腦科學另一個完全不同領域的核心概念,即函數語言程式設計。實際上它不只是類比,權重繫結的元件其實跟程式設計中可重用函式的理念不謀而合,而且權重繫結更加深入——最近大獲成功的許多架構裡都在複用元件,跟函數語言程式設計裡“高階函式”的編寫模式一模一樣。這暗示其他來自函數語言程式設計的操作可以借鑑到深度學習結構中。
可微分式程式設計?
要探索以深度學習神經網路訓練的函式式結構,最自然的方式是一款新語言,它能夠直接在函式式程式上執行後向傳輸。正如目前所展現的那樣,這種結構隱藏於實現細節之中,函式式程式實際上被編譯進一個類似後向傳輸所需要的計算圖,圖中每個元件必須是可微分的。而Grefenstette等人最近發表了關於許多簡單資料結構的可微分構造(棧,佇列,雙端佇列),他們的研究表明進一步可微分的實現可能只需要一點聰明的數學技巧。
這一領域的後繼進展很可能會創造一個新的程式設計正規化–可微分式程式設計。用可微分式語言程式設計將會像起草一個函式式的結構,並把細節留給優化器;語言本身將會使用後向傳輸從而根據整個程式的目標來自動學習細節實現——正如深度學習中的自動優化權重值一樣,但函數語言程式設計可作為更有表達力的權重繫結實現。
總結
深度學習看上去可能很像”專家系統”或“大資料”領域裡的另一個暫時性的狂熱。可微分式程式設計是一個很新的概念,但它是後向傳輸和權重繫結思想的一個自然而然的延伸,而且可能會被證明跟前兩者一樣長期有效。哪怕特定的實現、架構、技術術語不斷出現又消失,這些核心概念將會一直是人工智慧成功的核心要素。