【深度学习I-基础知识】

在这里插入图片描述

深度学习I-基础知识

  • 1 基础知识
    • 1.1 模型的基本概念
    • 1.2 机器学习
      • 1.2.1 概率建模
      • 1.2.2 核方法
      • 1.2.3 决策树、随机森林和梯度提升机
    • 1.3 深度学习
      • 1.3.1 张量
      • 1.3.2 数据批量
      • 1.3.3 张量运算
      • 1.3.4 训练过程

1 基础知识

1.1 模型的基本概念

模型是现实世界中一类具有泛化共性的真实系统的数字化映像,是客观事物的简化表示,是连接真实世界和数字化世界的桥梁,源于现实世界,生根于数字化世界。

特点

(1)可执行性:一个模型可以将现实世界的目标系统通过公式化的表示转为数字化世界,每一步都有坚实的计算基础和状态转换,并且还能从数字化世界转回现实世界。从这个意义上说,模型就是计算机,模型思维就是计算思维。

(2)普适性:一个模型,是用同一个有共性的计算机制所刻画的一族“长得很像”的现实世界真实系统。模型越有普适性,就越成功、越深入人心、越有应用价值。模型越有普适性,就意味着只需在参数上做一定的调整,就可以使模型快速适配一个在其覆盖范围内未知的、具体的现实世界真实系统。从这个意义上来说,模型就是生产力,模型思维就是解放生产力。

(3)数据驱动:一个模型与现实世界中被它所刻画的目标系统之间,事先就达成完美对应是非常罕见的。在大多数情况下,必须通过目标系统的外在表现来确定模型中的待定参数。这就是学习。学习,是模型方法最核心的部分。在模型基本确定的情况下,这个模型在能力上的“天花板”也随之确定。好的学习算法可以更快地触达这个模型的“天花板”,但无法突破这个“天花板”。要想突破“天花板”,还需要有更好的模型。从这个意义上来说,模型就是数据驱动的、带参数的计算框架,模型思维就是把数据转换为知识的框架设计。

1.2 机器学习

机器学习通过观察许多输入和目标的示例,来完成将输入(比如图像)映射到目标(比如标签“猫”)的过程)。大多数机器学习工作流程:
在这里插入图片描述

先来了解一下机器学习都有哪些方法。

1.2.1 概率建模

朴素贝叶斯算法是最著名的概率建模算法之一。该算法是一种机器学习分类器,“朴素”的假设输入数据的特征都是独立的。
logistic回归(logistic regression, 简称logreg)也是一种分类算法。

1.2.2 核方法

核方法是一组分类算法,其中最有名的是支持向量机(support vector machine, SVM)。SVM的原理是找到划分两个类别的“决策边界”,通过以下两步:

(1)将数据映射到新的高维表示,以便将决策边界可以用超平面表示(若数据图像是二维的,那么超平面就是一条直线)。

(2)尽量让超平面与每个类别最近的数据点之间的距离最大化,从而计算出良好的决策边界,也就是分离超平面,也称之为间隔最大化,使得决策边界可以很好地推广到训练数据集之外的新样本。

核技巧的基本思想是:要在新的表示空间中找到良好的决策超平面,不需要直接计算点在新空间中的坐标,只需要计算在新空间中点与点之间的距离,而利用核函数可以高效地完成这种计算。核函数(kernel function)是一个在计算上容易实现的运算,它将初始空间中的任意两点映射为这两点在目标表示空间中的距离,从而完全避免了直接计算新的表示。核函数通常是人为选择的,而不是从数据中学到的——对于SVM来说,只有分离超平面是通过学习得到的。

但是,SVM很难扩展到大型数据集,并且在图像分类等感知问题上的效果也不好。SVM是一种浅层方法,因此要将其应用于感知问题,首先需要手动提取出有用的表示(这一步骤叫作特征工程)。这一步骤很难,而且不稳定。如果想用SVM来进行手写数字分类,那么你不能从原始像素开始,而应该首先手动找到有用的表示(比如前面提到的像素直方图),使问题变得更易于处理。

1.2.3 决策树、随机森林和梯度提升机

