第2章 深度学习的数学基础
- 格式:pptx
- 大小:3.52 MB
- 文档页数:35
第一章深度学习概念1.1 机器学习的定义(machine Learning ML ):机器学习是涉及多门复杂理论的学科,包括了概率统计、数值分析、算法复杂理论等多门学科。
是专门研究计算机怎样模拟人类行为,以人类行为研究来赋予机器独自拥有自主学习和思考的技术方法,使机器拥有自己组织已有的知识架构,使自身性能不断完善的技术理论。
1.2 深度学习:源于人工神经网络的研究,含多隐层的多层感知就是一种深度学习的结构,深度学习通过组合底层特征形成的更加抽象的高层属性类别或特征,一发现数据分布式特征表示。
1.4 深度学习、机器学习、AI 之间的关系如右图示1-1所示。
1.5 一个事实和一个道理:事实:这几年深度学习的发展并不完全得益于机器学习理论研究的新突破,主要是因为支撑理论的外部条件有了很大的提升。
道理:机器学习理论十年没有本质的变化,从某种意义上来说是一种好事,说明这个思维框架经得住时间的考验,也就是说他有被学习的价值。
1.6 描述意见事物可以多角度,是一对多的映射过程,机器学习得懂如何去观察一个对机器深度学习AI图示1-1象的特征,懂得不同角度对同一事物做不同的描述(看事物的方法千千万,就看你是从那个角度去看待这个问题)。
1.7 被计算机使用的描述信息,这个信息在机器学习中一般被称作特征(Feature)。
1.8 特征描述举例中文词语的编码(One Hot编码)One Hot Endcoding:假设有N个词语待编码方法:1、建立N维空间;2、确定词语之间的距离;(有排列组合相关知识知道,N个不同的词语间有N N种组合方式,即可以映射到N维空间中去,在N维空间中的每个单元存放1和0两种状态,和真假对应)1.9 同一件事物可以从不同的细致程度被描述。
1.10 机器模型雏形:获得特征模型期望结果【注:其中模型相当于数学中的函数;】绝大多数的机器学习都遵循这个模式,拥有输入和输出,剩下的工作就是确定这个中间的映射,也就是这个模型。
深度学习基础总结(附完整思维导图)来源:Python与算法社区本文为读者详细总结了深度学习的基础知识。
1 线型回归预测气温、预测销售额、预测商品价格等模型:权重,偏差模型训练:feed 数据学习模型参数值,使得误差尽可能小训练集、测试集、验证集、样本、标签、特征损失函数:回归常用平方误差函数;优化算法:小批量随机梯度下降(每次选一小批样本训练参数),每批样本大小叫做 batch size学习率:正数超参数:不是通过训练学出的,如学习率,批量大小网络输出层只有一个神经元节点全连接层:输出层中的神经元和输入层中各个输入完全连接基本要素:模型、训练数据、损失函数和优化算法2 softmax 回归图像分类、垃圾邮件识别、交易诈骗识别、恶意软件识别等softmax运算符将输出值变换成值为正,且和为1的概率分布交叉熵损失函数:更适合衡量两个概率分布差异softmax 回归是一个单层神经网络,输出个数等于类别个数3 多层神经网络激活函数:一种非线性函数ReLU函数:只保留正数元素,负数元素清零sigmoid函数:将元素值变换到0到1tanh(双曲正切):元素值变换到-1到14 模型选择模型在训练集上更准确时,不代表在测试集上就一定准确训练误差:训练数据集上表现出的误差;泛化误差:模型在测试集上表现的误差期望机器学习需要关注降低泛化误差模型选择:评估若干候选模型的表现并从中选择模型候选模型可以是有着不同超参数的同类模型验证集:预留训练和测试集之外的数据;折交叉验证:训练集分成份,共次轮询训练集欠拟合:模型无法得到较低的训练误差过拟合:模型的训练误差远小于测试集上的误差模型复杂度:低,容易欠拟合;高,容易过拟合数据集大小:训练样本少,尤其少于学习参数数时,容易过拟合;层数多时尽量数据大些5 必知技巧过拟合解决措施之一:权重衰减,常用L2正则L2惩罚系数越大,惩罚项在损失函数中比重就越大丢弃法(dropout):一定概率丢弃神经元正向传播:沿着输入层到输出层的顺序,依次计算并存储模型的中间变量反向传播:从输出层到输入层参数调整过程训练深度学习模型时,正向传播和反向传播间相互依赖数值稳定性的问题:衰减和爆炸层数较多时容易暴露,如每层都是一个神经元的30层网络,如果权重参数为0.2,会出现衰减;如果权重参数为2,会出现爆炸权重参数初始化方法:正态分布的随机初始化;Xavier 随机初始化。
Python深度学习02:神经网络的数学基础2.1 初始神经网络MNIST数据集:手写数字的灰度图像(28 像素×28 像素),包含 60 000 张训练图像和 10 000 张测试图像。
类:分类问题中的某个类别叫作类(class)样本:数据点叫作样本(sample)标签:某个样本对应的类叫作标签(label)损失函数(loss function):网络如何衡量在训练数据上的性能,即网络如何朝着正确的方向前进。
优化器(optimizer):基于训练数据和损失函数来更新网络的机制。
在训练和测试过程中需要监控的指标(metric):本例只关心精度,即正确分类的图像所占的比例使用 Keras 库,加载数据集,代码如下:1 from keras.datasets import mnist2 from keras import models3 from keras import layers4 from keras.utils import to_categorical56 # 加载 Keras 中的 MNIST 数据集7 (train_images, train_labels), (test_images, test_labels) = mnist.load_data()89 #标签10 train_labels = to_categorical(train_labels)11 test_labels = to_categorical(test_labels)1213 #准备图像数据14 train_images = train_images.reshape((60000, 28 * 28))15 train_images = train_images.astype('float32') / 25516 test_images = test_images.reshape((10000, 28 * 28))17 test_images = test_images.astype('float32') / 2551819 #构建网络模型20 network = models.Sequential()21 network.add(layers.Dense(512, activation='relu', input_shape=(28 * 28,)))22 network.add(layers.Dense(10, activation='softmax'))2324 #编译的三个参数25 pile(optimizer='rmsprop',26 loss='categorical_crossentropy',27 metrics=['accuracy'])2829 #拟合模型30 network.fit(train_images, train_labels, epochs=5, batch_size=128)3132 #查看测试集性能33 test_loss, test_acc = network.evaluate(test_images, test_labels)2.2 神经网络的数据表示张量:当前所有机器学习系统都使用张量作为基本数据结构,张量的维度(dimension)通常叫作轴(axis)。
深度学习的数学基础微积分o无穷小在17世纪下半叶,数学史上出现了无穷小的概念,而后发展处极限的概念o极限o数列的极限o函数的极限导数微分积分o不定积分也称为原函数或反导数o定积分o定积分中值定理牛顿-莱布尼茨公式偏导数概率统计样本空间定义:随机试验E 的所有结果构成的集合称为E 的样本空间,记为S={e} 称S 中的元素e 为样本点,一个元素的单点集称为基本事件.概率条件概率/后验概率P(A|B)边缘概率/先验概率A的边缘概率表示为P(A),B的边缘概率表示为P(B)联合概率全概率公式贝叶斯公式随机变量离散型随机变量对离散随机变量用求和得全概率定义(0-1)分布/两点分布/伯努利分布二项分布泊松分布(Poisson分布)连续型随机变量对连续随机变量用积分得全概率概率分布函数F(x)概率密度函数f(x)均匀分布X~U(a,b)指数分布正态分布/高斯分布是研究误差分布的一个理论期望离散型随机变量的期望连续型随机变量的期望方差(Variance)一个随机变量的方差(Variance )描述的是它的离散程度,也就是该变量离其期望值的距离标准差(Standard Deviation)方差的算术平方根称为该随机变量的标准差。
样本标准差协方差相关系数(Correlation coefficient)协方差矩阵主成分分析(PCA)在统计学中被称为主成分分析(principal components analysis ,简称PCA) ,在图像处理中称为Karhunen-Loève 变换(KL- 变换) 。
大数定律大数定律负责给出估计——期望中心极限定理中心极限定理负责给出大数定律的估计的误差——标准差乘以标准正态分布大量相互独立的随机变量,其均值(或者和)的分布以正态分布为极限(意思就是当满足某些条件的时候,比如Sample Size 比较大,采样次数区域无穷大的时候,就越接近正态分布)。
而这个定理amazing 的地方在于,无论是什么分布的随机变量,都满足这个定理。
深度学习入门数学基础之线性代数篇线性代数的概念对理解机器学习背后的理论至关重要,特别是对于深度学习。
它让你更直观地了解算法如何在真正的工作环境下工作,从而使你能够做出更好的决策。
所以如果你真的想成为这个领域的专业人士,你就不会掌握它的一些概念。
本文将介绍线性代数最重要的概念,这些概念用于机器学习。
线性代数是一种连续的数学形式,它在整个科学和工程中得到应用,因为它允许你对自然现象建模并有效计算它们。
因为它是一种连续的而不是离散的数学形式,很多计算机科学家并没有太多的经验。
线性代数也是数学几乎所有领域的核心,如几何和功能分析。
它的概念是理解机器学习背后的理论的一个重要先决条件,尤其是在你使用深度学习算法的情况下。
在开始使用机器学习之前,你不需要了解线性代数,但是在某些时候,希望更好地理解不同的机器学习算法如何真正在底层工作。
这将有助于你在机器学习系统的开发过程中做出更好的决策。
所以如果你真的想成为这个领域的专业人士,那么你不会掌握对机器学习很重要的零件线性代数。
在线性代数中,数据由线性方程表示,以矩阵和向量的形式表示。
因此,你主要处理的是矩阵和向量,而不是标量(我们将在下一节介绍这些术语)。
如果你的建议中有像Numpy这样的正确库,则只需几行代码即可轻松计算复杂的矩阵乘法。
这篇文章会忽略对机器学习不重要的线性代数的概念。
数学对象标量标量只是一个单一的数字。
例如24。
向量向量是一个有序的数字数组,可以在一行或一列中。
它只有一个索引,可以指向矢量中的特定值。
例如,V2代表向量的第二个值,在上面的黄色图片中为“-8”。
矩阵矩阵是一个有序的二维数组,它有两个索引。
第一个指向该行,第二个指向该列。
例如,M23表示第二行和第三列的值,在上面的黄色图片中为“8”。
矩阵可以有多个行和列。
请注意,向量也是一个矩阵,但只有一行或一列。
在黄色图片的例子中的矩阵也是2×3维的矩阵(行*列)。
下面你可以看到矩阵的另一个例子及其符号:张量张量是一组数字,排列在一个规则的网格上,具有不同数量的轴。
文章主题:探究深度学习中的deepsort与yolov5涉及的数学公式1. 深度学习算法的数学基础深度学习在计算机视觉领域扮演着越来越重要的角色,其中deepsort 和yolov5作为两种经典的算法,在目标跟踪和目标检测领域具有广泛的应用。
要详细探究deepsort和yolov5,首先需要了解它们涉及的数学公式和原理。
2. 目标跟踪算法deepsort在深度学习算法中,目标跟踪是一个重要的课题,而deepsort算法作为一种端到端的目标跟踪算法,在多目标跟踪方面表现出色。
其核心思想是结合深度学习网络和卡尔曼滤波器,以实现对目标的持续跟踪。
在深入探讨deepsort算法之前,首先需要了解其涉及的数学公式,如深度学习网络的损失函数、卡尔曼滤波器的状态转移方程和观测方程等。
3. 目标检测算法yolov5yolov5作为一个快速高效的目标检测算法,其性能出色,并在实时目标检测领域有着广泛的应用。
要深入理解yolov5算法,需要深入研究其中涉及的数学公式和原理。
yolov5的目标检测损失函数、边界框回归的计算方法等,都是需要重点关注的数学细节。
4. 个人观点和总结了解深度学习算法中涉及的数学公式对于理解算法原理和优化算法性能至关重要。
在学习和应用deepsort和yolov5算法时,不仅需要熟悉其代码实现,更需要深入理解其中的数学原理。
只有通过深入的数学探索,才能真正掌握并灵活运用这些算法。
总结而言,通过全面评估deepsort和yolov5涉及的数学公式和原理,可以更好地理解这两种算法的优势和局限性,从而更好地应用于实际项目中。
写手:(在普通文本中进行以上内容的撰写)(文章总字数大于3000字)文章的完成内容将以非Markdown格式的普通文本呈现。
文章将详细解释关于深度学习算法的数学公式,帮助读者更深入地理解deepsort 和yolov5算法的原理和性能。
文章将以从简到繁的方式探讨主题,包含有关deepsort和yolov5算法的数学公式,以及个人观点和总结性内容。
深度学习之数学基础(数值计算)信息论是应⽤数学的⼀个分⽀,主要研究的是对⼀个信号能够提供信息的多少进⾏量化。
如果说概率使我们能够做出不确定性的陈述以及在不确定性存在的情况下进⾏推理,那信息论就是使我们能够量化概率分布中不确定性的总量。
1948年,⾹农引⼊信息熵,将其定义为离散随机事件的出现概率。
⼀个系统越是有序,信息熵就越低;反之,⼀个系统越是混乱,信息熵就越⾼。
所以说,信息熵可以被认为是系统有序化程度的⼀个度量。
4-1、熵如果⼀个随机变量X的可能取值为,其概率分布为,则随机变量X的熵定义为H(X):4-2、联合熵两个随机变量X和Y的联合分布可以形成联合熵,定义为联合⾃信息的数学期望,它是⼆维随机变量XY的不确定性的度量,⽤H(X,Y)表⽰:4-3、条件熵在随机变量X发⽣的前提下,随机变量Y发⽣新带来的熵,定义为Y的条件熵,⽤H(Y|X)表⽰:条件熵⽤来衡量在已知随机变量X的条件下,随机变量Y的不确定性。
实际上,熵、联合熵和条件熵之间存在以下关系:推导过程如下:其中:第⼆⾏推到第三⾏的依据是边缘分布P(x)等于联合分布P(x,y)的和;第三⾏推到第四⾏的依据是把公因⼦logP(x)乘进去,然后把x,y写在⼀起;第四⾏推到第五⾏的依据是:因为两个sigma都有P(x,y),故提取公因⼦P(x,y)放到外边,然后把⾥边的-(log P(x,y) - log P(x))写成- log (P(x,y) / P(x) ) ;第五⾏推到第六⾏的依据是:P(x,y) = P(x) * P(y|x),故P(x,y) / P(x) = P(y|x)。
4-4、相对熵相对熵⼜称互熵、交叉熵、KL散度、信息增益,是描述两个概率分布P和Q差异的⼀种⽅法,记为D(P||Q)。
在信息论中,D(P||Q)表⽰当⽤概率分布Q来拟合真实分布P时,产⽣的信息损耗,其中P表⽰真实分布,Q表⽰P的拟合分布。
对于⼀个离散随机变量的两个概率分布P和Q来说,它们的相对熵定义为:注意:D(P||Q) ≠ D(Q||P)4-5、互信息两个随机变量X,Y的互信息定义为X,Y的联合分布和各⾃独⽴分布乘积的相对熵称为互信息,⽤I(X,Y)表⽰。
深入解读深度学习优化背后的数学基础重磅干货,第一时间送达转载自:机器之心深度学习中的优化是一项极度复杂的任务,本文是一份基础指南,旨在从数学的角度深入解读优化器。
一般而言,神经网络的整体性能取决于几个因素。
通常最受关注的是网络架构,但这只是众多重要元素之一。
还有一个常常被忽略的元素,就是用来拟合模型的优化器。
为了说明优化的复杂性,此处以ResNet 为例。
ResNet18 有11,689,512 个参数。
寻找最佳参数配置,也就是在11,689,512 维的空间中定位一个点。
如果暴力搜索的话,可以把这个空间分割成网格。
假设将每个维度分成十格,那么就要检查10^11689512(10 的11689512 次方)组可能的配置,对每一组配置都要计算损失函数,并找出损失最小的配置。
10 的 11689512 次方是一个什么概念?已知宇宙中的原子才只有10^83 个,宇宙的年龄只有 4.32 x 10^17 秒(约 137 亿年)。
如果从大爆炸开始,每秒检查10^83 个原子,我们现在才检查了4.32*10^1411 个,远远小于上述网格可能的配置数。
所以优化器非常重要。
它们就是用来处理这种难以理解的复杂性的。
有了它,你就可以将训练网络的时间压缩在几天内,而不是数十亿年间。
下文将从数学角度深入研究优化器,并了解它们是如何完成这一看似不可能的任务的。
优化的基础我们从简单的地方开始。
假设要最大化单变量函数。
(在机器学习中,通常以最小化损失函数为目标,不过最小化就等同于最大化函数的负值。
)定义:对函数作图:最直观的方法是将这条线划分成网格,检查每个点的值,然后选择函数值最大的点。
正如引言中所说,这是不可扩展的,因此要找其他解决方案。
将这条线想象成一座要爬到顶峰的山。
假设位于红点处:如果要到达山峰,该往哪个方向走?当然,应该向斜率增加的地方前进。
这个概念对应的是函数的导数。
在数学上,导数定义为:乍看之下,导数非常神秘,但它的几何意义非常简单。
深度学习的数学基础1.线性代数:标量、向量、矩阵和张量一、标量、向量、矩阵与张量1. 标量(scalar)•一个标量就是一个单独的数。
标量用斜体表示。
•标量通常使用小写变量名称。
在介绍标量时,会明确它是哪种类型的数,如:•定义实数标量时,可能会说:“令s ∈ R 表示一条线的斜率”;•在定义自然数标量时,可能会说“令n ∈ N ”表示元素的数目。
2. 向量(vector)•一个向量是一列数,这些数是有序排列的。
向量中的元素可以用x1这样来表示。
3. 行列式行列式在数学中,是一个函数,其定义域为det的矩阵A,取值为一个标量,写作det(A)或 | A | 。
无论是在线性代数、多项式理论,还是在微积分学中(比如说换元积分法中),行列式作为基本的数学工具,都有着重要的应用。
行列式可以看做是有向面积或体积的概念在一般的欧几里得空间中的推广。
或者说,在n 维欧几里得空间中,行列式描述的是一个线性变换对'体积'所造成的影响。
4. 矩阵(matrix)5. 张量(tensor)二、一些运算1. 转置(transpose)转置是以对角线为轴的矩阵的镜像,从左上到右下称为主对角线(main diagonal)。
公式定义为:向量可以看作只有一列的矩阵,对应地,向量的转置可以看作只有一行的矩阵。
标量的转置等于自身。
2. 矩阵运算矩阵可以进行加法、乘法计算。
深度学习中,允许矩阵和向量相加:3. 矩阵乘法两个矩阵的标准乘积不是两个矩阵中对应元素的乘积。
两个矩阵 A A A 和 B B B 的矩阵乘积(matrix product)是第三个矩阵 C C C 。
为了使乘法可被定义,矩阵 A A A的列数和矩阵 B B B的行数相等。
如果矩阵 A A A的形状是 m ∗ n m*n m∗n,矩阵 B B B 的形状是 m ∗ p m*p m∗p ,我们可以通过将两个或多个矩阵并列放置以书写矩阵乘法。
例如:具体地,该乘法操作定义为示例:元素对应乘积(Hadamard乘积)如果是元素对应乘积(element-wise product)或者Hadamard 乘积,记为 : [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6oVQitIc-1607997146629)(/api/rest_v1/media/math/render/svg/c341d3106d2763836b 32f992b74e73f4cef0d24d)]点积矩阵乘法分配律矩阵乘积结合律矩阵乘积并不满足交换律,然而两个向量的点积满足交换律:矩阵乘积的转置有着简单的形式:4. 单位矩阵(identity matrix)从形式上看,单位矩阵所有沿对角线的元素都是1,而其它位置的所有元素都是0.如:5. 逆矩阵6. 求解 A x = b三、使用Python Numpy进行一些矩阵定义1. 矩阵定义与矩阵形状import numpy as np# 创建一维的narray对象 a = np.array([1,2,3,4,5])# 创建二维的narray对象a2 = np.array([[1,2,3,4,5],[6,7,8,9,10]])print(a)print(a2)# 打印a2的形状print(a2.shape)# 行数print(a2.shape[0])# 列数print(a2.shape[1]) 输出结果:2. 矩阵的截取import numpy as npa = np.array([[1,2,3,4,5],[6,7,8,9,10]])# 截取第一行,返回 [[1 2 3 4 5]]print(a[0:1]) # 截取第二行,第三到六列,返回[8 9 10]print(a[1,2:5]) # 截取第二行,返回[ 6 7 8 9 10]print(a[1,:])3. 按条件截取import numpy as npa = np.array([[1,2,3,4,5],[6,7,8,9,10]])# 截取矩阵a中大于6的元素,范围的是一维数组返回[ 7 8 9 10]b = a[a>6] print(b) # 通过布尔语句生成一个布尔矩阵(其次将布尔矩阵传入[](方括号)实现上面截取运算)print(a>6)4. 条件截取后赋值import numpy as npa = np.array([[1,2,3,4,5],[6,7,8,9,10]])print(a)a[a>6] = 0print(a)5. 矩阵合并import numpy as npa1 = np.array([[1,2],[3,4]])a2 = np.array([[5,6],[7,8]])#参数传入时要以列表list或元组tuple的形式传入# 横向合并print(np.hstack([a1,a2])) # 或np.concatenate( (a1,a2), axis=1 )# 纵向合并print(np.vstack((a1,a2))) # 或 np.concatenate( (a1,a2), axis=0 ) 6. 通过函数创建矩阵arange 递增矩阵import numpy as npa = np.arange(10) # 默认从0开始到10(不包括10),步长为1print(a) # 返回 [0 1 2 3 4 5 6 7 8 9]a1 = np.arange(5,10) # 从5开始到10(不包括10),步长为1print(a1) # 返回 [5 6 7 8 9]a2 = np.arange(5,20,2) # 从5开始到20(不包括20),步长为2print(a2) # 返回 [ 5 7 9 11 13 15 17 19]linspace 等差数列import numpy as npa = np.linspace(0,10,7) # 生成首位是0,末位是10,含7个数的等差数列print(a)logspace 等比数列import numpy as npa = np.logspace(0,2,5) # 生成首位是10^0,末位是10^2,含5个数的等比数列print(a)其它特殊矩阵•ones 全1矩阵•zeros 全0矩阵•eye 单位矩阵•empty 全空矩阵(未初始化值状态,值不可预测)•fromstring 从字符串转ndarray对象•fromfunction 通过函数生成矩阵元素,可指定每个元素的生成算法四、Python Numpy里一些矩阵运算1. 基础运算运算符说明+矩阵对应元素相加-矩阵对应元素相减*矩阵对应元素相乘/矩阵对应元素相除,如果都是整数则取商%矩阵对应元素相除后取余数**矩阵每个元素都取n次方,如**2:每个元素都取平方示例:import numpy as npa1 = np.array([[4,5,6],[1,2,3]])a2 = np.array([[6,5,4],[3,2,1]])print(a1+a2) # 相加print(a1/a2) # 整数相除取商print(a1%a2) # 相除取余数2. 一些运算函数•np.sin(a) 每个元素取正弦•np.cos(a) 每个元素取余弦•np.tan(a) 每个元素取正切•np.arcsin(a) 每个元素取反正弦•np.arccos(a) 每个元素取反余弦•np.arctan(a) 每个元素取反正切•np.exp(a) 每个元素取指数函数, e x e^x ex•np.sqrt(a) 每个元素开根号√x3. 矩阵乘法(点乘) dotimport numpy as npa1 = np.array([[1,2,3],[4,5,6]]) # a1为2*3矩阵a2 = np.array([[1,2],[3,4],[5,6]]) # a2为3*2矩阵print(a1.shape[1]==a2.shape[0]) # True, 满足矩阵乘法条件,即第一个矩阵的列数等于第二个矩阵的行数print(a1.dot(a2)) print(a2.dot(a1))可以看到点乘不满足乘法交换率。