激活函數(shù)與前向傳播----「深度學(xué)習(xí)#1」
numPy基礎(chǔ)
數(shù)組的維數(shù)通過np.dim()函數(shù)獲得,數(shù)組的形狀通過實(shí)例變量.shape獲得。
二維數(shù)組通常稱為矩陣,數(shù)組的橫向排列稱為行,縱向排列稱為列。

矩陣乘法(乘積)

在矩陣的乘積運(yùn)算中,對應(yīng)維度的元素個(gè)數(shù)要保持一致。



感知機(jī)(樸素神經(jīng)元)
數(shù)學(xué)公式
感知機(jī)作為神經(jīng)網(wǎng)絡(luò)(深度學(xué)習(xí))的起源的算法,也被稱為“人工神經(jīng)元”或“樸素感知機(jī)”。

感知機(jī)的多個(gè)輸入信號都有各自固有的權(quán)重,這些權(quán)重發(fā)揮著控制各個(gè) 信號的重要性的作用。也就是說,權(quán)重越大,對應(yīng)該權(quán)重的信號的重要性就 越高。

實(shí)現(xiàn)
導(dǎo)入權(quán)重和偏置概念,并通過numpy數(shù)組改造上述算法。
感知機(jī)的與門、非門和或門
通過與門、非門和或門實(shí)現(xiàn)異或門
輸出:

激活函數(shù)

上面這段公式是帶有偏置和權(quán)重的感知機(jī)數(shù)學(xué)公式,b稱為偏置,用于控制神經(jīng)元被激活的容易程度;w1和w2成為各個(gè)輸入信號的權(quán)重,用于控制各個(gè)信號的重要性。下圖是被明確表示了偏置b地位的網(wǎng)絡(luò)圖。

接下來引入新的函數(shù)y=h(x),表達(dá)式將被改寫成:
輸入信號的總和會(huì)被函數(shù)h(x)轉(zhuǎn)換,這個(gè)h(x)函數(shù)一般就被稱為激活函數(shù),其作用在于決定如何來激活輸入信號的總和。下圖是被明確表示了激活函數(shù)計(jì)算過程的網(wǎng)絡(luò)圖。

激活函數(shù)是連接感知機(jī)和神經(jīng)網(wǎng)絡(luò)的橋梁。
階躍函數(shù)和sigmoid函數(shù)
感知機(jī)通常使用階躍函數(shù)作為激活函數(shù),而sigmoid函數(shù)是神經(jīng)網(wǎng)絡(luò)經(jīng)常使用的函數(shù)。
感知機(jī)一詞,并沒有嚴(yán)格同意它所指的算法,一般“樸素感知機(jī)”是指單層網(wǎng)絡(luò),指的是激活函數(shù)使用了階躍函數(shù)的模型?!岸鄬痈兄獧C(jī)”是指神經(jīng)網(wǎng)絡(luò),即使用sigmoid函數(shù)等平滑的激活函數(shù)的多層網(wǎng)絡(luò)。
平滑性不同。sigmoid是依靠平滑的曲線,輸出隨著輸入發(fā)生連續(xù)性變化;而階躍函數(shù)以0為界,輸出發(fā)生急劇性變化。
輸出的二元性。階躍函數(shù)只能返回0或者1,輸出的是二元信號,而神經(jīng)元中流動(dòng)的是連續(xù)的實(shí)數(shù)值信號。
如果把這兩個(gè)函數(shù)與水聯(lián)系起來,則階躍函數(shù)可以比作“竹筒敲石”A, sigmoid 函數(shù)可以比作“水車”。階躍函數(shù)就像竹筒敲石一樣,只做是否傳送 水(0 或 1)兩個(gè)動(dòng)作,而 sigmoid 函數(shù)就像水車一樣,根據(jù)流過來的水量相應(yīng) 地調(diào)整傳送出去的水量。
他們倆的共同特征是宏觀形狀相似,且均為非線性函數(shù)。通常的,神經(jīng)網(wǎng)絡(luò)的激活函數(shù)必須使用非線性函數(shù),否則加深神經(jīng)網(wǎng)絡(luò)的層數(shù)就毫無意義了。

