| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 5-3-BP神经网络 -> 正文阅读 |
|
[人工智能]5-3-BP神经网络 |
文章目录引入名词首先引入几个名词。 BP神经网络BP(Back Propagation)网络是1986年由Rumelhart和McClelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。BP神经网络模型拓扑结构包括输入层(input)、隐层(hide layer)和输出层(output layer)。 简单的来说, BP的传播对象就是“误差”,传播目的就是得到所有层的估计误差。 它的学习规则是:使用梯度下降法,通过反向传播(就是一层一层往前传)不断调整网络的权值和阈值,最后使全局误差系数最小。 NaNNaN(Not a Number,非数)是计算机科学中数值数据类型的一类值,表示未定义或不可表示的值。常在浮点数运算中使用。首次引入NaN的是1985年的IEEE 754浮点数标准。 独热码独热码,在英文文献中称做 one-hot code, 直观来说就是有多少个状态就有多少比特,而且只有一个比特为1,其他全为0的一种码制。通常,在通信网络协议栈中,使用八位或者十六位状态的独热码,且系统占用其中一个状态码,余下的可以供用户使用。 Nabla算子向量微分算子,Nabla算子(nabla operator),又称劈形算子,倒三角算子,哈密顿算子,是一个微分算子。 当应用于在一维域上定义的函数时,它表示其在微积分中定义的标准导数。 当应用于场(在多维域上定义的函数)时,del可以表示标量场(或者有时是矢量场,如在Navier-Stokes方程式中)的斜率(局部最陡坡度),发散度的矢量场,或矢量场的旋度(旋转),这取决于它的应用方式。 严格来说,del并不是一个特定的算子,而是一个方便的使用的数学符号,这使得许多方程易于书写和记忆。nabla算符可以解释为向量的偏导数运算符,其三个可能的含义 - 梯度,散度和旋度 - 可以被正式地视为具有标量,点积和交叉乘积的乘积。详细描述如下 [1] : 1神经网络1.1 神经元模型神经元模型是模拟生物神经元结构而被设计出来的。典型的神经元结构如下图1所示: 树突为神经元的输入通道,其功能是将其它神经元的动作电位传递至细胞体。其它神经元的动作电位借由位于树突分支上的多个突触传递至树突上。神经细胞可以视为有两种状态的机器,激活时为“是”,不激活时为“否”。神经细胞的状态取决于从其他神经细胞接收到的信号量,以及突触的性质(抑制或加强)。当信号量超过某个阈值时,细胞体就会被激活,产生电脉冲。电脉冲沿着轴突并通过突触传递到其它神经元。(内容来自维基百科“感知机”) 同理,神经元模型就是为了模拟上述过程,典型的神经元模型如下: 1.2 神经元激活函数激活函数(Activation functions),将非线性特性引入到网络中。如下图,在神经元中,输入的 inputs 通过加权,求和后,还被作用了一个函数,这个函数就是激活函数。 引入激活函数是为了增加神经网络模型的非线性。没有激活函数的每层都相当于矩阵相乘。就算你叠加了若干层之后,无非还是个矩阵相乘罢了。 1.2.1 为什么要使用激活函数?
1.2.2为什么激活函数需要非线性函数?
1.2.3常用的激活函数
能够把输入的连续实值变换为0和1之间的输出,特别的,如果是非常大的负数,那么输出就是0;如果是非常大的正数,输出就是1.
tanh读作Hyperbolic Tangent,它解决了Sigmoid函数的不是zero-centered输出问题,然而,梯度消失(gradient vanishing)的问题和幂运算的问题仍然存在。
它保留了 step 函数的生物学启发(只有输入超出阈值时神经元才激活),不过当输入为正的时候,导数不为零,从而允许基于梯度的学习(尽管在 x=0 的时候,导数是未定义的)。使用这个函数能使计算变得很快,因为无论是函数还是其导数都不包含复杂的数学运算。然而,当输入为负值的时候,ReLU 的学习速度可能会变得很慢,甚至使神经元直接无效,因为此时输入小于零而梯度为零,从而其权重无法得到更新,在剩下的训练过程中会一直保持静默。函数的定义为:
f
(
x
)
=
m
a
x
(
0
,
x
)
f(x)=max(0,x)
f(x)=max(0,x),值阈
[
0
,
+
∞
]
[0, +∞]
[0,+∞]。函数图像如下:
1.3 神经网络结构http://t.cn/RBCoWof
2.损失函数和代价函数损失函数(Loss Function)和代价函数(Cost Function)并没有一个公认的区分标准。 损失函数主要指的是对于单个样本的损失或误差;代价函数表示多样本同时输入模型的时候总体的误差——每个样本误差的和然后取平均值。 3.反向传播参考: |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 17:37:05- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |