人工智能AI 全栈体系(一)
第一章 神经网络是如何实现的
这些年人工智能蓬勃发展,在语音识别、图像识别、自然语言处理等多个领域得到了很好的应用。推动这波人工智能浪潮的无疑是深度学习。所谓的深度学习实际上就是多层神经网络,至少到目前为止,深度学习基本上是用神经网络实现的。神经网络并不是什么新的概念,早在上个世纪40年代就开展了以感知机为代表的神经网络的研究,只是限于当时的客观条件,提出的模型比较简单,只有输入、输出两层,功能有限,连最简单的异或问题(XOR问题)都不能求解,神经网络的研究走向低潮。
到了80年代中期,随着BP算法的提出,神经网络再次引起研究热潮。当时被广泛使用的神经网络,在输入层和输出层之间引入了隐含层,不但能轻松求解异或问题,还被证明可以逼近任意连续函数。但限于计算能力和数据资源的不足,神经网络的研究再次陷入低潮。
一直对神经网络情有独钟的多伦多大学的辛顿教授,于2006年在《科学》上发表了一篇论文,提出了深度学习的概念,至此神经网络以深度学习的面貌再次出现在研究者的面前。但是深度学习并不是简单地重复以往的神经网络,而是针对以往神经网络研究中存在的问题,提出了一些解决方法,可以实现更深层次的神经网络,这也是深度学习一词的来源。
随着深度学习方法先后被应用到语音识别、图像识别中,并取得了传统方法不可比拟的性能,深度学习引起了人工智能研究的再次高潮。
一、数字识别
1. 引入例子
- 下图是个数字3的图像,其中1代表有笔画的部分,0代表没有笔画的部分。假设想对0到9这十个数字图像进行识别,也就是说,如果任给一个数字图像,我们想让计算机识别出这个图像是数字几,我们应该如何做呢?
2. 模式匹配
- 一种简单的办法就是对每个数字构造一个模式,比如对数字3,我们这样构造模式:有笔画的部分用1表示,而没有笔画的部分,用-1表示,如图所示。当有一个待识别图像时,我们用待识别图像与该模式进行匹配,匹配的方法就是用图像和模式的对应位置数字相乘,然后再对相乘结果进行累加,累加的结果称为匹配值。为了方便表示,我们将模式一行一行展开用 w i w_i wi( i i i = 1, 2, …, n) 表示模式的每一个点。待识别图像也同样处理,用 x i x_i xi( i i i = 1, 2, …, n) 表示。这里假定模式和待识别图像的大小是一样的,由n个点组成。
- 如果模式与待识别图像中的笔画是一样的,就会得到一个比较大的匹配结果,如果有不一致的地方,比如模式中某个位置没有笔画,这部分在模式中为-1,而待识别图像中相应位置有笔画,这部分在待识别图像中为1,这样对应位置相乘就是-1,相当于对结果做了惩罚,会使得匹配结果变小。匹配结果越大说明待识别图像与模式越一致,否则差别就比较大。
- 如图所示是8的图像。这两个数字的区别只是在最左边是否有笔画,当用8与3的模式匹配时,8的左边部分与3的模式的左边部分相乘时,会得到负值,这样匹配结果受到了惩罚,降低了匹配值。相反如果当3与8的模式匹配时,由于3的左边没有笔画值为0,与8的左边对应位置相乘得到的结果是0,也同样受到了惩罚,降低了匹配值。只有当待识别图像与模式笔画一致时,才会得到最大的匹配值。
- 数字3、8分别与3的模式的匹配值各是多少?计算结果,3与3的模式的匹配值是143,而8与3的模式的匹配值是115。可见前者远大于后者。
3. 存在的问题
- 如果想识别一个数字是3还是8,就分别和这两个数字的模式进行匹配,看与哪个模式的匹配值大,就是哪个数字。
- 如果识别0到9这10个数字,只要分别建造这10个数字的模式就可以了。对于一个待识别图像,分别与10个模式匹配,选取匹配值最大的作为识别结果就可以了。但是由于不同数字的笔画有多有少,比如1笔画就少,而8就比较多,所以识别结果的匹配值也会有大有小。
4. 使用 Sigmoid 函数
- 我们可以对匹配值用一个称作sigmoid的函数进行变换,将匹配值变换到0和1之间。sigmoid函数如下式所示,通常用σ表示。
σ = 1 1 + e − x \sigma = \frac{1}{1 + e ^ {-x} } σ=1+e−x1
- 从图中可以看出,当x比较大时,sigmoid输出接近于1,而x比较小时(负数),sigmoid输出接近于0。经过sigmoid函数变换后的结果可以认作是待识别图像属于该数字的概率。
5. 增加偏置项
- 但是像前面的3和8的匹配结果分别为143、115,把两个结果带入到sigmoid函数中,都接近于1了,并没有明显的区分。
- sigmoid函数并不能直接这样用,而是要“平移”一下,加上一个适当的偏置b,使得加上偏置后,两个结果分别在sigmoid函数中心线的两边,来解决这个问题:
- 比如这里我们让b=-129,这样处理后的sigmoid值分别是:
- sigmoid(143-129)=0.999999
- sigmoid(115-129)=0.000001
- 这样区分的就非常清楚了,接近1的就是识别结果,而接近0的就不是。不同的数字模式具有不同的b值,这样才能解决前面提到的不同数字之间笔画有多有少的问题。
- 这是一种简单的数字识别基本原理。这与神经网络有什么关系呢?
6. 神经网络
- 上面介绍的,其实就是一个简单的神经网络。这是一个可以识别3和8的神经网络,和前面介绍的一样, x 1 x_1 x1 … x n x_n xn 表示待识别图像, w 3.1 w_{3.1} w3.1 … w 3. n w_{3.n} w3.n和 w 8.1 w_{8.1} w8.1 … w 8. n w_{8.n} w8.n 分别表示3的模式和8的模式,在图中可以看成是每条边的权重。如果用 y 3 y_3 y3 、 y 8 y_8 y8 分别表示识别为3或者8的概率的话,则这个示意图实际表示的和前面介绍的数字识别方法是完全一样的,只不过是换成了用网络的形式表达。
- 图中下边表示输入层,每个圆圈对应输入图像在位置 i i i 的值 x i x_i xi ,上边一层表示输出层,每一个圆圈代表了一个神经元,所有的神经元都采取同样的运算:输入的加权和,加上偏置,再经过sigmoid函数得到输出值。这样的一个神经网络,实际表示的是如下计算过程:
7. 数字识别神经网络
- 每个神经元对应的权重都代表了一种模式。比如在这个图中,一个神经元代表的是数字3的模式,另一个神经元代表的是数字8的模式。进一步如果在输出层补足了10个数字,就可以实现数字识别了。
- 要识别的数字不规整,怎么办?
- 这个网络过于简单了,要想构造复杂一些的网络,可以有两个途径。比如一个数字可以有不同的写法,这样的话,同一个数字就可以构造多个不同的模式,只要匹配上一个模式,就可以认为是这个数字。这是一种横向的扩展。另外一个途径就是构造局部的模式。比如可以将一个数字划分为上下左右4个部分,每个部分是一个模式,多个模式组合在一起合成一个数字。不同的数字,也可以共享相同的局部模式。比如3和8在右上、右下部分模式可以是相同的,而区别在左上和左下的模式上。要实现这样的功能,需要在神经网络的输入层、输出层之间增加一层表示局部模式的神经元,这层神经元由于在神经网络的中间部分,所以被称为隐含层。输入层到隐含层的神经元之间都有带权重的连接,而隐含层到输出层之间也同样具有带权重的连接。隐含层的每个神经元,均表示了某种局部模式。这是一种纵向的扩展。
8. 神经网络的横向扩展 – 增加模式
9. 神经网络的纵向扩展 – 局部模式
10. 让神经网络更深 - 模式组合
11. 多层神经网络
- 如果要刻画更细致的局部模式,可以通过增加隐含层的数量来刻画更细致的模式,每增加一层隐含层,模式就被刻画的更详细一些。这样就建立了一个深层的神经网络,越靠近输入层的神经元,刻画的模式越细致,体现的越是细微信息的特征;越是靠近输出层的神经元,刻画的模式越是体现了整体信息的特征。这样通过不同层次的神经元体现的是不同粒度的特征。每一层隐含层也可以横向扩展,在同一层中每增加一个神经元,就增加了一种与同层神经元相同粒度特征的模式。
- 神经网络越深越能刻画不同粒度特征的模式,而横向神经元越多,则越能表示不同的模式。但是当神经网络变得复杂后,所要表达的模式会非常多,如何构造各种不同粒度的模式呢?
- 构造模式是非常难的事情,事实上我们也很难手工构造这些模式。在后面我们可以看到,这些模式,也就是神经网络的权重是可以通过样本训练得到的,也就是根据标注好的样本,神经网络会自动学习这些权值,也就是模式,从而实现数字识别。
12. 如何获得模式?
- 模式通过神经元的连接权重表示
- 通过训练样本,自动学习权重,也就是模式
- 不是人工设计!
- 学习到的模式是一种隐含表达,并不像举例的这样清晰
13. 总结
- 神经元可以表示某种模式,不同层次的神经元可以表示不同粒度的特征,从输入层开始,越往上表示的特征粒度越大,从开始的细粒度特征,到中间层次的中粒度特征,再到最上层的全局特征,利用这些特征就可以实现对数字的识别。如果网络足够复杂,神经网络不仅可以实现数字识别,还可以实现更多的智能系统,比如人脸识别、图像识别、语音识别、机器翻译等。
- 神经元实际上是模式的表达,不同的权重体现了不同的模式。权重与输入的加权和,即权重与对应的输入相乘再求和,实现的是一次输入与模式的匹配。该匹配结果可以通过sigmoid函数转换为匹配上的概率。概率值越大说明匹配度越高。
- 一个神经网络可以由多层神经元构成,每个神经元表达了一种模式,越是靠近输入层的神经元表达的越是细粒度的特征,越是靠近输出层的神经元表达的越是粗粒度特征。同一层神经元越多,说明表达的相同粒度的模式越多,而神经网络层数越多,越能刻画不同粒度的特征。
相关文章:
人工智能AI 全栈体系(一)
第一章 神经网络是如何实现的 这些年人工智能蓬勃发展,在语音识别、图像识别、自然语言处理等多个领域得到了很好的应用。推动这波人工智能浪潮的无疑是深度学习。所谓的深度学习实际上就是多层神经网络,至少到目前为止,深度学习基本上是用神…...
权限、认证与授权
权限、认证与授权 1、权限概述 (1)什么是权限 权限管理,一般指根据系统设置的安全策略或者安全规则,用户可以访问而且只能访问自己被授权的资源,不多不少。权限管理几乎出现在任何系统里面,只要有用户和…...
JAVA 的四种访问权限
在Java编程中,访问权限是非常重要的概念,因为它可以保证代码的安全性和封装性。访问权限有四种,分别是public、protected、default和private。 private:如果一个类的方法或者变量被private修饰,那么这个类的方法或者变…...
【个人博客系统网站】注册与登录 · 加盐加密验密算法 · 上传头像
【JavaEE】进阶 个人博客系统(3) 文章目录 【JavaEE】进阶 个人博客系统(3)1. 加盐加密验密算法原理1.1 md5加密1.2 md5验密1.3 md5缺漏1.4 加盐加密1.5 后端的盐值拼接约定1.6 代码实现1.6.1 加密1.6.2 验密1.6.3 测试 2. 博客…...
[H5动画制作系列] Sprite及Text Demo
参考代码: sprite.js: var canvas, stage, container; canvas document.getElementById("mainView"); function init() {stage new createjs.Stage(canvas);createjs.Touch.enable(stage);var loader new createjs.LoadQueue(false);loader.addEventListener(&q…...
目标检测YOLO实战应用案例100讲-毫米波辐射图像去模糊重建与目标检测
目录 前言 毫米波辐射图像去模糊重建研究现状 基于传统算法的图像去模糊重建...
Android10 SystemUI系列(一)概述
一、前言 由于笔者之前负责过SystemUI,之前没有抽空把很多东西整理出来,趁着最近不太忙,就慢慢动手梳理一下,顺便把自己遇到的问题也整理一下,当然自己之前主要看的是android11 之后的源码。这次主要是Android10 的源码,当然原理大差不差,也算是自己沉淀一下了 二、Sy…...
SpringMVC的常用注解,参数传递以及页面跳转的使用
目录 slf4j 常用注解 RequestMapping RequestParam RequestBody PathVariable 参数传递 首先在pom.xml配置文件中导入SLF4J的依赖 基础类型String 复杂类型 RequestParam PathVariable RequestBody 增删改查 返回值 void返回值 String返回值 modelString …...
Java“牵手”易贝商品列表数据,关键词搜索易贝商品数据接口,易贝API申请指南
ebay商城是一个网上购物平台,售卖各类商品,包括服装、鞋类、家居用品、美妆产品、电子产品等。要获取ebay商品列表和商品详情页面数据,您可以通过开放平台的接口或者直接访问ebay商城的网页来获取商品详情信息。以下是两种常用方法的介绍&…...
java中HashMap如何根据value的值去获取key是多少
在Java中,HashMap是一种基于键值对存储数据的数据结构。HashMap并没有直接提供根据value获取key的方法。但你可以通过遍历HashMap的entrySet,找到对应的value,然后获取其对应的key。 以下是一个示例代码: public <K, V> K…...
Python|OpenCV-色彩空间之RGB轨迹调试板(5)
前言 本文是该专栏的第5篇,后面将持续分享OpenCV计算机视觉的干货知识,记得关注。 通常情况下,在处理图像需求的时候,需要掌握多个色彩空间的知识点。现实中,我们肉眼可以看到多种颜色,色彩是人的眼睛对于不同频率的光线的不同感受,其既是客观存在的,也是主观感知的。…...
安全生产:CVE-2020-11022/CVE-2020-11023漏洞解析
文章目录 一、前言二、漏洞原理三、修复方案3.1 升级jQuery3.2 1.x 升级至 3.x 需要考虑的问题3.2.1 table表格元素自动添加tbody3.2.2 方法变更 3.3 jquery migrate是什么 四、拓展阅读 一、前言 代码安全扫描阶段,前端资源审计发现jQuery版本过低导致生产系统存在…...
手写Spring:第17章-通过三级缓存解决循环依赖
文章目录 一、目标:通过三级缓存解决循环依赖二、设计:通过三级缓存解决循环依赖2.1 通过三级缓存解决循环依赖2.2 尝试使用一级缓存解决循环依赖 三、实现:通过三级缓存解决循环依赖3.1 工程结构3.2 通过三级缓存解决循环依赖类图3.3 设置三…...
C#使用proto
写多了go代码,被go mod tidy惯坏了,还以为全天下的都很好用呢,结果发现并不是这样。尤其是项目组的proto还是又封了个工具直接就能跑得,导致以为没那么复杂的事情变得复杂了起来。是有两套生成的规则,时间有点晚&#…...
Java基础知识面试题(一)(英语答案)
加油 前言Java中的基本数据类型包括以下几种:String和StringBuilder的区别是什么?什么是面向对象编程(OOP)?如何在Java中创建一个类?什么是继承?如何在Java中实现继承?什么是多态性?如何在Java中实现多态性?什么是封装和继承?什么是接口(Interface)?如何在Java中…...
基于csv数据建立线性回归模型并预测进行评估模型表现案例实现
一、数据处理 1.加载csv数据进行查看 import pandas as pd data pd.read_csv("generated_data.csv") print(data)2.将上述数据的x和y进行分离开,便于后续进行坐标建立 x data.loc[:,x] y data.loc[:,y] print(x,y)3.先使用matplotlib进行显示数据 …...
MySQL学习问题记录
文章目录 MySQL学习问题记录1、查询记录自动根据id排序? MySQL学习问题记录 1、查询记录自动根据id排序? step1:建表 表项信息: 写入数据顺序id为10 2 7 1。查寻时返回记录顺序为1 2 7 10? 更新一条数据后仍然按照…...
YMatrix 5.0 与天翼云完成产品兼容性认证
近日,北京四维纵横数据技术有限公司与天翼云宣布完成产品兼容性认证。经过双方严格的测试验证,超融合数据库 YMatrix 5.0 与天翼云兼容性良好,可基于天翼云稳定运行。 数据库系统作为基础软件的核心,自主可控势在必行。在此背景下…...
蓝桥杯官网练习题(旋转)
题目描述 图片旋转是对图片最简单的处理方式之一,在本题中,你需要对图片顺时针旋转 90 度。 我们用一个 nm 的二维数组来表示一个图片,例如下面给出一个 34 的 图片的例子: 1 3 5 7 9 8 7 6 3 5 9 7 这个图片顺时针旋转 90 …...
Jtti:Linux如何开机启动bootstrap
在Linux中,"bootstrap"通常不是一个单独的启动项,而是指引导过程的一部分。引导过程涉及到启动引导加载程序,加载内核,初始化系统并启动各种服务。启动过程中不会直接启动"bootstrap",而是通过引导…...
qt之事件循环与线程的关系
先说重点,先了解几个重要的概念, 事件调度器,该调度器的具体实现与操作系统相关,不同的操作系统具有不同的实现,例如linux系统下该调度器的实现为QEventDispatcherUNIX,而window下的他们的实现为QEventDis…...
Python 变量的定义和数据类型的转换
变量 变量的定义 基本语法:变量名 值 变量名是给对象贴一个用于访问的标签,给对象绑定名字的过程也称为赋值,赋值符号 “” 变量名自定义,要满足标识符命名规则。 Python中,不需要事先声明变量名及其类型ÿ…...
Android Java JVM常见问答分析与总结
一、JVM是什么 JVM是JavaVirtualMachine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。 JVM的重要性 JVM这块是一个偏向于概念模…...
【业务功能篇102】springboot+mybatisPlus分页查询,统一返回封装规范
业务场景: 随着业务代码量增多,很多接口查询的分页写法各种各样,为了使项目工程代码易于维护,我们统一规范,相对没有那么复杂的接口,我们统一都在java的service实现类中,去完成分页查询的接口逻…...
中国手机新进程:折叠屏出海的荣耀,5G中回归的华为
最近,“华为5G回归”“自研麒麟芯片回归”的消息引爆网络。网友开心庆贺之余,也纷纷猜测,华为强势归来,哪家友商最慌? “华为的回归,让竞争充满了更多的可能性和更多的魅力”,与华为渊源颇深的…...
安装RabbitMQ的各种问题(包括已注册成windows服务后,再次重新安装,删除服务重新注册遇到的问题)
一、安装Erlang(傻瓜式安装) 安装完成之后,配置环境变量: 1.新建系统变量名为:ERLANG_HOME 变量值为erlang安装地址 2. 双击系统变量path,点击“新建”,将%ERLANG_HOME%\bin加入到path中。 …...
多线程与高并发——并发编程(6)
文章目录 六、并发集合1 ConcurrentHashMap1.1 存储结构1.2 存储操作1.2.1 put方法1.2.2 putVal方法-散列算法1.2.3 putVal方法-添加数据到数组&初始化数组1.2.4 putVal方法-添加数据到链表1.3 扩容操作1.3.1 treeifyBin方法触发扩容1.3.2 tryPresize方法-针对putAll的初始…...
Elasticsearch——Docker单机部署安装
文章目录 1 简介2 Docker安装与配置2.1 安装Docker2.2 配置Docker镜像加速器2.3 调整Docker资源限制 3 准备Elasticsearch Docker镜像3.1 下载Elasticsearch镜像3.2 自定义镜像配置3.3执行Docker Compose 4 运行Elasticsearch容器4.1 创建Elasticsearch容器4.2 修改配置文件4.3…...
基于AHP模型指标权重分析python整理
一 背景介绍 日常会有很多定量分析的场景,然而也会有一些定性分析的场景针对定性分析的场景,预测者只能通过主观判断分析能力来推断事物的性质和发展趋势然而针对个人的直觉和虽然能够有一定的协助判断效果,但是很难量化到指标做后期的复用 …...
用python实现基本数据结构【02/4】
*说明 如果需要用到这些知识却没有掌握,则会让人感到沮丧,也可能导致面试被拒。无论是花几天时间“突击”,还是利用零碎的时间持续学习,在数据结构上下点功夫都是值得的。那么Python 中有哪些数据结构呢?列表、字典、集…...
嘉兴市建设教育网站/企业官网怎么做
1. 仅更新单个库 只想更新某个特定的库,不想更新它的所有依赖,很简单: composer update foo/bar 此外,这个技巧还可以用来解决“警告信息问题”。你一定见过这样的警告信息: Warning: The lock file is not up to date…...
网站建设联系方式/自有品牌如何推广
液晶显示多功能电力仪表PD800G-B43电能监测型作为一种智能化,数字化的电量搜集设备,多功用电力表面现已被广泛的运用在各类控制系统,例如SCADA,EMS,BA等系统中,多功用电力表面是一种十分适协作为电能质量监…...
delphi xe10网站开发/搜索数据
直接上代码… /*** author gxq* date * <p>* 自定义注解(实现数据库查询,接口访问权限一系列)*/ Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE}) //表示此作用作用的目标&…...
企业网站设计费用/百度关键词优化策略
2019独角兽企业重金招聘Python工程师标准>>> jsp页面上实现表格的竖向合并。 01 /** 02 * 合并表格的列 03 * param {String} tableId要合并的表格的id 04 * param {int} fCol开始的列 05 * param {int} eCol结束的列 06 * return void 07 */ 08 func…...
代做网站在哪找活/北京百度竞价托管公司
2020年疫情爆发之初,雷神山和火神山在10天内迅速建立,在这惊人的速度背后,BIM技术功不可没,今天我们就一起来了解下BIM工程师。BIM是什么?BIM的中文名称为:建筑信息模型(Building Information M…...
沈阳专业网站制作/seo任务平台
第6章——集合引用类型6.本章内容将浏览器偏好语言设置为英文6.1 Object6.1.1 使用new Object()创建实例6.1.2 使用对象字面量表示法创建实例6.1.3 两种创建方式的区别——用字面量更好6.1.4 使用对象中的属性——点语法/中括号6.2 Array6.2.1 创建数组6.2.2 数组空位——不建议…...