深度学习——神经网络

前言:

人工神经网络是受到人类大脑 结构的启发而创造出来的:数以万计的神经元细胞通过某种连接构成了一个神经网络;

在这里插入图片描述
人工神经网络正是模仿了上面的网络结构。下面是一个人工神经网络的构造图。每一个圆代表着一个神经元,他们层次连接起来,构成了一个网络。
在这里插入图片描述
人类大脑神经元细胞的树突接收来自外部的多个强度不同的刺激,并在神经元细胞体内进行处理,然后将其转化为一个输出结果。如下图所示。
在这里插入图片描述

人工神经元也有相似的工作原理。如下图所示。
在这里插入图片描述

上面的 x x x是神经元的输入,相当于树突接收的多个外部刺激。 w w w是每个输入对应的权重,它影响着每个输入 x x x的刺激强度。
大脑的结构越简单,那么智商就越低。单细胞生物是智商最低的了。人工神经网络也是一样的,网络越复杂它就越强大,所以我们需要深度神经网络。这里的深度是指层数多,层数越多那么构造的神经网络就越复杂。

1.1 神经网络

1.1神经网络是如何进行预测的?

这个预测的过程其实只是基于一个简单的公式: z = d o t ( w , x ) + b z = dot(w,x) + b z=dot(w,x)+b
上述公式中的 x x x代表输入特征向量,假设有三个特征,那莫 x x x就可以用( x 1 , x 2 , x 3 x_{1},x_{2},x_{3} x1,x2,x3)来表示,如下图:
在这里插入图片描述
w w w表示权重,它对应每个特征的重要程度, b b b代表阈值,用来影响结果.
z z z就是预测结果,

公式中的 d o t ( ) dot() dot()函数表示将 w w w x x x进行相乘。
所以 z = ( x 1 ∗ w 1 + x 2 ∗ w 2 + x 3 ∗ w 3 + b ) z=(x_{1}*w_{1}+x_{2}*w_{2}+x_{3}*w_{3}+b) z=(x1w1+x2w2+x3w3+b)其中"非线性函数“我在下文用的是signmoid激活函数;

1.2 .1输入层

神经网络中的第一层。它需要输入信号(值)并将它们传递到下一层。它不对输入信号(值)做任何操作,并且没有关联的权重和偏置值。在我们的网络中,我们有2个输入信号 i 1 , i 2 i_{1},i_{2} i1,i2

1.2 .2 隐藏层

   隐藏层具有对输入数据应用不同变换的神经元(节点)。一个隐藏层是垂直排列的神经元的集合

1.2.3 输出层

是网络的最后一层,它接收来自最后一个隐藏层的输入。通过这个层,我们可以知道期望的值和期望的范围,在这个网络中,输出层有2个神经元,输出 o 1 , o 2 o_{1},o_{2} o1,o2

1.2.4 权重

权重表示单元之间连接的强度。如果从节点1到节点2的权重比较大,意味着神经元1对神经元2的影响比较大。权重降低了输入值的重要性。当权重接近零时意味着更改此输入将不会更改输出。负权重意味着增加此输入会降低输出。权重决定了输入对输出的影响程度。

1.2.5 前向传播(FP)

前向传播过程是向神经网络输入值并得到预测输出值的过程;

1.2.6 反向传播 (BP)

前向传播后,我们得到了一个预测的输出值,为了计算误差我们将预测值与实际输出值进行比较,如果误差较大那莫就进行反向传播过程。

1.2.7 激活函数

