【深度学习-神经网络架构-通俗易懂的入门课程】

news2024/11/27 10:35:37

文章目录

    • 深度学习与AI的关系
    • 机器学习的流程
    • 机器学习的核心以及问题
    • 深度学习要解决的问题
      • 模型如何搭建?
      • 特征如何提取?
      • 为什么要深度学习?
    • 深度学习的应用
    • 深度学习的问题
    • 计算机视觉任务
      • 分类与检索
      • 如何实现分类
    • 神经网络基础
      • 线性函数
      • 损失函数
        • 防止过拟合
      • 前向传播
      • 反向传播
        • 反向传播的计算方法
      • 神经网络的架构
        • 输入层 输出层 隐藏层
        • 全连接层
        • 神经元
          • 神经元对网络的影响:
          • 惩罚粒度对结果拟合的影响
        • 激活函数
        • 数据预处理
        • 参数初始化
        • 过拟合解决方法

深度学习与AI的关系

在这里插入图片描述

AI 包括 机器学习 包括 深度学习
目前深度学习的算法表现更好

机器学习的流程

数据获取
特征工程
建立模型
评估与应用

机器学习的核心以及问题

特征、算法
特征决定了模型的上限,算法和参数决定了如何去逼近这个基线

问题:传统的机器学习算法,在数据规模上升时,效果无法提升
在这里插入图片描述

深度学习要解决的问题

模型如何搭建?

领域都有成型的模型,每年都有很多优秀的论文可以参考,反而特征提取更加重要

特征如何提取?

数值特征比较好提取
但是文本和图像 音视频等怎么提取呢?
留到下文详述

为什么要深度学习?

深度学习是一个黑盒子,能够提取出来最合适的特征,且能够自我学习更新,具备强大的学习能力

深度学习的应用

视觉类和自然语言类

  • 视觉类任务
    目标检测:无人驾驶汽车 怎么识别和检测目标
    在这里插入图片描述

医学 影像识别 基因检测
在这里插入图片描述

  • 自然语言处理
    聊天机器人,生成对话机器人

  • 人脸识别 人脸替换
    在这里插入图片描述

  • 超分辨率重构

深度学习的问题

计算量很大
计算中涉及的参数上千万 上亿,计算和更新耗时很长
因此移动端不能很好的支持

计算机视觉任务

分类与检索

分类是指:让程序分类图片是什么,
由斯坦福大学的李飞飞教授带领创建IMAGENET分类数据集。该数据集包合 14,197,122张图片和21,841个Synset索引,基本可涵盖大部分分类了。
在这里插入图片描述

如何实现分类

  • 传统的算法识别图片类别的方法:

比如K临近算法
在这里插入图片描述
以上图为例:
选择离目标最近的3个点,比如第一个圈部分,三角形居多,那这个图片的分类就很可能是三角形。
但是这也有问题,如果选择的K是5个呢? 那这个类别的判定就是正方形,分类截然相反

  • 以像素的近似点分类
    先看一下,图像在计算中的表现形式,以3通道为例:RGB 3通道,一个3维 0到255的图像(h, w, c)形式
    比如543的图片为例,在计算机中的表示

在这里插入图片描述

在这里插入图片描述
这样一个3维的像素数据如何判定出图片类别呢?
既然颜色的明亮程度可以用像素值类标识,最先想到的就是找出一些分类目标图片,计算输入图片与分类图片的像素差,哪两个个像素差最小,就归属于哪一类,最终分类的效果如下:
在这里插入图片描述
可以看出来部分图片的分类是正确,但是还有很大一部分是错误的,比如马被识别到了翻斗车的类别里
问题出在哪里呢?
首先无法区分背景和主题,对一幅图片来说,主题和背景的权重应该是不一样的,显然像素值的大小无法应对这种情况,另外还有如下所述的难点:

面临的挑战
比如照射的角度会导致像素变化
比如主体被别的东西遮蔽了
在这里插入图片描述
形状改变了
在这里插入图片描述
被挡住了一部分
在这里插入图片描述
背景混子在一起:
在这里插入图片描述
如何解决呢?
具体实现方式:
学习一次就知道了,比如遮蔽的情况,找一些类似的图片进行标注,进行学习
,通过学习后的网络就会记住这些特征也是属于这种分类的

