神經網路是由具有適應性的簡單單元組成的廣泛並互連的網路,其組織可以模擬生物的神經系統對真實世界物體所做出的互動反應。
目前神經網路已經是相當大,多學科交叉的學科領域。
1、人體神經網路
神經網路中最基本的組成部分是神經元模型。
可以看出如下圖的人體神經網路只有乙個神經元和一條軸突。其中乙個神經元一般擁有多個樹突,主要是用來接受傳入資訊;而軸突只有一條,軸突尾端有許多軸突末梢可以給其他多個神經元傳遞資訊。軸突末梢跟其他神經元的樹突產生連線,從而傳遞訊號。這個連線的位置在生物學上叫做「突觸」。
2、神經元模型
如上圖可見,此神經元有三個輸入節點(x1,x2,x3)和乙個輸出節點(y),每個節點所對應的權向量分別是w1,w2,w3,其中偏置因子是b。
啟用函式有很多種,這裡使用的是一種簡單的sign函式
*f=sign(x)=
1 x>=0
-1 x<0
y=x1 * w1+x2 * w2+x3 * w3+b*
為了方便計算,可以將 b 看成是 x0 * w0,其中x0=1,w0=b
則計算公式可簡化成
*y=f(x0 * w0+x1 * w1+x2 * w2+x3 * w3)*
即
模型變為
w 的運算如下
η表示的是學習率(一般取0到1之間,若學習率太大會造成權值調整不穩定,太小會導致迭代次數太多),t 表示正確的標籤,t 和y的取值都是0或1
假設利用平面座標上的四個點來構造神經網路分類,四點分別是(3,3),(4,3)標籤為1,(1,1),(0,2)標籤為-1
則首先需要知道的是我們要分類的資料是2維的,因此需要兩個輸入節點,再爸偏置項也設定成乙個節點,所以是需要3個輸入節點。
需要輸入的資料由(1,3,3),(1,4,3),(1,1,1),(1,0,2) 。 (x0為1)
對應的標籤是(1,1,-1,-1)
權值初始化為1到-1之間的隨機數
假設學習率是0.11
啟用函式則採用sign函式
具體實現如下:
import numpy as np
import matplotlib.pyplot as plt
#資料x=np.array([[1,3,3],
[1,4,3],
[1,1,1],
[1,0,2]])
#標籤y=np.array([[1],
[1],
[-1],
[-1]])
#權值w=(np.random.random([3,1])-0.5)*2
print(w)
#學習率 learning rate
lr=0.11
#o表示f,初試值設為0
o=0#更新權值
def update():
global x,y,w,lr
o=np.sign(np.dot(x,w))
#w=η *(t-y)* x i,除以int(x.shape[0])是為了取w平均值,若需分類的資料較少,可不加,若資料較多,加上會使權值更加穩定
w_c=lr*(x.t.dot(y-o))/int(x.shape[0])
w=w+w_c
#迭代100次
for i in range(100):
update()
print(w)
print(i)
o=np.sign(np.dot(x,w))
if(o==y).all():
print('finished')
print("epoches:",i)
break
#正樣本
x1=[3,4]
y1=[3,3]
#負樣本
x2=[1,0]
y2=[1,2]
#計算分界線的斜率和截距
k=-w[1]/w[2]
d=-w[0]/w[2]
print('k=',k)
print('d=',d)
xdata=(0,5)
#畫圖plt.figure()
plt.plot(xdata,xdata*k+d,'r')
plt.scatter(x1,y1,c='b')
plt.scatter(x2,y2,c='y')
plt.show()
結果如下
學習率不同,每次分類的結果都不一樣
3、使用單層感知器異或問題
當使用單層感知器實現異或時,不能得出較好的效果,會使分類不準確,因此不建議使用。
4、線性神經網路
線性神經網路在結構上和感知器非常相似,唯一的變化則是在訓練模型時將sign函式改為purelin函式
y=x
5、delta規則
delta規則是利用利用梯度下降法的一般性的學習規則
二次代價函式為
其中誤差 e 是權向量 w 的函式,可以使用梯度下降法來最小化 e 的值
6、bp神經網路
用於解決多層神經網路的學習問題,極大的促進了神經網路的發展,其廣泛應用與分類識別,逼近,回歸,壓縮等領域。
bp神經網路分為輸入層、隱藏層和輸出層
bp演算法
BP神經網路初學習
bp神經網路初學習 根據實驗室專案需要搭建了三層前向反饋神經網路嘗試深度學習,剛開始利用matlab計算超越方程得到結果精度過低導致學習結果出現賦值,更改輸出精度後問題解決。本結構隱藏層設定了三層,每層128個神經元啟用函式為relu,利用adam演算法更新權重,誤差函式選用mse,資料處理完成後開...
BP神經網路
基本bp神經網路演算法包括 訊號的前向傳播 誤差的反向傳播 也即計算實際輸出時按照輸入到輸出的方向進行,權值閾值調整則相反。bp是一種多層前饋神經網路,由輸入層 隱含層和輸出層組成。層與層之間有兩種訊號在流動 一種是從輸入流向輸出的工作訊號,是輸入和權值的函式 另一種是輸入流向輸出的訊號,即誤差。隱...
BP神經網路
x 為輸入向量,y為隱藏層的神經元,z 為輸出層,d為目標真實值,本文預設 z 不經過sigmod處理。x y的權重為 w,y z的權重為 v yj ix iwij 1 oyi f y j 2 其中激勵函式f x 1 1 e x f x f x 1 f x 3 z k j f yj vjk 此時系統...