机器学习 |
您所在的位置:网站首页 › 感知机的原理及实现 › 机器学习 |
神经网络知识总结
人工神经网络的由来为什么要使用神经网络?从人体神经网络系统到人工神经网络
最简单的神经网络——感知机感知机的构造感知机权值更新的概念和计算感知机的权值更新感知机详细计算过程
增加hidden layer的神经网络——BP神经网络为什么要增加隐层?delta学习规则BP神经网络权值更新的梯度下降法推导过程BP神经网络计算实例
notes:感知机和线性回归、逻辑回归的关联总结python实现——sklearn葡萄酒分类
人工神经网络的由来
为什么要使用神经网络?
我们知道使用线性回归和逻辑回归可以解决线性可分问题,对于有些线性不可分的问题,也可以通过增加多项式来解决,但是对于决策边界较为复杂的情况:
感知机是二分类的线性分类模型,其输入是实例的特征向量,输出为实例的类别。感知器是最简单的神经网络,它只有输入层和输出层两层结构,没有中间层。 感知机的构造
感知器是怎样更新权值的呢?它通过输入信息的加权汇总,带入激活函数中,计算的输出值与target目标值(原本的标签)进行对比,若有差异,则调整权重,直到满足一定的迭代次数或者达到预设的最小误差值时停止。 简要理解感知器的权值更新过程(具体的推导请参考:《统计学习方法》第二章) 首先,我们要明了,感知机的权值更新同样采用梯度下降的方法: 当感知机采用sigmoid函数作为激活函数时,此时相当于逻辑回归!采用同样的决策边界,可以得到: O j = { − 1 , X w < 0 1 , X w > 0 O_j=\begin{cases} -1 ,&Xw0\end{cases} Oj={−1,1,Xw0 注意:此时采用双极性阈值,取值在-1~1! i)当 t = O = s i g n ( X w ) t=O=sign(Xw) t=O=sign(Xw)时,无需更新权值; ii)当 t ≠ O = s i g n ( X w ) t\not=O=sign(Xw) t=O=sign(Xw)时, { O < 0 , X w < 0 , Δ w = η ( t − O ) X = 2 η X > 0 , O 不 断 向 t = 1 靠 近 O > 0 , X w > 0 , Δ w = η ( t − O ) X = − 2 η X < 0 , O 不 断 向 t = − 1 靠 近 \begin{cases}O0,&Xw>0,\Delta w=\eta(t-O)X=-2\eta X0,Δw=η(t−O)X=−2ηX输入层权值更新: ∂ E ∂ w ( 1 ) = ∂ E ∂ a 1 ( 3 ) ⋅ ∂ a 1 ( 3 ) ∂ z 1 ( 3 ) ⋅ ∂ z 1 ( 3 ) ∂ a ( 2 ) ⋅ ∂ a ( 2 ) ∂ z ( 2 ) ⋅ ∂ z ( 2 ) ∂ w ( 1 ) \frac{\partial E}{\partial w^{(1)}}=\frac{\partial E}{\partial a_1^{(3)}}·\frac{\partial a_1^{(3)}}{\partial z_1^{(3)}}·\frac{\partial z_1^{(3)}}{\partial a^{(2)}}·\frac{\partial a^{(2)}}{\partial z^{(2)}}·\frac{\partial z^{(2)}}{\partial w^{(1)}} ∂w(1)∂E=∂a1(3)∂E⋅∂z1(3)∂a1(3)⋅∂a(2)∂z1(3)⋅∂z(2)∂a(2)⋅∂w(1)∂z(2) = − ( t − a 1 ( 3 ) ) ⋅ a 1 ( 3 ) ( 1 − a 1 ( 3 ) ) ⋅ w ( 2 ) ⋅ a ( 2 ) ( 1 − a ( 2 ) ) ⋅ X =-(t-a_1^{(3)})·a_1^{(3)}(1-a_1^{(3)})·w^{(2)}·a^{(2)}(1-a^{(2)})·X =−(t−a1(3))⋅a1(3)(1−a1(3))⋅w(2)⋅a(2)(1−a(2))⋅X = δ L ⋅ w ( 2 ) ⋅ a ( 2 ) ( 1 − a ( 2 ) ) ⋅ X =\delta_L·w^{(2)}·a^{(2)}(1-a^{(2)})·X =δL⋅w(2)⋅a(2)(1−a(2))⋅X 记: δ l = − ( t − a 1 ( 3 ) ) ⋅ a 1 ( 3 ) ( 1 − a 1 ( 3 ) ) ⋅ w ( 2 ) ⋅ a ( 2 ) ( 1 − a ( 2 ) ) \delta_l=-(t-a_1^{(3)})·a_1^{(3)}(1-a_1^{(3)})·w^{(2)}·a^{(2)}(1-a^{(2)}) δl=−(t−a1(3))⋅a1(3)(1−a1(3))⋅w(2)⋅a(2)(1−a(2)) 梯度下降更新权值: w : = w + Δ w = w + η ⋅ δ L ⋅ w ( 2 ) ⋅ a ( 2 ) ( 1 − a ( 2 ) ) ⋅ X w:=w+\Delta w=w+\eta·\delta_L·w^{(2)}·a^{(2)}(1-a^{(2)})·X w:=w+Δw=w+η⋅δL⋅w(2)⋅a(2)(1−a(2))⋅X BP神经网络计算实例基本BP算法包括信号的前向传播和误差的反向传播两个过程,我们通过一个例子详细计算BP神经网络的信号前向传播、误差反向反馈过程。 以上图为例, S t e p 1 ′ 信 号 向 前 传 播 Step 1' 信号向前传播 Step1′信号向前传播 第一层——数据输入为: X 1 , X 2 , X 3 即 a 1 ( 1 ) , a 2 ( 1 ) , a 3 ( 1 ) X_1,X_2,X_3即a_1^{(1)},a_2^{(1)},a_3^{(1)} X1,X2,X3即a1(1),a2(1),a3(1) 中间层—— a 1 ( 2 ) = g ( z 1 ( 2 ) ) , z 1 ( 2 ) = w 01 ( 1 ) x 0 + w 11 ( 1 ) x 1 + w 21 ( 1 ) x 2 + w 31 ( 1 ) x 3 a_1^{(2)}=g(z_1^{(2)} ),z_1^{(2)}=w_{01}^{(1)} x_0+w_{11}^{(1)} x_1+w_{21}^{(1)} x_2+w_{31}^{(1)} x_3 a1(2)=g(z1(2)),z1(2)=w01(1)x0+w11(1)x1+w21(1)x2+w31(1)x3 a 2 ( 2 ) = g ( z 2 ( 2 ) ) , z 2 ( 2 ) = w 02 ( 1 ) x 0 + w 12 ( 1 ) x 1 + w 22 ( 1 ) x 2 + w 32 ( 1 ) x 3 a_2^{(2)}=g(z_2^{(2)} ),z_2^{(2)}=w_{02}^{(1)} x_0+w_{12}^{(1)} x_1+w_{22}^{(1)} x_2+w_{32}^{(1)} x_3 a2(2)=g(z2(2)),z2(2)=w02(1)x0+w12(1)x1+w22(1)x2+w32(1)x3 a 3 ( 2 ) = g ( z 3 ( 2 ) ) , z 3 ( 2 ) = w 03 ( 1 ) x 0 + w 13 ( 1 ) x 1 + w 23 ( 1 ) x 2 + w 33 ( 1 ) x 3 a_3^{(2)}=g(z_3^{(2)} ),z_3^{(2)}=w_{03}^{(1)} x_0+w_{13}^{(1)} x_1+w_{23}^{(1)} x_2+w_{33}^{(1)} x_3 a3(2)=g(z3(2)),z3(2)=w03(1)x0+w13(1)x1+w23(1)x2+w33(1)x3 输出层—— O = h w ( x ) = a 1 ( 3 ) = g ( z 1 ( 3 ) ) , z 1 ( 3 ) = w 01 ( 2 ) a 0 ( 2 ) + w 11 ( 2 ) a 1 ( 2 ) + w 21 ( 2 ) a 2 ( 2 ) + w 31 ( 2 ) a 3 ( 2 ) O=h_w (x)=a_1^{(3)}=g(z_1^{(3)}),z_1^{(3)}=w_{01}^{(2)}a_0^{(2)}+w_{11}^{(2)}a_1^{(2)}+w_{21}^{(2)}a_2^{(2)}+w_{31}^{(2)}a_3^{(2)} O=hw(x)=a1(3)=g(z1(3)),z1(3)=w01(2)a0(2)+w11(2)a1(2)+w21(2)a2(2)+w31(2)a3(2) S t e p 2 ′ 误 差 反 向 反 馈 Step 2'误差反向反馈 Step2′误差反向反馈 输出层—>隐层 δ L = − ( t − a 1 ( 3 ) ) ⋅ a 1 ( 3 ) ( 1 − a 1 ( 3 ) ) \delta_L=-(t-a_1^{(3)})·a_1^{(3)}(1-a_1^{(3)}) δL=−(t−a1(3))⋅a1(3)(1−a1(3)) 隐层—>输入层 δ l = δ L ⋅ w ( 2 ) ⋅ a ( 2 ) ( 1 − a ( 2 ) ) \delta_l=\delta_L·w^{(2)}·a^{(2)}(1-a^{(2)}) δl=δL⋅w(2)⋅a(2)(1−a(2)) S t e p 3 ′ 权 值 更 新 Step 3'权值更新 Step3′权值更新 W ( 2 ) : = W ( 2 ) + η ⋅ δ L ⋅ a ( 2 ) W^{(2)}:=W^{(2)}+\eta·\delta_L·a^{(2)} W(2):=W(2)+η⋅δL⋅a(2) W ( 1 ) : = W ( 1 ) + η ⋅ δ l ⋅ X W^{(1)}:=W^{(1)}+\eta·\delta_l·X W(1):=W(1)+η⋅δl⋅X notes:感知机和线性回归、逻辑回归的关联① 感知机+sigmoid/logit函数——>逻辑回归 ② 感知机+f(x)=wx+b线性函数——>线性回归 ③ 三层网络+sigmoid/logit函数——>非线性回归 总结本文主要介绍了神经网络入门必须要了解的两个算法:感知机和BP神经网络。从人工神经网络的由来到感知机算法的原理、BP算法的原理及推导。 python实现——sklearn葡萄酒分类 导入所需库 from sklearn.neural_network import MLPClassifier from sklearn.model_selection import train_test_split #用于数据分割 from sklearn.preprocessing import StandardScaler #做数据标准化 from sklearn.metrics import classification_report,confusion_matrix import numpy as np 导入所需数据 data = np.genfromtxt('data/wine_data.csv', delimiter=',') data 数据转化——区分X和Y x_data = data[:,1:] y_data = data[:,0] #第一列是标签值 数据分割 x_train, x_test, y_train, y_test = train_test_split(x_data, y_data) 数据标准化 scaler = StandardScaler() x_train = scaler.fit_transform(x_train) x_test = scaler.fit_transform(x_test) 调用神经网络包并传入参数,拟合模型 mlp = MLPClassifier(hidden_layer_sizes=(100, 50),max_iter=500) mlp.fit(x_train, y_train) 模型预测并输出混淆矩阵 predictions = mlp.predict(x_test) print(classification_report(y_test, predictions)) print(confusion_matrix(y_test,predictions)) |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |