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

深度学习基础(一)

记得17年第一次阅读深度学习相关文献及代码觉得不是很顺畅,做客户端开发时间久了,思维惯性往往觉得比较迷茫。

而且文章中涉及的数学公式及各种符号又觉得很迷惑,虽然文章读下来了,代码也调试过了,意识里并没有轻松的感觉,隔段时间再看,脑子里又是空空如也。

其实目前来看,深度学习的底层逻辑很简单,只是当时完全迷失在了数学逻辑的符号,公式推导,及代码对应层面,对于神经网络学习的精髓并未完全把握。

我尝试着就自己的理解,极简化其中的数学逻辑,阐述最简单的神经网络学习模型具体原理,不会涉及什么Tensorflow,卷积神经网络这些经常听到的概念,就是很朴素的语言。

可以参考 Michael Nielsen 的经典文章 Neural Networks and Deep Learning

神经网络 - Hello Wrold

具体神经网络缘由介绍很多,此处就不冗余跳过,从一个最简单的问题开始

在这里插入图片描述

上面的手写数字,计算机如何识别 就是神经网络中的 Hello World

在这里插入图片描述

比如手写体数字 3, 如何识别出 罗马数字3

解决输入问题

抽象

先把这个Hello World看做一个黑盒,输入就是一个手写体的数,也就是一张图

在这里插入图片描述

我们把 上图中的 圈计为一个神经元,圈中标注 0 ~ 1 范围的数字,表明神经元被激活的强度

在这里插入图片描述
手写体数字9 就被划分为 28*28 个小单元,也就是784个神经元

在这里插入图片描述

每个神经元中标注的数字,就是图中对应像素的灰度值

可以理解为相应位置的神经元被激活的强度

0表示纯黑像素,1表示纯白像素

激活强度,暂时命个名 - Activation (激活值)

变换

把这784个神经元经过以下变换

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

其中,中间的两层暂时当做大黑盒,黑盒里面就进行着处理识别数字的具体工作

最左边的一层 784 个神经元

最右边的一层神经元,激活值也为 0~1,表明输入的图像 是具体某一个罗马数字的可能性

至于中间为啥两层,每层16个神经元,可以认为就这么着,重在理解模型为主

最终构成了一个神经网络,这个网络包含了 784+16+16+10 个神经元

网络认知

我们认知手写数字的逻辑可能是这样的

在这里插入图片描述

数字整体拆分成 几个大的部分

在这里插入图片描述
在这里插入图片描述

每个部分进一步拆分成小一点的笔画

在这里插入图片描述

中间一层 对应着 拆分的较大的部分

较右边的一层 对应着 笔画部分

神经元 - 神经元

那么,如何拆分部件,怎么拆分才是正确的呢,而且输入图像,也就是784个神经元 与 网络中间的黑盒又是如何工作的?

就着这个网络,可能我们直观的逻辑就是希望这样

在这里插入图片描述

比如,手写体数字7 中的 水平一部分,中间较粗明亮的水平部分,如何提取出来

在这里插入图片描述

为了简单,拆分的大组件 用一个神经元表示

在这里插入图片描述

其中 横 组件边缘较 暗的部分,也就是 输入层横 边缘激活值较低的神经元, 对第二层 对应 横组件的 那个神经元 作用就弱,具体表现就是 第一层的神经元连过来的线就弱一些

第一层其余的神经元(跟横无关的神经元) 此刻 练过来的线 甚至可能看不见,影响微乎其微

w表示 - 神经元之间的连线强弱

a表示 - 神经元的激活值

此时,这个装着 横 的神经元的激活值 就是 w1a1 + w2a2 + … + w784*a784

在这里插入图片描述

前面说过,每个神经元的激活值 在 0~1之间

但此时 得到的这个 代表 横 的神经元的激活值 可能为任意值,并不在0~1之间

为了让 激活值 能继续 收敛在 0~1之间,用到Sigmoid 函数

在这里插入图片描述

这个 装着 横 的神经元 并不能随便激发,必须有个门槛,过门槛才能激发,比如这个门槛为1,才能激发

在这里插入图片描述

Sigmoid(w1a1 + w2a2 + … + w784*a784 - 1), 正好对应 超过上图中的 标注点,神经元激发

