机器学习笔记 week05

一、反向传播

1、两种分类问题

①二元分类(输出只有两个类别)
y = {0,1},SL = 1

注:SL表示最后一层中输出单元的个数。L表示神经网络的层数。

②多类别分类(输出有≥3个的类别)
y 为k维向量 (k ≥ 3),SL = k
yi = 1 表示属于第 i 类。

2、神经网络的代价函数

对比逻辑回归的代价函数:
①逻辑函数:
在这里插入图片描述

注:正则项不包括θ0

②神经网络:
在这里插入图片描述
在逻辑回归中,我们只有一个输出变量,又称标量(scalar),也只有一个因变量 y ,但是在神经网络中,我们可以有很多输出变量,我们的 hθ(x) 是一个维度为 k 的向量。
正则化的那一项只是排除了每一层 θ0 后,每一层的 θ 矩阵的和。最里层的 j 循环循环所有的行(由 sl +1 层的激活单元数决定),循环 i 则循环所有的列,由该层(sl 层)的激活单元数所决定。

3、反向传播的过程

反向传播是计算代价函数对所有参数的偏导数的有效方法

假设我们的神经网络是一个四层的神经网络,其中 K =4,SL = 4,L = 4:

①首先,需要写出前向传播
在这里插入图片描述
②我们从最后一层的误差开始计算,误差是激活单元的预测(ak(4))与实际值(yk)之间的误差。
用来 δ 表示误差,则: δ(4) = a(4) - y

利用这个误差值来计算前一层的误差:
在这里插入图片描述
其中 g’() 是 sigmoid 形函数的导数:
在这里插入图片描述
权重导致的误差的和:
在这里插入图片描述
下一步是继续计算第二层的误差:
在这里插入图片描述
因为第一层是输入变量,不存在误差。

③算法表示为:
在这里插入图片描述
我们用 来表示这个误差矩阵,表示第 l 层的第 i 个激活单元受到第 j 个参数影响而导致的误差。
在求出了 △ 之后,我们便可以计算代价函数的偏导数了,计算方法如下:
在这里插入图片描述

4、梯度检验

在这里插入图片描述
所以,代价函数对 θ 的偏导:
在这里插入图片描述
一直到θn.

算法实现:
在这里插入图片描述
然后,比较 gradApprox 和反向传播计算的DVec。

5、随机初始化

任何优化算法都需要一些初始的参数。到目前为止我们都是初始所有参数为0,这样的初始方法对于逻辑回归来说是可行的,但是对于神经网络来说是不可行的。如果我们令所有的初始参数都为0,这将意味着我们第二层的所有激活单元都会有相同的值。同理,如果我们初始所有的参数都为一个非0的数,结果也是一样的。
我们通常初始参数为正负之间的随机值,假设我们要随机初始一个尺寸为10×11的参数矩阵,代码如下:
Theta1 = rand(10, 11) * (2*eps) – eps

6、总结

首先总结一下选择神经网络的步骤:
①确定有多少个隐藏层,每层有多少个单元。
②输入层单元的数量 = 特征x(i) 的维度
输出层单元的数量 = 多类别的类别数(向量形式)
③隐藏层 = 1 最好。若 >1 ,确保每个隐藏层的单元个数相同,单元个数越多越好。

其次,总结训练神经网络的步骤:

  1. 构建神经网络,随机初始化参数θ,接近0.
  2. 执行前向传播算法,计算预测值 hθ(x) (向量形式)
  3. 执行代价函数J(θ)
  4. 执行反向传播,算出代价函数对θ的偏导数
  5. 使用梯度检验(运行缓慢)。比较反向传播得到的偏导数数值方法得到的梯度估计值
  6. 停用梯度检验。
  7. 使用高级优化算法来求出使代价函数最小化的θ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值