决策树(decision tree)是类似于流程图的结构,可以对输入数据进行分类或根据输入预测输出值,如图所示。决策树的可视化和解释都很简单。在21世纪前10年,从数据中进行学习的决策树开始引起研究人员的浓厚兴趣。到了2010年,决策树往往比核方法更受欢迎。
在这里插入图片描述

随机森林(random forest)算法引入了一种稳健且实用的决策树学习方法,即首先构建许多专门的决策树,然后将它们的输出集成在一起。随机森林适用于各种各样的问题——对于任何浅层的机器学习任务来说,它几乎总是第二好的算法。广受欢迎的机器学习竞赛网站Kaggle在2010年上线后,随机森林迅速成为该平台用户的最爱,直到2014年才被梯度提升机(gradient boosting machine)所取代。

与随机森林类似,梯度提升机也是将弱预测模型(通常是决策树)进行集成的机器学习技术。它使用了梯度提升(gradient boosting)方法,这种方法通过迭代地训练新模型来专门弥补原有模型的弱点,从而可以提升任何机器学习模型的效果。将梯度提升技术应用于决策树时,得到的模型与随机森林具有相似的性质,但在绝大多数情况下效果更好。它可能是目前处理非感知数据最好的算法之一(如果非要加“之一”的话)。和深度学习一样,它也是Kaggle竞赛中十分常用的技术。最常用的:scikit-learn、LightGBM库和XGBoost库。

1.3 深度学习

深度学习是机器学习的一个分支领域,是一种从数据中学习表示的新方法,旨在同一时间从连续的层中共同学习越来越有意义的表示,可以处理各种非结构化数据,如文本、图像、音频、视频等。因此,深度学习的“深度”指的是一系列连续的表示层。理论上,深度学习是从数据中学习表示的一种数学框架。通过深度神经网络的模型学习得到深度学习的分层表示,整个过程可以看作多级信息蒸馏,即信息穿过连续的过滤器,其纯度越来越高,对于任务的帮助越来越大。学习的意思就是为神经网络的所有层找到一组权重值,使得该神经网络能够将每个示例的输入与其目标正确地一一对应。

深度神经网络通过一系列简单的数据变换(层)来实现这种输入到目标的映射,这些数据变换也都是通过观察示例学习得到的。为高维空间中复杂、高度折叠的数据流形找到简洁的表示。(这里的流形指的是一个连续的表面,例如将一个乱纸团恢复成平整的变换。)
在这里插入图片描述

权重(也称为参数):在神经网络中,用于存储每层对输入数据所做的具体操作,实质上是一串数字。也就是说,每层实现的变换是由其权重来参数化

损失函数(也称为目标函数或者代价函数):用于衡量预测值与真实目标值之间的距离。损失值作为反馈信号,来对权重值进行微调,以降低当前示例对应的损失值;

优化器:用于调节权重值。实现了反向传播算法;
在这里插入图片描述

1.3.1 张量

数据表示:张量;也就是存储在多维NumPy数组。

张量是一个数据容器。张量是矩阵向任意维度的推广,张量的维度通常叫作轴,轴的个数也称之为阶。

标量类型形状举例
标量(0阶张量)一个float32或float类型的数字就是一个标量张量(或标量数组)x=np.array(12)
x.ndim //查看张量的维度
向量(1阶张量)数字组成的数组叫作向量1维张量只有一个轴
矩阵(2阶张量)向量组成的数组叫作矩阵有2个轴,行和列
3阶张量和更高阶张量将多个矩阵打包成一个新的数组称为3阶张量
将多个3阶张量打包成一个数组称为4阶张量
处理视频数据时可以会遇到5阶张量

张量关键属性:轴的个数、形状、数据类型;

关键属性定义
轴的个数即张量的阶数或者维度;如3阶张量有3个轴,矩阵有2个轴
形状是一个整数元组,表示张量沿每个轴的维度大小或者元素个数,如标量:()、向量:(2)、矩阵:(3,5)、3阶张量:(1280,45,2)
数据类型可以是float16、float32/float、float64、int64/long、int32、int16、int8、uint8、string等

1.3.2 数据批量

深度学习模型不会一次性处理整个数据集,而是将数据拆分为小批量。如批量大小为128

