神经网络原理概述

文章目录

  • 1.神经元和感知器
    • 1.1.什么是感知器
    • 1.2.什么是单层感知器
    • 1.3.多层感知机(Multi-Layer Perceptron,MLP)
  • 2.激活函数
    • 2.1.单位阶跃函数
    • 2.2.sigmoid函数
    • 2.3.ReLU函数
    • 2.4.输出层激活函数
  • 3.损失函数
  • 4.梯度下降和学习率
  • 5.过拟合和Dropout
  • 6.神经网络反向传播法
  • 7.TensorFlow游乐场

神经网络的工作原理是什么?

1.神经元和感知器

1.1.什么是感知器

感知器其实可以理解为一个黑盒函数,接收若干个输入,产生一个输出的结果,这个结果就代表了感知器所做出的决策。

如图,圆圈表示一个感知器,它可以接收多个输入,产出一个结果,结果只有两种情况,“是”与“否”。

在这里插入图片描述

感知器内部决策的原理,其实就是给不同的因素赋予不同的权重(重要性)。然后设置一个阈值,如果加权计算之后的结果大于等于这个阈值,就说明可以判断为是,否则就是否。所以感知器本质上就是一个通过加权计算函数进行决策的工具。

1.2.什么是单层感知器

单层感知器是一个只有一层的神经元。感知器有多个二进制输入x1、x2、…、xn,每个输入有对应的权值(或权重)w1、w2、…、wn,将每个输入值乘以对应的权值再求和(∑xjwj),然后与一个阈值比较,大于阈值则输出1,小于阈值则输出0。

在这里插入图片描述
如果把公式写成矩阵形式,再用b来表示负数的阈值(即b= ‒threshold),则进一步简化为:

在这里插入图片描述
感知器加权计算之后,再输入到激活函数中进行计算,得到一个输出。类比生物学上的神经元信号从人工神经网络中的上一个神经元传递到下一个神经元的过程,并不是任何强度的信号都可以传递下去,信号必须足够强,才能激发下一个神经元的动作电位,使其产生兴奋,激活函数的作用与之是类似的

在这里插入图片描述

单层感知器的激活函数为阶跃函数,是以阈值0(界限值)为界的,若小于等于0,则输出0(对应神经元抑制),否则输出1(对应神经元兴奋)。

单层感知器无法解决线性不可分的问题,只能用于二元分类,且无法学习比较复杂的非线性模型。将多个单层感知器进行组合,得到一个多层感知器。

1.3.多层感知机(Multi-Layer Perceptron,MLP)

在这里插入图片描述

网络的最左边的层被称为输入层,其中的神经元被称为输入神经元。

最右边的输出层包含输出神经元,图中只有一个单一的输出神经元,但一般情况下输出层也会有多个输出神经元。MLP对输出层神经元的个数没有限制。

中间层被称为隐藏层,因为里面的神经元既不是输入也不是输出。隐藏层是整个神经网络最为重要的部分,它可以是一层,也可以是N层,隐藏层的每个神经元都会对数据进行处理。MLP没有规定隐藏层数量。隐藏层的层数越多,其复杂度也越大。

通常把具有超过一个隐藏层的神经网络叫作深度神经网络。

每个感知器都对输出结果有一定比重的贡献,单个感知器权重或偏移的变化应该对输出结果产生微小影响,这里需要使用非线性的激活函数(sigmoid、softmax和ReLU等),可解决线性不可分的问题。

2.激活函数

激活函数,就是在神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端。

2.1.单位阶跃函数

以0为界,输出从0切换为1(或从1切换0),其值呈阶梯式变化,所以称之为阶跃函数。

但是这个函数是由两段水平线组成,具有不连续、不光滑等不太好的性质,所以它无法用于神经网络的结构。因为如果使用它作激活函数的话,参数的微小变化所引起的输出的变化就会直接被阶跃函数抹杀掉,在输出端完全体现不出来,无法为权重的学习提供指引,这是不利于训练过程的参数更新的。

在这里插入图片描述

在神经网络中较常用的激活函数包括sigmoid、tanh、ReLu以及softmax函数。它们都是非线性的函数。激活函数给神经元引入了非线性因素,它应用在隐藏层的每一个神经元上,使得神经网络能够用于表示非线性函数,这样神经网络就可以应用到众多的非线性模型中。

2.2.sigmoid函数

在这里插入图片描述

