神經網路體系搭建(一) 神經網路

2021-08-14 12:35:09 字數 3277 閱讀 6597

本篇是神經網路體系搭建的第一篇,解決體系搭建的前四個問題,詳見神經網路體系搭建(序)

神經網路的定義就不再贅述,直接從最簡單的神經網路說起。

將一系列輸入資料,通過訓練好的網路模型處理,得到輸出結果,這是神經網路決策的步驟。那麼我們的重點就是通過訓練得到網路模型

從上圖可以看出,模型的關鍵其實是尋找合適的權重矩陣

那麼如何尋找呢,是乙個暴力過程。

給乙個初始權重矩陣,用這個矩陣進行**,看**結果和實際結果相差多遠(損失函式的作用),根據這個相差多遠的情況,來更新權重矩陣,直到**結果和實際結果相差最小(其實就是求損失函式的最小值)的時候為止,帶有這個能使**值與實際結果相差最小的權重矩陣的模型就是我們訓練好的網路模型了。

求損失函式最小值的方法通常為梯度下降

已經知道了權重矩陣、損失函式的位置和作用,還有乙個概念沒有解釋——啟用函式。

啟用函式的作用是給神經元新增非線性因素,說白了就是如果不通過啟用函式,輸出就是線性函式,y=wx+b,但是wx+b通過啟用函式,得到的y就可以是非線性的了。

思維導圖中羅列了常用啟用函式,優點和使用情況不屬於體系的主幹系列,因此不再這裡贅述,可以參考常用啟用函式比較。

損失函式通常有誤差平方和(sse)、誤差平方的均值(mse)等,也不屬於主幹,具體的可以參考深度學習中的損失函式總結以及center loss函式筆記。找到合適的損失函式是乙個可優化點。

梯度下降

有了損失函式,我們的重點是如何找到損失函式的最小值。採用的演算法是梯度下降。梯度下降最常見的例子就是下山,從山頂每次找最陡的一條路,達到最快下山的目的,陷阱也就是可能還沒有到山腳卻以為到了山腳(陷入區域性最優而非全域性最優)。

那麼梯度下降說白了就是找斜率,找斜率就是求導。

單行資料通過單層網路為例:

如果有多個輸出單元:

單條資料

import numpy as np

# 定義啟用函式

defsigmoid

(x):

return

1/(1+np.exp(-x))

# 計算啟用函式導數

defsigmoid_prime

(x):

return sigmoid(x) * (1 - sigmoid(x))

# 設定輸入資料x

x = np.array([x1, x2, x3, x4, x5]) # xi為用來舉例的假資料,替換即可

# 設定標籤y

y = np.array(y) # y為用來舉例的假資料,替換即可

# 設定學習率

learn_rate = 0.5

# 初始化權重矩陣

w = np.array([w1, w2, w3, w4, w5]) #wi為用來舉例的假資料,替換即可

# 計算h

h = np.dot(x, w)

# 計算**值

y_predict = sigmoid(h)

# 計算誤差

error = y - y_predict

# 計算誤差項

error_term = error * sigmoid_prime(h)

# 計算權重變化量delta_w

delta_w= learn_rate * error_term * x

# 更新權重矩陣

w += delta_w

多條資料

其實將單條資料的delta_w通過迴圈更新,最後在累加到權重矩陣中,更新e代就是多條資料的訓練。

for e in range(epochs):

del_w = np.zeros(w.shape)

for x, y in zip(features.values, targets):

h = np.dot(x, w)

y_predict= sigmoid(h)

error = y - y_predict

error_term = error * sigmoid_prime(h)

del_w += error_term * x

weights += learnrate * del_w / len(x)

至此,序中的四個問題已有了答案:

-神經網路是什麼?解決問題的步驟(演算法)是什麼?

見思維導圖。

-梯度下降用在神經網路的哪一步?

梯度下降用來找損失函式的最小值,數學原理和**見上。

-損失函式是幹什麼用的?

損失函式用來衡量**值與真實值的差距,有了損失函式,才能指導權重矩陣的更新。

-神經網路模型有哪些引數可以調整(優化)?

找合適的初始權重矩陣、找合適的啟用函式、找合適的損失函式、找合適的學習率。

以上內容來自822實驗室神經網路知識分享

我們的822,我們的青春

歡迎所有熱愛知識熱愛生活的朋友和822思享實驗室一起成長,吃喝玩樂,享受知識。

搭建神經網路

1.import 2.train,test 3.model tf.keras.model.sequential 在sequential中描述網路結構,相當於走一遍前向傳播 4.model.compile 在compile中配置訓練方法,選擇哪個優化器,選擇什麼損失函式,選擇什麼評價指標 5.mode...

神經網路 卷積神經網路

這篇卷積神經網路是前面介紹的多層神經網路的進一步深入,它將深度學習的思想引入到了神經網路當中,通過卷積運算來由淺入深的提取影象的不同層次的特徵,而利用神經網路的訓練過程讓整個網路自動調節卷積核的引數,從而無監督的產生了最適合的分類特徵。這個概括可能有點抽象,我盡量在下面描述細緻一些,但如果要更深入了...

神經網路 卷積神經網路

1.卷積神經網路概覽 來自吳恩達課上一張,通過對應位置相乘求和,我們從左邊矩陣得到了右邊矩陣,邊緣是白色寬條,當畫素大一些時候,邊緣就會變細。觀察卷積核,左邊一列權重高,右邊一列權重低。輸入,左邊的部分明亮,右邊的部分灰暗。這個學到的邊緣是權重大的寬條 都是30 表示是由亮向暗過渡,下面這個圖左邊暗...