[深度学习入门]什么是神经网络?[神经网络的架构、工作、激活函数]

news2024/11/30 3:39:36

目录

  • 一、前言
  • 二、神经网络的架构——以手写数字识别
  • 三、神经网络的工作
    • 1、单输入单输出感知器函数
    • 2、二维输入参数
    • 3、三维输入参数
  • 四、激活函数
    • 1、激活函数
    • 2、ReLU激活函数
    • 3、非线性激活函数
      • (1)二输入二输出的神经网络的架构
      • (2)方程矢量化
      • (3)设置不同的权重矩阵和偏置因子
      • (4)其他矩阵变换
    • 4、线性激活函数和非线性激活函数


一、前言

  在大多数资料中,神经网络都被描述成某种正向传播的矩阵乘法。而本篇博文通过将神经网络描述为某种计算单元,以一种更加简单易懂的方式介绍神经网络的功能及应用。


二、神经网络的架构——以手写数字识别

  广义上讲,神经网络就是要在输入数据中找寻某种规律,就像这个经典的例子:手写数字识别。即给定一个手写数字图像,如何识别图像中的是数字几呢?神经网络通过对大量带标签图像的训练,找到其中的规律,进而解决手写数字识别问题。
  我们将手写数字图像的像素值作为神经网络的输入,然后通过隐藏层处理,最终输出层有10个对应类别。我们选取输出层中最大值的神经元作为最终的识别结果
在这里插入图片描述
  有了这些信息,神经网络就能够对从未见过的图像进行分类,这是它的用处所在。也就是说,我们不仅能够用神经网络对函数进行建模,还可以用其对数据进行分类
  神经网络是一种分层结构,它有输入层、隐藏层和输出层,其每一层都有许多神经元组成。此例中,输入层是由图像的像素值组成(28*28=784)。由于每个数字只有10种可能,所以输出层将有10个神经元用来表示识别到的数字隐藏层的层级以及其神经元的个数都要通过反复试验来确定


三、神经网络的工作

1、单输入单输出感知器函数

  神经网络到底是如何工作的呢?让我们从最简单的单输入单输出网络开始讲起。假设这个神经网络是用来将天气分为好坏两种类型:假定输出为1时表示好天气,0表示坏天气,这种输出二值型的神经网络也叫感知器
在这里插入图片描述
  可以把感知器想象成一个开关,如果打开它,就输出1,否则输出0。假设温度高于20℃时,为好天气。该例的输入空间就是一维的,就像一条数轴决策边界就是在20℃处画一条线,任何大于或等于20℃的输入都将激活感知器而对于低于20℃的输入,感知器都出于未激活状态
  实际上,当我们训练一个神经网络时,我们所作的就是确定这些边界的位置。让我们讨论一下,为什么其输出可以表示成y=H(x-20)这种形式。其中H代表跃迁函数,当x≥0时,其输出为1;当x≤0时,其输出为0.即:正1负0。而H(x-20)则表示,当x-20≥0时,其输出为1;当x-20<0时,其输出为0。如果我们假设超过20℃为坏天气,则相应的式子变为y=H(-x+20)即可。
在这里插入图片描述
  通常,我们可以将单输入单输出的感知器函数写作y=H(wx+b)


2、二维输入参数

  如果我们在例子中再添加一个输入,也就是说确定天气是否糟糕要看温度和湿度两个指标。这时相当于给输入空间增加了一个维度,即输入空间变为二维的了。
在这里插入图片描述
  即当我们假定当温度或湿度值较大时,则为坏天气,反之为好天气。我们可以再输入空间划上一条直线,在其上方的点输出1,其下方点输出0。此时输出函数则可以写成y=H(w1x1+w2x2+b),此时的决策边界可以看做是一个平面,其与输入平面相交形成一条分界线
  我们也可以将上式写作矩阵相乘的形式:
在这里插入图片描述
  我们可以用W来代替矩阵,用x代替向量。从专业的角度讲,W为权重矩阵,b为偏置
在这里插入图片描述


3、三维输入参数

  三维的情况也能够描述,比如我们再考虑风速的影像。现在输入就是三维的了,所以决策边界可以用一个超平面来表示。此时的输入矩阵是3*1的,式子的输出任然是0或1。
  一般来说,神经元的输入x是一个多维向量,然后将其乘以一个权重矩阵,然后加上偏置,再传给激活函数,最终得到神经元的输出。此例中,激活函数使用的是跃迁函数


