深度學習教程(以女優爲例)

本文爲部分轉載,完整教程請點擊:該鏈接

什麼是人工智能?通俗來講,就是讓機器能像人一樣思考。這個無需解釋太多,因爲通過各種科幻電影我們已經對人工智能很熟悉了。現在很火的人臉識別,自動駕駛.,股票預測,金融分析…以及一些小衆的特殊應用,例如利用AI去除AV裏的馬賽克,甚至可以用AI將女優換成Angelababy…

大家現在感興趣的應該是——如何實現人工智能?

從1956年夏季首次提出“人工智能”這一術語開始,科學家們嘗試了各種方法來實現它。這些方法包括專家系統,決策樹、歸納邏輯、聚類等等,但這些都是假智能。直到人工神經網絡技術的出現,才讓機器擁有了“真智能”。

爲什麼說之前的方法都是假智能呢?因爲我們人類能清清楚楚地知道它們內部的分析過程,它們只是一個大型的複雜的程序而已;而人工神經網絡則不同,它的內部是一個黑盒子,就像我們人類的大腦一樣,我們不知道它內部的分析過程,我們不知道它是如何識別出人臉的,也不知道它是如何打敗圍棋世界冠軍的。我們只是爲它構造了一個軀殼而已,就像人類一樣,我們只是生出了一個小孩而已,他腦子裏是如何想的我們並不知道!這就是人工智能的可怕之處,因爲將來它有可能會覺得我們人類不應該活在這個世界上,而把我們消滅掉;爲此,世界上已經成立了不少安全協會來防範人工智能。

人工神經網絡是受到人類大腦結構的啓發而創造出來的,這也是它能擁有真智能的根本原因。在我們的大腦中,有數十億個稱爲神經元的細胞,它們連接成了一個神經網絡。

人工神經網絡正是模仿了上面的網絡結構。下面是一個人工神經網絡的構造圖。每一個圓代表着一個神經元,他們連接起來構成了一個網絡。

人類大腦神經元細胞的樹突接收來自外部的多個強度不同的刺激,並在神經元細胞體內進行處理,然後將其轉化爲一個輸出結果。如下圖所示。

人工神經元也有相似的工作原理。如下圖所示。

上面的x是神經元的輸入,相當於樹突接收的多個外部刺激。w是每個輸入對應的權重,它影響着每個輸入x的刺激強度。

大腦的結構越簡單,那麼智商就越低。單細胞生物是智商最低的了。人工神經網絡也是一樣的,網絡越複雜它就越強大,所以我們需要深度神經網絡。這裏的深度是指層數多,層數越多那麼構造的神經網絡就越複雜。

訓練深度神經網絡的過程就叫做深度學習。網絡構建好了後,我們只需要負責不停地將訓練數據輸入到神經網絡中,它內部就會自己不停地發生變化不停地學習。打比方說我們想要訓練一個深度神經網絡來識別貓。我們只需要不停地將貓的圖片輸入到神經網絡中去。訓練成功後,我們任意拿來一張新的圖片,它都能判斷出裏面是否有貓。但我們並不知道他的分析過程是怎樣的,它是如何判斷裏面是否有貓的。就像當我們教小孩子認識貓時,我們拿來一些白貓,告訴他這是貓,拿來一些黑貓,告訴他這也是貓,他腦子裏會自己不停地學習貓的特徵。最後我們拿來一些花貓,問他,他會告訴你這也是貓。但他是怎麼知道的?他腦子裏的分析過程是怎麼樣的?我們無從知道~~

通過對本篇文章的學習,我們知道了通過人工神經網絡可以實現真正的人工智能。下一小節我就詳細地爲大家講解神經網絡。

通過對前面文章的學習,我們已經知道神經網絡可以實現真正的人工智能。本小節我會進行詳細地講解,讓大家徹底地弄懂神經網絡。在僅僅只學完一篇文章後,你肯定依然感覺朦朧,這是正常的,因爲不可能用一篇文章就把神經網絡給講清楚了。當你學完本小節所有文章後,你就會感覺豁然開朗了。

我們需要弄懂的第一步就是如何將數據輸入到神經網絡中。例如,在語音識別、人臉識別這些應用中,是如何將語音、人臉輸入到神經網絡中的?

