神经网络和bp算法推导(代码片段)

爆浆大鸡排 爆浆大鸡排     2022-12-07     726

关键词:

我的原文:https://www.hijerry.cn/p/53364.html

感知机

感知机(perceptron)于1957年由Rosenblatt提出,是一种二分类线性模型。感知机以样本特征向量作为输入,输出为预测类别,取正、负两类。感知机最终学习到的是将输入空间(特征空间)划分为正、负两类的分离超平面,属于判别模型。为此,使用误分类作为损失函数,利用梯度下降优化该函数,可求得感知机模型。感知机是神经网络与支持向量机的基础。

单层感知机

i i i 个样本的预测值 y i ^ = f ( w ⃗ ⋅ x i ⃗ + b ) \\haty_i = f(\\vecw \\cdot \\vecx_i + b) yi^=f(w xi +b) ,其中 f ( ⋅ ) f(\\cdot) f() 称为激活函数,$ f(\\cdot) \\in -1, 1$ ,损失为 L i = 1 2 ( y i ^ − y i ) 2 L_i=\\frac12(\\haty_i-y_i)^2 Li=21(yi^yi)2 。单层感知机的目的就是习得合适的 w ⃗ \\vecw w b b b ,使得所有样本的损失之和 ∑ x i ∈ X L i \\sum_x_i \\in X L_i xiXLi 最小。

如果我们令 z = w ⃗ ⋅ x i ⃗ + b z = \\vecw \\cdot \\vecx_i + b z=w xi +b 即感知机的输入。那么当 z &lt; 0 z &lt; 0 z<0 时, f ( z ) = − 1 f(z) = -1 f(z)=1;当$ z > 0$ 时, f ( z ) = 1 f(z)=1 f(z)=1 。因为 z z z x x x 线性组合,所以最终得到的是一个超平面 w ⃗ ⋅ x ⃗ + b = 0 \\vecw \\cdot \\vecx+b=0 w x +b=0 ,超平面将输入样本分为了 y i = 1 y_i=1 yi=1 y i = y_i= yi= -1两类。

当输入 x = ( x 1 , x 2 ) x=(x_1, x_2) x=(x1,x2) 是二维向量时,用红点表示 + 1 +1 +1 的数据,黑点表示 − 1 -1 1 的数据,最终习得的是一条直线,将两个数据分离开,如下图所示。

因为单层感知机最终习得是超平面,所以只能用于解决线性可分问题。对于下面这样的数据,单层感知机无能为力。

多层感知机

多层感知机也叫MLP,可以看做是一个有向图。MLP由多层节点组成,每一层全连接到下一层,除输入节点外,每个节点都是一个带有非线性激活函数的神经元(unit)。多层感知机可用于解决线性不可分问题。

因为神经网络的和多层感知器是一个意思,所以下面直接对单层前馈神经网络进行详细说明。

单层前馈神经网络

下图是一个输入层节点数为3,隐藏层节点数为2,输出层节点数为2的前馈神经网络,该网络可用于解决二分类问题。

单层前馈神经网络本质上是一个多层感知机,有以下几个特点:

  1. 全连接。每一层的节点都与右边层的所有节点通过权重连接。
  2. 隐藏层只有一层。所以称之为单层
  3. 数据单向流动。每一层节点只作用于其之后的层,所以叫作前馈
  4. 本质是数学函数。神经网络可以明确的用数学语言表达。

神经元

我们拿出隐藏层的一个神经元(unit)放大来看:

神经元的任务就是接受输入,产生输出

z 表示神经元的输入,a 是神经元的输出。

输入怎么得来?就是上一层的神经元输出与权重 的乘积之和再加上偏置

输出怎么得来?把输入值带入激活函数 得到。

写成数学表达式就是:

$ z^(2)_1 = w(1)_11a(1)_1+w(1)_21a(1)_2+w(1)_31a(1)_3+b^(1)_1$

a 1 ( 2 ) = f ( z 1 ( 2 ) ) a^(2)_1=f(z^(2)_1) a1(2)=f(z1(2))