# 第1批
batch = train_images[:128]
# 第2批
batch = train_images[128:256]
# 第n批
n = 3
batch = train_images[128 * n : 128 * (n + 1)]

列举几个数据张量:

类别形状样本
向量数据2阶张量(samples, features)每个样本都是一个数值(‘特征’)向量
时间序列数据或序列数据3阶张量(samples, timesteps, features)每个样本都是特征向量组成的序列,timesteps表序列长度
图像数据4阶张量(samples, height,width,channels)每个样本都是一个二维像素网格,每个像素由一个通道向量表示
视频数据5阶张量(samples, frames, height,width,channels)每个样本都是由图像组成的序列(序列长度为frames)

1.3.3 张量运算

深度神经网络学到的所有变换都可简化为对数值数据张量的一张张量运算或张量函数(如张量加法、张量乘法)。

张量运算的几何解释:

概念几何解释
张量的元素可看作某个几何空间中的点的坐标
平移二维平移相当于向量加法
旋转二维向量旋转通过与矩阵做点积运算,如:R = [[cos(theta), -sin(theta)], [sin(theta), cos(theta)]]
缩放二维向量旋转通过与对角矩阵做点积运算,如:S=[[horizontal_factor,0], [0, vertical_factor]]。
线性变换与任意矩阵做点积运算,都可以实现一次线性变换。如前面所说的缩放和旋转,都属于线性变换
仿射变换仿射变换是一次线性变换(通过与某个矩阵做点积运算来实现)与一次平移(通过向量加法来实现)的组合。如

仿射变换样例: y = W ⋅ x + b y = W\cdot x + b y=Wx+b

上式的运算样例就是Dense层所实现的,一个没有激活函数的Dense层就是一个仿射层,仿射变换是线性模型,那么俩个仿射变换:affine2(affine1(x)) = W2•(W1•x + b1) +b2 = (W2•W1)•x + (W2•b1 + b2),依然是线性的,因此,激活函数作用:一连串Dense层可以实现非常复杂的非线性几何变换,从而为深度神经网络提供非常丰富的假设空间。

1.3.4 训练过程

训练具体流程:

在这里插入图片描述

几种梯度下降方法介绍:

1、小批量随机梯度下降(mini-batch stochastic gradient descent,简称小批量SGD):每次迭代都是随机抽取一批数据,在调节参数时,也是对当前在随机数据批量上的损失值一点一点进行参数调节;

2、真SGD(True SGD):SGD的一个变体,每次迭代只抽取一个样本和目标,而不是抽取一批数据。

3、批量梯度下降(batch gradient descent):每次迭代都是在所有数据上运行,每次更新权重都会更准确,但计算成本也更高。

4、带动量的SGD:计算下一次权重更新时还要考虑上一次权重更新,而不是仅考虑当前的梯度值。解决了收敛速度和局部极小值。与其类似的,还有Adagrad和RMSprop等SGD变体。这些变体也称为优化方法(optimization method)或者优化器(optimizer)。

past_velocity = 0.
momentum = 0.1  ←----不变的动量因子
while loss > 0.01:  ←----优化循环w, loss, gradient = get_current_parameters()velocity = past_velocity * momentum - learning_rate * gradientw = w + momentum * velocity - learning_rate * gradientpast_velocity = velocityupdate_parameter(w)

5、链式法则:反向传播

神经网络由许多链接在一起的张量运算组成,每个张量运算的导数都是已知的,且都很简单。

例如,如复合函数fg(x)==f(g(x)); 令 x1 = g(x) , y = f(x1),链式法则规定:grad(y, x) == grad(y, x1) * grad(x1, x),因此只要f和g的导数,即可求出fg的导数,如果添加更多的中间函数,看起来就像一条链,这也是链式法则名字的由来。

再例如 fghj(x): x1 = j(x) x2 = h(x1) x3 = g(x2) y = f(x3) ;根据链式法则: grad(y, x) == (grad(y, x3) * grad(x3, x2) * grad(x2, x1) * grad(x1, x))。