四、激活函数

1、激活函数

  让我们再看看其他激活函数。有时候,连续输出会比这种二值输出函数更有用。也就是说,比如传递给激活函数的值是0.0001,虽然它非常接近0,但跃迁函数还是输出1。我们可以用这种函数来产生连续的输出:
在这里插入图片描述
  我们可以将该激活函数的输出看作频率。如果该激活函数的输出为0.5,那么我们可以预测该事件发生的概论为50%。我们之所以能将其看作概率,是因为该激活函数的输出值在0到1之间


2、ReLU激活函数

  另一个常用的激活函数是ReLU。ReLU有两部分,输入为负,输出为0;输入为正,输出为输入本身,即max(0,x)。ReLU常用于神经网络的隐藏层中。需要注意的是:这些函数都不是线性的,这点非常重要。
  至此,我们有了一个可以用来划分数据的模型。如果我们的数据集变得越发复杂时,该怎么办呢?
在这里插入图片描述


3、非线性激活函数

  以这个数据集为例子,我们希望创建一个模型,在给定x和y坐标的情况下来预测该点的颜色。我们可以用一个两个输入的感知器来完成,其决策边界如上方的黄线所示,我们称这种类型的数据集是线性可分的。
  但如果我们的数据集变成这种样子,此时就不能用一条线性函数来作划分了
在这里插入图片描述
  我们可以组合多个神经元,利用其激活函数的非线性就能构造出非常复杂的决策边界。为了理解神经网络是如何工作的,让我们来看一个两输入两输出的神经网络在这里插入图片描述

(1)二输入二输出的神经网络的架构

  首先来看第一个输出神经元,其输出为:y=σ(w11x1+w12x2+b),其中激活函数选择sigma权重的第一个下标表示该神经元在本层的序号,第二个下标为其输入在上一层的序号。类似的,我们可以写出第二个输出神经元的输出表达式。有没有办法将这两个方程合二为一呢?


(2)方程矢量化

  首先,我们可以对方程进行矢量化,将输入输出都写成向量形式。此时我们再将系数转换为矩阵形式,即权重矩阵。这样我们就能将其推广到任意数量的输入、输出神经元中了
在这里插入图片描述


(3)设置不同的权重矩阵和偏置因子

  此外,我们可以对每一层都使用相同的方程差别仅仅是各层的权重矩阵和偏置因子不同。现在让我们在这两者之间加一个隐藏层,该层的输入输出关系如上所示
在这里插入图片描述


(4)其他矩阵变换

  注意:隐藏层使用的激活函数是ReLU,也可以使用其他的激活函数,比如sigmoid。接下来就是输出层的关系表达式了,矩阵与向量相乘,其实质就是线性变换。现在,让我们先忽略激活函数,只考虑Wx+b的结果。如何理解线性变换呢?我们可以将矩阵的第一列看成线性变换后的单位向量i,矩阵的第二列为线性变换后的单位向量j。在线性变换中,我们只允许进行旋转、缩放、翻转等操作,即线性变换后坐标原点保持不变


4、线性激活函数和非线性激活函数

  回到神经网络,假设该神经网络权值和偏置已经进行随机初始化了。首先让我们从输入数据集开始,本例中,它是一个正方形中均匀分布的一组点:
在这里插入图片描述
  第一个操作时乘以权重矩阵,这是一个线性变换(旋转、缩放、翻转等操作的组合)。接下来加上权重因子,可以将其理解为平面内的移动
  现在我们来看激活函数,这里我们使用的是ReLU作为激活函数,也就是说,任何负的输出都是0,只留下正的部分。显然,第一象限是唯一一个符合要求的象限,ReLU会将其他象限的值映射到第一象限上,其结果就剩下第一象限这一块了。注意:若采用线性变换,你将无法得到这样的结果:
在这里插入图片描述
  这就是激活函数非线性的重要性,它能够帮助我们构造复杂的决策边界。接着,我们再乘以一个矩阵,加上偏置,最后sigmoid函数将其压缩至这个单元格中,因为sigmoid函数的输出是0到1之间的值
在这里插入图片描述
  我们也可以在三维空间中进行上述变换,例如有一个神经网络,其隐藏层有三个神经元,假定权值与偏置都已随机初始化了
