机器学习-吴恩达(第三周)

九、神经网络II

9-1 代价函数

当用神经网络解决分类问题时,通常分为以下两种情况,二元分类和多元分类
在这里插入图片描述

在神经网络中使用的代价函数是逻辑回归中代价函数的一般形式
在这里插入图片描述

9-2 反向传播算法

(用于优化代价函数)

  1. 假设当前只有一个训练样本,使用前向传播计算输出值
    在这里插入图片描述
    反向传播计算梯度:
    在这里插入图片描述
  2. 假设当前有m个训练样本,反向传播算法的过程如下
    在这里插入图片描述

9-3 理解反向传播

为了可以更好地理解反向传播过程,首先研究一下前向传播,如下是含两个输入单元的神经网络结构,第二第三层都有两个隐藏单元,+1均为偏置项
在这里插入图片描述
具体的计算方法为:

从偏导数角度理解反向传播过程:
在这里插入图片描述

9-4 展开参数

如何把参数有矩阵转化为向量(Octave)
在这里插入图片描述
代码

Theta1 = ones(10,11);
Theta2 = 2 * ones(10,11);
Theta3 = 3 * ones(10,11);
ThetaVec = [Theta1(:);Theta2(:);Theta3(:)];//合并为向量
size(ThetaVec);
reshape(ThetaVec(1:110), 10, 11);
reshape(ThetaVec(111:220), 10, 11);
reshape(ThetaVec(221:231), 1, 11);

9-5 梯度检测

反向传播中会存在bug导致很大的误差,对此类问题,用梯度检验方法解决
梯度数值估计方法(θ是实数):
在这里插入图片描述
注:双侧差分通常比单侧差分更准确
当θ为向量参数时
在这里插入图片描述
步骤总结:

  1. 通过反向传播计算出导数DVec(代价函数关于所有参数的导数或偏导数)
  2. 计算出数值上的梯度gradApprox
  3. 确保DVec和gradApprox值近似
    注意:使用反向传播代码进行学习时,要关闭梯度检验,否则计算量过大,程序运行缓慢

9-6 随机初始化

θ的初始化:对于梯度下降算法或其他高级优化算法,需要人为提供θ的初始化值
思想一:将所有参数初始化为0(该方法只适用逻辑回归)
如果将该思想用于神经网络,会导致对称权重问题
思想二:随机初始化
在这里插入图片描述

9-6 神经网络算法总结

训练一个神经网络
首先需要选择一个网络架构(神经元之间的连接方式)
输入单元的数目:特征的维度
输出单元的数目:类别数
默认选项:一个隐藏层
具体步骤:

  1. 随机初始化权重
  2. 执行前向传播算法
  3. 通过代码计算出代价函数
  4. 执行反向传播算法计算出偏导数(建议for循环)
  5. 使用梯度检查,确保反向传播算法得到的结果是正确的。之后停用梯度检查
  6. 使用一个优化算法与反向传播相结合,最小化代价函数
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值