在实际的神经网络中,我们不能直接用逻辑回归。必须要在逻辑回归外面再套上一个函数。这个函数我们就称它为激活函数激活函数非常非常重要,如果没有它,那么神经网络的智商永远高不起来。而且激活函数又分好多种。后面我会花好几篇文章来给大家介绍激活函数。在这里我只给大家简单介绍一种叫做sigmoid的激活函数。它的公式和图像如下:
公式: δ ( z ) = 1 1 + e − z \delta(z)=\frac{1}{1+e^{-z}} δ(z)=1+ez1
图像:在这里插入图片描述
sigmoid激活函数的用途——把 z z z映射到[0,1]之间,上图的横坐标是 z z z,纵坐标我们用 y y y’来表示, y y y'就代表了我们最终的预测结果。从图像可以看出, z z z越大那么 y y y’就越靠近1, z z z越小那么 y y y’就越靠近0。那为什么要把预测结果映射到[0,1]之间呢?因为这样不仅便于神经网络进行计算,也便于我们人类进行理解。其中得到的 z z z代表的是锲合度。

1.2.8 loss函数

神经网络计算误差时可以用loss函数进行计算
E = 1 2 ∑ i = 1 n ( f ( x i ) − y i ) 2 E=\frac{1}{2}\sum_{i=1}^{n}({f(x_{i})}-y_{i})^{2} E=21i=1n(f(xi)yi)2

1.3 举例分析

在这里插入图片描述
如图是(输入层—>隐含层—>输出层)
设初始权重值 w 1 − w 12 w_{1}-w_{12} w1w12和偏置值 b 1 , b 2 b_{1},b_{2} b1,b2为:
w = (0.1,0.15,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65)
b = (0.35,0.65)

1.3.1 正向传播

1.从输入层到隐藏层
h 1 = w 1 ∗ l 1 + w 2 ∗ l 2 + b 1 ∗ 1 = 0.1 ∗ 5 + 0.15 ∗ 10 + 0.35 ∗ 1 h_{1}= w_{1}*l_1 + w_{2}*l_{2}+b_{1}*1 = 0.1*5+0.15*10+0.35*1 h1=w1l1+w2l2+b11=0.15+0.1510+0.351=2.35
h 2 = w 3 ∗ l 1 + w 4 ∗ l 2 + b 1 ∗ 1 = 0.2 ∗ 5 + 0.25 ∗ 10 + 0.35 ∗ 1 h_{2}=w_{3}*l_{1}+w_{4}*l_{2}+b_{1}*1=0.2*5+0.25*10+0.35*1 h2=w3l1+w4l2+b11=0.25+0.2510+0.351=3.85
h 3 = w 5 ∗ l 1 + w 6 ∗ l 2 + b 1 ∗ 1 = 0.3 ∗ 5 + 0.35 ∗ 10 + 0.35 ∗ 1 h_{3}=w_{5}*l_{1}+w_{6}*l_{2}+b_{1}*1=0.3*5+0.35*10+0.35*1 h3=w5l1+w6l2+b11=0.35+0.3510+0.351=5.35
则经过激活函数(sigmoid(z)= 1 1 + e − z \frac{1}{1+e^{-z}} 1+ez1)变换后的值为:
o u t h 1 = 1 1 + e − h 1 = 1 e − 2.35 = 0.9129342 out_{h1}=\frac{1}{1+e^{-h_{1}}}=\frac{1}{e^{-2.35}}=0.9129342 outh1=1+eh11=e2.351=0.9129342
o u t h 1 = 1 1 + e − h 2 = 1 e − 385 = 0.9791637 out_{h1}=\frac{1}{1+e^{-h_{2}}}=\frac{1}{e^{-385}}=0.9791637 outh1=1+eh21=e3851=0.9791637
o u t h 1 = 1 1 + e − h 3 = 1 e − 5.35 = 0.99552743 out_{h1}=\frac{1}{1+e^{-h_{3}}}=\frac{1} {e^{-5.35}}=0.99552743 outh1=1+eh31=e5.351=0.99552743
2.从隐藏层到输出层
n e t o 1 = o u t h 1 ∗ w 7 + o u t h 2 ∗ w 9 + o u t h 3 ∗ w 11 + b 2 ∗ 1 net_{o1}=outh_{1}*w_{7}+outh_{2}*w_{9}+outh_{3}*w_{11}+b_{2}*1 neto1=outh1w7+outh2w9+outh3w11+b21=2.10192
n e t o 2 = o u t h 1 ∗ w 8 + o u t h 2 ∗ w 10 + o u t h 3 ∗ w 12 + b 2 ∗ 1 net_{o2}=outh_{1}*w_{8}+outh_{2}*w_{10}+outh_{3}*w_{12}+b_{2}*1 neto2=outh1w8+outh2w10+outh3w12+b21=2.24629
经过激活函数变换后得:
o u t o 1 = 0.89109 out_{o1}=0.89109 outo1=0.89109(真实值为0.01)
o u t o 2 = 0.90433 out_{o2}=0.90433 outo2=0.90433(真实值为0.99)
经过loss函数的值为:
E t o t a l = E o 1 + E o 2 = 1 2 ( 0.01 − 0.89109 ) 2 + 1 2 ( 0.99 − 0.90433 ) 2 = 0.391829 E_{total}=E_{o1}+E_{o2}=\frac{1}{2}(0.01-0.89109)^2+\frac{1}{2}(0.99-0.90433)^2=0.391829 Etotal=Eo1+Eo2=21(0.010.89109)2+21(0.990.90433)2=0.391829与真实值不符,需要进行BP反馈计算