在这里插入图片描述
  本例的数据集也是平面中一个正方形内均匀分布的一组点,但现在我们是要将其映射到三维空间中(隐藏层有三个神经元)。我们将平面旋转,然后增加一个维度,然后我们就可以将其乘以权重矩阵(也就是线性变换)再加上偏置。然后我们再实现ReLU,只保留输入中为正的部分。二维时,其输出只再第一象限,推广到三维,其输出只在第一卦限。因此,我们将其他卦限上的点都折叠到第一卦限上来
在这里插入图片描述
  然后我们接着进行下一个线性变换并添加偏置。注意:用线性变换永远得不到如下的图像
在这里插入图片描述
  这也再次强调了激活函数非线性的重要性,它能帮助我们建立复杂的决策模型

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

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

相关文章

创建、发布npm包,并且应用在项目里面

实现一个函数去监听dom宽高的变化,并且发布NPM包,然后使用到项目中 步骤 1.5W3H 八何分析法 2.如何监听dom宽高变化 3.如何用vite 打包库 4.如何发布npm 一、NPM包新建过程 查看完整目录 1.生成 package.json npm init生成TS配置文件 tsconfig.js…

OpenVas扫描器更新扫描引擎

OPenvas扫描器安装时step1 是交换指导升级(nvt,cert,scap),这次升级后是自动升级24h升级一次,但第一次升级时选择默认的rsync升级时会出现同步失败的问题,导致openvas安装完后有很大模块和规则不…

软件测试教程之测试分类

目录 1.按测试对象分类 界面测试 可靠性测试 容错性测试 文档测试 兼容性测试 易用性测试 安装卸载测试 性能测试 安全性测试 内存泄漏测试 2.按照是否查看代码分类 黑盒测试 白盒测试 灰盒测试 3.按开发阶段划分 单元测试 集成测试 系统测试 回归测试 冒…

栈的压入、弹出序列