f ( ⋅ ) f(\\cdot) f() 是激活函数,常见的有sigmoid、tanh、ReLU。

Sigmoid函数

Sigmoid的表达式为 S ( x ) = 1 1 + e − x S(x)=\\frac11+e^-x S(x)=1+ex1,定义域为 R R R ,值域为 ( 0 , 1 ) (0, 1) (0,1)

x = 0 x=0 x=0 处,函数值为 1 2 \\frac12 21,其函数图像如下:

sigmoid函数有许多优美的性质,如:

  1. e x e^x ex 的复合函数, e e e 又名自然常数

  2. 1阶导函数 S ′ ( x ) = S ( x ) ( 1 − S ( x ) ) S&#x27;(x)=S(x)(1-S(x)) S(x)=S(x)(1S(x)) 。即函数在某一点的导数可由函数在这一点的函数值求得

  3. 曲线光滑,定义域内处处可导,且可以无限次求导

  4. 可以把任意输入压缩到 ( 0 , 1 ) (0, 1) (0,1) 范围内

在反向传播算法(BP算法)中,性质2、3起到了极大的作用,性质4起到了防溢出的作用。

前向传播原理

现考虑一个样本$ (x, y)$ ,其中 x ∈ R 3 x \\in R^3 xR3 是输入数据, y ∈ [ 0 , 1 ] , [ 1 , 0 ] y \\in \\[0,1],[1,0]\\ y[0,1],[1,0]是实际值。我们现在来手动计算 x x x 预测值 y ^ \\haty y^。预测值 y ^ \\haty y^ 的计算过程是从输入层开始从左往右计算的,所以这个过程也叫作前向传播。

下图表示,为了得到 a 1 ( 3 ) a^(3)_1 a1(3) ,有哪些神经元被激活了。

为了方便表述,用 w i j ( l ) w^(l)_ij wij(l) 表示第 l l l 层的第 i i i 个神经元与第 l + 1 l+1 l+1 层的第 j j j 个神经元相连的权重,用 b j ( l ) b^(l)_j bj(l) 表示第 l + 1 l+1 l+1 层第 查看详情

bp算法完整推导2.0(上)

...反向传播算法(ErrorBackPropagationTraining)简称BP,解决了,多层神经网络,隐含层连接权值学习问题.BP用来干嘛:根据训练的误差,来动态更新节点之间的权值.分别独立发现:好比牛顿和莱布尼兹分别从各自领域创建了微积分.不由感慨,成功... 查看详情

bp神经网络公式推导及实现mnist(代码片段)

BP神经网络的基础介绍见:http://blog.csdn.net/fengbingchun/article/details/50274471,这里主要以公式推导为主。BP神经网络又称为误差反向传播网络,其结构如下图。这种网络实质是一种前向无反馈网络,具有结构清晰、易实现、计算功能... 查看详情

bp算法基本原理推导----《机器学习》笔记

...rorBackPropagation)算法就是成功的代表,它是迄今最成功的神经网络学习算法。今天就来探讨下BP算法的原理以及公式推导吧。神经网络先来简单介绍一下神经网络,引入基本的计算公式,方便后面推导使用图1神经网络神经元模型... 查看详情

bp神经网络算法推导

一、BP神经网络BP神经网络是一种按照误差逆向传播算法训练的多层前馈神经网络,是应用最广泛也是最简单的神经网络模型之一。1.1BP神经网络的结构神经网络结构如下其中x1,x2x_1,x_2x1​,x2​为输入,φ\\varphiφ为激活函数... 查看详情

我对bp网络的简单的理解(代码片段)

最近在学习tf的神经网络算法,十多年没有学习过数学了,本来高中数学的基础,已经彻底还给数学老师了。所以我把各种函数、公式和推导当做黑盒子来用,理解他们能做到什么效果,至于他们是如何做到的,暂时不去深究,... 查看详情

从0开始机器学习-神经网络反向bp算法!(代码片段)

