【白话神经网络(二)】矩阵、CNN、RNN

全连接层

回顾前面学过的知识:
一个最简单的神经网络,就是y=wx+b 套上一个激活函数。
如果有多个输入,那就是多个w和x
如果有多个输出,那就再来一行公式,多一组w和b

在这里插入图片描述

要是神经元多了的话,公式密密麻麻的,没有数学的简洁之美,这怎么办呢?其实就是把加减乘除替换成了矩阵运算的写法(这里先忽略一下激活函数)。

在这里插入图片描述

然后我们现在把这些矩阵都替换成新的字母,那么整个公式就化简成了这个样子:

Y =g(WX + b)

不过现在还有个问题,就是神经元的层并没有体现在公式中。假如神经元再多几层怎么办?我们此时抽象一下也别分什么x、y和隐藏层了,就通通用字母a来表示。输入层就当做第0层,用a中括号零来表示,以此类推。
例如第1层的公式如下:

在这里插入图片描述

每一层的神经元的值都是上一层的函数。我们用l表示在第几层,那么最终的通用公式就是:
在这里插入图片描述

到这里,麻烦的加减乘除就替换成了矩阵运算,可以充分利用gpu的并行计算的特性,加速神经网络的训练和推理过程。这就不仅仅是秀写法上的一个操作了。

在这里插入图片描述

回到这个公式和神经网络结构,可以看到这里的每个神经元都与前一层的所有神经元相连。但它其实只是神经网络结构中的一种,叫做全连接层。

在这里插入图片描述

卷积神经网络 CNN(Convolutional Neural Network)

下面先看一下全连接层的问题:

假如我们现在要做个图像识别的模型,假如输入是个30×30的灰度图像。那么平铺展开后喂给输入层的就是900个神经元。假如下一层的神经元的数量是1000个,那么这个全连接层的总参数量就达到了900000,这太大了。

另外,这里仅仅是把输入的图片平谱展开,无法保留像素之间的空间关系。图片稍稍动一下,可能所有神经元都和原来完全不同。但从图片整体上看,可能仅仅是平移或者变暗,这就是不能很好的理解图像的局部模式。

在这里插入图片描述

为了更好的理解图像的局部模式,我们随便在这个图像中取一个3×3的矩阵,这里面的数值就是颜色的灰度值。然后我们再来一个固定的矩阵,把每个对应位置数的值相乘并求和,最终得到一个值是250。
在这里插入图片描述
然后我们再选取一个地方,再次进行这样的运算。最终我们把这种运算方式遍历划过原图像的每个地方,得出的数值形成一个新的图像。这种方式叫做卷积运算。

而刚刚我们这个固定的矩阵叫做卷积核。
卷积核不是一个新的概念,在传统的图像处理领域,卷积核是已知的,可以达到一定的图像处理效果,比如模糊效果、浮雕效果、轮廓效果以及锐化效果等等,就是ps的常规操作。
在这里插入图片描述

在深度学习领域,卷积核的值就是未知的,和神经网络中的其他参数一样,是被训练出来的一组值。

回到刚刚的经典神经网络结构,其实就是把其中一个全连接层替换成了卷积层,这就大大的减少了权重参数的数量,同时还能更有效的捕捉到图片中的一些局部特征,可谓是一举两得。而从公式上看,其实就是把原来的矩阵的标准乘法及差乘替换成了卷积运算。

在这里插入图片描述

那么接下来,我们的神经网络就可以用更抽象、更简洁的图来表示。在图像识别的神经网络结构中,除了卷积层外,通常还有池化层,作用是对卷积层后的特征图像进行降维,减少计算量,同时保留主要特征。这里的卷积层、池化层、全连接层都可以有多个。而这种适用于图像识别领域的神经网络结构,就叫做卷积神经网络 CNN(Convolutional Neural Network)。

在这里插入图片描述

使用卷积神经网络非常方便可视化,我们可以看到训练过程中所训练出的卷积核,从原始图像中提取了什么样的特征,虽然这些都是中间隐藏层的事情,但是却能神奇的观察出一些实际意义,这也是卷积神经网络让人着迷的地方。

总结:
我们把之前一个个加减乘除很麻烦的写法,写成了矩阵的形式。一是为了方便讨论,比如刚刚介绍cnn的时候,就从公式直接看出,就是差乘变成了卷积运算而已。二是可以更好的利用gpu的并行计算,提高效率。

