人工智能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+ex1
请添加图片描述

  • 从图中可以看出,当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函数转换为匹配上的概率。概率值越大说明匹配度越高。
  • 一个神经网络可以由多层神经元构成,每个神经元表达了一种模式,越是靠近输入层的神经元表达的越是细粒度的特征,越是靠近输出层的神经元表达的越是粗粒度特征。同一层神经元越多,说明表达的相同粒度的模式越多,而神经网络层数越多,越能刻画不同粒度的特征。

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

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

相关文章

华为Mate60 Pro手机重大突破,资本要做空iPhone?Android开发市场将来会如何?

在9月10日有消息称,在华为的Mate60 Pro手机取得重大突破,其研发的 麒麟9000s芯片的研制, 国际卫星通信技术的应用 等这一系列的重大突破,导致美国的一家对冲基金Satori Fund创始人公开要做空iPhone。 而摩根大通发布报告称&#x…

十二、集合(5)

本章概要 for-in 和迭代器 适配器方法惯用法 本章小结 简单集合分类 for-in和迭代器 到目前为止,for-in 语法主要用于数组,但它也适用于任何 Collection 对象。实际上在使用 ArrayList 时,已经看到了一些使用它的示例,下面是它…

el-form表单中不同数据类型对应的时间格式化和校验规则

1. 在表单中, 当选择不同的数据类型时, 需要在下面选择时间时和数据类型对应上, 通过监听数据类型的变化, 给时间做格式化, 2. 但是当不按顺序选择数据类型后, 再选时间可能会报错, 所以需要在dom更新后, 再清空表单. 3. 校验规则, 结束时间需要大于开始时间, 但是不能选当前的…

排序算法:快速排序(三种排序方式、递归和非递归)

朋友们、伙计们,我们又见面了,本期来给大家解读一下有关排序算法的相关知识点,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:从入门到精通…

GeoNet: Unsupervised Learning of Dense Depth, Optical Flow and Camera Pose 论文阅读

论文信息 题目:GeoNet: Unsupervised Learning of Dense Depth, Optical Flow and Camera Pose 作者:Zhichao Yin and Jianping Shi 来源:CVPR 时间:2018 Abstract 我们提出了 GeoNet,这是一种联合无监督学习框架&a…

vim常用操作

一、Esc键 & 命令模式 1.撤销:u 恢复撤销:Ctrl r 2.定位 行首:0 行尾:$ 第7行:7G 3.编辑 下行开始插入: o 删除行:dd 复制3行并粘贴:3yy ---> p 复制单词并粘贴&#…

蓝桥杯官网练习题(玩具蛇)

题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 小蓝有一条玩具蛇,一共有 16 节,上面标着数字 1 至 16。每一节都是一个正方形的形状。相邻的两节可以成直线或者成 90 度角。 小蓝还有一个…

时序预测 | MATLAB实现ELM极限学习机时间序列预测未来

时序预测 | MATLAB实现ELM极限学习机时间序列预测未来 目录 时序预测 | MATLAB实现ELM极限学习机时间序列预测未来预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.MATLAB实现ELM极限学习机时间序列预测未来; 2.运行环境Matlab2018及以上,data为数…

【漏洞复现】H3C路由器信息泄露任意用户登录

漏洞描述 通过访问特地址得到密码可进行登录。 免责声明 技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共秩序,尊重社会公德,不得利用网络从事危害国家安全、荣誉和利益,未经授权请勿利用文章中…

CASAIM与南京航空航天大学在自动化叶片曲面分析系统开展合作,推动航空航天发动机零部件自动化3D检测进程

近期,CASAIM与南京航空航天大学在自动化叶片曲面分析系统展开深入合作,充分发挥双方在航空航天和智能检测领域优势,共同推动航空航天发动机零部件自动化3D检测进程。 南京航空航天大学创建于1952年10月,是新中国自己创办的第一批…

pyCharm远程DEBUG

第一步,添加一个远程机器的解释器 ssh 远程机器解释器添加, 我本地ssh有配置目标机器。 如果没配置,那就选着new server configuration 新增一个。 interpreter 指定远程机器python, (机器上有多个版本python里尤其要…

红队打靶:ConnectTheDots打靶思路详解(vulnhub)

目录 写在开头 第一步:主机发现和端口扫描 第二步:FTP和NFS渗透(失败) 第三步:web渗透 第四步:jsfuck解码 第五步:再次FTP渗透与莫尔斯电码解码 第六步:vim读取断电swp文件…

批量采集的时间管理与优化

在进行大规模数据采集时,如何合理安排和管理爬取任务的时间成为了每个专业程序员需要面对的挑战。本文将分享一些关于批量采集中时间管理和优化方面的实用技巧,帮助你提升爬虫工作效率。 1. 制定明确目标并设置合适频率 首先要明确自己所需获取数据的范…

Bazzite 发行版 1.0 发布,可让 Linux 游戏机实现 Steam Deck 桌面环境体验

导读近日消息,当下 Steam Deck 掌机的性能已经有所过时,不过许多玩家为了追求原生 SteamOS 体验依然选择购买该掌机,V社此前曾表示,“SteamOS 简化了在手持设备上玩 PC 游戏的过程”,玩家在用 Steam Deck 玩游戏时&…

BCSP-玄子Share-Java框基础_工厂模式/代理模式

三、设计模式 3.1 设计模式简介 软件设计中的三十六计是人们在长期的软件开发中的经验总结是对某些特定问题的经过实践检验的特定解决方法被广泛运用在 Java 框架技术中 3.1.1 设计模式的优点 设计模式是可复用的面向对象软件的基础可以更加简单方便地复用成功的设计和体系…

springcloud-Eureka

1.Eureka注册中心 1.1 简介与依赖导入 1.2 服务注册与发现 启动eureka模块 访问Eureka 将user-service,book-service,borrow-service作为eureka的客户端,先导包。三个导入方式一样。 配置文件,三个模块下都一样配置 然后分别启动三个模块 发现注册…

SpringMvc--CRUD

目录 一.什么是SpringMvc--CRUD 二.前期准备 公共页面跳转(专门用来处理页面跳转) 三.ssm之CRUD后端实现 配置pom.xml 双击mybatis-generator:generate自动生成mapper 编写generatorConfig.xml 项目结构 编写PagerAspect切面类 编写hpjyBiz接口类 编写hpjyBizImpl接…

JavaWeb_LeadNews_Day11-KafkaStream实现实时计算文章分数

JavaWeb_LeadNews_Day11-KafkaStream实现实时计算文章分数 KafkaStream概述案例-统计单词个数SpringBoot集成 实时计算文章分值来源Gitee KafkaStream 概述 Kafka Stream: 提供了对存储与Kafka内的数据进行流式处理和分析的功能特点: Kafka Stream提供了一个非常简单而轻量的…

Pytorch 多卡并行(1)—— 原理简介和 DDP 并行实践

近年来,深度学习模型的规模越来越大,需要处理的数据也越来越多,单卡训练的显存空间和计算效率都越来越难以满足需求。因此,多卡并行训练成为了一个必要的解决方案本文主要介绍使用 Pytorch 的 DistributedDataParallel&#xff08…

合宙Air724UG LuatOS-Air LVGL API控件-表格(Table)

表格(Table) 示例代码 --创建表格Table1 lvgl.table_create(lvgl.scr_act(),nil)--设置表格为4行5列lvgl.table_set_row_cnt(Table1,4)lvgl.table_set_col_cnt(Table1,5)--给每个单元格赋值lvgl.table_set_cell_value(Table1, 0, 0, "选手")l…