一文搞懂神經網絡

人工智能是這幾年非常火的技術,上至九十九下至剛會走都對人工智能或多或少的瞭解。神經網絡是人工智能的核心,也就是說沒有神經網絡就沒有人工智能,那麼這篇文章就帶大家學習一下神經網絡相關的知識。這篇文章沒有數學公式、沒有代碼,旨在幫助讀者快速掌握神經網絡的核心知識。

【51CTO.com原創稿件】人工智能是這幾年非常火的技術,上至九十九下至剛會走都對人工智能或多或少的瞭解。神經網絡是人工智能的核心,也就是說沒有神經網絡就沒有人工智能,那麼這篇文章就帶大家學習一下神經網絡相關的知識。這篇文章沒有數學公式、沒有代碼,旨在幫助讀者快速掌握神經網絡的核心知識。

一、什麼神經網絡

  1. 概念 所謂神經網絡簡單說就是包含多個簡單且高度相連的元素的系統,每個元素都會根據輸入來處理相關信息。神經網絡是由節點(神經元)組成,這些節點相互鏈接,信息傳入到輸入層之後由多個隱藏層進行處理,處理完後再傳遞給輸出層進行最終處理。這裡所說的最終處理有可能是輸出結果,也有可能是作為輸入數據傳入到另外的神經網絡或者節點進行下一輪的處理。 在上面的內容中我們多次提到節點,那麼什麼是節點呢?節點也被稱為神經元,是一個神經網絡的基本單元。它通過接收輸入的數據來計算出應該輸出的數據,輸入的數據可能來自於其他節點或者是外部的輸入源。針對每個輸入的數據都會有權重,權重是根據輸入數據的重要性進行分配得來的。當節點收到輸入的數據後,將輸入的信息加權和之後再傳遞給激活函數,然後激活函數通過計算輸出最後的輸出數據。
  2. 訓練簡述 前面我講解了神經網絡和節點的概念,下面我們就看一下神經網絡是怎麼訓練的。簡單說就是修改輸入層的輸入權重,通過隱藏層處理數據,再通過激活函數對它們進行最終處理。最常見的神經網絡學習方式叫做 delta 。 delta 是一種監督規則,每當向神經網絡發送一種學習模式時都會調用它,這種情況被稱為循環。 在神經網絡訓練中還涉及到一個概念:誤差率。誤差率簡單地說就是我們向神經網絡輸入一張圖片時,它識別出的結果和正確答案之間的差異。我們訓練神經網絡最根本的目的就是降低誤差率,讓每次識別都無限接近於0。
  3. 梯度下降 說到誤差率就不得不提梯度下降,它是一個一階最優化算法也稱為最速下降法,在最小化損失函數時,可以通過梯度下降法來一步步的迭代求解,得到最小化的損失函數和模型參數值,這個算法很重要因此需要具體講解一下。 例如我們要從某個大山的深處下山,但是我們不知道下山的路在哪,於是就決定走一步看一步,在每走到一個位置的時候求解當前位置的梯度,然後沿著是當前最陡峭的位置向下走一步,接著繼續求解當前位置梯,再向所在位置最陡峭最易下山的位置走。這樣一步步的走下去,一直走到覺得我們已經到了山腳。但是這樣走下去可能我們不能走到山下而是到了一個局部的最低處。從這段描述中我們可以看出梯度下降不一定能找出全局最優解,有可能找出的是局部最優解。
  4. 常見的神經網絡 目前已知的神經網絡多達上千種,這裡面有很大一部分並不是通用的,這部分我們不提。在通用的神經網絡中用的最多的有27種,其中經常能見到的是:RNN、感知機網絡和前饋網絡,下面我進行一個簡單的講解。
  • RNN RNN 中文叫循環神經網絡,它對序列中的每個元素都執行相同的任務,輸出的數據取決於前面的計算,而且它還可以記錄前面的步驟,形成短期記憶。他的圖像是這樣的:
一文搞懂神經網絡

  • 感知機網絡 這是最簡單的神經網絡,他不包含任何隱藏層,只有輸出和輸出層。圖像大致是這樣的:
一文搞懂神經網絡

  • 前饋網絡 包含多個節點,相鄰層的節點之間具有邊,每個邊都有權重。他是這樣的:
一文搞懂神經網絡

二、神經網絡的學習類型