最终 Sigmoid(w1a1 + w2a2 + … + w784*a784 + bias), bias 就是 上面的 -1

抽象网络关系

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

这是线性代数中的矩阵 相乘

整个网络中 包含的

开关变量总数:78416 + 1616 + 1610 + 162 + 10 = 13002

也就是 总权重开关:78416 + 1616 + 16*10 = 12960

总bias开关:16*2 + 10 = 42

接下来就是 这 13000 个开关变量 的设置问题了,可以认为 这个黑盒函数 有 13000 个变量,要对这13000个变量求解,得到一个完全函数,然后使用这个函数 就可以得到 识别结果了

求解的过程就是 学习的过程

未完,待续 深度学习基础(二)-梯度下降

相关文章:

深度学习基础(一)

记得17年第一次阅读深度学习相关文献及代码觉得不是很顺畅,做客户端开发时间久了,思维惯性往往觉得比较迷茫。 而且文章中涉及的数学公式及各种符号又觉得很迷惑,虽然文章读下来了,代码也调试过了,意识里并没有轻松的…...

Maven 常用命令

mvn archetype: create :创建Maven 项目mvn compile :编译源代码。mvn deploy:发布项目。mvn test-compile :编译测试源代码mvn test:运行应用程序中的单元测试mvn site:生成项目相关信息的网站mvn clean:清除项目目录中的生成结果mvn package:根据项目生成的iar/war等mvn inst…...

2023年100道最新Android面试题,常见面试题及答案汇总

除了需要掌握牢固的专业技术之外,还需要刷更多的面试去在众多的面试者中杀出重围。小编特意整理了100道Android面试题,送给大家,希望大家都能顺利通过面试,拿下高薪。赶紧拿去吧~~文末有答案Q1.组件化和arouter原理Q2.自定义view&…...

[JavaEE系列] 详解面试中HTTP协议HTTPS协议

文章目录HTTP不安全HTTPS中的加密算法对称加密非对称加密混合加密HTTPS中的摘要算法HTTPS中的数字证书SSL /TLS握手TCP建立连接(三次握手)三次握手中常见的面试题:TCP断开连接(四次挥手)四次挥手中常见的面试题&#x…...

mac 好用的类似Xshell工具

下载royal TSX 5.1.1 http://share.uleshi.com/f/9490615-685692355-33bf1e修改mac的etc/hosts文件权限访达(鼠标右键) -> 前往文件夹 ->输入/private --> 打开etc/hosts --> 显示简洁(鼠标右键) --> 权限改成读和写hosts文件写入如下内容:# Royal T…...

浅谈SQL中的union和union all

文章目录概念基础语法使用技巧区别总结概念 MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。 UNION 操作符选取不同的值,如果允许得到重复的值,可以使用 UNION ALL 基础语法 -- u…...

P6软件应用的核心收益

卷首语 提供了多用户、多项目的功能模块,支持多层次项目等级划分,资源分配计划,记录实际数据,自定义视图,并具有用户定义字段的扩展功能。 利用最佳实践,建立企业模板库 P6软件支持用户使用模板编制项目…...

性能测试中,我遇到的8个常见问题总结

性能压测中我们需要明白以下几点: 1、好的开始是成功的一半,前期的准备非常重要; 2、过程中,关注每个细节,多个维度监控; 3、在调优中多积累经验; 4、对结果负责,测试报告要清晰…...

kafka架构体系

Kafka简介 Kafka是一个由Scala和Java编写的企业级的消息发布和订阅系统,最早是由Linkedin公司开发,最终开源到Apache软件基金会的项目。Kafka是一个分布式的,支持分区的,多副本的和多订阅者的高吞吐量的消息系统,被广…...

【Kafka】三.Kafka怎么保证高可用 学习总结

Kafka 的副本机制 Kafka 的高可用实现主要依赖副本机制。 Broker 和 Partition 的关系 在分析副本机制之前,先来看一下 Broker 和 Partition 之间的关系。Broker 在英文中是代理、经纪人的意思,对应到 Kafka 集群中,是一个 Kafka 服务器节…...

Python学习笔记7:再谈抽象