在这里插入图片描述

函数的特点是左端趋近于0,右端趋近于1,两端都趋于饱和

相对于阶跃函数只能返回0或1,sigmoid函数可以返回0.731…、0.880…等实数。感知器中神经元之间流动的是0或1的二元信号,而神经网络中流动的是连续的实数值信号。

2.3.ReLU函数

在这里插入图片描述

当输入小于0时,输出为0;当输入大于0时,输出与输入相等。ReLU函数是分段线性函数,把所有的负值都变为0,而正值不变。

相比于其他激活函数来说,ReLU函数有以下优势:

  • 对于线性函数而言,ReLU函数的表达能力更强,尤其体现在深度网络中;
  • 而对于非线性函数而言,ReLU函数由于其非负区间的梯度为常数,因此不存在梯度消失问题,使得模型的收敛速度维持在一个稳定状态。

梯度消失:当梯度小于1时,预测值与真实值之间的误差每传播一层会衰减一次。如果在深层模型中使用sigmoid作为激活函数,这种梯度消失现象尤为明显,将导致模型收敛停滞不前。

局限性:只能在神经网络模型的隐藏层中使用。

2.4.输出层激活函数

多分类:softmax函数(它与sigmoid函数类似,唯一的区别是在softmax函数中,输出被归一化,总和变为1,可以认为其为概率分布。)

二分类:sigmoid函数

3.损失函数

损失函数(Loss Function)用来度量真实值和预测值之间的差距,在统计学中损失函数是一种衡量损失和错误(这种损失与“错误地”估计有关)程度的函数。

神经网络模型的训练是指通过输入大量训练数据,使得神经网络中的各参数(如权重系数w)不断调整,从而“学习”到一个合适的值,使得损失函数最小。

分类问题损失函数:交叉熵(Cross Entropy)

交叉熵在神经网络中作为损失函数,p为真实标记分布,q则为训练后模型的预测标记分布,交叉熵损失函数可以衡量p与q的相似性。

交叉熵在分类问题中常常与softmax函数搭配使用,softmax函数将输出的结果进行处理,使其多个分类的预测值的和为1,再通过交叉熵来计算损失。

4.梯度下降和学习率

应该如何训练,采用什么方式一点点地调整参数,找出损失函数的极小值(最小值)?

梯度衡量的是,如果我们稍微改变一下输入值,函数的输出值会发生多大的变化。

在这里插入图片描述

就比如下山,此时山上的雾很大,什么也看不见。那么可以以当前所处的位置为基准,寻找这个位置最陡峭的地方,然后朝着下降方向走一步,然后又继续以当前位置为基准,再找最陡峭的地方往下走,直到最后到达最低处。

步长大小称为学习率。在下降过程中步长越大,梯度影响越大。我们可以通过步长来控制每一步走的距离。

学习率是深度学习中的一个重要的超参数,决定着目标函数能否收敛到局部最小值以及何时收敛到最小值。

优化器(Optimizer)算法:会根据训练算法的过程而自适应地修正学习率。例如SGD(Stochastic Gradient Descent,随机梯度下降算法)、Adam算法(自适应时刻估计算法)

5.过拟合和Dropout

随着迭代次数的增加,训练损失(Train Loss)越来越好,但测试损失(Test Loss)的结果确越来越差。训练损失和测试损失的差距越来越大,模型开始过拟合(Overfit)。

过拟合会导致模型在训练集上的表现很好,但针对验证集或测试集,表现则大打折扣。

Dropout是指在深度学习网络的训练过程中,按照一定的概率将一部分神经网络单元暂时从网络中丢弃,相当于从原始的网络中找到一个更“瘦”的网络,从而解决过拟合的问题

在这里插入图片描述

这样经过几轮训练,这些神经元的个体表现力大大增强,同时也减弱了神经元节点间的联合适应性,增强了泛化能力。

通常是在训练神经网络的时候使用Dropout,这样会降低神经网络的拟合能力,而在预测的时候关闭Dropout

可以理解为一个人在练轻功的时候会在脚上绑着很多重物,但是在真正和别人打斗的时候会把重物全拿走。

6.神经网络反向传播法

神经网络可以理解为一个输入 x 到输出 y 的映射函数,即 f(x) = y。 f 就是我们所要训练的网络参数 w 。对于任何输入 x ,可得到一个与之对应的输出 y。