神经网络基础

线性函数

(32,32,3)的图像 ,目标就是能计算它属于每个分类的得分。
这个猫是由3072个像素点决定的,也就是所谓的特征有3072个,记为x,怎么得出分值呢?
首先我们考虑一个问题,每个像素点对于这个猫的重要程度一样么?
答案是肯定不一样,比如背景的像素点是不相关的,重要程度低
比如眼睛,耳朵等等的像素点很重要,需要一个高的权重参数
所以需要3072个权重参数,来标注这个像素对于这个分类的重要程度
在这里插入图片描述

我们用一个w(3072)标识 每个像素是猫这个分类的权重
如果是判定十分类,就需要3072组w,10*3072大小的权重矩阵,分别去表示3073个像素分别对应10分类的权重。

矩阵中的数字的意义:
越大的权重数据说明,当前的这个像素,对这个类别比较重要
权重中的负数表示对这个类别是抑制的作用
0表示对这个类别没有作用

这个矩阵哪里来的?
初始是随机值
比如现在判定错了,说明是权重不太对,想出一种方法,不断的去优化权重矩阵,直至能够区分出这个分类。那么问题来了,这个优化方法是什么?答案是利用损失函数

损失函数

损失函数的作用是来衡量分类的结果的,神经网络可以分类可以回归等,相同的网络,配以不同的损失函数,就可以完成不同的任务。

举个例子:经过神经网络输出猫 狗 飞机的分数是22 56 48,损失函数sum(max(0, y_predict - y_true)),这样设计的损失函数,在分类正确时,损失就为0

另一个问题,损失函数有不同的类型,如果损失函数的值相同,意味着模型相同么?如下的例子:

比如输入数据 1,1,1,1
模型1最终w1 [1,0,0,0]
模型2最终w2 [0.25, 0.25, 0.25, 0.25]

答案肯定是否定的,这两个模型肯定是不同的,虽然这两个参数与输入矩阵相乘后损失相同的。第一个模型是一种突然的变化,就容易导致结果过拟合

防止过拟合

通常为了防止过拟合,损失函数都设计为加上正则化的惩罚项:
损失函数 = 数据损失 + 正则化的惩罚项

我们总是希望模型不要太复杂,过拟合的模型是没用的,神经网络太强大了,而越强大的模型,过拟合就越大

前向传播

在这里插入图片描述

f(w, x)计算损失的过程,就是所谓的前向传播。

更进一步,在神经网络中,最终到的是一个分数值,但如果给我们一个概率的话是不是更好?
在这里插入图片描述
这就是通常所说的 归一化f,在这里插入图片描述

在这里插入图片描述

e指数次幂可以放大变化,上述可以归为0.1区间的概率值,也是常说的softmax

反向传播

由输入一步步计算出损失,是正向传播
那么如何更新模型呢? 更新模型的实质就是更新权重w, 这就是所谓的反向传播(也叫梯度下降)

反向传播的计算方法

当我们得到了一个目标损失函数后,让损失尽可能的小,结果就越靠近真实值,那怎么去求解呢?
寻找一种方法,更新后的参数能使目标函数达到极值点,极值点又是怎么求?数学上已经证明了的是极值点导数为0的点,这就是所谓的更新的方向。

我们需要从损失出发,向前去寻找导数为0的点,这种从后向前传播的过程就是反向传播,具体来说的计算方法是用了导数的链式法则

在这里插入图片描述
传播就是根据这个法则一步步往后计算的,常见的梯度下降算法:

  • 批量梯度下降:
    容易得到最优解,但是考虑所有样本,速度很慢

  • 随机梯度下降SGD
    每次找一个样本,迭代速度快,但不一定是朝收敛的方向

  • 小批量梯度下降
    每一次更新选择一小部分数据来算

学习率(或步长):
梯度下降的粒度,它对结果产生巨大影响,一般都会选择小一点

另外每次批处理的数量: 32 64 128都可以,很多时候需要考虑内存和效率

神经网络的架构

在这里插入图片描述

