机器学习入门六:神经网络相关

神经网络

为什么研究神经网络

如下图右边的逻辑函数中,仅仅包含了两个特征x1和x2,此时包含了所有的特征值,这里明显包含了所有的特征,但是数据非常多

上述知识在两个特征变量的情况下,但是如果有100个特征变量,在保证拥有全部特征的情况下,只考虑二次项,也就是包括x²、x1x2、x1x3…等等相关的特征组合就已经达到5000个,相应复杂度达到O(n²)

如果只考虑x²、x²…这些项,同样数量也会达到n²/2

如果考虑三次方,也就是例如x1x2x3、x1²x2…,其数量能够达到170000个,复杂度为0(n³)

因为往后的运算中都是围绕这些项去展开的,项越多越复杂,就意味着难度越高。并且上述还是在省去了部分项,可能会造成欠拟合以及过拟合问题
在这里插入图片描述
因此,只是包括平方项或者立方项特征以及简单的logistic回归算法,并不是在特征变量数量n很大的时,学习复杂的非线性假设的好办法,因为特征过多

神经网络在学习复杂的非线性假设上被证明是一种好得多的算法

什么是

神经网络是人们想尝试设计出模拟人脑的算法,最初被用于制造能模拟大脑的机器

如何表示神经网络

在运用神经网络时,我们该如何表示我们的假设或模型

神经网络模仿了我们大脑中的神经元或者神经网络,所以理解神经网络可以从,人体的神经元进行结合理解,如下图为一个神经元
在这里插入图片描述
神经元存在一个细胞体,并且神经元有很多输入通道,如下
在这里插入图片描述
神经元后的轴突负责向其他神经元传递信号

在这里插入图片描述

综合上述,神经元就是一个计算单元,它从输入通道接受数据,然后经过计算,最终通过轴突进行传递信息到其他神经元

在我们计算机中,我们可以设计如下一个简单的逻辑单元
在这里插入图片描述

有时候会添加一个额外的输入x0,如下,这个是偏置单元或偏置神经元,他的值总是等于1,因而一般是不会标出来
在这里插入图片描述
神经网络实际上是一系列的神经元连接起来的组合

  • 如下分为三层,第一层是输入层,可以包括额外的偏置单元
  • 第二层是隐藏层,该层的值在训练集中是看不到的,他的值既不是x也不是y,并且隐藏层可能不单只有一层。一般而言,非输入层以及非输出层称为隐藏层
  • 第三层是输出层,它输出假设的最终计算结果

多个隐藏层的情况下,隐藏层
在这里插入图片描述

神经网络在数学上的定义(假设函数)

激活项:由一个具体神经元计算并输出的值

  • aji:表示第j层第i个神经元的激活项, a21表示第二层,也就是隐藏层的第一个神经元的输出值
  • 神经网络被这些矩阵参数化,如下θj就是权重矩阵,它控制从某一层,例如第一次层到第二层或者第二层到第三层的映射。例如θ1表示控制第一层到第二层的映射
    在这里插入图片描述
    计算相应的激活项,使用到sigmoid函数,如下是关于三个隐藏层如何计算他们的值

    其中θj表示的是控制层与层之间的映射,即j层与j+1层的映射,例如θ1,就是表示第一层到第二层的映射,他是一个矩阵

假设j层有sj个单元,而j+1层有sj+1个单元,那么矩阵θj的维度是sj+1sj+1,如上述例子中,θ1就是一个34的矩阵

注意是sj+1*sj+1,右边的是sj,多加1是增加的偏置单元x0
在这里插入图片描述
这里a(2)1就是第2层第1个神经元的输出值(激活项目),下标是0的是偏置单元,θ是权重矩阵,上述简单理解就是例如a(2)1后边g函数中的四个相加的项其实,就是最左边的输入项(包括偏置单元)乘上各自连着第2层第1个神经元的线的权重

上述中最后一个单元,他计算h(x),他的计算公式可以是如下图2
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
具体例子如下

在这里插入图片描述

神经网络假设函数如何帮助学习复杂的非线性假设函数

参数向量化

z(2)表示第二层激活项对应的sigmoid的参数,如下图,将参数矩阵化
在这里插入图片描述
对于上述中z(2)与输入值相关,因此对应的x就是第一层的激活项,为了统一符号表示,可以将x变成a(1)进行表示
在这里插入图片描述
同样可以进一步表示其他
在这里插入图片描述
计算h(x)的过程成为前向传播,这是因为计算是从输入项一步步计算,最后到输出层,最终得到对应的输出值,这个过程依次计算激活项,称为前向传播

从逻辑回归理解隐藏层的使用

如下图所示,右边部分跟逻辑回归是相同的,但是输入值不是x1,x2…这些,而是经过处理的从隐藏层中输出的新特征
在这里插入图片描述

神经网络架构

可以使用其他结构表示神经网络的结构
在这里插入图片描述

神经网络的神经元之间的连接方式称为神经网络的架构

神经网络计算过程

同或分解

计算同或执勤啊首先可以进行如下通过例子说明神经元是如何被用来计算逻辑函数

如下为实现逻辑与,其中特征变量是x1和x2,通过神经网络进行计算该值,从下边可以看到,分别设置了相应的权重,通过权重以及对应的输入特征量,最终得到sigmoid函数,x1和x2的输入值只能是0和1