训练最符合真实数据 f 的过程,就是神经网络的训练过程。神经网络的训练可以分为两个步骤:一个是前向传播,另外一个是反向传播。

前向传播是从输入层到输出层:从输入层(Layer1)开始,经过一层层的层,不断计算每一层的神经网络得到的结果以及通过激活函数处理的本层输出结果,最后得到输出y^,计算出了y^,就可以根据它和真实值y的差别来计算损失值。

反向传播(BackProp)就是根据损失函数L(y^ , y)来反方向地计算每一层,由最后一层逐层向前去改变每一层的权重,也就是更新参数,即得到损失值之后,反过去调整每个变量以及每层的权重。

反向传播,就是对比预测值和真实值,继而返回去修改网络参数的过程。

对于反向传播算法,最初所有的边权重(Edge Weight)都是随机分配的。对于所有训练数据集中的输入,人工神经网络都被激活,并且观察其输出。这些输出会和我们已知的、期望的输出进行比较,误差会“传播”回上一层。该误差会被标注,权重也会被相应地调整。重复该流程,直到输出误差低于制定的标准。

7.TensorFlow游乐场

http://playground.tensorflow.org/

● Epoch:训练次数。
● Learning rate:学习率,在梯度下降算法中会用到。学习率是人为根据实际情况来设定的,学习率越低,损失函数的变化速度就越慢。
● Activation:激活函数,默认为非线性函数Tanh。
● Regularization:正则化,提高泛化能力,防止过拟合。如果参数过多,模型过于复杂,容易造成过拟合。即模型在训练样本数据上表现得很好,但在实际测试样本上表现得较差,不具备良好的泛化能力。为了避免过拟合,最常用的一种方法是使用正则化。
● Regularization rate:正则率,这里是正则化加上权重参数。
● Problem type:问题类型。分类/回归

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue3使用vxetable进行表格的编辑、删除与新增

