深度学习 -- 神经网络

1、神经网络的历史

2、 M-P模型

M-P模型是首个通过模仿神经元而形成的模型。在M-P模型中,多个输入节点x_i | i=1,2....,n对应一个输出节点y。每个输入x,乘以相应的连接权重w,然后相加得到输出y。结果之和如果大于阈值h,则输出1,否则输出0。输入和输出均是0或1。

公式2.1:    y = f( \sum_{i=1}^{n}w_ix_i-h)       

M-P模型可以表示AND和OR等逻辑运算。M-P模型在表示各种逻辑运算时,可以转化为单输入单输出或双输入单输出的模型。

取反运算符(NOT运算符)可以使用的单输入单输出的M-P模型来表示。使用取反运算符时,如果输入0则输出1,输入1则输出0,把它们代人M-P模型的公式(2.1),可以得到w_i=-2h = -1

逻辑或(OR运算符)和逻辑与(AND运算符)可以使用双输入单输出M-P模型来表示。各运算符的输人与输出的关系如下表所示。根据表中关系,以OR运算为例时,公式(2.1)中的w,和h分别为w1=1,w2=1,h=0.5,把它们代人公式(2.1)可以得到下式:

公式2.2:y = f(x_1 + x_2 -0.5)

以AND运算为例时,w1=1,w2=1,h=1.5,把它们代人公式(2.1)可以得到下式。
公式2.3:y = f(x_1 + x_2 -1.5)

输入x1输入x2OR运算符的输出AND运算符的输出
0000
0110
1010
1111

由此可见,使用M-P模型可以进行逻辑运算。但是,上述的w,和h是如何确定的呢?当时还没有通过对训练样本进行训练来确定参数的方法,只能人为事先计算后确定。此外,M-P模型已通过电阻得到了物理实现。
 

3、感知器

上节中的逻辑运算符比较简单,还可以人为事先确定参数,但且逻辑运算符w,和h的组合并不仅仅限于前面提到的这几种。罗森布拉特提出的感知器能够根据训练样本自动获取样本的组合。与M-P模型
需要人为确定参数不同,感知器能够通过训练自动确定参数。训练方式为有监督学习,即需要设定训练样本和期望输出,然后调整实际输出和期望输出之差的方式(误差修正学习)。误差修正学习可用公式(3.1)和(3.2)表示。

公式3.1:w_i \leftarrow w_i + a(r-y)x_i

公式3.2:h \leftarrow h - a(r-y)

a是确定连接权重调整值的参数。a增大则误差修正速度增加,a减小则误差修正速度降低。


感知器中调整权重的基本思路如下所示。

  • 实际输出y与期望输出r相等时,w和h不变
  • 实际输出y与期望输出r不相等时,调整w,和h的值

参数w和h的调整包括下面这两种情况。

1:实际输出y=0、期望输出r=1时(未激活)

  • 减小h
  • 增大x7=1的连接权重w
  • x=0的连接权重不变

2:实际输出y=1、期望输出r=0时(激活过度)

  • 增大h
  • 降低x=1的连接权重w
  • x=0的连接权重不变

使用误差修正学习,我们可以自动获取参数,这是感知器引发的一场巨大变革。但是,感知器训练只能解决如下(a)图所示的线性可分问题,不能解决如下(b)图所示的线性不可分问题。为了解决线性不可分问题,我们需要使用多层感知器。

4、多层感知器

为了解决线性不可分等更复杂的问题,人们提出了多层感器印(multilayer perceptron)模型。多层感知器指的是由多多层结构的感知器递阶组成的输入值向前传播的网络,也被称为前馈网络或正向传播网络。