链接: 栈的压入、弹出序列 class Solution { public:/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回方法规定的值即可** * param pushV int整型vector * param popV int整型vector * return bool布尔型*/bool IsPopOrder(vector<int…

视频制作高清GIF动图的简单方法分享

有时想要将电视剧、电影中的精彩画面保存下来&#xff0c;但是视频较大非常的不方便的时候该怎么办呢&#xff1f;这时候&#xff0c;可以使用专业的视频转gif&#xff08;https://www.gif.cn/&#xff09;工具-GIF中文网&#xff0c;无需下载软件&#xff0c;手机、pc均可在线…

【深度学习平台推荐】 Kaggle

工欲善其事&#xff0c;必先利其器。在一个优秀的平台上&#xff0c;更利于深度学习的探究。 本文目的是推荐一些深度学习相关的网站。 1 Kaggle Kaggle offers a no-setup, customizable, Jupyter Notebooks environment. Access GPUs at no cost to you and a huge repositor…

搭建Redis主从集群和哨兵

说明&#xff1a;单机的Redis存在许多的问题&#xff0c;如数据丢失问题、高并发问题、故障恢复问题、海量数据的存储能力问题&#xff0c;针对这四个问题&#xff0c;对应解决方式有&#xff1a;数据持久化&#xff08;参考&#xff1a;http://t.csdn.cn/SSyBi&#xff09;、搭…

07-尚硅谷大数据技术之Spark源码

1. 环境准备&#xff08;Yarn 集群&#xff09; 搭建Spark on Yarn集群 3.3 Yarn 模式 独立部署&#xff08;Standalone&#xff09;模式由 Spark 自身提供计算资源&#xff0c;无需其他框架提供资源。这种方式降低了和其他第三方资源框架的耦合性&#xff0c;独立性非常强。但…

C#鼠标拖拽,移动图片实例

最近工作需要做一个鼠标可以拖拽移动图片的功能。 写了几个基本功能&#xff0c;勉强能用。这里记录一下。欢迎大神补充。 这个就是完成的功能。 下边的绿色是一个pictureBox&#xff0c;白色框也是一个pictureBox&#xff0c;他们二者是子父级关系。 绿色是父级&#xff0c…

网约车订单自助测试演进与落地实践

1► 业务背景 网约车业务作为滴滴的核心业务&#xff0c;系统架构复杂、整个订单链路涉及众多下游服务&#xff0c;整体迭代频率高&#xff0c;同时在产品形态上通过不同品类提供差异化服务能力&#xff0c;整体品类从最初的专车、快车延展到如今多个品类&#xff0c;这就导致在…

Android 分别使用Java和Kotlin给Textview设置第三方字体、APP全局字体、 Android X字体设置

前言 本文介绍Android实现全局设置自定义字体和局部设置自定义字体即单个TextView设置字体&#xff0c;同时也提供了一些优秀的三方字体框架&#xff0c;基本可以满足开发者对字体设置的全部要求。 使用自定义字体前后效果图 一、assets是什么&#xff1f; 首先需要了解Andr…

【11】STM32·HAL库开发-STM32CubeMX简介、安装 | 新建STM32CubeMX工程步骤

目录 1.STM32CubeMX简介&#xff08;了解&#xff09;2.STM32CubeMX安装&#xff08;了解&#xff09;2.1STM32CubeMX软件获取2.1.1获取Java软件2.1.2获取STM32CubeMX软件 2.2搭建Java运行环境2.3安装STM32CubeMX软件&#xff08;必须先2.2再2.3&#xff09;2.4下载和关联STM32…

若依cloud(RuoYi-Cloud)新增业务模块和功能模块增删改查演示

前言 看了几篇文章感觉都不太满意&#xff0c;索性自己来写一篇。 一、后端 后端新建业务模块流程大致如下&#xff1a; 1、后端新建一个&#xff08;在ruoyi-module模块下&#xff09;业务模块&#xff0c;仿照已有的模块将此模块配置好&#xff0c;例如仿照系统模块&…

6、PHP语法要点(1)

PHP的语法跟C语言还是类似的。 1、变量不用定义即可直接使用。 2、函数外定义的变量为全局变量。global 关键字用于函数内访问全局变量。 3、static 用于保持函数内局部变量的值。但在函数外依然不能访问。 4、PHP 将所有全局变量存储在一个名为 $GLOBALS[index] 的数组中。…

GptFu0k——ChatGpt连接源爬取器

最近ChatGPT的热度下去了&#xff0c;但是我相信&#xff0c;很多真正需要的人还是一直在用的&#xff0c;为了解决ChatGPT账号的问题还有网络连接问题&#xff0c;通常会花费大量时间去寻找&#xff0c;为了解决这个棘手的问题&#xff0c;GptFu0k横空出世&#xff0c;全网爬取…

提高LLaMA-7B的数学推理能力

概述 这篇文章探讨了利用多视角微调方法提高数学推理的泛化能力。数学推理在相对较小的语言模型中仍然是一个挑战&#xff0c;许多现有方法倾向于依赖庞大但效率低下的大语言模型进行知识蒸馏。研究人员提出了一种避免过度依赖大语言模型的新方法&#xff0c;该方法通过有效利…

Ctfshow Crypto全

目录 各种各样的编码 crypto0(凯撒) crypto2(jsfuck) crypto3(aaencode) crypto4(知p q e求d) crypto5(知p q e c求d) crypto6(Rabbit) crypto7(Ook!) crypto8(BrainFuck) crypto9(serpent) crypto10(quoted-printable) crypto11(md5) crypto12(埃特巴什码) cryp…

AI Chat 设计模式:8. 门面(外观)模式

本文是该系列的第八篇&#xff0c;采用问答式的方式展开&#xff0c;问题由我提出&#xff0c;答案由 Chat AI 作出&#xff0c;灰色背景的文字则主要是我的一些思考和补充。 问题列表 Q.1 请介绍一下门面模式A.1Q.2 该模式由哪些角色组成呢A.2Q.3 举一个门面模式的例子A.3Q.4…

vue的computed复习

1.复杂 data 的处理方式 三个案例&#xff1a;  案例一&#xff1a;我们有两个变量&#xff1a; firstName 和 lastName &#xff0c;希望它们拼接之后在界面上显示&#xff1b;  案例二&#xff1a;我们有一个分数&#xff1a; score  当 score 大于 60 的时候&#xf…

云拨测全面升级丨单次拨测低至 0.001 元

作者&#xff1a;少焉 随着云原生、微服务技术的发展&#xff0c;可观测需求变得越来越强烈&#xff0c;作为可观测技术的重要能力之一&#xff0c;云拨测&#xff08;Synthetics Monitor&#xff09;由于其零侵入、开箱即用、主动式监测手段&#xff0c;也受到很多用户的青睐…