输入层 输出层 隐藏层

除了输入和输出,其它层叫做隐藏层

全连接层

中间这些连接线,其实就是所谓的参数,被称为全连接层,实质上是权重矩阵,意义是什么呢?比如上述对于10分类的权重矩阵,是对3072个像素的每个像素点,10个分类的不同权重。

神经元

隐层中的特征个数

神经元对网络的影响:
  1. 参数个数
    举个例子 (800,600,3)的图片 100万个像素点,100w输入,增加一个神经元,1个隐层就增加100w个参数
  2. 拟合的程度
    斯坦福大学有一个网站,可以显示神经元个数对分类的影响 https://cs.stanford.edu/people/karpathy/convnetjs/demo/classify2d.html

在这里插入图片描述
上图分别是2和6个神经元的展示结果,6确实是更拟合

惩罚粒度对结果拟合的影响

在这里插入图片描述
显然这里,更大的惩罚力度,可以让模型更稳定

激活函数

非线性函数 sigmod RELU tanh 等
实际上几乎每个隐藏层后面都还包括一些激活函数,加入一些非线性特征,常用的激活函数及其优缺点:
在这里插入图片描述
如上所述,sigmod 一旦数值较大或者较小,sigmod函数获取不到了,也就是所谓的梯度消失
ReLU及变种,是当前最常用的激活函数

数据预处理

zero center 移动中心点 , normalized 缩小尺寸

在这里插入图片描述

参数初始化

一般都是随即策略进行参数初始化

过拟合解决方法

  1. 正则化
  2. 惩罚力度
  3. drop out 舍弃一部分神经元
  4. 其他

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

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

相关文章

Golang 中的可测试示例函数(Example Function)详解