下面我拿識別女優的例子來給大家介紹如何將女優的圖片數據輸入到神經網絡中。

此例中,待輸入的數據是一張圖像。爲了存儲圖像,計算機要存儲三個獨立的矩陣(矩陣可以理解成二維數組,後面的教程會給大家詳細講解),這三個矩陣分別與此圖像的紅色、綠色和藍色相對應(世界上的所有顏色都可以通過紅綠藍三種顏色調配出來)。如果圖像的大小是64 * 64個像素(一個像素就是一個顏色點,一個顏色點由紅綠藍三個值來表示,例如,紅綠藍爲255,255,255,那麼這個顏色點就是白色),所以3個64 * 64大小的矩陣在計算機中就代表了這張圖像,矩陣裏面的數值就對應於圖像的紅綠藍強度值。上圖中只畫了個5 * 4的矩陣,而不是64 * 64,爲什麼呢?因爲沒有必要,搞複雜了反而不易於理解。

爲了更加方便後面的處理,我們一般把上面那3個矩陣轉化成1個向量x(向量可以理解成1 * n或n * 1的數組,前者爲行向量,後者爲列向量,向量也會在後面的文章專門講解)。那麼這個向量x的總維數就是64 * 64 * 3,結果是12288。在人工智能領域中,每一個輸入到神經網絡的數據都被叫做一個特徵,那麼上面的這張圖像中就有12288個特徵。這個12288維的向量也被叫做特徵向量。神經網絡接收這個特徵向量x作爲輸入,並進行預測,然後給出相應的結果。

對於不同的應用,需要識別的對象不同,有些是語音有些是圖像有些是傳感器數據,但是它們在計算機中都有對應的數字表示形式,通常我們會把它們轉化成一個特徵向量,然後將其輸入到神經網絡中。

本篇文章我們已經知道了數據是如何被輸入到神經網絡中的。那麼神經網絡是如何根據這些數據進行預測的呢?我們將一張圖片輸入到神經網絡中,神經網絡是如何預測這張圖中是AV女優的呢?下篇文章我將給大家揭曉。

上一篇文章中我們已經知道了如何將數據輸入到神經網絡中。那麼神經網絡是如何根據這些數據進行預測的呢?我們將一張圖片輸入到神經網絡中,神經網絡是如何預測這張圖中是否有貓的呢??

這個預測的過程其實只是基於一個簡單的公式:z = dot(w,x) + b。看到這個公式,完全不懂~~不少同學可能被嚇得小雞雞都萎縮了一截。不用怕,看完我下面的解說後,你就會覺得其實它的原理很簡單。就像玻璃棧道一樣,只是看起來可怕而已。

上面公式中的x代表着輸入特徵向量,假設只有3個特徵,那麼x就可以用(x1,x2,x3)來表示。如下圖所示。w表示權重,它對應於每個輸入特徵,代表了每個特徵的重要程度。b表示閾值[yù zhí],用來影響預測結果。z就是預測結果。公式中的dot()函數表示將w和x進行向量相乘。(不用怕,在後面的文章《向量化》中我會用很通俗易懂的語言來給大家介紹向量相乘有關的高等數學知識)。我們現在只需要知道上面的公式展開後就變成了z = (x1 * w1 + x2 * w2 + x3 * w3) + b。

那麼神經網絡到底是如何利用這個公式來進行預測的呢?下面我通過一個實例來幫助大家理解。

假設週末即將到來,你聽說在你的城市將會有一個音樂節。我們要預測你是否會決定去參加。音樂節離地鐵挺遠,而且你女朋友想讓你陪她宅在家裏搞事情,但是天氣預報說音樂節那天天氣特別好。也就是說有3個因素會影響你的決定,這3個因素就可以看作是3個輸入特徵。那你到底會不會去呢?你的個人喜好——你對上面3個因素的重視程度——會影響你的決定。這3個重視程度就是3個權重。