反向传播算法是将链式法则应用于神经网络梯度值的计算,从最终损失值开始,自下而上反向运行,计算每个参数对损失值的贡献。反向传播算法的工作原理是用计算图进行自动微分。计算图是Pytorch和深度学习革命的核心数据结构,是一种由运算(如张量运算)构成的有向无环图。计算图可将计算看作数据,将可计算的表达式 编码为 机器可读的数据结构,然后用于另一个程序的输入或输出。打个比方,有这样一个程序:接收一个计算图作为输入,并返回一个新的计算图,新计算图可实现相同计算的大规模分布式版本。或者接收一个计算图作为输入,然后自动计算它所对应表达式的导数。下图是双层模型的计算图表示和反向传播简化样例:
1) 计算图表示:
在这里插入图片描述
2)反向传播简化样例
在这里插入图片描述

反向传播grad(loss_val, w)= grad(loss_val, x2) * grad(x2, x1) * grad(x1, w),得到的结果:

grad(loss_val, w) = 1 * 1 * 2 = 2
grad(loss_val, b) = 1 * 1 = 1

超参数: 在整个训练开始之前确定,因为在训练过程中无法通过学习来确定这个值。


更多有关“深度学习”的内容,后续将会发布,未完待续…
在这里插入图片描述

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

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

相关文章

canvas截取视频图像(图文示例)

查看专栏目录 canvas示例教程100专栏,提供canvas的基础知识,高级动画,相关应用扩展等信息。canvas作为html的一部分,是图像图标地图可视化的一个重要的基础,学好了canvas,在其他的一些应用上将会起到非常重…

2023一带一路暨金砖国家技能发展与技术创新大赛“网络安全”赛项省选拔赛样题卷②

2023金砖国家职业技能竞赛"网络安全" 赛项省赛选拔赛样题 2023金砖国家职业技能竞赛 省赛选拔赛样题第一阶段:职业素养与理论技能项目1. 职业素养项目1. 职业素养项目2. 网络安全项目3. 安全运营 第二阶段:安全运营项目1. 操作系统安全配置与加…

Docker部署的gitlab升级指南(15.11.X容器里升级PostgreSQL到13.8)

一、确定当前版本 #进入当前版本容器产看gitlab版本 docker exec -it gitlab cat /opt/gitlab/embedded/service/gitlab-rails/VERSION#显示版本如下 14.4.0二、备份数据,防止升级发生意外 #执行备份命令 docker exec -ti gitlab gitlab-rake gitlab:backup:creat…

go的安装及配置

go的官方下载地址:All releases - The Go Programming Language​​​​​​ 1、找到对应的版本包下载,例如 wget https://golang.google.cn/dl/go1.21.6.linux-amd64.tar.gz 2、下载完成后配置解压Go源码包 tar -zxf go1.21.6.linux-amd64.tar.gz 3…

【IC设计】ICer‘s 乾坤大挪移——FSM状态机