效果图如下: vxetable4传送门 一、引入插件 package.json中加入"vxe-table": "4.0.23",终端中执行npm i导入import {VXETable, VxeTableInstance

docker容器的基本操作

一、查看Docker的版本信息 [roothuyang1 ~]# docker version 二、查看docker的详细信息 [roothuyang1 ~]# docker info 三、Docker镜像操作 Docker创建容器前需要本地存在对应的镜像,如果本地加载不到相关镜像,Docker默认就会尝试从镜像仓库https://hu…

vue3 封装一个事件方法,支持所有页面调用

我做的是路由跳转,因为需要支持跨项目使用,所以才使用这个方法 在router.js中 import { createRouter, createWebHistory } from vue-router;// 创建路由实例和路由配置... export const router createRouter({history: createWebHistory(),routes: [/…

数据可视化与机器学习建模:心力衰竭预测_企业科研_论文科研_毕业设计

数据分析与可视化 心力衰竭或心血管疾病 (CVD) 是全球第一大死因,每年夺去大约1790 万人的生命,占全球所有死亡人数的 31%。 大多数心血管疾病可以通过使用全民策略解决烟草使用、不健康饮食和肥胖、缺乏身体活动和有害使用酒精等行为风险因素来预防…

提高检索效率的利器--Mybatis 的一级缓存和二级缓存执行顺序

😀前言 本篇博文是关于MyBatis缓存的执行顺序,希望能够帮助到您😊 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的满意是…

elementUI 实现动态表单数据校验

转载http://t.csdn.cn/XuTa2 1、探讨需求 首先我们需要探讨一下需求: 表单中的部分el-form-item 的label都是从接口拿到的,需要遍历进行动态渲染。 需要给每个el-form-item加上校验至少是必填校验 有的el-form-item不需要校验,也不是从接口…

@monaco-editor/react组件CDN加载失败解决办法

monaco-editor/react引入这个cdn资源会load失败 网上很多例子都是这样写的,我这样写monaco会报错 import * as monaco from monaco-editor; import { loader } from monaco-editor/react;loader.config({ monaco });改成这样 import * as monaco from monaco-edi…

​​​amoeba实现MySQL读写分离

​​​amoeba实现MySQL读写分离 准备环境:主机A和主机B作主从配置,IP地址为192.168.131.129和192.168.131.130,主机C作为中间件,也就是作为代理服务器,IP地址为192.168.131.136。三台服务器操作系统为RHEL6.4 x86_64,为…

大数据课程E2——Flume的Source

文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 掌握Source的AVRO Source; ⚪ 掌握Source的Exec Source; ⚪ 掌握Source的Spooling Directory Source; ⚪ 掌握Source的Netcat Source; ⚪ 掌握Source的Sequence Generator Source;…

搞活系列-Java NIO之偏偏不用buffer.flip()会出现什么问题?

最近看博客又看到了Java NIO相关的博客,其中有讲解NIO和传统IO关于文件复制的文章,看到了如下的代码: /**** channel用例* 基于channel的文件复制*/Testpublic void fileCopyByChannel(){try {FileInputStream fileInputStream new FileInpu…

TypeScript 【type】关键字的进阶使用方式

导语: 在前面章节中,我们了解到 TS 中 type 这个关键字,常常被用作于,定义 类型别名,用来简化或复用复杂联合类型的时候使用。同时也了解到 为对象定义约束接口类型 的时候所使用的是 Interfaces。 其实对于前面&#…

iOS 应用上架流程详解

iOS 应用上架流程详解 欢迎来到我的博客,今天我将为大家分享 iOS 应用上架的详细流程。在这个数字化时代,移动应用已经成为了人们生活中不可或缺的一部分,而 iOS 平台的 App Store 则是开发者们发布应用的主要渠道之一。因此,了解…

智安网络|常见的网络安全陷阱:你是否掉入了其中?

在数字化时代,网络安全成为了一个重要的议题。随着我们越来越多地在互联网上进行各种活动,诸如在线银行交易、社交媒体分享和在线购物等,我们的个人信息也更容易受到攻击和滥用。虽然有许多关于网络安全的指导和建议,但仍然有许多…

暑假刷题第19天--8/1

170. 加成序列 - AcWing题库&#xff08;dfs迭代加深--重点理解&#xff09; #include<iostream> using namespace std; int n; int a[11]; int dfs(int x,int h){if(x>h1)return 0;if(a[x-1]n)return 1;bool st[130]{};for(int i1;i<x-1;i){for(int j1;j<i;j)…

【ChatGPT】ChatGPT是如何训练得到的?

前言 ChatGPT是一种基于语言模型的聊天机器人&#xff0c;它使用了GPT&#xff08;Generative Pre-trained Transformer&#xff09;的深度学习架构来生成与用户的对话。GPT是一种使用Transformer编码器和解码器的预训练模型&#xff0c;它已被广泛用于生成自然语言文本的各种…

【前端知识】React 基础巩固(四十)——Navigate导航

React 基础巩固(四十)——Navigate导航 一、Navigate的基本使用 新建Login页面&#xff0c;在Login中引入Navigate&#xff0c;实现点击登陆按钮跳转至/home路径下&#xff1a; import React, { PureComponent } from "react"; import { Navigate } from "reac…

HTML5 API 多端通信桥 MessageChannel 技术

这个特别有意思&#xff0c;可以将其理解为通信桥的概念&#xff0c;桥有两个端&#xff08;port1&#xff0c;port2&#xff09;只要将port1&#xff0c;port2指定到任意两个进程&#xff0c;无论是iframe-iframe&#xff0c;iframe-worker&#xff0c;parent-child-iframe&am…

【数据结构】图文并茂,通过逻辑图带你轻松拿捏链表,实现各种接口功能

君兮_的个人主页 勤时当勉励 岁月不待人 C/C 游戏开发 Hello,米娜桑们&#xff0c;这里是君兮_&#xff0c;我们接着之前讲过的顺序表来继续介绍初阶数据结构的内容&#xff0c;今天给大家带来的是有关链表的基本知识和各种接口功能的实现 好了&#xff0c;废话不多说&#x…

英语语法 名词和冠词 详解

目录 一、名词概述 1.基本介绍 : 2.作用 : (在句子中可担任的语法成分) 1 作主语 2 作宾语 3 作表语 4 作定语 5 作同位语 二、专有名词和普通名词 1.专有名词&#xff1a; 1 定义 2 示例 3 关于名词的大小写 2.普通名词&#xff1a; 1 定义 2 示例 3 分类 三、可数名词和不…

kubernetes错误汇总

title: “kubernetes错误汇总” categories: - “技术” tags: - “Kubernetes” - “错误汇总” toc: false original: true draft: false 1、增加 master etcd 报错 1.1、错误描述 由于创建的k8s集群&#xff0c;其中有一个master节点初始化失败&#xff0c;先删除了这个节…