如果你覺得地鐵遠近無所謂,並且已經精力衰竭不太想搞事情了,而且你很喜歡藍天白雲,那麼我們將預測你會去音樂節。這個預測過程可以用我們的公式來表示。我們假設結果z大於0的話就表示會去,小於0表示不去。又設閾值b是-5。又設3個特徵(x1,x2,x3)爲(0,0,1),最後一個是1,它代表了好天氣。又設三個權重(w1,w2,w3)是(2,2,7),最後一個是7表示你很喜歡好天氣。那麼就有z = (x1 * w1 + x2 * w2 + x3 * w3) + b = (0 * 2 + 0 * 2 + 1 * 7) + (-5) = 2。預測結果z是2,2大於0,所以預測你會去音樂節。

如果你最近慾火焚身,並且對其它兩個因素並不在意,那麼我們預測你將不會去音樂節。這同樣可以用我們的公式來表示。設三個權重(w1,w2,w3)是(2,7,2),w2是7表示你有頂穿鋼板的慾火。那麼就有z = (x1 * w1 + x2 * w2 + x3 * w3) + b = (0 * 2 + 0 * 7 + 1 * 2) + (-5) = -3。預測結果z是-3,-3小於0,所以預測你不會去,會呆在家裏搞事情。

預測圖片裏有沒有貓也是通過上面的公式。經過訓練的神經網絡會得到一組與貓相關的權重。當我們把一張圖片輸入到神經網絡中,圖片數據會與這組權重以及閾值進行運算,結果大於0就是有貓,小於0就是沒有貓。

你平時上網時有沒有發現網頁上的廣告都與你之前瀏覽過的東西是有關聯的?那是因爲很多網站都會記錄下你平時的瀏覽喜好,然後把它們作爲權重套入到上面的公式來預測你會購買什麼。如果你發現你朋友電腦手機上的網頁裏面老是出現一些情趣用品或SM道具的廣告,那你朋友肯定是個性情中人。

上面那個用於預測的公式我們業界稱之爲邏輯迴歸,這個名字有點奇怪,大家記住就行了,只是個名字而已。

最後再稍微提一下激活函數。在實際的神經網絡中,我們不能直接用邏輯迴歸。必須要在邏輯迴歸外面再套上一個函數。這個函數我們就稱它爲激活函數。激活函數非常非常重要,如果沒有它,那麼神經網絡的智商永遠高不起來。而且激活函數又分好多種。後面我會花好幾篇文章來給大家介紹激活函數。在本篇文章的末尾,我只給大家簡單介紹一種叫做sigmoid的激活函數。它的公式和圖像如下。

我們在這裏先只介紹它的一個用途——把z映射到[0,1]之間。上圖中的橫座標是z,縱座標我們用y’來表示,y’就代表了我們最終的預測結果。從圖像可以看出,z越大那麼y’就越靠近1,z越小那麼y’就越靠近0。那爲什麼要把預測結果映射到[0,1]之間呢?因爲這樣不僅便於神經網絡進行計算,也便於我們人類進行理解。例如在預測是否有貓的例子中,如果y’是0.8,就說明有80%的概率是有貓的。

激活函數就只介紹這些,後面的文章再詳細介紹它。有些同學可能會不樂意,要求我多說一些,其實我也想口若懸河地扒拉扒拉說一大堆,因爲把一件簡單的事給說複雜了是很容易的,而要把一件複雜的事給說簡單了是非常非常難的。每篇文章我都是改了又改,刪了又刪,目的就是讓它儘可能的通俗易懂。說多了反而讓你們變得暈頭轉向。例如其實在邏輯迴歸公式中,w其實應該寫成w.T,因爲實際運算中我們需要w的轉置矩陣。你是不是有點暈頭轉向了~~我在教程前面的文章裏通常會省略掉一些細節,因爲那些細節較難,而且他們對於大家理解最重要的理論部分又沒有幫助;在後面的文章,我會慢慢地把他們給介紹出來,讓你們循序漸進,快樂地在不知不覺中學會人工智能這一尖端的高科技。

在本篇文章中,我們知道了神經網絡是如何進行預測的。那麼它又是如何判斷自己是否預測正確了的呢?如果發現自己預測錯誤了,他又是如何從錯誤中進行學習,使自己越來越聰明的呢?後面的文章我將給大家揭曉!

若您覺得寫的不錯,完整教程請點擊:該鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章