通过右下图的表格,分别输入x1和x2的值,这个时候,可以得到相应的sigmoid的函数值,并且经过计算得到的结果跟实际的逻辑与相同
在这里插入图片描述

如下是逻辑或的实现,相对于上述逻辑与,仅仅是改变了权重,然后同样的输入,但是输出不同,并且符合实际的或运算的输出
在这里插入图片描述
由上述就可以看到神经网络的工作过程并且每个神经元在其中的作用

同或组合

如下是算出来的三个组合,将三个组合结合在一起就可以实现同或
在这里插入图片描述
如下通过上述两个组合,分别得到隐藏层的两个激活项,最后通过or进行组合,最终输出同或的结果

可以注意到中间的那个NOT x1 and NOTx2,他的参数其实就是x1 or x2的参数变成了负数,这样就成功取反了
在这里插入图片描述

为神经网络拟合参数

二分类和多分类问题

  • L表示神经网络的总层数
  • sl表示l层的总的神经元的数目有多少(不包括偏置单元)
    在这里插入图片描述对于输出值的问题中,二分类问题输出只有一个,也就是输出层只有一个神经元,而多分类问题输出层有多个输出元
    在这里插入图片描述

神经网络的代价函数

为神经网络拟合参数,就需要求出其代价函数

由上述可以知道,对于二分类问题中,输出层实际上只有一个神经元,并且从输出层的上一层的隐藏层到输出层的时候,其构成类似逻辑回归,而多元分类的时候,实际上操作也是相当于多个二分类问题的输出,也就相当于多个类似逻辑回归方程的输出

因而神经网络的代价函数可以从逻辑回归的代价函数入手进行推导

如下是逻辑回归及其正则项的数学方程
在这里插入图片描述
而神经网络中,可以处理多分类问题,也就是类似多个逻辑回归的过程

假设有k个分类,那么就得到如下神经网络代价函数
在这里插入图片描述
如下按1…k进行叠加,是统计k次的分类结果进行处理
在这里插入图片描述

反向传播算法

反向传播详细推导:神经网络之反向传播算法(BP)公式推导(超详细)

代价函数的偏导项推导

让神经网络代价函数最小化的算法

如下是神经网络假设函数的代价函数,我们的目的同样是使得代价函数最小并且得到相应的θ的值

最小化代价函数的时候,主要还是对代价函数求偏导的过程

在这里插入图片描述

假设只有一个样本的训练集以及如下的架构的神经网络,如下为前向传播的过程。其中add a(2)0表示在对应的层加入相应的偏置单元
在这里插入图片描述
为了计算导数项我们将采用一种叫反向传播的算法

反向传播就是对每一个结点,我们计算如下图这样一项,
在这里插入图片描述
该项代表了第l层的第j个结点的误差他捕捉了在这个神经节点的激活值的误差
在这里插入图片描述
上图中,以右图神经网络架构为基础,首先得到的是是输出层的各个点的误差,而后是从这里开始往前推导各层的误差,如下
在这里插入图片描述
对其中的g进行展开,如右边公式所示,该公式在数学上就等于激活函数,而在表达式里边使用了g进行表示,也就是g的偏导数进行表示
在这里插入图片描述
如下是根据上述推导方式推导出来的偏导数项

在这里插入图片描述
在这里插入图片描述

从上述可以知道,反向传播的名字由来是因为我们的推导过程是从输出项开始的,而前向传播则是相反

注意:

  • 我们不需要对输入层考虑误差项,也就是说反向传播最多到δ2
  • δ有时候写作大写的Δ

上述例子是仅有一个样本的情况下通过反向传播算法来计算这些参数的偏导数,接下来相对一个非常大的训练样本时在这方面的处理

如下是m个样品集合,循环对每个集合进行操作,并设置第一层的激活值为输入值,通过前向传播推导出每一层的激活值,然后通过反向传播求每一层的误差,最后循环执行如下公式循环累加偏导数

其中i是第l+1层的节点,j第l层第j个结点

在这里插入图片描述

最终推导出来的代价函数的偏导数如下

在这里插入图片描述

δ实际上是代价函数cost函数对z(l)j的偏导数,如下在这里插入图片描述

理解反向传播

前向传播中,如下例子,求第三层的第1个激活值的时候,需要求出其参数项z的表达,根据之前定义,这个时候就是第二层的每个神经元(包括偏置神经元)分别乘上其对连接到第三层第二个神经元对应的权重,重复该过程,最终实现前向传播
在这里插入图片描述

反向传播与前向传播类似,只是方向不同

如下第二层第二个节点的误差进行计算,只需要与其相连的权重乘上后一层的对应连接的节点的误差即可,如下
在这里插入图片描述

随机初始化

这里主要是对神经网络中的权重θ进行初始化,对于θ首先初始化为0,在神经网络中是起不到任何作用的,如下

当权重初始化为0的时候,每个神经元对应的路径的权重都是相同的,那么以为这,在求下一层的激活值的时候,如下,a(2)1以及a(2)2他们的输入都是一样的,这意味着,后续随着样品不断输入,但是隐藏层中的多个神经元干着同一样事情,产生了冗余
在这里插入图片描述
上述的问题有时候别称为对称权重问题

解决上述问题需要随机初始化,如下随机初始化θ的值在[-ε,ε]之间,使得权重是一个接近0的数值

在这里插入图片描述

总结

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值