...算法基本思想写完了,公式的推导放到下一篇讲吧。一、神经网络的代价函数神经网络可以看做是复杂逻辑回归的组合,因此与其类似,我们训练神经网络也要定义代价函数,之后再使用梯度下降法来最小化代价函数,以此来训... 查看详情

误差逆传播(errorbackpropagation,bp)算法推导及向量化表示

1、前言     看完讲卷积神经网络基础讲得非常好的cs231后总感觉不过瘾,主要原因在于虽然知道了卷积神经网络的计算过程和基本结构,但还是无法透彻理解卷积神经网络的学习过程。于是找来了进阶的教材Not... 查看详情

一文彻底搞懂bp算法:原理推导+数据演示+项目实战(上篇)

...原理之后,我们会将一些具体的数据带入一个简单的三层神经网络中,去完整的体验一遍BP算法的计算过程;下篇是一个项目实战,我们将带着读者一起亲手实现一个BP神经网络(不使用任何第三方的深度学习框架)来解决一个... 查看详情

神经网络——bp学习算法推导

参考书籍:人工智能及其应用(第三版)王万良输入层的神经元的输入输出关系一般是线性函数隐层()中神经元的输入输出关系一般是非线性函数与输出层中各个神经元的非线性输入输出关系记为第层的第个神经元到... 查看详情

神经网络——bp学习算法推导

参考书籍:人工智能及其应用(第三版)王万良输入层的神经元的输入输出关系一般是线性函数隐层()中神经元的输入输出关系一般是非线性函数与输出层中各个神经元的非线性输入输出关系记为第层的第个神经元到... 查看详情

bp神经网络算法推导

一、BP神经网络BP神经网络是一种按照误差逆向传播算法训练的多层前馈神经网络,是应用最广泛也是最简单的神经网络模型之一。1.1BP神经网络的结构神经网络结构如下其中x1,x2x_1,x_2x1​,x2​为输入,φ\\varphiφ为激活函数... 查看详情

bp神经网络算法推导

一、BP神经网络BP神经网络是一种按照误差逆向传播算法训练的多层前馈神经网络,是应用最广泛也是最简单的神经网络模型之一。1.1BP神经网络的结构神经网络结构如下其中x1,x2x_1,x_2x1​,x2​为输入,φ\\varphiφ为激活函数... 查看详情

bp算法推导过程(代码片段)

BP算法推导过程一.FP过程(前向-计算预测值)定义sigmoid激活函数importnumpyasnpdefsigmoid(z):return1.0/(1+np.exp(-z))输入层值和标签结果l=[5.0,10.0]y=[0.01,0.99]alpha=0.5初始化w,b的值w=[0.1,0.15,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65]b=[0.35,0.65]计算隐层的... 查看详情

bp算法公式推导

首先来了解基本的定义,如,其中,N表示训练样本的数量,向量x(n)表示第n个样本在输入层输入数据,向量d(n)表示在输出层对应的期望的输出。设神经元j位于网络的输出层,那么由该神经元输出产生的误差定义为:其中,表示期... 查看详情

backpropagation算法的推导与直观图解

...小节的延伸。文章分三个部分:第一部分给出一个简单的神经网络模型和Backpropagation(以下简称BP)算法的具体流程。第二部分以分别计算第一层和第二层中的第一个参数(parameters,在神经网络中也称之为weights)的梯度为例来... 查看详情

bp预测基于遗传算法改进bp神经网络实现数据预测(代码片段)

  一、BP神经网络预测算法简介说明:1.1节主要是概括和帮助理解考虑影响因素的BP神经网络算法原理,即常规的BP模型训练原理讲解(可根据自身掌握的知识是否跳过)。1.2节开始讲基于历史值影响的BP神经网络... 查看详情

bp预测基于遗传算法改进bp神经网络实现数据预测(代码片段)

   一、BP神经网络预测算法简介说明:1.1节主要是概括和帮助理解考虑影响因素的BP神经网络算法原理,即常规的BP模型训练原理讲解(可根据自身掌握的知识是否跳过)。1.2节开始讲基于历史值影响的BP神经网... 查看详情