专栏首页ACM算法日常第十一篇:《机器学习之神经网络(五)》

第十一篇:《机器学习之神经网络(五)》

(因后文学术性较强,部分内容参见吴恩达在斯坦福大学的讲义)

与世无争的吴恩达老师

本篇内容:神经网络算法的重要处理

通过上一篇的学习您学习神经网络的反向传播算法

本篇将带您了解的神经网络的新手误区

并整理一下繁杂的搭建流程

实现注意:展开参数

在上一节中,我们谈到了怎样使用反向传播算法计算代价函数的导数。在本节中,我想快速地向你介绍一个细节的实现过程,怎样把你的参数从矩阵展开成向量,以便我们在高级最优化步骤中的使用需要。

小编给大家附上吴恩达在斯坦福时的PPT原图

Advanced optimization 高级优化

jVal为代价函数值,gradient为导数值(梯度值)

fminunc( )为高级优化方法,有库函数可以直接使用

costFunction(theta)为使用代价函数计算(参数值)

Neural Network 神经网络 L=4 层数4

"Unroll" into vectors为展开成矩阵

s1输入层,s2中间层,s3输出层

thetaVec为取出所有元素

DVec为展开成向量

Theta1,Theta2,Theta3为重新调整后再转回矩阵

Learning Algorithm 学习算法

Have initial parameters 初始化参数

Unrol to get initialTheta l为展开成向量initialTheta

fminunc()函数优化

函数(jval , 梯度矩阵 = 代价函数计算函数 (theta矩阵))

Use forward prop/back prop to compute

使用前向/反向传播算法计算D(1),D(2),D(3)和J(theta)

最后再展开得到 gradient 梯度矩阵

梯度检验

当我们对一个较为复杂的模型(例如神经网络)使用梯度下降算法时,可能会存在一些不容易察觉的错误,意味着,虽然代价看上去在不断减小,但最终的结果可能并不是最优解。

为了避免这样的问题,我们采取一种叫做梯度的数值检验(Numerical Gradient Checking)方法。这种方法的思想是通过估计梯度值来检验我们计算的导数值是否真的是我们要求的。

最后我们还需要对通过反向传播方法计算出的偏导数进行检验。

随机初始化

任何优化算法都需要一些初始的参数。到目前为止我们都是初始所有参数为0,这样的初始方法对于逻辑回归来说是可行的,但是对于神经网络来说是不可行的。如果我们令所有的初始参数都为0,这将意味着我们第二层的所有激活单元都会有相同的值。同理,如果我们初始所有的参数都为一个非0的数,结果也是一样的。

我们通常初始参数为正负之间的随机值,假设我们要随机初始一个尺寸为10×11的参数矩阵,代码如下:

Theta1 = rand(10, 11) * (2*eps) – eps

(小编潦草的字迹。。。)

综合起来

小结一下使用神经网络时的步骤:

网络结构:第一件要做的事是选择网络结构,即决定选择多少层以及决定每层分别有多少个单元。

第一层的单元数即我们训练集的特征数量。

最后一层的单元数是我们训练集的结果的类的数量。

如果隐藏层数大于1,确保每个隐藏层的单元个数相同,通常情况下隐藏层单元的个数越多越好。

我们真正要决定的是隐藏层的层数和每个中间层的单元数。

训练神经网络:

1 参数的随机初始化

2 利用正向传播方法计算所有的

3 编写计算代价函数 的代码

4 利用反向传播方法计算所有偏导数

5 利用数值检验方法检验这些偏导数

6 使用优化算法来最小化代价函数

本文分享自微信公众号 - ACM算法日常(acm-clan)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-11-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Hello World!

    这里每天会定期更新一些ACM算法网站的题目,主要目的是为了能够将ACM里面涉及到的算法和技巧通过易于理解的方式进行讲解。

    ACM算法日常
  • 第六篇:《机器学习之神经网络(一)》

    上回我们带大家使用Python实现逻辑回归来辨别一只猫的图片,大家应该隐约感觉到逻辑回归的神奇了,不免好奇为什么它可以做识别呢?这就是回归的强大能力——分类!回...

    ACM算法日常
  • 深度学习初探——深层神经网络

    后续文章适合(基本的编程知识,熟悉Python、对机器学习有基本了解)想要尝试进入人工智能领域的计算机专业的同学准备。

    ACM算法日常
  • 你真的理解反向传播 BP 算法吗?

    我们经常会听到深度网络会出现梯度消失或者梯度爆炸问题,但是使用某些策略又可以缓解这个问题,那么你知道为什么会出现这些问题,这些策略为什么又可以缓解了,深度网络里...

    用户1737318
  • 机器学习——神经网络代价函数、反向传播、梯度检验、随机初始化

    机器学习(十二) ——神经网络代价函数、反向传播、梯度检验、随机初始化 (原创内容,转载请注明来源,谢谢) 一、代价函数 同其他算法一样,为了获得最优化的神经网...

    企鹅号小编
  • 机器学习(十二) ——神经网络代价函数、反向传播、梯度检验、随机初始化

    机器学习(十二)——神经网络代价函数、反向传播、梯度检验、随机初始化 (原创内容,转载请注明来源,谢谢) 一、代价函数 同其他算法一样,为了获得最优化的神经网...

    用户1327360
  • DeepLearning.ai学习笔记(一)神经网络和深度学习--Week4深层神经网络

    一、深层神经网络 深层神经网络的符号与浅层的不同,记录如下: ? 用\(L\)表示层数,该神经网络\(L=4\) \(n^{[l]}\)表示第\(l\)层的神经...

    marsggbo
  • 机器学习发展历史回顾

    机器学习是现阶段解决很多人工智能问题的主流方法,作为一个独立的方向,正处于高速发展之中。最早的机器学习算法可以追溯到20世纪初,到今天为止,已经过去了100多年...

    SIGAI学习与实践平台
  • 学界 | Siamese:CVPR 2019 接收论文作者为你解读视频跟踪领域

    AI 科技评论按,本文作者 Qiang Wang,原载于知乎,AI 科技评论获得授权转载。

    AI科技评论
  • 【学术】从零开始,教你如何编写一个神经网络分类器

    高水平的深度学习库,如TensorFlow,Keras和Pytorch,通过隐藏神经网络的许多乏味的内部工作细节,使深度学习从业者的生活变得更容易。尽管这是深度...

    AiTechYun

扫码关注云+社区

领取腾讯云代金券