神经网络学习记录(深度学习)

神经网络学习

人工神经网络

人工神经网络(Artificial Neural Networks,简写为ANNs)也简称为神经网络(NNs)或称作连接模型(Connection Model),它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。

神经元的概念

神经元是神经网络中最基本的结构,也可以说是神经网络的基本单元,它的设计灵感完全来源于生物学上神经元的信息传播机制。我们学过生物的同学都知道,神经元有两种状态:兴奋和抑制。一般情况下,大多数的神经元是处于抑制状态,但是一旦某个神经元收到刺激,导致它的电位超过一个阈值,那么这个神经元就会被激活,处于“兴奋”状态,进而向其他的神经元传播化学物质(其实就是信息)。
神经元图示
数学公式:
o u t p u t = f ( W ∗ A + b ) output=f(W*A+b) output=f(WA+b)
其中:
1、x1、x2、x3…xm作为输入特征分量
2、w1、w2、w3…wm是输入各分量对应的权重参数
3、b是偏置参数
4、f(x)是激活函数,常见的有:tanh、sigmoid、relu等
5、output是神经元的输出

由此可见,神经元的作用是将输入向量与权重向量做内积,加上偏执参数,通过一个非线性传递函数输出一个标量的结果。

单层神经网络

单层神经网络是最基本的神经网络形式,由有限个神经元构成,所有神经元的输入向量都是同一个向量,由于一个神经元会产生一个标量的输出,所以单层神经网络的输出是一个向量,向量的维度即神经元的个数。
单层神经网络

感知机

感知机(perceptron)是由两层神经元组成的结构:

  • 输入层:用于接受外界输入信号
  • 输出层(也被称为是感知机的功能层):即M-P神经元

下图表示了一个输入层具有三个神经元(分别表示为x0、x1、x2)的感知机结构:
感知机图示
数学公式:
o u t p u t = f ( W ∗ A + b ) output=f(W*A+b) output=f(WA+b)
由此可知,感知机的作用是用一个超平面将n维空间划分成两部分,给定一个输入向量,感知机可以判断出这个向量位于超平面的哪一边,解决与、或、非这样的简单的线性可分(linearly separable)问题。

多层神经网络

多层神经网络是由单层神经网络叠加而成的,所以形成了成的概念,常见的多层神经网络由如下结构:

  • 输入层(Input Layer):由众多神经元(Neuron)组成,用来接收输入信息,输入的信息成为输入向量
  • 输出层(Output Layer):信息通过神经元链接传输、分析、权衡,形成输出结果,输出的信息称为输出向量
  • 隐藏层(Hidden Layer):简称:“隐层”,是输入层和输出层之间众多神经元和链接组成的各层,隐层可以有一层或者多层,隐层的结点(神经元)数目不定,数目越多神经网络的非线性越显著,从而神经网络的强健性(robustness)越显著

多层神经网络结构图:
多层神经网络
神经网络示意图

全连接层
概念:当前层和前一层每一个神经元之间都相互链接,我们成当前层为全连接层。全连接层是在前一层的输出基础上进行一次 Y = W Z + b Y=WZ+b Y=WZ+b变化。

激活函数

激活函数是神经网络的重要组成部分,主要作用有:(1) 增加模型的非线性能力,(2)提高模型的鲁棒性,(3) 缓解梯度消失问题,(4) 加速模型收敛度,常见的激活函数有:

  • 线性函数
    (1) 线性函数 ( Liner Function )
    f ( x ) = k ∗ x + c f(x) = k*x+c f(x)=kx+c
    (2) 斜面函数 ( Ramp Function )
    f ( x ) = T ( x > c ) , k ∗ x ( ∣ x ∣ < c ) , − T ( x < − c ) f(x) = T (x>c),k*x (\lvert x\rvert<c),-T(x<-c) f(x)=T(x>c)kx(x<c)T(x<c)
    (3) 阈值函数 ( Threshold Function )
    f ( x ) = 1 ( x > = c ) , 0 ( x < c ) f(x) = 1(x>=c),0(x<c) f(x)=1(x>=c)0(x<c)
  • 非线性函数
    (1) S形函数 ( Sigmoid Function )
    f ( x ) = 1 1 + e − a x ( 0 < f ( x ) < 1 ) f(x) = \frac{1}{1+e^{-ax}} (0<f(x)<1) f(x)=1+eax1(0<f(x)<1)
    (2) 双极S形函数
    f ( x ) = 2 1 + e − a x − 1 ( − 1 < f ( x ) < 1 ) f(x) = \frac{2}{1+e^{-ax}} -1(-1<f(x)<1) f(x)=1+eax21(1<f(x)<1)
    S形函数和双极S形函数
    (3) Sigmoid函数(tf.nn.sigmoid())
    f ( x ) = 1 1 + e − x ( 0 < f ( x ) < 1 ) f(x) = \frac{1}{1+e^{-x}} (0<f(x)<1) f(x)=1+ex1(0<f(x)<1)
    Sigmoid函数
    特点:
    ( a ) 易造成梯度消失
    ( b ) 函数输出非0均值,收敛慢
    ( c ) 幂运算复杂,训练时间长
    (4) Tanh函数(tf.nn.tanh())
    f ( x ) = 2 1 + e − 2 x − 1 ( 0 < f ( x ) < 1 ) f(x) = \frac{2}{1+e^{-2x}} -1(0<f(x)<1) f(x)=1+e2x21(0<f(x)<1)
    Tanh函数
    特点:
    ( a ) 易造成梯度消失
    ( b ) 函数输出是0均值
    ( c ) 幂运算复杂,训练时间长
    (5) ReLu函数(tf.nn.relu())
    f ( x ) = 0 ( x < 0 ) , x ( x > = 0 ) f(x) = 0(x<0),x(x>=0) f(x)=0(x<0)x(x>=0)
    ReLU(x)函数
    优点:
    ( a ) 解决了梯度消失问题(正区间)
    ( b ) 只需要判断输入是否大于0,计算速度快
    ( c ) 收敛速度远快于sigmoid和tanh
    缺点:
    ( a ) 函数输出非0均值,收敛慢
    ( b ) 某些神经元(<0)无法被激活,导致相应参数不能被更新

总之,如果使用伸进网络做二元分类时,使用Sigmoid函数作为输出层的激活函数,使用ReLU作为隐藏层的激活函数,使输出的范围在0到1之间。

后续

深度学习网络学习记录
参考视频:https://www.bilibili.com/video/BV1Zf4y157i9
部分图片来源:https://blog.csdn.net/chiu1991/article/details/74357828

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值