多层感知器通常采用三层结构,由输入层、中间层及输出层组成与公式(2.1)中的M-P模型相同,中间层的感知器通过权重与输入层的各单元(unit)相连接,通过阈值函数计算中间层各单元的输出值。中
间层与输出层之间同样是通过权重相连接。那么,如何确定各层之间的连接权重呢?单层感知器是通过误差修正学习确定输入层与输出层之间的连接权重的。同样地,多层感知器也可以通过误差修正学习确定两层之间的连接权重。误差修正学习是根据输入数据的期望输出和实际输出之间的误差来调整连接权重,但是不能跨层调整,所以无法进行多层训练。因此,初期的多层感知器使用随机数确定输入层与中间层之间的连接权重,只对中间层与输出层之间的连接权重进行误差修正学习。所以,就会出现输入数据虽然不同,但是中间层的输出值却相同,以至于无法准确分类的情况。那么,多层网络中应该如何训练连接权重呢?人们提出了误差反向传播算法。

5、误差反向传播算法

多层感知器中,输入数据从输入层输入,经过中间层,最终从输出层输出。因此,误差反向传播算法就是通过比较实际输出利期望输出得到误差信号,把误差信号从输出层逐层向前传播得到各层的的误差信号,再通过调整各层的连接权重以减小误差。权重的调整主要用梯度下降法(gradient descent method)。如图所示,通过实际输出和期望输出之间的误差E和梯度,确定连接权重w的调整值,得到新的连接权重w'。然后像这样不断地调整权重以使误差达到最小,从中学习得到最优的连接权重w^{opt}。这就是梯度下降法。

下面我们就来看看误差和权重调整值的计算方法。计算误差可以使用最小二乘误差函数(公式6.3)。通过期望输出r和网络的实际输出y计算最小二乘误差函数E。E趋近于0,表示实际输出与期望里输出更加接近。所以,多层感知器的训练过程就是不断调整连接权重w,以使最小二乘误差函数趋近于0。


接着再来看一下权重调整值。根据上述说明,权重需要进行调整以使最小二乘误差函数趋近于0。对误差函数求导就能得到上图中给定点的梯度,即可在误差大时增大调整值,误差小时减小调整值,所以连接权重调整值\Delta w 可以用公式(5.1)表示。

公式5.1:\Delta w = -\eta \frac{\partial E}{\partial w}

\eta 表示学习率,这个值用于根据误差的程度进行权重调整。

通过误差反向传播算法调整多层感知器的连接权重时,一个瓶颈问题就是激活函数。M-P模型中使用step函数作为激活函数,只能输出0或1,不连续所以不可导。为了使误差能够传播,鲁梅尔哈特等人提出使用可导函数sigmoid作为激活函数f(u)。

为了让大家更好地理解误差反向传播算法的过程,下面我们首先以单层感知器为例进行说明。根据复合函数求导法则,误差函数求导如下所示。

公式5.2:\frac{\partial E}{\partial w_i} = \frac{\partial E}{\partial y} \frac{\partial y}{\partial w_i}

设y=f(u),求误差函数E对w的导数。

公式5.3:\frac{\partial E}{\partial w_i} = -(r-y) \frac{\partial y}{\partial w_i} = -(r-y) \frac{\partial f(u)}{\partial w_i}

f(u)的导数就是对复合函数求导。

公式5.4:\frac{\partial E}{\partial w_i} = -(r-y) \frac{\partial f(u)}{\partial u}\frac{\partial u}{\partial w_i}

u对w,求导的结果只和x,相关,如下所示。
公式5.5:\frac{\partial u}{\partial w_i} = x_i

将公式(5.5)带入到公式(5.4)中得到下式。

公式5.6:\frac{\partial E}{\partial w_i} = -(r-y)x_i\frac{\partial f(u)}{\partial u}

这里对sigmoid函数求导。

公式5.7:\frac{\partial E}{\partial w_{ij}} = -(r_j-y_j)\frac{\partial y_j}{\partial u_j}\frac{\partial u_j}{\partial w_{ij}}

下面就和单层感知器一样,对误差函数求导。

公式5.8:\frac{\partial E}{\partial w_{ij}} = -(r_j-y_j)y_j(1-y_j)x_i

权重调整值如下所示

公式5.9:\Delta w_{ij} = \eta (r_j-y_j)y_j(1-y_j)x_i

由上可知,多层感知器中,只需使用与连接权重w_{ij}相关的输入x_i和输出y_i即可计算连接权重调整值。


