深度学习基础(一)
记得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 中࿰…...

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 管理方案的时候才…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...

visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...

《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...

现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...

微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...