Golang 可测试示例含函数 (Example Function) 示例函数类似于单元测试函数,但没有 *testing 类型的参数。编写示例函数也是很容易的: 创建对应的测试文件:在 Go 项目的源代码目录下创建一个新的文件(和被测代码文件在同一个包&…

Java 知识合集 | 多线程与并发

👨🏻‍💻 热爱摄影的程序员 👨🏻‍🎨 喜欢编码的设计师 🧕🏻 擅长设计的剪辑师 🧑🏻‍🏫 一位高冷无情的编码爱好者 大家好,我是 DevO…

C++初阶之内存分布

C/C内存管理 C/C内存分布C语言中动态内存管理方式:malloc/calloc/realloc/free1.malloc和free2.calloc3.realloc4.常见的动态内存错误 C内存管理方式1.new/delete操作内置类型2.new和delete操作自定义类型3.new和malloc使用上的区别 operator new与operator delete函…

设计模式: 23重设计模式

设计模式 设计模式概述设计模式的概念设计模式的组成23种设计模式设计模式与软件架构设计模式分类创建型设计模式结构型设计模式行为型设计模式 设计模式概述 在20世纪70年代,Christopher Alexander 提出了城市建筑的模式,他认为:模式是描述…

Windows的内部结构API

Windows内部结构 由于 Windows 机器构成了企业基础设施的大部分,红队需要了解 Windows 的内部结构以及如何(滥用)使用它们。在制作攻击性工具或漏洞利用时,红队可以滥用这些来帮助规避和利用。 进程 进程维护并代表程序的执行&…

Abaqus 中的步进、增量、迭代和尝试概念 硕迪科技

Abaqus 中的步进、增量、迭代和尝试等可能会在概念上让 Abaqus 初学者感到困惑。清楚地了解分析步骤、荷载增量和迭代之间的区别非常重要。在这篇文章中快速了解 Abaqus 步骤和增量迭代。 在ABAQUS中,步进增量迭代是解决非线性问题的一种数值计算方法。这种方法通常…

【分布式】1、CAP 理论 | 一致性、可用性、分区容忍性

文章目录 一、CAP 理论1.1 Consistency 一致性1.2 Availbility 可用性1.3 Partition Tolerance 分区容忍性1.4 CAP 应用1.4.1 CP1.4.2 AP 二、CAP 实践2.1 ACID2.2 BASE 一、CAP 理论 是 2002 年证明的定理,原文,内容如下: In a distributed…

Day52: 84.柱状图中最大的矩形

84.柱状图中最大的矩形 84. 柱状图中最大的矩形 - 力扣(LeetCode) 思路 本题是要找每个柱子左右两边第一个小于该柱子的柱子,所以从栈头(元素从栈头弹出)到栈底的顺序是从大到小的顺序。例: 三种情况&a…

安装 VNC 服务器-iTOPRK3588开发板

开发板联网以后,在串口终端输入以下命令: sudo apt-get update sudo apt-get upgrade sudo apt-get install tightvncserver apt-get install xfonts-base 安装完毕之后,在串口终端输入以下命令运行 vnc tightvncserver 然后要求设置密…

算法专题:投票法

文章目录 169.多数元素(找频率>n/2,且多数元素一定存在)思路完整版补充:注意点 面试题 17.10. 主要元素(找频率>n/2,但多数元素不一定存在)思路完整版 229.多数元素Ⅱ(找频率&…

“智能文件批量改名工具:轻松去除文件名中的特殊符号“

您是否曾经为繁杂的文件命名而感到困扰?特殊符号导致文件名混乱难辨,给您的工作和学习带来不便?现在,我们的智能文件批量改名工具为您解决这一难题! 首先,我们要进行文件批量改名高手主页面,并…

基于Docker容器安装TensorFlow测试GPU

前言 当基于nvidia gpu开发的docker镜像在实际部署时,需要先安装nvidia docker。安装nvidia docker前需要先安装原生docker compose 1. CentOS7安装docker详细教程 安装docker 1. Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验…

【iOS】CALayer的理解与简单使用

文章目录 前言一、UIView与CALayer的关系二、CALayer的简单使用1.圆角与裁剪2.contents3.边框属性 总结 前言 在实现网易云音乐demo开发的过程中,通过查阅网上资料,发现了我们可以对我们的视图进行裁剪来实现美观的体现,例如这样&#xff1a…

支付宝原生小程序组件与父级传递数据(微信小程序基本一样)

1. 声明组件 在对应的目录下,右击点击 新建小程序,之后会生成对应的文件 2. 子组件 Component({data: {colorList: [#165FF6, #3D16F6,

【C++杂货铺】拷贝构造函数

📖定义 拷贝构造函数是构造函数的一个重载,它的本质还是构造函数,那就意味着,只有在创建对象的时候,编译器才会自动调用它,那他和普通的构造函数有什么区别呢? 拷贝构造函数,是创建…

Ubuntu系统开发环境搭建和常用软件

目录 安装PHP7.3 安装MySQL5.7 安装Nginx 配置Nginx支持PHP 安装Jetbrains全家桶 将程序加入到桌面和收藏夹 安装Navicat15 安装 redis和客户端工具 截图工具 终端修改 其它软件 当前我的系统是Ubuntu22.04: 安装PHP7.3 如果使用 apt install php 默认应…

一文讲透 Redis 事务 (事务模式 VS Lua 脚本)

准确的讲,Redis 事务包含两种模式 : 事务模式 和 Lua 脚本。 先说结论: Redis 的事务模式具备如下特点: 保证隔离性; 无法保证持久性; 具备了一定的原子性,但不支持回滚; 一致性的概念有分歧…

BI-SQL丨XML PATH

XML PATH 在SQL Server中,XML数据类型的应用范围是非常宽泛的,除了可以使用value和nodes处理一行拆多行的情况,我们还可以使用PATH处理多行合并成一行。 使用实例 例子:使用PATH处理多行合并成一行。 创建一张表,表…

在vsCode 中执行Electron 项目时,出现中文乱码问题

问题:vscode 中执行Electron 项目时,控制台出现乱码 解决方法: 在 terminal 修改编码格式:65001代表UTF-8,936代表GBK

freeswitch的mod_xml_cdr模块

概述 freeswitch是一款简单好用的VOIP开源软交换平台。 在语音呼叫的过程中,话单是重要的计价和结算依据,话单的产生需要稳定可靠,可回溯。 fs中的mod_xml_cdr模块提供了基本话单功能之外的选择,可以输出XML格式的本地话单或通…