下面再来看一下包含中间层的多层感知器。首先是只有一个输出单元y的多层感知器,如图所示。w_{1ij} 表示输入层与中间层之间的连接权重,w_{2j1}表示中间层与输出层之间的连接权重。i表示输入层单元, j表示中间层单元。

首先来调整中间层与输出层之间的连接权重。和上面的步骤聚一样,把误差函数E对连接权重w_{2j1}求导展开成复合函数求导。

公式5.10:\frac{\partial E}{\partial w_{2j1}} = \frac{\partial E}{\partial y} \frac{\partial y}{\partial u_{21}} \frac{\partial u_{21}}{\partial w_{2j1}}


与单层感知器一样,对误差函数求导。


公式5.11:\frac{\partial E}{\partial w_{2j1}} = -(r-y) y (1-y)z_j


这里的z表示的是中间层的值。于是,连接权重调整值如下所示。

公式5.12:\Delta w_{2j1} = \eta (r-y)y(1-y)z_j

接下来调整输入层与中间层之间的连接权重。输入层与中间层之间的连接权重调整值是根据输出层的误差函数确定的,求导公式如下所示。

公式5.13:\frac{\partial E}{\partial w_{1ij}} = \frac{\partial E}{\partial y} \frac{\partial y}{\partial u_{21}} \frac{\partial u_{21}}{\partial w_{1ij}} = -(r-y)y(1-y)\frac{\partial u_{21}}{\partial w_{1ij}}

与中间层与输出层之间的权重调整值的计算方法相同,输出y也是把公式展开后进行复合函数求导。与前面不同的是,这里是中间层与输出层单元之间的激活值u_{21}对输入层与中间层之间的连接权重w_{1ij}求导。u_{21}由中间层的值z_{j}和连接权重w_{2j1}计算得到。对z_{j}求导可以得到下式。

公式5.14:\frac{\partial u_{21}}{\partial w_{1ij}} = \frac{\partial u_{21}}{\partial z_{j}}\frac{\partial z_{j}}{\partial w_{1ij}}

最后展开得到的输入层与中间层之间的连接权重调整值如下所示。

公式5.15:\Delta w_{1ij} = \eta (r-y)y(1-y)w_{2j1}z_{j}(1-z_j)x_i

上述步骤的汇总结果如下图所示。由此可见,权重调整值的计算就是对误差函数、激活函数以及连接权重分别进行求导的过程。把得到的导数合并起来就得到了中间层与输出层之间的连接权重。而输入层与中间层之间的连接权重继承了上述误差函数和激活函数的导导数。所以,对连接权重求导就是对上一层的连接权重、中间层与输入层的激活函数以及连接权重进行求导的过程。像这种从后往前逐层求导的过程就称为链式法则(chain rule)。




同理下面让我们看一下有多个输出的多层感知器的权重调整:



多个输出与单个输出的不同之处在于,输入层与中间层之间的权重调整值是相关单元在中间层与输出层之间的权重调整总和。这就会出现无法调整链接权重。这就是误差反向传播算法中梯度消失导致无法调整链接权重。对于这个问题,需要在训练过程中调整学习率\eta以防止梯度消失。

6、误差函数和激活函数

那么,有哪些函数可以作为误差函数呢?在多分类问题中,一般使用交叉恼代价雨数,公式如下所示 :

公式6.1:E = -\sum_{c=1}^{C}\sum_{n=1}^{N}r_{cn}lny_{cn}

二分类中的函数则如下所示 :

公式6.2:E = -\sum_{n=1}^{N}(r_nlny_n+(1-r_n)ln(1-y_n))

递归问题巾使用最小二乘误差函数 

公式6.3:E = \sum_{n=1}^{N}||r_n-y_n||^2

这些是经常使用的误差函数,但误差函数的种类并不仅限于此,我们也可以根据实际问题自行定义误差函数 。

激活函数类似于人类神经元,对输入信号进行线性或非线性变换。 M-P模型中使用 step 函数作为激活函数,多层感知器中使用的 是 sigmoid 函数。 这里,用输入层与中间层之间,或中间层与输 出层之间的连接权重 w_i乘以相应单元的输入值 x_i并将该乘积之和经 sigmoid 函数计算后得到激活值 u。

