文章目录

  • 1.神经网络问题在分类问题中的应用
  • 2.反向传播函数
  • 3.展开参数
  • 4.梯度检测
  • 5.随机初始化

1.神经网络问题在分类问题中的应用


{(x(1),y(1)),(x(2),y(2)),…,(x(m),y(m))}
L 表示神经网络结构的总层数
sl表示第l层的单元数,也就是神经元的单元数

  神经网络中使用的代价函数是逻辑回归中使用的代价函数的一般形式。

2.反向传播函数

  反向传播函数是一种让代价函数最小化的算法。

前向传播:

理解反向传播:
  我们先来看代价函数,以下代价函数适用于只有一个输出单元的情况,如果不止一个输出单元,只需用k作为输出单元的下标,然后对它们进行求和即可。

  对于单独的样本(x(i),y(i)),关注只有一个输出单元的情况,y(i)就是一个实数。我们忽略正则化(即λ=0)。这时代价函数就是:

定义:

  cost(i)表示第i个样本的代价函数。它扮演了类似于方差的角色

反向传播算法:

  这些δ值都只关于隐藏单元,并不包括偏置单元,偏置单元的δ值总是“+1”,且它最后不影响偏导数的计算。

3.展开参数

  在先前的逻辑回归代价函数和最小化函数fminunc中,传入的参数都是向量,但现在我们用神经网络,我们的参数不再是向量,而是矩阵。

  下面介绍怎么取出这些矩阵,并将它们展开(Unroll)成向量,使它们成为能够传入CostFunction和fminunc函数的向量,并且得到梯度返回值。
如以下实例:

Theta1 = ones(10,11);
Theta2 = 2*ones(10,11);
Theta3 = 3*ones(1,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)

运行结果:

  下面我们来看怎样将这一方法应用于我们的学习算法:
  假设有一些初始参数值θ(1)、θ(2)、θ(3),我们要取这些参数并将它们展开为一个长向量(initialTheta),然后传入优化函数fminunc。
我们还要实现代价函数CostFunction:

4.梯度检测

数值上来求梯度(或数值上来求近似导数):

gradApprox = (J(theta+EPSILON) - J(theta-EPSILON)) / (2*EPSILON)

上述是只考虑了θ是实数的情况,现讨论θ是向量参数时的情况:

为了估算导数,需要实现以下步骤
1.计算出gradApprox

for i = 1 : n,thetaPlus = theta;thetaPlus(i) = thetaPlus(i)+EPSILON ;thetaMinus = theta;thetaMinus(i) = thetaMinus(i) - EPSILON;gradApprox(i) = (J(thetaPlus) - J(thetaMinus))/(2*EPSILON) ;
end;

2.检查 gradApprox≈DVec?
  使用如上for循环来实现对神经网络中代价函数的所有参数的偏导数的 计算(得到gradApprox),然后与我们在反向传播中得到的梯度(DVec)进行比较,如果这两种方法计算出的导数是一样的,或者说非常接近(只相差几个小数),那么就可以确信反向传播的实现是正确的。

实现数值上的梯度检验的步骤:

  1. 通过反向传播来计算DVec
  2. 实现数值上的梯度检验,计算出gradApprox
  3. 确保DVec与gradApprox能得出相似的值
  4. 关掉梯度检验,使用后向传播来进行训练

5.随机初始化

  当执行一个算法(如梯度下降/高级优化算法),我们需要为变量θ选取一些初始值。如果将所有的θ都初始化为0,尽管这是被允许的,但是在训练网络时是起不到任何作用的。如下例:

  将θij(l)设为0,会导致所有的隐藏单元都在计算相同的特征,都以相同的函数作为输入,这是一种高度冗余的现象,因为最后的逻辑回归单元只能得到一个特征。
  为了解决这个问题,在神经网络中对参数进行初始化时,要使用随机初始化的思想。对每一个θij(l)将其初始化为一个范围在[-ε,ε]之间的随机值

