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

news2024/11/17 11:30:55

在这里插入图片描述

深度学习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 * gradient
    w = w + momentum * velocity - learning_rate * gradient
    past_velocity = velocity
    update_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.coloradmin.cn/o/1386553.html

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

相关文章

2024 外网数字化考试——精准限制只允许访问考试站点

一、适用场景: 1、防止考试作弊。校园内,需要用到外网的某个考试站点时,只允许浏览器访问考试网站,别的网站不允许访问时(避免使用搜索引擎搜索参考或答案)。 2、网络流量给教学资源,杜绝网络娱…

企业级做项目的流程

目录标题 前言企业做项目的流程 ⭐⭐总结 前言 我们平时在学校里做项目或者大作业的时候,基本上都是个人开发的,即使有小组一起开发,一般也不会遵守开发规范。最近入职一家企业开始实习,才发现开发规范竟然如此重要,因…

【数据结构】排序之归并排序与计数排序

个人主页 : zxctsclrjjjcph 文章封面来自:艺术家–贤海林 如有转载请先通知 目录 1. 前言2. 归并排序2.1 递归实现2.1.1 分析2.1.2 代码实现 2.2 非递归实现2.2.1 分析2.2.2 代码实现 3. 计数排序3.1 分析3.2 代码实现 4. 附代码4.1 Sort.h4.2 Sort.c4.3…

2. 示例:Spring Boot 入门

1.1 概述 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。习惯优于配置 1.2 为什么使用Spring Boot J2EE笨重的开发、繁多的配置、低下的开发效率、复杂的部署流程、第三方技术集成难度大。 1.3 Spring Bo…

【python】进阶--->MySQL数据库(四)

一、主键约束 primary key : 唯一标识数据库中的每一条记录. 被主键的值唯一 主键列不能为null 每个表应该都要设置主键添加主键约束 在创建表时,直接在字段后面添加主键约束 create table 表名 (字段名 类型(长度) primary key )创建表时,不直接在字段后面添加主键…

二、Spring Boot与Mybatis代码自动生成

一、Mybatis代码自动生成 下载自动生成java包:https://www.alipan.com/s/7sGR9uGKoVh 下面就是根据这个进行简单配置即可 1.修改 下面主要修改这个文件 如下 如下 如下 运行 2.结果 解释:在运行之后,就会在上面输入的包里面创建…

【ubuntu】docker中如何ping其他ip或外网

docker中如何ping其他ip或外网 示例图: 运行下面命令: docker run -it --namehei busybox看情况需要加权限 sudo,即: sudo docker run -it --namehei busyboxping 外网 ping -c 4 www.baidu.comping 内网 ping -c 4 192.168.…

rime中州韵小狼毫 联想词组 滤镜

教程目录:rime中州韵小狼毫须鼠管安装配置教程 保姆级教程 100增强功能配置教程 在 rime中州韵小狼毫 自定义词典 一文中,我们分享了如何在rime中州韵小狼毫须鼠管输入法中定义用户自定义词典;通过自定义词典,我们可以很方便的在…

LeetCode:82. 删除排序链表中的重复元素 II(C++、Java)

目录 82. 删除排序链表中的重复元素 II 题目描述: 实现代码与解析: 链表遍历: 实现代码与解析: 82. 删除排序链表中的重复元素 II 题目描述: 给定一个已排序的链表的头 head , 删除原始链表中所有重复…

【我与Java的成长记】之继承详解(二)

系列文章目录 能看懂文字就能明白系列 C语言笔记传送门 Java笔记传送门 🌟 个人主页:古德猫宁- 🌈 信念如阳光,照亮前行的每一步 文章目录 系列文章目录🌈 *信念如阳光,照亮前行的每一步* 前言一、super关…

VBA之Excel应用第五节:录制宏时,使用绝对引用和相对引用

《VBA之Excel应用》(版权10178983)是非常经典的,是我推出的第七套教程,定位于初级,目前是第一版修订。这套教程从简单的录制宏开始讲解,一直到窗体的搭建,内容丰富,实例众多。大家可…

乡镇景区外卖需求的上涨,现在下场做外卖平台服务晚不晚?

如今,在田间地头点外卖已经变成了现实。随着外卖市场的发展,外卖消费的多样化场景逐渐显现,不仅在田间可以订餐外卖,出门旅行的任何地方都可以点上一份热腾腾的外卖送到面前。特别是从去年开始旅游经济恢复之后,外卖也…

分类预测 | Matlab实现ZOA-CNN-MATT-SVM斑马优化卷积神经网络多头注意力机制结合支持向量机的数据分类预测【24年新算法】

分类预测 | Matlab实现ZOA-CNN-MATT-SVM斑马优化卷积神经网络多头注意力机制结合支持向量机的数据分类预测【24年新算法】 目录 分类预测 | Matlab实现ZOA-CNN-MATT-SVM斑马优化卷积神经网络多头注意力机制结合支持向量机的数据分类预测【24年新算法】分类效果基本描述程序设计…

构建镜像:探索容器化应用部署的核心技术

目录 引言:前提准备:构建镜像:基本结构准备工作镜像运行镜像优化 总结 引言: 容器化应用部署已经成为当今软件开发和运维中的热门话题。构建镜像是容器化部署的关键步骤之一,它能够帮助开发人员和运维团队快速、高效地…

Flink-容错机制

Flink中的容错机制 流式数据连续不断地到来,无休无止;所以流处理程序也是持续运行的,并没有一个明确的结束退出时间。机器运行程序,996 起来当然比人要容易得多,不过希望“永远运行”也是不切实际的。因为各种硬件软件…

排序——归并排序

文章目录 基本思想递归版本思路代码实现 非递归版思路代码实现 结果演示 基本思想 归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide andConquer)的一个非常典型的应用。将已有序的子序列…

基于深度学习的时间序列算法总结

1.概述 深度学习方法是一种利用神经网络模型进行高级模式识别和自动特征提取的机器学习方法,近年来在时序预测领域取得了很好的成果。常用的深度学习模型包括循环神经网络(RNN)、长短时记忆网络(LSTM)、门控循环单元&a…

数据库知识汇总之MySQL

目录 MySQL数据库特点MySQL下载MySQL配置文件初始化MySQL配置安装MySQL服务 启动MySQL服务登录数据库修改数据库登录密码MySQL错误代码1130 MySQL数据库特点 MySQL是一个开源关系型数据库管理系统(RDBMS),由Oracle公司维护和开发。它使用SQL语言进行数据库管理和操…

mfc140.dll丢失了要怎么解决?多种解决mfc140.dll方法对比

mfc140.dll丢失了怎么办?mfc140.dll丢失的多个解决方法今天就来给大家详细的说说,因为平时实在是太多人咨询这个问题了,都说自己电脑的mfc140.dll找不到了,一些程序没办法运行,所以还是给大家分析一下mfc140.dll。 一.…

droupout(Pytorch中的代码实现)

图片来源: 【Pytorch】torch.nn.Dropout()的两种用法:防止过拟合 & 数据增强-CSDN博客 注意: droupout可以进行数据增强或者防止数据过拟合。 droupout在全连接层之后,使得部分神经元失活,但是为什么能保持数据…