一個孩子家長要教他很多事情,但是家長不能任何事情都要教他,有時也需要他通過其他方式學習。在人工智能中也存在這種情況,因此神經網絡就出現了三種不同的學習類型,分別是有監督學習、無監督學習和強化學習。

  1. 有監督學習 有監督學習的前提條件是你具有一個存在已知結果的數據集。神經網絡從給定的訓練數據集中學習出一個模型參數,當新的數據到來時可以根據這個函數預測結果。數據集要求包括輸入輸出,裡面的數據輸出信息是由人手工標註的。有監督學習一般用在分類問題中,通過已有的數據集去訓練得到最優模型,之後再利用這個模型將所有輸入映射為相應的輸出,對輸出進行簡單的判斷從而實現分類的目的。常見的有監督學習算法包括KNN和SVM
  2. 無監督學習 當你的數據集沒有結,那麼你就適合使用無監督學習。它會根據數據間相似性對數據集進行分類,試圖使每個分類內的差距最小化,每個分類之間的差距最大化。它的目標不是告訴人工智能怎麼做,而是讓它自己去學習怎樣做事情。無監督學習一般我們會分為兩大類: 基於概率密度函數估計的直接方法和基於數據間相似性度量的簡潔聚類方法。基於概率密度函數估計的直接方法會設法找到各個分類在特徵空間中的分佈參數,然後再進行分類。而基於數據間相似性度量的簡潔聚類方法則是設法規定出不同分類的核心和初始內核,然後根據數據與核心之間的相似度將數據分成不同的類別。
  3. 強化學習 強化學習俗稱胡蘿蔔和大棒。簡單說就是如果誤差率鑑定成功我們就會得到胡蘿蔔,反之會得到大棒的懲罰。它是機器學習中的一個領域,強調如何基於環境而行動以取得最大化的預期利益。靈感來源於心理學中的行為主義理論,有機體在環境給予的獎勵或懲罰的刺激下會逐步形成對刺激的預期從而產生能獲得最大利益的習慣性行為。在人工智能中環境通常被設為馬爾可夫決策過程,所以許多強化學習算法在這種情況下使用動態規劃技巧。

三、激活函數與感知器

如果說節點是神經網絡的核心,那麼激活函數和感知器就是神經網絡核心的核心,幾乎在所有的神經網絡中都可以看到他倆,這一小節我就來講解一下激活函數和感知器。

  1. 激活函數 激活函數被添加到神經網絡的輸出端以確定輸出,它的輸出結果範圍通常在-1到1的範圍,具體取值範圍取決於選擇的激活函數。它最終用於確定神經元是否運行。激活函數是數據輸出之前的最後一部分,可以將其視為輸出值的提供者。激活函數分為兩種,一種是線性激活函數,另一種是非線性激活函數。簡單地說線性函數是在直線上或幾乎在直線上的函數,非線性函數是不在直線上的函數(哈哈解釋的夠簡單吧)
  2. 感知器 感知器是一種特殊的節點,當輸入為正或0該函數返回1,否則返回0,具有這種激活函數的節點稱為感知器。現在我們通過例子來講解一下感知器。我們有一個感知器,它具有兩個輸入x1和x2,這兩個輸入的權重分別為w1和w2,我們要對這兩個輸出加權,所謂的加權就是乘以權重,權重是隨機分配的,權重值介於-1到1之間。加權之後就需要將所有加權求和,求和之後將會被作為激活函數的輸入傳遞給激活函數繼續處理。激活函數處理後會告知感知器是否執行。

四、後向傳播

前面所講的都是前向傳播,和前向傳播相反的就是後向傳播,後向傳播是提升神經網絡準確率的重要內容。後向傳播又稱誤差向後傳播,是使用梯度下降有監督學習神經網絡算法的一種。後向傳播通過在神經網絡中反向移動來計算梯度。先計算最後一層權重的梯度,最後計算第一層的梯度。後向傳播計算取決於前向階段的激活函數和輸出數據,這些值都必須在後向傳播開始之前進行計算,因此前向計算必須在後向傳播之前完成。 前向和後向傳播對於很多剛剛步入人工智能這一行的人很難以理解,下面我就來說說他倆的區別。前向傳播數據以獲取輸出,然後將輸出與預期值進行比較從而獲得誤差。為了能達到最小化該誤差,還必須算出每個權重的誤差導數來向後傳播,然後從權重中減去誤差導數。通過前向傳播,可以顯示神經網絡的行為並找到誤差。找出誤差率後可以後向傳播並使用梯度下降的形式更新權重值。

四、總結

這篇文章旨在引導讀者快速入門神經網絡,講解了神經網絡的各種概念,方便讀者對神經網絡的概念有深入理解。

朱鋼,筆名喵叔,國內某技術博客認證專家,.NET高級開發工程師,7年一線開發經驗,參與過電子政務系統和AI客服系統的開發,以及互聯網招聘網站的架構設計,目前就職於一家初創公司,從事企業級安全監控系統的開發。


分享到:


相關文章: