当前位置: 首页 > news >正文

什么是“感知机”?

感知机(神经网络和支持向量机的理论基础

概念:简单来说,感知机就是一个旨在建立一个线性超平面对线性可分的数据集进行分类线性模型

分类

  • 单层感知机
  • 多层感知机( Multi-Layer Perceptron,MLP)/神经网络模型

1.单层感知机

单层感知机包含两层神经元输入神经元和输出神经元,可以非常容易地实现逻辑与、逻辑或、逻辑非等线性可分情形。

基本结构如图1.4所示:一个n维输入的单层感知机模型。
在这里插入图片描述

图1.4 感知机模型

  • x1~xn:n维输入向量的各个分量

  • w1~wn:各个输入分量连接到感知机的权重(权值)

    权重W初始值一般是随机设置,往往达不到较好的拟合结果,那么如何更改权重数值使标量输出y更逼近实际值呢?使用梯度下降法最速下降法)进行学习

  • Θ \Theta Θ阈值(偏置)

  • f:激活函数(激励函数/传递函数)(通常是越阶函数或Sigmoid函数)

  • y:标量输出

完整的单层感知机训练的过程:

  1. 前向计算:图1.1从左到右为感知机模型的计算执行方向,模型接受了x1,x2,x3三个输入,将输入与权值参数w进行加权求和并经过sigmoid函数进行激活,将激活结果y作为输出

  2. 执行完前向计算得到基本输出之后,模型需要根据当前的输出和实际的输出按照损失函数计算当前损失,计算损失函数关于权值和偏置的梯度,然后根据梯度下降法更新权值和偏置,经过不断地迭代调整权值和偏置使损失最小,这就是完整的单层感知机训练的过程。

    注:单层感知机没有反向转播这个概念,而是直接建立损失函数和偏置参数进行梯度优化。

图1.2所示是输入为图像的感知机计算过程

在这里插入图片描述

2.多层感知机

单层感知机问题

单层感知机不能处理稍微复杂的异或问题,即本质缺陷是不能处理线性不可分问题。如图1.7所示。

解释:单层感知机的学习能力非常有限,对与像异或问题这样的线性不可分情形,单层感知机就搞不定(线性不可分即输入训练数据存在一个线性超平面能够将其进行线性分类)。其学习过程会出现一定程度的震荡,权值参数w难以稳定下来,最终不能求得合适的解。

图1.7:其中,(1,1)和(-1,-1)是一类,(1,-1)和(-1,1)是一类。
由于单层感知机本质上就是该平面的一条直线,因此不可能解决这个分类问题。
所以需要多层感知机。

解决:两种方法

  • 支持向量机(旨在通过核函数映射来处理非线性的情况)
  • 神经网络模型多层感知机 Multi-Layer Perceptron,MLP)

多层感知机

  • 多层感知机(Multi-Layer Perceptron,MLP)是由单层感知机推广而来的。
  • 多层感知机与单层感知机的主要区别:MLP多了若干隐藏层,这使得神经网络能够处理非线性问题。
  • 多层感知机最主要特点:有多个神经元层,可以实现复杂的非线性变换(可以解决异或问题)。
  • 一般将MLP的第一层称为输入层,中间层成为隐藏层,最后一层成为输出层

一个单隐藏层的神经网络的结构如图1.8所示。

图1.8

图1.9

可以看出,图1.8相较于两层神经元的单层感知机,该多层感知机中间多了一个隐藏层

输入层的神经元:仅接收外界信息并将其传递给隐藏层

隐藏层与输出层的神经元:对信号进行加工

MLP并没有规定隐藏层的数量,可以根据实际处理需求选择合适的隐藏层数目,对于隐藏层和输出层中每层神经元的个数,MLP也没有限制。

多层感知机可以解决如图1.10所示的异或问题,因为MLP模型不再是一个平面中的直线。

图1.10

何为隐藏层

在神经网络的训练过程中只观察到输入层和输出层的数据,对于中间隐藏层的数据变化是看不见的。

因而在深度神经网络(Deep NeuralNetworks,DNN)中,将中间看不见又难以对其效果进行合理解释的隐藏层称为“黑箱子”

含隐藏层的神经网络如何训练?

多层感知机关键问题如何训练各层之间的连接权值

训练方式大致分为两类:

  1. 一类是将其他连接权值进行固定,只训练某两层之间的连接权值

  2. 另一类即反向传播(Back Propagation,BP)算法。

    BP算法通常使用Sigmoid和Tanh等连续函数模拟神经元对激励的相应,使用反向传播对神经网络的连接权值进行训练

