對於這個神經網絡的訓練過程,就是要確定這11935個參數。


    訓練的目標可以粗略概括為:對於每一個訓練樣本,對應的輸出無限接近於1,而其它輸出無限接近於0。


    根據michaelnielsen給出的實驗結果,以上述網絡結構為基礎,在未經過調優的情況下,可以輕鬆達到95%的正確識別率。而核心代碼隻有74行!


    在采用了深度學習的思路和卷積網絡(convolutionalorgworks)之後,最終達到了99.67%的正確識別率。而針對mnist數據集達到的曆史最佳成績是99.79%的識別率,是由liwan,matthewzeiler,sixinzhang,yannlecun,和robfergus在2013年做出的。


    考慮到這個數據集裏還有一些類似如下這樣難以辨認的數字,這個結果是相當驚人的!它已經超越了真正人眼的識別了。


    在這個過程中一步步調整權重和偏置參數的值,就必須引入梯度下降算法(gradientdescent)。


    在訓練的過程中,我們的神經網絡需要有一個實際可行的學習算法,來逐步調整參數。


    而最終的目的,是讓網絡的實際輸出與期望輸出能夠盡量接近。我們需要找到一個表達式來對這種接近程度進行表征。這個表達式被稱為代價函數(costfunction)


    x表示一個訓練樣本,即網絡的輸入。其實一個x代表784個輸入。


    y(x)表示當輸入為x的時候,期望的輸出值;而a表示當輸入為x的時候,實際的輸出值。y(x)和a都分別代表10個輸出值(以數學上的向量來表示)。而它們的差的平方,就表征了實際輸出值和期望輸出值的接近程度。越接近,這個差值就越小。


    n是訓練樣本的數量。假設有5萬個訓練樣本,那麽n就是5萬。因為是多次訓練,所以要除以n對所有訓練樣本求平均值。


    c(w,b)的表示法,是把costfunction看成是網絡中所有權重w和偏置b的函數。為什麽這樣看呢?進行訓練的時候,輸入x是固定的(訓練樣本),不會變。在認為輸入不變的情況下,這個式子就可以看成是w和b的函數。那麽,式子右邊的w和b在哪呢?實際上,在a裏麵。y(x)也是固定值,但a是w和b的函數。


    總結來說,c(w,b)表征了網絡的實際輸出值和期望輸出值的接近程度。越接近,c(w,b)的值就越小。因此,學習的過程就是想辦法降低c(w,b)的過程,而不管c(w,b)的表達形式如何,它是w和b的函數,這就變成了一個求函數最小值的最優化問題。


    由於c(w,b)的形式比較複雜,參數也非常多,所以直接進行數學上的求解,非常困難。


    為了利用計算機算法解決這一問題,計算機科學家們提出了梯度下降算法(gradientdescent)。


    這個算法本質上是在多維空間中沿著各個維度的切線貢獻的方向,每次向下邁出微小的一步,從而最終抵達最小值。


    由於多維空間在視覺上無法體現,所以人們通常會退到三維空間進行類比。當c(w,b)隻有兩個參數的時候,它的函數圖像可以在三維空間裏呈現。


    就好像一個小球在山穀的斜坡上向下不停地滾動,最終就有可能到達穀底。這個理解重新推廣到多維空間內也基本成立。


    而由於訓練樣本的數量很大(上萬,幾十萬,甚至更多),直接根據前麵的c(w,b)進行計算,計算量會很大,導致學習過程很慢。


    、於是就出現了隨機梯度下降(stochasticgradientdescent)算法,是對於梯度下降的一個近似。


    在這個算法中,每次學習不再針對所有的訓練集,而是從訓練集中隨機選擇一部分來計算c(w,b),下一次學習再從剩下的訓練集中隨機選擇一部分來計算,直到把整個訓練集用光。然後再不斷重複這一過程。


    深度神經網絡(具有多個hiddeyer)比淺層神經網絡有更多結構上的優勢,它有能力從多個層次上進行抽象。


    從上個世紀八九十年代開始,研究人員們不斷嚐試將隨機梯度下降算法應用於深度神經網絡的訓練,但卻碰到了梯度消失(vanishinggradient)或梯度爆發(explodinggradient)的問題,導致學習過程異常緩慢,深度神經網絡基本不可用。


    然而,從2006年開始,人們開始使用一些新的技術來訓練深度網絡,不斷取得了突破。這些技術包括但不限於:


    采用卷積網絡(convolutionalorgworks);


    regrization(dropout);


    rectifiedlinearunits;


    利用gpu獲得更強的計算能力等。


    深度學習的優點顯而易見:這是一種全新的編程方式,它不需要我們直接為要解決的問題設計算法和編程,而是針對訓練過程編程。


    網絡在訓練過程中就能自己學習到解決問題的正確方法,這使得我們可以用簡單的算法來解決複雜的問題,而且在很多領域勝過了傳統方法。


    而訓練數據在這個過程發揮了更重要的作用:簡單的算法加上複雜的數據,可能遠勝於複雜的算法加上簡單的數據。


    深度網絡往往包含大量的參數,這從哲學原則上不符合奧卡姆剃刀原則,通常人們要在調整這些參數上麵花費巨大的精力;


    訓練深度網絡需要大量的計算力和計算時間;


    過擬合(overfitting)問題始終伴隨著神經網絡的訓練過程,學習過慢的問題始終困擾著人們,這容易讓人們產生一種失控的恐懼,同時也對這項技術在一些重要場合的進一步應用製造了障礙。


    而betacat的故事,所講的就是一個人工智能程序,通過自我學習,最終逐漸統治世界的故事。


    那麽,現在的人工智能技術的發展,會導致這種情況發生嗎?這恐怕還不太可能。一般人認為,大概有兩個重要因素:


    第一,現在的人工智能,它的自我學習還是限定在人們指定的方式,隻能學習解決特定的問題,仍然不是通用的智能。


    第二,現在對於人工智能的訓練過程,需要人們為其輸入規整化的訓練數據,係統的輸入輸出仍然對於數據的格式要求很嚴格,這也意味著,即使把人工智能程序連到網上,它也不能像betacat那樣對於互聯網上海量的非結構化數據進行學習。


    然而這僅僅是對普通的人工智能罷了,但是對起源這樣真正的網絡智能生命來說,以上兩點要求它完全都能夠做到。

章節目錄

閱讀記錄

我的超級黑科技帝國所有內容均來自互聯網,繁體小說網隻為原作者萌主天下無敵的小說進行宣傳。歡迎各位書友支持萌主天下無敵並收藏我的超級黑科技帝國最新章節