階躍函數(shù)的實(shí)現(xiàn)
當(dāng)輸入超過0時(shí),輸出1,否則輸出0
通過使用numPy廣播的技巧,階躍函數(shù)的代碼實(shí)現(xiàn)如下。

sigmoid函數(shù)的實(shí)現(xiàn)

代碼實(shí)現(xiàn)

ReLU函數(shù)
目前為止,介紹了兩種激活函數(shù)(階躍函數(shù)和sigmoid函數(shù))。在神經(jīng)網(wǎng)絡(luò)發(fā)展史上,sigmoid函數(shù)很早就開始被使用了,而近幾年則主要使用ReLU(Rectified Linear Unit)函數(shù)。
ReLU函數(shù)在輸入大于0時(shí),直接輸出該值;在輸入小于等于0時(shí),輸出0.
ReLU函數(shù)的數(shù)學(xué)表達(dá)式:

ReLU函數(shù)的圖形:

ReLU函數(shù)的代碼實(shí)現(xiàn):

前向傳播(forward propagation)
輸入層(2個(gè)神經(jīng)元)
第1個(gè)隱藏層(3個(gè)神經(jīng)元)
第2個(gè)隱藏層(2個(gè)神經(jīng)元)
輸出層(2個(gè)神經(jīng)元)

從輸入層到第1隱藏層的信號傳遞

從第1隱藏層到第2隱藏層的信號傳遞

從第2隱藏層到輸出層的信號傳遞

這里,輸出層的激活函數(shù)使用了恒等函數(shù),也就是上一隱藏層直接傳遞給輸出層。
一般輸出層用到的激活函數(shù),根據(jù)求解問題的性質(zhì)決定。一般地,回歸問題可以使用恒等函數(shù),二元分類問題可以使用sigmoid函數(shù),多元分類問題可以使用softmax函數(shù)。
完整代碼
輸出層的設(shè)計(jì)
一般的,回歸問題用恒等函數(shù),分類問題用softmax函數(shù)。
分類問題是指數(shù)據(jù)屬于哪一個(gè)類別的問題,比如區(qū)分圖像中的人是男性還是女性。
回歸問題是根據(jù)某個(gè)輸入預(yù)測一個(gè)(連續(xù)的數(shù)值)的問題。比如,根據(jù)一個(gè)人的圖像預(yù)測這個(gè)人的體重的問題(類似“57.4kg”這樣的預(yù)測)。
softmax函數(shù)

softmax函數(shù)有一個(gè)特征,就是它的輸出是0.0到1.0之間的實(shí)數(shù)。并且函數(shù)的輸出值的總和是1。因此softmax函數(shù)的輸出還可以解釋為“概率”。
一般而言,神經(jīng)網(wǎng)絡(luò)只是把輸出值最大的神經(jīng)元所對應(yīng)的類別作為識別結(jié)果。且即使使用了softmax函數(shù),輸出值最大的神經(jīng)元的位置也不會(huì)變。
因此,神經(jīng)網(wǎng)絡(luò)在進(jìn)行分類問題時(shí),輸出層的softmax函數(shù)可以省略。
求解機(jī)器學(xué)習(xí)問題的步驟分為學(xué)習(xí)和推理兩個(gè)階段。推理階段一般會(huì)省略輸出層的softmax函數(shù)。在輸出層使用softmax函數(shù)是因?yàn)樗蜕窠?jīng)網(wǎng)絡(luò)的學(xué)習(xí)有關(guān)。
輸出層的神經(jīng)元數(shù)量
輸出層的神經(jīng)元數(shù)量根據(jù)待解決的問題來決定。對于分類問題,其數(shù)量一般設(shè)定為類別的數(shù)量。比如手寫數(shù)字識別,需要預(yù)測圖中的數(shù)字是0-9中的哪一個(gè)的問題,將輸出層的神經(jīng)元設(shè)定為10個(gè)。
