數學之美——google大腦和人工神經網路
人工神經網路可用於解決:分類問題。
人工神經網路設計:
- 結構(網路分幾層,每層幾個節點,節點之間如何連線)
- 非線性函式f的設計,常用指數函式。
人工神經網路的訓練
1.監督訓練
- 假設成本函式C:訓練的輸出值與實際輸出值的差距(例如定義為歐幾里得距離)將訓練人工神經網路的問題轉化為最優化問題。
-解決最優化問題的常用方法是:梯度下降法 訓練資料+成本函式C
2. 無監督訓練
-定義新的成本函式C:能夠在不知道正確輸出值的情況下,確定訓練出的模型是好還是壞。
例如:分類問題,定義樣本到聚類中心的歐幾里得距離為成本函式。
對於結構複雜的人工神經網路,訓練計算量非常大,是NP-complete問題,有許多機器學習專家在尋找各種好的近似方法。
人工神經網路與貝葉斯網路的關係
不同點:人工神經網路在結構上是完全標準化的,而貝葉斯網路更靈活;人工神經網路先對各個變數進行線性組合,最後對組合的結果進行非線性變換,用計算機實現起來比較容易。而貝葉斯網路的變數可以組合成任意函式,毫無限制,在獲得靈活性的同時,也增加了複雜性。
貝葉斯網路更容易考慮上下文前後的相關性,因此可以解碼一個輸入序列(例如將一段語音識別成文字。將英語句子翻譯成中文)而人工神經網路的輸出相對孤立,它可以識別一個個字,但是很難處理一個序列,因此常常是估計一個概率模型的引數。(例如機器翻譯中語言模型引數的訓練,聲學模型引數的訓練)
很多機器學習的數學工具其實是一通百通的,可以根據實際問題找到最方便的工具。
延伸google大腦
Google採用人工神經網路的原因:
1. 理論上,人工神經網路可以在多維空間畫出各種形狀的模式分類邊界,有很好的通用性。
2. 過去20多年中,各種機器學習演算法不斷改進,但是人工神經網路演算法很穩定幾乎沒變,google希望自己開發的計算工具能夠設計一次長期使用。
3. 並非所有的機器學習演算法(比如貝葉斯網路)都容易並行化。
-分塊後雖然讓塊與塊之間的計算變得非常複雜,但是卻讓一個原本無法在一臺伺服器上完成的大問題,分解成大量可以在一臺伺服器上完成的小問題。
-Google採用隨機梯度下降法,比一般梯度下降法收斂更快的L-BFGS方法,其更容易實現並行化。
-Google大腦演算法
1. 定義兩個服務:取引數;推送引數
2. 對於第n太伺服器,重複下列步驟:
取引數,取資料
計算成本函式的梯度
計算步長
計算新引數
推送新引數