目录 理论解读状态机定义状态转移图Mealy和Moore型状态机推荐写“新两段式状态机” 设计实战可乐机两种state的FSM(异步复位)4种状态的one-hot状态机4种状态的同步复位状态机蓄水池问题 参考链接 理论解读 状态机定义 状态机简写为 FSM(Fin…

Python3 索引下标及切片完全指南

介绍 Python 字符串数据类型是由一个或多个字符组成的序列,可以包含字母、数字、空格字符或符号。由于字符串是一个序列,我们可以通过索引和切片的方式访问它,就像访问其他基于序列的数据类型一样。 本教程将指导您通过索引访问字符串&…

网络攻击与检测防御:维护数字安全的关键挑战

随着数字化时代的深入,网络攻击已成为企业和个人面临的严峻挑战之一。本文将深入探讨不同类型的网络攻击,以及有效的检测和防御策略,以确保网络系统的安全性和稳定性。 1. 常见网络攻击类型: DDoS 攻击:分布式拒绝服…

IOC之Spring统一资源加载策略

前言 在学 Java的时候,我们学习了一个标准类 java.net.URL,该类在 Java SE 中的定位为统一资源定位器(Uniform Resource Locator),但是我们知道它的实现基本只限于网络形式发布的资源的查找和定位。然而,实…

生成式对抗网络GAN

Generative Adversarial Nets由伊恩古德费洛(Ian J.Goodfellow)等人于2014年发表在Conference on Neural Information Processing Systems (NeurIPS)上。NeurIPS是机器学习和计算神经科学领域的顶级国际学术会议之一。 1. GAN在哪些领域大放异彩 图像生…

黑马苍穹外卖学习Day6

HttpClient 介绍 HttpClient 是 Apache 提供的一个开源的 Java HTTP 客户端库,用于发送 HTTP 请求和处理 HTTP 响应。它提供了一种更简便的方式来执行 HTTP 请求,并支持多种协议,如 HTTP、HTTPS、FTP 等。 使用 HttpClient 可以方便地与远程…

MySQL体系结构

MySQL体系结构 MySQL采用的是客户/服务器体系结构,实际是有两个程序,一个是MySQL服务器程序,指的是mysqld程序,运行在存放数据库的机器上,负责在网络上监听并处理来自客户的服务请求,根据这些请求去访问数据…

边缘计算的挑战和机遇(结合RDH-EI)

边缘计算的挑战和机遇 边缘计算面临着数据安全与隐私保护、网络稳定性等挑战,但同时也带来了更强的实时性和本地处理能力,为企业降低了成本和压力,提高了数据处理效率。因此,边缘计算既带来了挑战也带来了机遇,需要我…

Unity之物理系统

专栏的上一篇角色控制器控制角色移动跳崖,这一篇来说说Unity的物理系统。 本篇小编还要带大家做一个碰撞检测效果实例,先放效果图:流星撞击地面产生爆炸效果 一、Rigidbody 我们给胶囊添加了 Rigidbody 组件它才有的重力,我们来…

逸学Docker【java工程师基础】3.3Docker安装nacos

docker pull nacos/nacos-server docker network create nacos_network #创建容器网络 docker run -d \ --name nacos \ --privileged \ --cgroupns host \ --env JVM_XMX256m \ --env MODEstandalone \ --env JVM_XMS256m \ -p 8848:8848/tcp \ -p 9848:9848…

图解拒付平台:如何应对用户的拒付

这是《百图解码支付系统设计与实现》专栏系列文章中的第(5)篇。 本章主要讲清楚支付系统中拒付涉及的基本概念,产品架构、系统架构,以及一些核心的流程和相关领域模型、状态机设计等。 1. 前言 拒付在中国比较少见,但…

教你用五步让千年的兵马俑跳上现代的科目三?

以下是一张我上月去西安拍的兵马俑照片: 使用通义千问,5步就能它舞动起来,跳上现在流行的“科目三”舞蹈。 千年兵马俑跳上科目三 全民舞王 第1步 打开通义千问App,我使用的是华为手机,苹果版的没试; 在…

把握现货黄金的基本操作技巧

在投资市场这个大舞台上,有各种各样的投资产品供投资者选择,其中黄金作为一种重要的投资资产,一直受到广大投资者的青睐。然而,黄金交易并非易事,需要掌握一定的操作技巧。那么,如何才能把握住现货黄金的操…

YOLOv5改进 | 主干篇 | 12月份最新成果TransNeXt特征提取网络(全网首发)

一、本文介绍 本文给大家带来的改进机制是TransNeXt特征提取网络,其发表于2023年的12月份是一个最新最前沿的网络模型,将其应用在我们的特征提取网络来提取特征,同时本文给大家解决其自带的一个报错,通过结合聚合的像素聚焦注意力和卷积GLU&…

《绝地求生》职业选手画面设置推荐 绝地求生画面怎么设置最好

《绝地求生》画面怎么设置最好是很多玩家心中的疑问,如果性能不是问题无疑高特效显示效果更好,但并不是所有画面参数都利于战斗,今天闲游盒带来分享的《绝地求生》职业选手画面设置推荐,赶紧来看看吧。 当前PUBG的图像设置的重要性…

彝族民居一大特色——土掌房

彝族民居一大特色——土掌房在彝区,各地、各支系传承的居室建筑形式是多种多样的,并与当地的居住习俗有密切关联,从村寨的聚落到住宅的地址;从房间的分置到什物的堆放;从建筑结构到民居信仰和禁忌,都表现出…