1.3.2 反向传播(BP)

1.参数w的更新
在这里插入图片描述
这里用梯度下降法求解w的值
例如求解 w 7 w_{7} w7的值:
E t o t a l = E o 1 + E o 2 E_{total}=E_{o1}+E_{o2} Etotal=Eo1+Eo2,而求解 w 7 w_{7} w7只与 E o 1 E_{o1} Eo1有关
又有 n e t o 1 = o u t h 1 ∗ w 7 + o u t h 2 ∗ w 9 + o u t h 3 ∗ w 11 + b 2 ∗ 1 net_{o1}=outh_{1}*w_{7}+outh_{2}*w_{9}+outh_{3}*w_{11}+b_{2}*1 neto1=outh1w7+outh2w9+outh3w11+b21,
o u t o 1 = 1 1 + e − n e t o 1 out_{o1}=\frac{1}{1+e^{-net_{o1}}} outo1=1+eneto11
所以
BP: α E t o t a l α w 7 = α E o 1 α o u t o 1 ∗ α o u t o 1 α n e t o 1 ∗ α n e t o 1 α w 7 \frac{\alpha E_{total}}{\alpha w_{7}}=\frac{\alpha E_{o1}}{\alpha out_{o1}}*\frac{\alpha out_{o1}}{\alpha net_{o1}}*\frac{\alpha net_{o1}}{\alpha w_{7}} αw7αEtotal=αouto1αEo1αneto1αouto1αw7αneto1
w n e w = w o l d − η α E t o t a l α w o l d w_{new}=w_{old}-\eta\frac{ \alpha E_{total}}{ \alpha w_{old}} wnew=woldηαwoldαEtotal
带入求解: w 7 ∗ = w 7 − η α E t o t a l α w 7 = 0.4 − 0.5 ∗ 0.078064 = 0.360968 w_{7}^{*}=w_{7}-\eta\frac{ \alpha E_{total}}{ \alpha w_{7}}=0.4-0.5*0.078064=0.360968 w7=w7ηαw7αEtotal=0.40.50.078064=0.360968
同理可求得其它值

小结:

1.正向传播,根据已知值求解 E t a t a l E_{tatal} Etatal并代入到loss函数中求取误差值,当误差过大,进行第二步。
2.反向传播,根据已知结果更新正向传播中的w和b的值,更新完毕后再次进行第一步。
3.当求取误差适中,迭代结束,算法结束,输出w和b的值。
参考:
1、添加链接描述
2、https://blog.csdn.net/qq_24753293/article/details/78788844

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值