接下来我们把之前默认的那种所有神经元都连起来的形式叫做全连接,进而通过图像识别这个任务意识到了全连接的局限性。接下来我们通过卷积运算代替了全连接层的标准矩阵乘法,一方面使得训练参数大大的减少,另外一方面也更有利于提取图像的局部特征,这就解决了我们一开始说的问题。

最后我们把神经网络结构再次抽象一个层次,原来我们画的各种小圈圈在更高的视角下,其实就是个全连接层而已。那么这些全连接层、卷积层、池化层的组合就构成了卷积神经网络 cnn。

当然卷积神经网络cnn也只是神经网络结构中的一种,而且它有一个致命的局限性,就是它主要用于静态数据,比如说图片。那么如果我们要处理的是时间序列、文本、语音、视频等动态数据,就需要引入另外一种神经网络结构了。

参考:https://www.bilibili.com/video/BV1wXQhY8EJ6/?spm_id_from=333.1387.homepage.video_card.click&vd_source=8066b0fe558a3d040eb762ed70ba335a

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

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

相关文章

Unity教程(二十二)技能系统 分身技能

Unity开发2D类银河恶魔城游戏学习笔记 Unity教程(零)Unity和VS的使用相关内容 Unity教程(一)开始学习状态机 Unity教程(二)角色移动的实现 Unity教程(三)角色跳跃的实现 Unity教程&…

深入解析Java面向对象三大特征之多态、final、抽象类与接口

面向对象编程(OOP)的三大核心特征为封装、继承、多态,其中多态是最具灵活性和扩展性的特性。本文将从多态的本质出发,结合final关键字、抽象类与接口的设计,深入探讨这些概念的应用场景及其在代码中的实现细节&#xf…

编码器和解码器概念及算法示例【清晰易懂】

编码器(Encoder)和解码器(Decoder)是处理信息的一对“搭档”,它们的作用就像是“翻译员”和“逆翻译员”。 1. 编码器(Encoder)是什么? 👉 把原始信息变成另一种形式&a…

爬虫逆向:逆向中用到汇编语言详细总结

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、汇编语言基础二、常见汇编指令2.1 数据传输指令2.2 算术指令2.3 逻辑指令2.4 控制流指令2.5 其他指令三、寄存器概述四、调用约定五、栈操作与函数调用六、逆向工程中的汇编分析七、常用逆向工具八、实际案例分析九…

CTF WEB题

[文件包含,少许难度] 地址:攻防世界 代码审计WRONG WAY! <?php include("flag.php"); #包含了一个“flag.php”文件 highlight_file(__FILE__); #来显示当前文件的源代码 if(isset($_GET["file1"]) && isset($_GET["file2"])) #isse…

c++图论(一)之图论的起源和图的概念

C 图论之图论的起源和图的概念 图论&#xff08;Graph Theory&#xff09;是数学和计算机科学中的一个重要分支&#xff0c;其起源可以追溯到 18 世纪 的经典问题。以下是图论的历史背景、核心起源问题及其与基本概念和用途&#xff1a; 借用一下CSDN的图片哈 一、图论的起源&…

Ollama + CherryStudio:构建本地私有知识库

前面我们介绍了Ollama的安装和使用&#xff0c;并通过Open-WebUI进行调用&#xff0c;相信大家对Ollama也有了一定的了解&#xff1b;这篇博文就结合Ollama工具和CherryStudio工具构建一个本地知识库&#xff08;RAG&#xff09;&#xff1b;在进行接下来的操作之前&#xff0c…

【实战ES】实战 Elasticsearch:快速上手与深度实践-8.2.1AWS OpenSearch无服务器方案

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 文章大纲 8.2.1AWS OpenSearch 无服务器方案深度解析与实践指南1. Serverless架构的核心价值与行业趋势1.1 传统Elasticsearch集群的运维挑战1.2 Serverless技术演进路线技术特性对比…

清晰易懂的Java8安装教程

小白也能看懂的 Java 8 安装教程&#xff08;JDK 和 JRE 分目录安装&#xff09; 本教程将手把手教你如何在 Windows 系统上安装 Java 8&#xff08;JDK 1.8&#xff09;&#xff0c;并将 JDK 和 JRE 安装到不同的目录中&#xff0c;同时提供国内 Java 8 下载源和方法。即使你…

图搜索的两种写法,广度优先和深度优先

