神經網路學習筆記

2021-09-24 19:20:17 字數 1546 閱讀 6060

神經網路是機器學習中的乙個模型,可以用於兩類問題的解答:

分類:把資料劃分成不同的類別

回歸:建立資料間的連續關係

感知器演算法->誤差函式(梯度下降)

離散誤差與連續誤差

要使用梯度下降,誤差必須是連續的,誤差函式必須是可微分的

離散演算法:學生是否被錄取->連續演算法:學生被錄取概率

啟用函式:step function->sigmoid function

最大似然

最大化概率

交叉熵(cross entropy):

交叉熵低的模型誤差更小

純粹是因為好模型可以給更高的頻率,取對數取反(因為加法比乘法好計算)就變成更小的交叉熵了

目標:最大化概率->最小化交叉熵

**:def cross_entropy(y, p):

y = np.float_(y)

p = np.float_§

return -np.sum(y * np.ln§ + (1 - y) * np.ln(1 - p))

或def cross_entropy(y, p):

sum = 0

for i in range(0,len(y)):

a = -((y[i] * np.ln(p[i]) + (1 - y[i]) * np.ln(1 - p[i])))

sum += a

return sum

多類別交叉熵:

邏輯回歸:

計算誤差函式:

最小化誤差函式:

梯度下降

總之與感知器演算法是不是很相似!

感知器跟梯度下降演算法中,分類錯誤的點都希望告訴直線靠近點,因為最終都希望穿過這個點,使直線分類正確

但是對於分類正確的點:

感知器演算法就會告訴直線什麼都不要做

梯度下降中,分類正確的點會告訴直線離得遠點

神經網路的構建:

將bias當作單獨的節點:

多層級:

多個輸入:

多個輸出:多分類

多個隱藏層:深度神經網路

注:sigmoid 函式有乙個完美的導數:

池化層總的來說是用來:減小輸出大小、避免過擬合

降低過擬合是減小輸出大小的結果,它同樣也減少了後續層中的引數的數量。

近期,池化層並不是很受青睞。

部分原因是:

現在的資料集又大又複雜,我們更關心欠擬合問題。

dropout是乙個更好的正則化方法。

池化導致資訊損失。想想最大池化的例子,n個數字中我們只保留最大的,把餘下的n-1完全捨棄了。

設定h = height, w = width, d = depth

輸入維度是 4x4x5 (hxwxd)

濾波器大小 2x2 (hxw)

stride 的高和寬都是 2 (s)

新的高和寬的公式是:

new_height = (input_height - filter_height)/s + 1

new_width = (input_width - filter_width)/s + 1

池化層輸出的維度大小是2x2x5

神經網路學習筆記

隱含層數越多,越容易擬合複雜函式 為了擬合複雜函式需要的隱含節點數目,基本上隨著隱含層數目的增加呈現指數下降的趨勢,也就是說層數越多,神經網路所需要的隱含節點可以越少。層數越深,概念越抽象,需要背誦的知識點 神經網路的隱含節點 就越少。但是,層數越多,容易出現過擬合以及引數難以除錯以及梯度瀰散的問題...

神經網路學習筆記

sigmoid函式是一種常見的擠壓函式,其將較大範圍的輸入擠壓到 0 1 區間內,其函式的表示式與形狀如下圖所示 該函式常被用於分類模型,因為其具有很好的乙個特性f x f x 1 f x 這個函式也會被用於下面的神經網路模型中做啟用函式。生物的神經網路系統中,最簡單最基本的結構是神經元。每個神經元...

神經網路 學習筆記

神經網路是用來解決分類問題的模型。他與感知機有著緊密的聯絡。神經網路中,神經元接收到的總輸入將與神經元的閾值進行比較,然後通過 啟用函式 處理以產生神經元的輸出。最理想的啟用函式是階躍函式,但是他不連續,不光滑,所以,採用sigmoid函式來進行替代。感知機只有輸出層神經元進行啟用函式處理,即只擁有...