吴恩达机器学习(二十)神经网络(II)相关推荐

  1. 吴恩达机器学习笔记week8——神经网络 Neutral network

    吴恩达机器学习笔记week8--神经网络 Neutral network 8-1.非线性假设 Non-linear hypotheses 8-2.神经元与大脑 Neurons and the brai ...

  2. 吴恩达机器学习(十二)主成分分析(降维、PCA)

    目录 0. 前言 1. 主成分分析(PCA) 2. 主成分分析PCA的流程 3. 低维空间维度的选择 4. 主成分分析使用方式 学习完吴恩达老师机器学习课程的降维,简单的做个笔记.文中部分描述属于个人 ...

  3. 吴恩达机器学习(十二)—— 机器学习系统的设计

    吴恩达机器学习系列内容的学习目录→\rightarrow→吴恩达机器学习系列内容汇总. 1. 优先处理的工作:垃圾邮件分类例子 2. 误差分析 3. 偏斜类的误差度量 4. 查准率和查全率之间的权衡 ...

  4. 吴恩达机器学习(十)支持向量机(SVM)

    目录 0. 前言 1. 代价函数(Cost Function) 2. 假设函数(Hypothesis) 3. 范数表示 4. 高斯核函数(Gaussian Kernel) 5. SVM实现多分类 6. ...

  5. 吴恩达机器学习(十六)机器学习流水线、上限分析

    目录 0. 前言 1. 流水线 2. 上限分析(Ceiling analysis) 学习完吴恩达老师机器学习课程的照片OCR,简单的做个笔记.文中部分描述属于个人消化后的理解,仅供参考. 如果这篇文章 ...

  6. 吴恩达机器学习(十四)推荐系统(基于梯度下降的协同过滤算法)

    目录 0. 前言 1. 基于内容的推荐算法(Content-based recommendations) 2. 计算电影特征 3. 基于梯度下降的协同过滤算法(Collaborative filter ...

  7. 吴恩达机器学习(十五)大规模机器学习(Batch、Stochastic、Mini-batch gradient descent、MapReduce)

    目录 0. 前言 1. Stochastic Gradient Descent 2. Mini-batch Gradient Descent 3. MapReduce 4. 在线学习(online l ...

  8. 吴恩达机器学习笔记 —— 10 神经网络参数的反向传播算法

    http://www.cnblogs.com/xing901022/p/9350271.html 本篇讲述了神经网络的误差反向传播以及训练一个神经网络模型的流程 更多内容参考 机器学习&深度学 ...

  9. 西瓜书+实战+吴恩达机器学习(十二)监督学习之AdaBoost

    文章目录 0. 前言 1. AdaBoost算法 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔,我会非常开心的~ 0. 前言 Boosting:先训练一个基学习器,然后根据学习器的表现对样本 ...

  10. 吴恩达机器学习(十九)神经网络(I)

    文章目录 1.模型展示 2.模型展示 3.举例说明神经网络与非线性假设模型的关系 4.多元分类 1.模型展示 大脑中的神经元:   对于线性回归,我们之前推导了两种算法,一种基于梯度下降,一种基于正规 ...

最新文章

  1. Annual Review:人与微生物组
  2. uds下载服务流程图_UDS诊断全集,干货分享
  3. centos7.5 源码安装mysql5.7.25
  4. 3.7.4 - Indexing and Slicing Strings
  5. 洛谷3067 BZOJ 2679题解(折半搜索)
  6. 网络安全系列之四十九 IIS6.0权限设置
  7. 在blog中放置北京奥运倒计时Flash
  8. php读取写入,php操作文件(读取写入文件)
  9. Linux之Redhat7如何破解密码
  10. Nginx的 HTTP 499 状态码处理
  11. 安装/卸载office2003出现“无法打开此修补程序包”错误
  12. python备份文件代码_python实现文件的备份流程详解
  13. JS实现元素拖拽,简单悬浮框实现
  14. element ui 上一页下一页_vue翻页器,包括上一页,下一页,跳转
  15. python太阳代码_Python模拟太阳
  16. Hive基础之创建数据库
  17. 自动白平衡也即:color constancy (色彩恒常)研究总结
  18. 我们来用Unity做一个局域网游戏(下)
  19. 【2022 CCF BDCI 文心大模型创意项目】乐享词话—诗词意境辅助记忆工具
  20. java_Annotation

热门文章

  1. Android手机截图代码(针对root设备,可截取任意屏幕)
  2. python random.sample()和random.choices()
  3. html5泵站,HTML5 WebGL污水处理厂泵站自控系统
  4. 微服务生态系统的4层模型
  5. Linux可以读取Windows文件吗,linux和Windows下读取目录下文件
  6. Ubuntu镜像文件下载
  7. jsp页面div浮动弹出
  8. java50车架适合身高,自行车架与人的身高,您选择车架对了吗?(图文)
  9. if函数的语法c语言并列,if函数多个条件并列
  10. Riru core is not installed