你還不懂什么是神經(jīng)網(wǎng)絡(luò)嗎
人工智能是這幾年非?;鸬募夹g(shù),上至九十九下至剛會走都對人工智能或多或少的了解。神經(jīng)網(wǎng)絡(luò)是人工智能的核心,也就是說沒有神經(jīng)網(wǎng)絡(luò)就沒有人工智能,那么這篇文章就帶大家學(xué)習(xí)一下神經(jīng)網(wǎng)絡(luò)相關(guān)的知識。這篇文章沒有數(shù)學(xué)公式、沒有代碼,旨在幫助讀者快速掌握神經(jīng)網(wǎng)絡(luò)的核心知識。
一、什么神經(jīng)網(wǎng)絡(luò)
概念 所謂神經(jīng)網(wǎng)絡(luò)簡單說就是包含多個簡單且高度相連的元素的系統(tǒng),每個元素都會根據(jù)輸入來處理相關(guān)信息。神經(jīng)網(wǎng)絡(luò)是由節(jié)點(神經(jīng)元)組成,這些節(jié)點相互鏈接,信息傳入到輸入層之后由多個隱藏層進(jìn)行處理,處理完后再傳遞給輸出層進(jìn)行最終處理。這里所說的最終處理有可能是輸出結(jié)果,也有可能是作為輸入數(shù)據(jù)傳入到另外的神經(jīng)網(wǎng)絡(luò)或者節(jié)點進(jìn)行下一輪的處理。 在上面的內(nèi)容中我們多次提到節(jié)點,那么什么是節(jié)點呢?節(jié)點也被稱為神經(jīng)元,是一個神經(jīng)網(wǎng)絡(luò)的基本單元。它通過接收輸入的數(shù)據(jù)來計算出應(yīng)該輸出的數(shù)據(jù),輸入的數(shù)據(jù)可能來自于其他節(jié)點或者是外部的輸入源。針對每個輸入的數(shù)據(jù)都會有權(quán)重,權(quán)重是根據(jù)輸入數(shù)據(jù)的重要性進(jìn)行分配得來的。當(dāng)節(jié)點收到輸入的數(shù)據(jù)后,將輸入的信息加權(quán)和之后再傳遞給激活函數(shù),然后激活函數(shù)通過計算輸出最后的輸出數(shù)據(jù)。
訓(xùn)練簡述 前面我講解了神經(jīng)網(wǎng)絡(luò)和節(jié)點的概念,下面我們就看一下神經(jīng)網(wǎng)絡(luò)是怎么訓(xùn)練的。簡單說就是修改輸入層的輸入權(quán)重,通過隱藏層處理數(shù)據(jù),再通過激活函數(shù)對它們進(jìn)行最終處理。最常見的神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)方式叫做 delta 。 delta 是一種監(jiān)督規(guī)則,每當(dāng)向神經(jīng)網(wǎng)絡(luò)發(fā)送一種學(xué)習(xí)模式時都會調(diào)用它,這種情況被稱為循環(huán)。 在神經(jīng)網(wǎng)絡(luò)訓(xùn)練中還涉及到一個概念:誤差率。誤差率簡單地說就是我們向神經(jīng)網(wǎng)絡(luò)輸入一張圖片時,它識別出的結(jié)果和正確答案之間的差異。我們訓(xùn)練神經(jīng)網(wǎng)絡(luò)最根本的目的就是降低誤差率,讓每次識別都無限接近于0。
梯度下降 說到誤差率就不得不提梯度下降,它是一個一階最優(yōu)化算法也稱為最速下降法,在最小化損失函數(shù)時,可以通過梯度下降法來一步步的迭代求解,得到最小化的損失函數(shù)和模型參數(shù)值,這個算法很重要因此需要具體講解一下。 例如我們要從某個大山的深處下山,但是我們不知道下山的路在哪,于是就決定走一步看一步,在每走到一個位置的時候求解當(dāng)前位置的梯度,然后沿著是當(dāng)前最陡峭的位置向下走一步,接著繼續(xù)求解當(dāng)前位置梯,再向所在位置最陡峭最易下山的位置走。這樣一步步的走下去,一直走到覺得我們已經(jīng)到了山腳。但是這樣走下去可能我們不能走到山下而是到了一個局部的最低處。從這段描述中我們可以看出梯度下降不一定能找出全局最優(yōu)解,有可能找出的是局部最優(yōu)解。
常見的神經(jīng)網(wǎng)絡(luò) 目前已知的神經(jīng)網(wǎng)絡(luò)多達(dá)上千種,這里面有很大一部分并不是通用的,這部分我們不提。在通用的神經(jīng)網(wǎng)絡(luò)中用的最多的有27種,其中經(jīng)常能見到的是:RNN、感知機網(wǎng)絡(luò)和前饋網(wǎng)絡(luò),下面我進(jìn)行一個簡單的講解。
RNN RNN 中文叫循環(huán)神經(jīng)網(wǎng)絡(luò),它對序列中的每個元素都執(zhí)行相同的任務(wù),輸出的數(shù)據(jù)取決于前面的計算,而且它還可以記錄前面的步驟,形成短期記憶。他的圖像是這樣的:
感知機網(wǎng)絡(luò) 這是最簡單的神經(jīng)網(wǎng)絡(luò),他不包含任何隱藏層,只有輸出和輸出層。圖像大致是這樣的:
前饋網(wǎng)絡(luò) 包含多個節(jié)點,相鄰層的節(jié)點之間具有邊,每個邊都有權(quán)重。他是這樣的:
二、神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)類型
一個孩子家長要教他很多事情,但是家長不能任何事情都要教他,有時也需要他通過其他方式學(xué)習(xí)。在人工智能中也存在這種情況,因此神經(jīng)網(wǎng)絡(luò)就出現(xiàn)了三種不同的學(xué)習(xí)類型,分別是有監(jiān)督學(xué)習(xí)、無監(jiān)督學(xué)習(xí)和強化學(xué)習(xí)。
有監(jiān)督學(xué)習(xí) 有監(jiān)督學(xué)習(xí)的前提條件是你具有一個存在已知結(jié)果的數(shù)據(jù)集。神經(jīng)網(wǎng)絡(luò)從給定的訓(xùn)練數(shù)據(jù)集中學(xué)習(xí)出一個模型參數(shù),當(dāng)新的數(shù)據(jù)到來時可以根據(jù)這個函數(shù)預(yù)測結(jié)果。數(shù)據(jù)集要求包括輸入輸出,里面的數(shù)據(jù)輸出信息是由人手工標(biāo)注的。有監(jiān)督學(xué)習(xí)一般用在分類問題中,通過已有的數(shù)據(jù)集去訓(xùn)練得到最優(yōu)模型,之后再利用這個模型將所有輸入映射為相應(yīng)的輸出,對輸出進(jìn)行簡單的判斷從而實現(xiàn)分類的目的。常見的有監(jiān)督學(xué)習(xí)算法包括KNN和SVM
無監(jiān)督學(xué)習(xí) 當(dāng)你的數(shù)據(jù)集沒有結(jié),那么你就適合使用無監(jiān)督學(xué)習(xí)。它會根據(jù)數(shù)據(jù)間相似性對數(shù)據(jù)集進(jìn)行分類,試圖使每個分類內(nèi)的差距最小化,每個分類之間的差距最大化。它的目標(biāo)不是告訴人工智能怎么做,而是讓它自己去學(xué)習(xí)怎樣做事情。無監(jiān)督學(xué)習(xí)一般我們會分為兩大類: 基于概率密度函數(shù)估計的直接方法和基于數(shù)據(jù)間相似性度量的簡潔聚類方法?;诟怕拭芏群瘮?shù)估計的直接方法會設(shè)法找到各個分類在特征空間中的分布參數(shù),然后再進(jìn)行分類。而基于數(shù)據(jù)間相似性度量的簡潔聚類方法則是設(shè)法規(guī)定出不同分類的核心和初始內(nèi)核,然后根據(jù)數(shù)據(jù)與核心之間的相似度將數(shù)據(jù)分成不同的類別。
強化學(xué)習(xí) 強化學(xué)習(xí)俗稱胡蘿卜和大棒。簡單說就是如果誤差率鑒定成功我們就會得到胡蘿卜,反之會得到大棒的懲罰。它是機器學(xué)習(xí)中的一個領(lǐng)域,強調(diào)如何基于環(huán)境而行動以取得最大化的預(yù)期利益。靈感來源于心理學(xué)中的行為主義理論,有機體在環(huán)境給予的獎勵或懲罰的刺激下會逐步形成對刺激的預(yù)期從而產(chǎn)生能獲得最大利益的習(xí)慣性行為。在人工智能中環(huán)境通常被設(shè)為馬爾可夫決策過程,所以許多強化學(xué)習(xí)算法在這種情況下使用動態(tài)規(guī)劃技巧。
三、激活函數(shù)與感知器
如果說節(jié)點是神經(jīng)網(wǎng)絡(luò)的核心,那么激活函數(shù)和感知器就是神經(jīng)網(wǎng)絡(luò)核心的核心,幾乎在所有的神經(jīng)網(wǎng)絡(luò)中都可以看到他倆,這一小節(jié)我就來講解一下激活函數(shù)和感知器。
激活函數(shù) 激活函數(shù)被添加到神經(jīng)網(wǎng)絡(luò)的輸出端以確定輸出,它的輸出結(jié)果范圍通常在-1到1的范圍,具體取值范圍取決于選擇的激活函數(shù)。它最終用于確定神經(jīng)元是否運行。激活函數(shù)是數(shù)據(jù)輸出之前的最后一部分,可以將其視為輸出值的提供者。激活函數(shù)分為兩種,一種是線性激活函數(shù),另一種是非線性激活函數(shù)。簡單地說線性函數(shù)是在直線上或幾乎在直線上的函數(shù),非線性函數(shù)是不在直線上的函數(shù)(哈哈解釋的夠簡單吧)
感知器 感知器是一種特殊的節(jié)點,當(dāng)輸入為正或0該函數(shù)返回1,否則返回0,具有這種激活函數(shù)的節(jié)點稱為感知器?,F(xiàn)在我們通過例子來講解一下感知器。我們有一個感知器,它具有兩個輸入x1和x2,這兩個輸入的權(quán)重分別為w1和w2,我們要對這兩個輸出加權(quán),所謂的加權(quán)就是乘以權(quán)重,權(quán)重是隨機分配的,權(quán)重值介于-1到1之間。加權(quán)之后就需要將所有加權(quán)求和,求和之后將會被作為激活函數(shù)的輸入傳遞給激活函數(shù)繼續(xù)處理。激活函數(shù)處理后會告知感知器是否執(zhí)行。
四、后向傳播
前面所講的都是前向傳播,和前向傳播相反的就是后向傳播,后向傳播是提升神經(jīng)網(wǎng)絡(luò)準(zhǔn)確率的重要內(nèi)容。后向傳播又稱誤差向后傳播,是使用梯度下降有監(jiān)督學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)算法的一種。后向傳播通過在神經(jīng)網(wǎng)絡(luò)中反向移動來計算梯度。先計算最后一層權(quán)重的梯度,最后計算第一層的梯度。后向傳播計算取決于前向階段的激活函數(shù)和輸出數(shù)據(jù),這些值都必須在后向傳播開始之前進(jìn)行計算,因此前向計算必須在后向傳播之前完成。 前向和后向傳播對于很多剛剛步入人工智能這一行的人很難以理解,下面我就來說說他倆的區(qū)別。前向傳播數(shù)據(jù)以獲取輸出,然后將輸出與預(yù)期值進(jìn)行比較從而獲得誤差。為了能達(dá)到最小化該誤差,還必須算出每個權(quán)重的誤差導(dǎo)數(shù)來向后傳播,然后從權(quán)重中減去誤差導(dǎo)數(shù)。通過前向傳播,可以顯示神經(jīng)網(wǎng)絡(luò)的行為并找到誤差。找出誤差率后可以后向傳播并使用梯度下降的形式更新權(quán)重值。
四、總結(jié)
這篇文章旨在引導(dǎo)讀者快速入門神經(jīng)網(wǎng)絡(luò),講解了神經(jīng)網(wǎng)絡(luò)的各種概念,方便讀者對神經(jīng)網(wǎng)絡(luò)的概念有深入理解。