公式6.4:f(u) = \frac{1}{1+e^{-u}}

公式6.5: u = \sum_{i=1}^{n}w_ix_i

如下图蓝线所示,使用 sigmoid 函数时,如果对输入数据进行 加权求和得到的结果 u 较大则输 1,较小则输出 0。 而 M-P 模型中使 用的是 step 两数(如图中的红线所示),当 u 等于 0 时,输出结果 在 0和1 之间发生刷烈变动 。 另外, sigmoid 函数的曲线变化则较平缓 。

7、似然函数

我们可以根据问题的种类选择似然函数,计算多层感知器的输出结果。 多分类问题中,通常以 softmax函数(公式(7.1))作为似然函数

公式7.1:p(y^k) = \frac{exp(U_{2k})}{\sum_{q=1}^{Q}exp(U_{2q})}

softmax函数的分母是对输出层所有单元(q=l, ...,Q) 的激活 值进行求和,起到了归一化的作用, 输出层中每个单元取值都是介于 0 和 l 之间的概率值,我们选择其中概率值最大的类别作为最终分类结果输出

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/210520.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【代码】多种调度模式下的光储电站经济性最优 储能容量配置分析matlab/yalmip

程序名称:多种调度模式下的光储电站经济性最优储能容量配置分析 实现平台:matlab-yalmip-cplex/gurobi 代码简介:代码主要做的是一个光储电站经济最优储能容量配置的问题,对光储电站中储能的容量进行优化,以实现经济…

08-中介者模式-C语言实现