反向传播的过程就是更新神经元的误差值,然后再根据所求出的误差值正向更新权值和偏置

与感知机一样,神经网络的训练包含前向计算反向传播(Back Propagation,BP)两个主要过程。

前向计算:权值偏置与输入的线性加权和激活操作,在隐藏层上有个嵌套的过程。

反向转播算法:(也称为误差逆传播算法),作为神经网络的训练算法,反向传播算法可谓是目前最成功的神经网络学习算法。

  • 通常所说的BP神经网络是指应用反向传播算法进行训练的神经网络模型。

  • 反向传播是基于梯度下降策略的,主要是以目标参数的负梯度方向对参数进行更新,所以基于损失函数对前向传播过程中各个变量进行梯度计算就非常必要。

  • 总结起来就是前向计算得到输出,反向传播调整参数,最后以得到损失最小时的参数为最优学习参数。

  • 反向传播的基本过程?

    以一个两层(单隐藏层)网络为例,即图1.4中的网络结构。

在这里插入图片描述

图过程

以上就是BP神经网络模型和算法的基本工作流程,如图过程所示。

总结起来就是前向计算得到输出,反向传播调整参数,最后以得到损失最小时的参数为最优学习参数。
经过近十几年的发展,神经网络的结构已经从普通的全连接网络发展到卷积神经网络、循环神经网络、自编码器、生成对抗网络和图神经网络等各种各样的结构,但BP算法一直都是神经网络的一个经典和高效的寻优工具。

参考文献:

1.《深度学习笔记》 鲁伟 编著

出版社:北京大学出版社,出版时间:2020年7月1日

ISBN:978-7-301-16122-7
2.《深度学习之图像识别 核心算法与实战案例 (全彩版)》言有三 著

出版社:清华大学出版社 ,出版时间:2023年7月第一版(第一次印刷)

ISBN:978-7-302-63527-7

相关文章:

  • comfyui视频转绘学习笔记
  • 防火墙工作模式详解
  • 【JS逆向+Python模拟API请求】逆向某一个略微中等的混淆网站,并模拟调用api请求 仅供学习。注:不是源代码混淆,而是一个做代码混淆业务的网站,
  • Eclipse Version: 2023-03 (4.27.0) JDK19 Tomcat10.2
  • 计算机组成原理(3)-----外存储器
  • 已解决ModuleNotFoundError: No module named ‘tensorflow‘异常的正确解决方法,亲测有效!!!
  • Rust 语言学习杂谈 (end) (各种工作中遇到的疑难杂症)
  • MySQL中常见的几种日志类型【重点】
  • 前端Vue篇之过滤器的作用,如何实现一个过滤器
  • C语言学习day15:数组强化训练
  • 如何在 Angular Material 中使用自定义 SVG 图标
  • 【洛谷 P3367】【模板】并查集 题解(并查集+启发式合并)
  • c++类和对象新手保姆级上手教学(上)
  • The method toList() is undefined for the type Stream
  • 汇编的两道题
  • hexo+github搭建个人博客
  • git 常用命令
  • GitUp, 你不可错过的秀外慧中的git工具
  • happypack两次报错的问题
  • java多线程
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • STAR法则
  • Zepto.js源码学习之二
  • 高程读书笔记 第六章 面向对象程序设计
  • 前嗅ForeSpider教程:创建模板
  • 异常机制详解
  • 由插件封装引出的一丢丢思考
  • 源码安装memcached和php memcache扩展
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • #git 撤消对文件的更改
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • ()、[]、{}、(())、[[]]命令替换
  • (二)JAVA使用POI操作excel
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (十六)Flask之蓝图
  • (算法)Game
  • (原)本想说脏话,奈何已放下
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • ***利用Ms05002溢出找“肉鸡
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .NET设计模式(11):组合模式(Composite Pattern)
  • .NET中统一的存储过程调用方法(收藏)
  • /deep/和 >>>以及 ::v-deep 三者的区别
  • @我的前任是个极品 微博分析
  • [android]-如何在向服务器发送request时附加已保存的cookie数据
  • [C#] 基于 yield 语句的迭代器逻辑懒执行
  • [C++]C++基础知识概述
  • [FTP]pureftp部署和优化
  • [IM] [Webhook] Webhook实现IM平台机器人
  • [leetcode]Clone Graph