神经网络学习(1)前言介绍

目录

1.概念

 1.1.机器学习 & 深度学习

1.2.深度学习

2. 向量化编程

3.正向传播与反向传播

4.激活函数

4.1为什么需要非线性的激活函数

4.2激活函数的选择

 5.为什么使用深层网络

 6.参数与超参数

6.1 参数

6.2 超参数

6.3 参数初始化


1.概念

神经网络可以指向两种,一个是生物神经网络,一个是人工神经网络。我们现在学习的是人工神经网络。

 人工神经网络( Artificial Neural Network, 简写为ANN)也简称为神经网络(NN)。是一种模仿生物神经网络(动物的中枢神经系统,特别是大脑)结构和功能的 计算模型。经典的神经网络结构包含三个层次的神经网络。分别输入层,输出层以及隐藏层。

        本质是线性回归,每一个点都有自己的权值,结果转为下个点的输入。神经元越多(节点),越聪明,效果越好。

 

其中每层的圆圈代表一个神经元,隐藏层和输出层的神经元有输入的数据计算后输出,输入层的神经元只是输入。

  • 神经网络的特点

    • 每个连接都有个权值同一层神经元之间没有连接

    • 神经元当中会含有激活函数(非线性的)

    • 最后的输出结果对应的层也称之为全连接层  

隐层:可以有很多很多节点,节点越多,神经网络越好,机器越聪明, 效果越好。

 1.1.机器学习 & 深度学习

  • 机器学习的特征工程步骤是要靠手动完成的,而且需要大量领域专业知识

  • 深度学习通常由多个层组成,它们通常将更简单的模型组合在一起,通过将数据从一层传递到另一层来构建更复杂的模型。通过大量数据的训练自动得到模型,不需要人工设计特征提取环节

 深度学习算法试图从数据中学习高级功能,这是深度学习的一个非常独特的部分。因此,减少了为每个问题开发新特征提取器的任务。适合用在难提取特征的图像、语音、自然语言领域(NLP)

  • 数据

  • 计算

    • 训练网络需要GPU、TPU

  • 算法

    • 一些创新,如ReLU激活函数

本质:神经网络就是线性回归算法,对每一个节点进行加权,然后得到结果作为输入

1.2.深度学习

深度学习难以在大数据领域发挥最大效果的一个原因是,在巨大的数据集基础上进行训练速度很慢。而优化算法能够帮助我们快速训练模型,提高计算效率。以前是使用cpu进行训练,现在到GPU训练,效率提高很多,这也是深度学习可以火起来的一个基础之一

2. 向量化编程

每更新一次梯度时候,在训练期间我们会拥有m个样本,那么 这样每个样本提供进去都可以做一个梯度下降计算。所以我们要去做在所有样本上的计算结果、梯度等操作 。对于向量,由于在进行计算的时候,最好不要使用for循环去进行计算,因为有Numpy可以进行更加快速的向量化计算。

3.正向传播与反向传播

前面我们所做的整个过程分为两个部分,一个是从前往后的计算出梯度与损失,另外一部分是从后往前计算参数的更新梯度值,得到参数值。所以在神经网络当中会经常出现两个概念,正向传播与反向传播。

4.激活函数

4.1为什么需要非线性的激活函数

使用线性激活函数和不使用激活函数、直接使用 Logistic 回归没有区别,那么无论神经网络有多少层,输出都是输入的线性组合,与没有隐藏层效果相当,就成了最原始的感知器了。激活函数就是非线性了,可以在一定程度修改神经元的效果或者说属性。

4.2激活函数的选择

涉及到网络的优化时候,会有不同的激活函数选择有一个问题是神经网络的隐藏层和输出单元用什么激活函数。之前我们都是选用 sigmoid 函数,但有时其他函数的效果会好得多,大多数通过实践得来,没有很好的解释性。 ​​​​​​​-------梯度消失,梯度爆炸问题。

tanh 函数

ReLU 函数 ----------------使用最多

Leaky ReLU

,sigmoid函数

 sigmoid函数一般不做隐层激活函数,容易出现梯度消失,梯度爆炸问题。

 5.为什么使用深层网络

对于人脸识别等应用,神经网络的第一层从原始图片中提取人脸的轮廓和边缘,每个神经元学习到不同边缘的信息;网络的第二层将第一层学得的边缘信息组合起来,形成人脸的一些局部的特征,例如眼睛、嘴巴等;后面的几层逐步将上一层的特征组合起来,形成人脸的模样。随着神经网络层数的增加,特征也从原来的边缘逐步扩展为人脸的整体,由整体到局部,由简单到复杂。层数越多,那么模型学习的效果也就越精确。

通过例子可以看到,随着神经网络的深度加深,模型能学习到更加复杂的问题,功能也更加强大

 6.参数与超参数

6.1 参数

参数即是我们在过程中想要模型学习到的信息(模型自己能计算出来的),例如 W[l]W[l],b[l]b[l]。而超参数(hyper parameters)即为控制参数的输出值的一些网络信息(需要人经验判断)。超参数的改变会导致最终得到的参数 W[l],b[l] 的改变。

6.2 超参数

典型的超参数有:

  • 学习速率:α

  • 迭代次数:N

  • 隐藏层的层数:L

  • 每一层的神经元个数:n[1],n[2],...

  • 激活函数 g(z) 的选择

当开发新应用时,预先很难准确知道超参数的最优值应该是什么。因此,通常需要尝试很多不同的值。应用深度学习领域是一个很大程度基于经验的过程。

6.3 参数初始化

  • 为什么要随机初始化权重

如果在初始时将两个隐藏神经元的参数设置为相同的大小,那么两个隐藏神经元对输出单元的影响也是相同的,通过反向梯度下降去进行计算的时候,会得到同样的梯度大小,所以在经过多次迭代后,两个隐藏层单位仍然是对称的。无论设置多少个隐藏单元,其最终的影响都是相同的,那么多个隐藏神经元就没有了意义。

在初始化的时候,W 参数要进行随机初始化,不可以设置为 0。b 因为不存在上述问题,可以设置为 0。

以 2 个输入,2 个隐藏神经元为例:

W = np.random.randn(2,2)* 0.01
b = np.zeros((2,1))
  • 初始化权重的值选择

这里将 W 的值乘以 0.01(或者其他的常数值)的原因是为了使得权重 W 初始化为较小的值,这是因为使用 sigmoid 函数或者 tanh 函数作为激活函数时,W 比较小,则 Z=WX+b 所得的值趋近于 0,梯度较大,能够提高算法的更新速度。而如果 W 设置的太大的话,得到的梯度较小,训练过程因此会变得很慢。

ReLU 和 Leaky ReLU 作为激活函数时不存在这种问题,因为在大于 0 的时候,梯度均为 1。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值