中介者模式: Define an object that encapsulates how a set of objects interact.Mediator promotes loose coupling by keeping objects from referring to each other explicitly,and it lets you vary their interaction independently.(用一个中介对…

2243:Knight Moves

文章目录 题目描述思路1. DFS2. BFS3. 动态规划 解题方法1. DFS2. BFS3. 动态规划 题目描述 题目链接 翻译如下: 注:骑士移动是和象棋里的马一样走的是日字型 你的一个朋友正在研究旅行骑士问题 (TKP),你要找到最短的…

结合贝叶斯定理浅谈商业银行员工异常行为排查

1.贝叶斯定理的数学表达 贝叶斯方法依据贝叶斯定理。关于贝叶斯定理解释如下:首先我们设定在事件B条件下,发生事件A的条件概率,即 ,从数学公式上,此条件概率等于事件A与事件B同时发生的概率除以事件B发生的概率。 上述…

VUE语法-(readonly的用法)将数据设置成只读模式

1、功能概述 在Vue中定义一个变量,这个变量的值不允许被修改,核心是通过readonly设置成只读。 如果不会使用ref和reactive响应式数据参考如下博客: https://blog.csdn.net/tangshiyilang/article/details/134701103 2、具体实现 如下案例…

轻量级万物分割SAM模型——MobileSAM安装实测摘要

目录 0、前言1、准备工作安装python环境说明安装说明 运行测试app安装依赖修改代码 2、实际测试效果自带图片测试其它图片测试1其它图片测试2 总结 0、前言 本文将介绍一种轻量级万物分割SAM模型——MobileSAM的安装和实测情况。SAM是meta公司的一种图像分割大模型&#xff0c…

摩根士丹利:人工智能推动增长

摩根士丹利(NYSE:MS)将人工智能战略整合到其财富管理业务中,标志着竞争性金融格局迈出了变革性的一步。该公司的人工智能计划,包括与 OpenAI 合作开发人工智能聊天机器人,促进了其财富部门的显着增长。值得…

VSCode 开发C/C++实用插件分享——codegeex

VSCode 开发C/C实用插件分享——codegeex 一、codegeex 一、codegeex CodeGeeX 智能编程助手是一款编程插件,CodeGeeX支持多种主流IDE,如VS Code、IntelliJ IDEA、PyCharm、Vim等,同时,支持Python、Java、C/C、JavaScript、Go等多…

C++学习之路(十六)C++ 用Qt5实现一个工具箱(为屏幕颜色提取功能增加一个点击复制的功能)- 示例代码拆分讲解

上篇文章,我们用 Qt5 实现了在小工具箱中添加了《颜色代码转换和屏幕颜色提取功能》功能。今天我们把屏幕颜色提取的功能再扩展一下,让它可以点击复制吧。下面我们就来看看如何来规划开发这样的小功能并且添加到我们的工具箱中吧。 老规矩,先…

CKafka 一站式搭建数据流转链路,助力长城车联网平台降低运维成本

关于长城智能新能源 长城汽车是一家全球化智能科技公司,业务包括汽车及零部件设计、研发、生产、销售和服务,旗下拥有魏牌、哈弗、坦克、欧拉及长城皮卡。2022年,长城汽车全年销售1,067,523辆,连续7年销量超100万辆。长城汽车面向…

mysql手动事务

目录 🚀🚀 简要 手动事务使用案例 事务的特性 事务的隔离级别 脏读 不可重复读 幻读 查看事务隔离级别 设置隔离级别 🫡🫡 简要 mysq事务是自动提交的, 例如insert, update语句等 如下: 想要手动设置mysql事务就需…

操作系统导论——第36章 I/O设备

1. 系统架构 之所以使用分层,这是由于成本和效率之间的平衡 2. 标准设备 接口:向系统其他部分展现的硬件接口 内部结构:设备相关特定实现,几个芯片,CPU和通用内存等 3. 标准协议 While (STATUS BYSY); a、轮询设…

第三节:提供者、消费者、Eureka

一、 提供者 消费者(就是个说法、定义,以防别人叭叭时听不懂) 服务提供者:业务中被其他微服务调用的服务。(提供接口给其他服务调用)服务消费者:业务中调用其他微服务的服务。(调用…

Windows系统下Elasticsearch-7.15.2安装

一、环境 此次笔记使用的运行环境以及软件版本 系统:WIN10 JDK版本:1.8 Elasticsearch版本:7.15.2 elasticsearch-head版本:最新 IK分词器版本:7.15.2 Kibana版本:7.15.2 二、Elasticsearch基本知识 2.1 介绍…

腾讯云优惠券领取入口及使用指南

腾讯云作为国内领先的云计算服务商,提供了丰富的云产品和服务。为了帮助用户更好地享受腾讯云的服务,腾讯云推出了各种优惠券,包括新用户优惠、老用户优惠等。本文将为大家介绍腾讯云优惠券的领取入口和使用指南。 一、腾讯云优惠券领取入口 …

Certum SSL证书

为了确保在线交易的安全性,以及保护敏感信息免受网络威胁,使用SSL(Secure Socket Layer)证书成为了必要选择。其中,波兰认证机构Certum提供的SSL证书以其高度的安全性和可信赖性,得到了全球用户的广泛认可。…

蓝桥杯物联网竞赛_STM32L071_6_RTC显示

作用: RTC在STM32微控制器中通常由一个独立的低功耗晶振和相关的寄存器组成。它可以独立于主处理器运行,即使在系统电源关闭的情况下(需要备用纽扣电池),也能继续计时和记录日期。注意:RTC是芯片内部的功能,并没有和G…

网络运维与网络安全 学习笔记2023.12.2

网络运维与网络安全 学习笔记 第三十三天 今日目标 Linux系统综述、部署本地Linux、配置Linux网络 SSH远程控制、远程文档管理、选购ECS云主机 Linux系统综述 Linux是一种操作系统 Linux之父,Linus Torwalds 1991年10月,发布0.02版(第一…

OOM了?物理内存不够了?试试这个方法来提升内存容量,不花钱的

通过增加虚拟内存来提高内存使用 本文解决的实际问题: 当我们物理内存小的时候,会出现OOM,然后服务自动死掉的情况。因为物理内存大小是固定的,有没有其他好的办法来解决呢?这里我们可以适当调整Linux的虚拟内存来协作…

FreeRTOS第2天:

1. 二值信号量简介(386.11) 什么是信号量? 信号量(Semaphore),是在多任务环境下使用的一种机制,是可以用来保证两个或多个关键代码段不被并 发调用。信号量这个名字,我们可以把它拆…