神经网络

  • 一、线性回归与神经网络
  • 单层
  • 单个输出
  • 多个输出
  • 多层
  • 二、神经网络原理
  • 一般结构
  • 神经网络传播过程
  • 三、激活函数
  • 为什么要使用非线性激活函数
  • 常用的激活函数
  • (1) sigmoid函数
  • (2) Tanh函数


一、线性回归与神经网络

神经网络是一种模拟人脑的神经网络以期能够实现类人工智能的机器学习技术。

单层

单个输出

假设现需要预测房屋的出售价格,房屋通过以下特征,面积(神经网络回归 神经网络回归分析_机器学习)空气指数(神经网络回归 神经网络回归分析_神经网络_02),交通指数(神经网络回归 神经网络回归分析_机器学习_03),最终输出价格(神经网络回归 神经网络回归分析_神经网络_04

面积(神经网络回归 神经网络回归分析_机器学习_05

空气指数(神经网络回归 神经网络回归分析_机器学习_05

交通指数(神经网络回归 神经网络回归分析_机器学习_05)

价格(神经网络回归 神经网络回归分析_机器学习_05

100

25

40

30

120

35

45

50





若上表为数据样本集,
使用线性回归去训练模型并预测,步骤如下:

  1. 设定线性方程为:
    神经网络回归 神经网络回归分析_机器学习_05
  2. 通过数据集训练,求出最合适的参数

神经网络回归 神经网络回归分析_神经网络回归_10

  1. 从而得到得到一个完整的表达式:
    神经网络回归 神经网络回归分析_机器学习_05
  2. 当输入一个新的数据(输入特征值神经网络回归 神经网络回归分析_线性回归_12),代入3中的方程,即可实现预测神经网络回归 神经网络回归分析_神经网络_13的效果。

向量化:

神经网络回归 神经网络回归分析_机器学习_14看成一个列向量:
神经网络回归 神经网络回归分析_激活函数_15
将输入特征也神经网络回归 神经网络回归分析_神经网络_16也看成一个列向量:
神经网络回归 神经网络回归分析_激活函数_17

此时表达式神经网络回归 神经网络回归分析_神经网络_18
向量化即转换为:
神经网络回归 神经网络回归分析_机器学习_19

以上是线性回归实现预测房屋价格的例子

用图来表示即

神经网络回归 神经网络回归分析_激活函数_20


在这个例子中,只有一个输出:神经网络回归 神经网络回归分析_神经网络回归_21

多个输出

若,
将预测房屋价格问题进行修改,不光要预测价格,还要预测房屋内的房间数量
如此以来,训练样本集的特征以及 标签即如下表所示。

面积(神经网络回归 神经网络回归分析_神经网络回归_21

空气指数(神经网络回归 神经网络回归分析_神经网络回归_21

交通指数(神经网络回归 神经网络回归分析_神经网络回归_21)

价格(神经网络回归 神经网络回归分析_神经网络回归_21

房间数量神经网络回归 神经网络回归分析_神经网络回归_21

100

25

40

30

5

120

35

45

50

6






此时,若要实现该模型,则需要设2个方程

分别为

神经网络回归 神经网络回归分析_神经网络_27

神经网络回归 神经网络回归分析_神经网络_28

通过训练集分别求出

神经网络回归 神经网络回归分析_线性回归_29

神经网络回归 神经网络回归分析_机器学习_30

将新输入的特征分别代入两个方程中即可预测神经网络回归 神经网络回归分析_激活函数_31

示意图如下,此时有2个输出:神经网络回归 神经网络回归分析_机器学习_32

神经网络回归 神经网络回归分析_神经网络回归_33

多层

  1. 单层单个输出中,我们直接将神经网络回归 神经网络回归分析_神经网络回归_34代入方程中,得到输出的预测值神经网络回归 神经网络回归分析_神经网络回归_21
  2. 单层多个输出中,将神经网络回归 神经网络回归分析_神经网络回归_34,代入不同的方程,得到不同的输出预测值神经网络回归 神经网络回归分析_神经网络_37

缺点:使用线性回归,最终都是通过一个直线,或者平面对数据进行拟合,但是,在实际问题中,许多问题并不都是线性的

现将问题再进行修改,我需要预测房屋中的家庭人口数量
训练样本集的特征以及标签即如下表所示。

面积(神经网络回归 神经网络回归分析_神经网络回归_34

空气指数(神经网络回归 神经网络回归分析_神经网络回归_34

交通指数(神经网络回归 神经网络回归分析_神经网络回归_34)

人口数量神经网络回归 神经网络回归分析_神经网络回归_41

100

25

40

4

120

35

45

5





此时依旧可以使用线性回归,使用如下方式进行线性拟合

神经网络回归 神经网络回归分析_激活函数_20


但是,从特征和标签的相关性来看,家庭人口数面积(神经网络回归 神经网络回归分析_神经网络回归_41),空气指数(神经网络回归 神经网络回归分析_线性回归_44),交通指数(神经网络回归 神经网络回归分析_线性回归_45) 似乎并没有直接的关联性,若只使用线性回归进行拟合可能会导致训练出来的效果非常差。

从另一方面来看,家庭人口数这个标签,和 房间数量 以及 房屋的价格(等价于经济水平),相关性比较大,因此使用房间数量房屋价格作为特征,所训练出来的效果可能会更好。

但是给出的特征里,并没有房间数量房屋价格这两个特征。

这个时候就可以借助单层的问题思路,引出多层的概念
我们定义一个新的方程
神经网络回归 神经网络回归分析_神经网络_46
神经网络回归 神经网络回归分析_激活函数_47房间数量特征,神经网络回归 神经网络回归分析_激活函数_48房屋价格特征

在之前的问题中,我们可以通过特征值神经网络回归 神经网络回归分析_机器学习_49分别代入以下两个方程中,得到神经网络回归 神经网络回归分析_神经网络_37
神经网络回归 神经网络回归分析_神经网络_27
神经网络回归 神经网络回归分析_神经网络_28
此时,再将神经网络回归 神经网络回归分析_神经网络_53作为已知的特征,代入最终的方程,进行训练得到合适的参数神经网络回归 神经网络回归分析_线性回归_54
神经网络回归 神经网络回归分析_神经网络_46
即可得到所需要的神经网络回归 神经网络回归分析_神经网络回归_21

为了区分,使用神经网络回归 神经网络回归分析_神经网络回归_57作为参数

向量化即为:
神经网络回归 神经网络回归分析_神经网络_58

用图进行表示即为

神经网络回归 神经网络回归分析_线性回归_59

这个就有点类似于神经元,每个节点干不同的事情

在机器学习中的神经网络也是这样一个结构,但是相比机器学习的神经网络还少了一个部分,激活函数。

二、神经网络原理

在神经网络中,神经网络回归 神经网络回归分析_神经网络_37并没有明确的含义,在之前为了表达更直观,将神经网络回归 神经网络回归分析_神经网络_37称作为房间数量房屋价格这两个特征,但是实际上,在一个完整的神经网络中,隐藏层的输出的不会给出明确含义

同样,一个多层的神经网络结构包含了输入层,隐藏层,输出层

而,在神经网络中,神经元节点会套一层激活函数
例如在上述的隐藏层和输出层表达式中,
神经网络回归 神经网络回归分析_神经网络_27
神经网络回归 神经网络回归分析_神经网络_28
神经网络回归 神经网络回归分析_线性回归_64
加入对应的激活函数=>
神经网络回归 神经网络回归分析_机器学习_65
神经网络回归 神经网络回归分析_神经网络回归_66
神经网络回归 神经网络回归分析_神经网络回归_67
其中,神经网络回归 神经网络回归分析_神经网络回归_68为激活函数。

用图表示如下:

神经网络回归 神经网络回归分析_激活函数_69

一般结构

神经网络中,如下图
输入层,m个特征,即m个输入,分别为神经网络回归 神经网络回归分析_机器学习~神经网络回归 神经网络回归分析_激活函数_71
隐藏层,有k层,每一层的节点个数分别为神经网络回归 神经网络回归分析_神经网络_72,即第i层有神经网络回归 神经网络回归分析_激活函数_73个输出

第1层隐藏层的第1个节点,其表达式为:
神经网络回归 神经网络回归分析_神经网络_74
m为上一层的输入,向量形式
神经网络回归 神经网络回归分析_激活函数_75
-----------------------------------------------------------------------------------
第1层隐藏层的第2个节点,其表达式为:
神经网络回归 神经网络回归分析_激活函数_76
m为上一层的输入,向量形式
神经网络回归 神经网络回归分析_线性回归_77
-----------------------------------------------------------------------------------
第1层隐藏层的第j个节点神经网络回归 神经网络回归分析_线性回归_78,
其表达式为:
神经网络回归 神经网络回归分析_神经网络回归_79
m为上一层的输入,向量形式
神经网络回归 神经网络回归分析_激活函数_80

第i层隐藏层的第j个节点神经网络回归 神经网络回归分析_神经网络回归_81,神经网络回归 神经网络回归分析_神经网络_82
且设第i层隐藏层的输入为神经网络回归 神经网络回归分析_神经网络_83(向量形式:神经网络回归 神经网络回归分析_激活函数_84)
(输入的个数为上一层的输出个数)
表达式为:
神经网络回归 神经网络回归分析_线性回归_85
向量形式
神经网络回归 神经网络回归分析_线性回归_86

神经网络回归 神经网络回归分析_激活函数_87


输出层

输出层的n个输出,神经网络回归 神经网络回归分析_机器学习_88~神经网络回归 神经网络回归分析_激活函数_89表达式为:
神经网络回归 神经网络回归分析_神经网络回归_90 (k+1表示隐藏层的后一个)
神经网络回归 神经网络回归分析_机器学习_91

神经网络回归 神经网络回归分析_激活函数_92

神经网络传播过程

神经网络回归 神经网络回归分析_激活函数_69


以该结构为例,

输出神经网络回归 神经网络回归分析_神经网络_04

神经网络回归 神经网络回归分析_激活函数_95

神经网络回归 神经网络回归分析_神经网络_96
神经网络回归 神经网络回归分析_神经网络_97

联立以上3个方程,可得
神经网络回归 神经网络回归分析_激活函数_98

=>
神经网络回归 神经网络回归分析_激活函数_99

若所有的激活函数为线性函数,
神经网络回归 神经网络回归分析_神经网络回归_100,则输出神经网络回归 神经网络回归分析_神经网络_04的表达式如下

神经网络回归 神经网络回归分析_线性回归_102

三、激活函数

为什么要使用非线性激活函数

如果不用激活函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合。
即此时相当于线性激活函数神经网络回归 神经网络回归分析_神经网络回归_100

可以通过数学证明,若在所有的隐藏层和输出层中,使用线性激活函数,那么无论隐藏层有多少层,最后所训练出来的模型的效果,和直接单层输出的效果是一样的

如果使用非线性激活函数,激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。

常用的激活函数

(1) sigmoid函数

神经网络回归 神经网络回归分析_神经网络_104

曲线:

神经网络回归 神经网络回归分析_激活函数_105


用于隐层神经元输出,取值范围为(0,1)

它可以将一个实数映射到(0,1)的区间,可以用来做二分类。

在特征相差比较复杂或是相差不是特别大时效果比较好。

(2) Tanh函数

神经网络回归 神经网络回归分析_线性回归_106

神经网络回归 神经网络回归分析_激活函数_107

取值范围为[-1,1]tanh在特征相差明显时的效果会很好

与 sigmoid 的区别是,tanh 是 0 均值的,因此实际应用中 tanh 会比 sigmoid 更好,经过测试,tanh 也确实是比 sigmoid更好