前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >多层感知器(神经网络)

多层感知器(神经网络)

作者头像
润森
发布2020-02-25 11:47:54
1.3K0
发布2020-02-25 11:47:54
举报
文章被收录于专栏:毛利学Python

@Author:By Runsen

原文:https://maoli.blog.csdn.net/article/details/88777955

这篇文章是我大二刚开学1个月写的,2019年3月24日,觉得还不错

多层感知器(神经网络)

从线性回归模型和对数几率回归模型本质上都是单个神经元

  • 计算输入特征的加权
  • 使用一个激活函数计算输出

单个神经元(二分类)

多和神经元(多分类)

但是单层神经元有缺陷

无法拟合“异或”运算

多去官网https://keras.io/zh/看看

因此多层感知器诞生

生物的神经元一层一层连接起来,当神经信号达到某一个条件,这个神经元就会激活 ,然后继续传递信息下去

为了继续使用神经网络解决这种不具备线性可分性的问题,采用再神经网络的输入和输出之间插入更多的神经元

由于层度越来越多,神经网络因此而来

梯度下降法

梯度下降法是一种致力于找到函数极值点的算法

所谓学习的过程,便是改进模型参数,以便通过大量训练步骤将损失最小化。因此寻找损失函数的极值点便构成了依据输入数据的模型学习

这个函数就是损失函数,梯度就是斜率的意思,点就是当前权重的意思,一段将梯度减小到最小,最后为0,即找到极小点

学习速率就是对梯度机型缩放的参数,就是对梯度求导,即二重导数

合适的学习速率,损失函数随时间下降,不合适的损失函数会一直震荡

我们可以看到loss函数一直在震荡,就是学习速率不合适

反向传播算法 每一层的倒水都是后一层的导数于前一层输出之积

从输入开始,逐一计算每个隐含层的输出,直到输出层。然后计算导数,并从输出层经各隐含层逐一反向传播,为了减小计算量,还需对所有已完成计算的元素进行复用。这激素反向传播算法的来源.

就是将上一层的loss的梯度传到下一层。

激活函数

神经网络中的每个神经元节点接受上一层神经元的输出值作为本神经元的输入值,并将输入值传递给下一层,输入层神经元节点会将输入属性值直接传递给下一层(隐层或输出层)。在多层神经网络中,上层节点的输出和下层节点的输入之间具有一个函数关系,这个函数称为激活函数(又称激励函数)。

Sigmoid函数

Sigmoid函数是一个在生物学中常见的S型函数,也称为S型生长曲线。在信息科学中,由于其单增以及反函数单增等性质,Sigmoid函数常被用作神经网络的阈值函数,将变量映射到0,1之间 。

公式如下

在这里插入图片描述

Tanh函数:

Tanh是双曲函数中的一个,Tanh()为双曲正切。在数学中,双曲正切“Tanh”是由基本双曲函数双曲正弦和双曲余弦推导而来。

公式如下

ReLU函数

Relu激活函数(The Rectified Linear Unit),用于隐层神经元输出。

公式如下

ReLU函数现在最常用

激活函数必须可导,才可以反向传播

优化函数

优化器的用法

优化器 (optimizer) 是编译 Keras 模型的所需的两个参数之一:

  • SGD 随机梯度下降优化器。

包含扩展功能的支持:- 动量(momentum)优化, - 学习率衰减(每次参数更新后) - Nestrov 动量 (NAG) 优化

参数

  • lr: float >= 0. 学习率。
  • momentum: float >= 0. 参数,用于加速 SGD 在相关方向上前进,并抑制震荡。
  • decay: float >= 0. 每次参数更新后学习率衰减值。
  • nesterov: boolean. 是否使用 Nesterov 动量。
代码语言:javascript
复制
keras.optimizers.SGD(lr=0.01, momentum=0.0, decay=0.0, nesterov=False)
  • RMSprop RMSProp 优化器.

建议使用优化器的默认参数 (除了学习率 lr,它可以被自由调节)

这个优化器通常是训练循环神经网络RNN的不错选择。

参数

  • lr: float >= 0. 学习率。
  • rho: float >= 0. RMSProp梯度平方的移动均值的衰减率.
  • epsilon: float >= 0. 模糊因子. 若为 None, 默认为 K.epsilon()。
  • decay: float >= 0. 每次参数更新后学习率衰减值。
代码语言:javascript
复制
keras.optimizers.RMSprop(lr=0.001, rho=0.9, epsilon=None, decay=0.0)
  • Adam

Adam 优化器。

默认参数遵循原论文中提供的值。

参数

  • lr: float >= 0. 学习率。
  • beta_1: float, 0 < beta < 1. 通常接近于 1。
  • beta_2: float, 0 < beta < 1. 通常接近于 1。
  • epsilon: float >= 0. 模糊因子. 若为 None, 默认为 K.epsilon()。
  • decay: float >= 0. 每次参数更新后学习率衰减值。
  • amsgrad: boolean. 是否应用此算法的 AMSGrad 变种.。
代码语言:javascript
复制
keras.optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=None, decay=0.0, amsgrad=False)

参考 https://keras.io/zh/optimizers/#nadam

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-02-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小刘IT教程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 多层感知器(神经网络)
  • 梯度下降法
  • 激活函数
  • 优化函数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档