最近AI的爆发大家都疯了&#xff0c;也确实够疯&#xff0c;前几年谁能天天和AI聊天呢&#xff0c;特别它越来越智能&#xff0c;越来越理解你&#xff0c;你越来越离不开它&#xff0c;我很好奇将来它会不会有情绪&#xff0c;太可怕了&#xff0c;一旦有了这个就有了感情&…

嵌入式八股RTOS与Linux---前言篇

前言 Linux与RTOS是校招八股的时候很喜欢考察的知识,在这里并没有把两个操作系统完全的独立开去讲,放在一起对比或许可能加深印象。我们讲Linux的内核有五部分组成:进程调度、内存管理、文件系统、网络接口、进程间通信,所以我也将从这五方面出发 中断管理去对比和RTOS的不同。…

ChatBI 的技术演进与实践挑战:衡石科技如何通过 DeepSeek 实现商业落地

随着人工智能技术的快速发展&#xff0c;ChatBI&#xff08;基于自然语言交互的商业智能&#xff09;逐渐成为企业数据分析领域的热门话题。作为 BI&#xff08;商业智能&#xff09;领域的新形态&#xff0c;ChatBI 通过自然语言处理&#xff08;NLP&#xff09;技术&#xff…

基于Vue实现Echarts的平滑曲线

在Vue2.x的项目中使用echarts实现如下效果 安装echarts npm install echarts --save组件引入echarts // 在你的Vue组件中 import * as echarts from echarts;在模板中添加一个div元素&#xff0c;用来放置图表 <divref"chart"class"chart"style"…

关于重构分析查询界面的思考(未完)

业务系统里&#xff0c;查询界面很常见&#xff0c;数据分析场景需求普遍而迫切&#xff0c;而新的技术也在不断出现&#xff0c;很有必要重构分析查询界面。 查询筛选 为了尽可能从数据中发现&#xff0c;需要尽可能地将查询条件添加进来&#xff0c;可这样&#xff0c;查询…

在jQuery中DOM操作

&#xff08;一&#xff09;元素选取 各种选择器的使用方法与示例 标签选择器&#xff1a;通过 HTML 标签名称来选取元素。例如&#xff0c;若想选中页面中所有的段落元素&#xff0c;可使用$(‘p’)。假设我们有如下 HTML 结构&#xff1a; 这是第一个段落 这是嵌套在div中的…

Java 集合框架中 `List` 接口及其子类的详细介绍,并用 UML 图表展示层次结构关系,用表格对比各个类的差异。

下面是 Java 集合框架中 List 接口及其子类的详细介绍&#xff0c;并用 UML 图表展示层次结构关系。最后&#xff0c;我会用表格对比各个类的差异。 Java 集合框架中 List 接口及其子类 UML 类图描述 以下是 List 接口及其子类的 UML 类图描述&#xff0c;不包含方法。 详细…

Java面试八股—Redis篇

一、Redis的使用场景 &#xff08;一&#xff09;缓存 1.Redis使用场景缓存 场景&#xff1a;缓存热点数据&#xff08;如用户信息、商品详情&#xff09;&#xff0c;减少数据库访问压力&#xff0c;提升响应速度。 2.缓存穿透 正常的访问是&#xff1a;根据ID查询文章&…

Spring Boot使用线程池创建多线程

在 Spring Boot 2 中&#xff0c;可以使用 Autowired 注入 线程池&#xff08;ThreadPoolTaskExecutor 或 ExecutorService&#xff09;&#xff0c;从而管理线程的创建和执行。以下是使用 Autowired 方式注入线程池的完整示例。 1. 通过 Autowired 注入 ThreadPoolTaskExecuto…

9、交付手段-强化肌肉记忆(随身工具箱)

一、交付工具箱 当临时遇到各类交付棘手问题时&#xff0c;大脑里记住交付工具的使用场景&#xff0c;有利于快速决策&#xff0c;将这些工具转为肌肉记忆&#xff0c;能够快速灵活处理交付中的各类问题&#xff0c;蜕变为交付之星 1、复杂项目&#xff1a;WBS分解、日站会、…

【概念】Node.js,Express.js MongoDB Mongoose Express-Validator Async Handler

1. Node.js 定义&#xff1a;Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境&#xff0c;允许你在服务器端运行 JavaScript 代码。作用&#xff1a;它使得开发者可以使用 JavaScript 编写服务器端代码&#xff0c;从而实现前后端使用同一种语言。比喻&#xff1a…