再谈抽象 对象 多态 即便你不知道变量指向的是哪种对象,也能够对其执行操作封装 向外部隐藏不必要的细节。继承 类 class Person: def set_name(self, name): self.name name def get_name(self): return self.name def greet(self): print("Hello, world…...

钣金行业mes解决方案,缩短产品在制周期

钣金加工行业具有多品种、小批量离散制造行业的典型特点。一些常见的下料车间、备料车间、冲压车间、冲剪生产线等。一般来说,核心业务是钣金加工的生产单位。 一般来说,与大规模生产相比,这种生产方式效率低、成本高,自动化难度…...

【Linux】——git和gdb的简单使用技巧

目录 1.\r&&\n 2.缓冲区 3.做一个Linux的小程序——进度条 1.makefile代码: 2.proc.h代码 3.proc.c代码 4.main.c代码 4.git(上传做好的小程序) 5.Linux调试器-gdb使用 1.\r&&\n 在Linux中,可以将\r看成…...

Fiddler的简单使用

目录 1.断点应用 2.网络限速测试 2.1.为什么需要弱网测试 2.2.Fiddler弱网测试配置 1.断点应用 通过断点功能,可以在测试时方便的篡改request,response以达到测试的目的,如果:在请求头中的参数修改成错误的,或在响应…...

MySql 事务

概述 事务 是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。 注意: 默认MySQL的事务是自动提交的,也就是…...

微信社区小程序/h5/圈子论坛贴吧交友/博客/社交/陌生人社交/宠物/话题/私域/同城交友

内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示三、学习资料下载一、详细介绍 小程序/app/H5多端圈子社区论坛系统,交友/博客/社交/陌生人社交,即时聊天,私域话题,社区论坛圈子,信息引流小程序源码,广场/微校园/微小区/微同城/ 圈子论坛社区系统,含完整…...

Python os和sys模块

一、os模块 os 模块是 Python中的一个内置模块,也是 Python中整理文件和目录最为常用的模块。 该模块提供了非常丰富的方法用来处理文件和目录。比如:显示当前目录下所有文件/删除某个文件/获取文件大小 1、获取当前的工作路径 在 Python 中&#xff0…...

JS中数组如何去重(ES6新增的Set集合类型)+经典two sum面试题

现在有这么一个重复数组:const arr [a,a,b,a,b,c]只推荐简单高效的方法,复杂繁琐的方法不做推荐方法一:const res [...new Set(arr)]Set类型是什么呢?Set 是ES6新增的一种新集合类型。具体知识点可以看下面附录:根据…...

HDLC简介及相应hdlc实训

HDLC简介 HDLC 协议 高级数据链路控制(HDLC,High-level Data Link Control)是一种面向比特的链路层协议, 其最大特点是对任何一种比特流,均可以实现透明的传输。HDLC协议具有以下优点。 透明传输:HDLC不…...

公司技术团队为什么选择使用 YApi 作为 Api 管理平台?

在 2021 年 12 月份的时候我就推荐过一款软件程序员软件推荐:Apifox,当时体验了一下里面的功能确实很实用,但是当时公司有一套自己的 API 管理方案,所有 Apifox 暂时就没在内部使用。 直到最近要使用其他的 API 管理方案的时候才…...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...

JVM 内存结构 详解

内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: ​ 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 ​ 每个线程都有一个程序计数…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)

RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill

视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...

NPOI Excel用OLE对象的形式插入文件附件以及插入图片

static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...

从物理机到云原生:全面解析计算虚拟化技术的演进与应用

前言:我的虚拟化技术探索之旅 我最早接触"虚拟机"的概念是从Java开始的——JVM(Java Virtual Machine)让"一次编写,到处运行"成为可能。这个软件层面的虚拟化让我着迷,但直到后来接触VMware和Doc…...

ubuntu22.04 安装docker 和docker-compose

首先你要确保没有docker环境或者使用命令删掉docker sudo apt-get remove docker docker-engine docker.io containerd runc安装docker 更新软件环境 sudo apt update sudo apt upgrade下载docker依赖和GPG 密钥 # 依赖 apt-get install ca-certificates curl gnupg lsb-rel…...