《深度学习》第二-五章学习笔记

来源:互联网 发布:兰州理工大学 软件学院 编辑:程序博客网 时间:2024/05/29 19:07

《深度学习》第二-五章学习笔记


第二章—-线性代数

  • 标量, 向量,矩阵, 张量(超过二维的数组)
  • 矩阵乘积,单位矩阵,逆矩阵
  • 线性组合:一组向量的线性组合,是指每个向量乘以对应的标量系数之后的和
  • 生成子空间:一组向量的生成子空间是原始向量线性组合后所能抵达的点的集合(确定Ax=b是否有解,相当于确定向量b是否在A的列向量的生成子空间中)
  • 线性相关,线性无关(一个列向量线性相关的矩阵称为是一个奇异矩阵)
    • 范数:用来衡量向量大小。Lp范数定义为(|xi|p1/p , L0 范数,L1 范数,L2 范数,L 范数
  • 对角矩阵,对称矩阵,正交矩阵(矩阵的转置与矩阵的 乘积为单位矩阵)
  • 特征分解:Ax=λx 所有特征值都是正数的矩阵称为正定矩阵,所有特征值都是非负数的矩阵称为半正定矩阵,同理:负定,半负定(任意是对程集镇都有特征分解)
  • 奇异值分解(SVD):将矩阵分解为奇异向量和奇异值(重点:通过奇异值分解能够得到与特征分解相同的信息。但是奇异值分解应用更加广泛,因为每一个实数矩阵都有一个奇异值分解,但不一定有特征分解)
    A=UDVT,其中A是一个m*n的矩阵,U是一个m*m的矩阵,D是一个m*n 的矩阵,V是一个n*n的矩阵,且U、V都是正交矩阵,而D为对角矩阵
    矩阵D对角线上的元素称为矩阵A的奇异值
  • Moore-Penrose伪逆:对于非方矩阵来说,求逆矩阵没意义
  • 迹运算:对角线元素之和
  • 行列式:等于矩阵特征值的乘积,行列式的绝对值可以用来衡量矩阵与矩阵乘法后空间扩大或者缩小了多少,如果行列式为0,那么空间至少沿着某一维完全收缩了。
  • 主成分分析(PCA):PCA(Principal Component Analysis)不仅仅是对高维数据进行降维,更重要的是经过降维去除了噪声,发现了数据中的模式。
    PCA把原先的n个特征用数目更少的m个特征取代,新特征是旧特征的线性组合,这些线性组合最大化样本方差,尽量使新的m个特征互不相关。从旧特征到新特征的映射捕获数据中的固有变异性。
    这里写图片描述
    这里写图片描述
    总结来说,PCA的基本步骤如下:
    (1)特征中心化。即每一维的数据都减去该维的均值。这里的“维”指的就是一个特征(或属性),变换之后每一维的均值都变成了0。每一列减去该列均值后,得到矩阵B。
    (2)计算B的协方差矩阵C:
    (3)计算协方差矩阵C的特征值和特征向量。
    (4)选取大的特征值对应的特征向量,得到新的数据集。

第三章——概率与信息论

  • 概率分布:用来描述随机变量或者一簇随机变量在每一个可能取到的状态的可能性大小
    (1)离散型变量和概率质量函数:X=x的概率用p(x)表示,概率为1表示X=x是确定的,概率为0表示X=x是不可能发生的
    需要满足的条件:P的定义必须是x的所有可能的状态的集合,0P(x)1, xXP(x)=1

    (2)连续型变量和概率密度函数:与上面类似
    (3)边缘概率:有时,知道了一组变量的联合概率分布,想要了解其中一个子集的概率分布。这种定义在子集上的概率分布叫边缘概率分布
    (4)条件概率:某个事件在给定其他事件发生时出现的概率。我们不能计算给定在永远不会发生事情上的概率。需要注意的是,我们不要把条件概率和计算当采用某个动作后会发生什么相混淆。
    (5)条件概率的链式法则(p38)
    (6)独立性和条件独立性:两个随机变量x,y如果他们的概率分布可表示成两个因子的乘积形式,且一个因子只包含x,另一个只包含y,则他们是相互独立的随机变量
    (7)期望,方差,协方差:其中,协方差是给出了两个变量线性相关性的强度以及这些变量的尺度,如果协方差的绝对值大,那么意味着变量值的变化很大,他们同时距离各自的均值很远。如果协方差是正数,那么两个变量倾向于同时取得相对较大的值,如果协方差是负数,那么其中一个变量倾向于取得相对较大的值,同时另一个变量倾向于取得相对较小的值
    (8)协方差与相关性:如果两个变量相互独立,那么他们协方差为0,如果两个变量协方差不为0,那么他们一定相关

  • 常用的概率分布:
    (1) Bernouli分布:又叫0-1分布或二值分布
    (2)Multinouli分布:又叫范畴分布,是指在具有k个不同状态的单个离散型随机变量上的分布(其实也就是说,一个变量有k种可能的状态)
    (3)高斯分布:又叫正态分布,是最常用到的。正态分布由两个参数控制:μσ,其中,μ是正态分布的均值,σ是正态分布的标准差。
    正态分布在很多应用里面都是一个很好的选择,当我们做一些问题时,如果缺乏某个实数上分布的先验知识时,我们可以默认选择高斯分布,一般做出来效果都会比较好,因为我们想要见摸的很多分布知识情况都比较接近正态分布,而且正态分布是对模型加入的先验知识量最小的分布,具有最大的不确定性。
    (4)指数分布和Laplace分布
    (5)Dirac(狄拉克)分布和经验分布:狄拉克分布时所有质量都集中在一个点上(狄拉克函数是除了0以外的所有点的值都为0,但是积分为1)
    而狄拉克分布经常作为经验分布的一个组成部分出现
    这里写图片描述

  • 常用的函数的特有性质(p43):
    (1)logistic sigmoid
    (2)softplus:

  • 贝叶斯规则

  • 信息论(自信息,香农熵,微分熵,KL散度):
    信息论只要研究的是对一个信号包含信息的多少进行量化,信息论基本想法是:一个不太可能的事居然发生了,要比一个非常可能的事发生能够提供更多的信息。同时,独立事件要具有增量的信息,比如:透支的硬币两次正面朝上传递的信息量,是投掷一次硬币正面朝上信息量的两倍。
    基于上述要求,我们定义一个事件的自信息为I(x)=-logP(x).但是自信息只处理单个输出,对于车整个概率分布,我们可以利用香农熵来表示遵循这个分布的时间所产生的期望信息总量。如果x是连续的,那么香农熵被称为微分熵
    KL散度:对于同一个随机变量x的两个单独的概率分布的差异,KL散度是非负的,非对称的。KL散度为0,当且仅当P和Q在离散型变量的情况下是相同的分布,或者在连续型变量的情况下是“几乎处处”相同的。

  • 结构化概率模型:
    我们在涉及到非常多的随机变量上的概率分布时,需要进行一些分解,但是使用单个函数描述整个脸和概率分布又十分低效,因此我们可以建立一种新的分解方法,比如p(a,b,c)=p(a)p(b|a)p(c|b)
    当用图来表示这种概率分布的分解时,我们把它称为结构化概率模型.

第四章——数值计算

  • 上溢和下溢(我们在计算机里面算一些东西时会不可避免的有一些数据的计算误差,但这些舍入误差总导致一些问题,即为上溢和下溢)

上溢:超出所能表示的最大正数(进一步计算会导致这些无限值变成非数字
下溢:超出所能表示的最小负数(有一些函数在参数为0而不是一个很小的正数时会有一些质的不同,比如我们通常要避免被0除或者避免取0的对数,此时就要避免发生下溢)
我们能通过一些手段来避免上溢和下溢的发生(p52有例子)

  • 病态条件
    条件数:函数相对于输入的微小变化而变化的快慢程度,如果输入美轻微扰动,但是结果改变很多,那么很有可能是计算出了问题,可能是由于输入中的舍入误差导致的输出巨大变化。
    但我们要把病态条件与正常条件分开,因为有可能这种现象并不是计算出了问题,而是它的固有属性所导致的。

  • 基于梯度的优化方法
    这里讲最速下降法与牛顿法(雅可比矩阵,海森矩阵)

  • 约束优化
    有时候,在x的所有可能值下最大化或者最小化一个函数f(x)并不是我们希望的,我们只想在x的某些集合S中寻找f(x)的最大值或最小值,这称为约束优化。
    而KKT方法则是针对约束优化的一种非常通用的解决方案,我们可以在一些等式和不等式约束前面加上一个系数加入到目标函数中。

第五章——机器学习基础

  • 何为学习?
    对于某类任务T和性能度量P,一个计算机程序可以被认为可以从经验E中学习。也就是说,通过经验E改进后,他在任务T上由性能度量P衡量的性能有所提升。
    任务T:
    通常机器学习中任务定义为机器学习系统应该如何处理样本。我们常会将样本表示成一个向量,每个向量的每一个元素是一个特征。
    机器学习常见的任务有如下几种:
    分类,输入确实分类,回归,转录,机器翻译,结构化输出,异常检测,合成与采样,缺失值填补,去燥,密度估计或者概率质量函数估计。
    性能度量P:
    我们通常会在测试集上用准确率,错误率来评估学习算法的性能
    经验E:
    机器学习算法分为无监督和有监督学习算法。
    无监督学习(Unsupervised learning)就是聚类,事先不知道样本的类别,通过某种办法,把相似的样本放在一起归位一类;
    而监督型学习(Supervised learning)就是有训练样本,带有属性标签,也可以理解成样本有输入有输出。
    本书中就举了一个线性回归的例子让我们去简单的了解机器学习,具体的学习过程大家应该也都比较清楚,我在这也就不再赘述了。

  • 容量,过拟合,欠拟合:
    机器学习的主要目的就是设计出一个算法使得我们的算法能够在新的未知的输入数据上面表现良好,而并不仅仅只是要在训练集上表现好。这种在新的输入上的表现能力叫做泛化。
    那对应着我们可能就会出现两种问题,也就是我们常说的过拟合和欠拟合问题,那什么是过拟合,什么又是欠拟合呢?
    欠拟合是指模型不能够在训练集上获得足够低的误差,过拟合则是指我们可能已经将一个模型训练得在训练集上误差很小,但是当我们在测试集上面运行时,误差又很大,使得模型并没有一个很好的泛化能力的一种现象。
    那么,为了解决模型可能出现的这两种问题,我们能够采取的其中一种方法就是调整模型的容量,容量低的模型可能很难你和训练集,容量高的模型可能会过拟合。
    我们可以调整输入特征的输入和加入这些特征对应的参数来改变模型容量,这可能会影响算法效果,同时,我们可以改变函数具体的形式进行优化,也就是我们常常所说的正则化。
    正则化一个学习函数的模型,我们可以给代价函数添加被称为正则化的惩罚。比如在我们进行线性回归的训练时,可能训练出的两个不同的模型出来的J(w)损失是一样的,但这其实并不代表着这两个模型是一样的效果,那我们怎么去评判这两个模型哪个好呢? 比如说这个实际要求是我们偏好于二次范数较小的权重,那我们就可以在原来的那个损失函数后面加一个正则项为wTw,也就是说加了这个项以后,哪一个模型的二次范数更大就会使得损失函数变大,这样就很好的利用正则化区分出了两个模型的好坏了。

  • 超参数和验证集
    超参数是在开始学习过程之前设置值的参数,而不是通过训练得到的参数数据。通常情况下,需要对超参数进行优化,给学习机选择一组最优超参数,以提高学习的性能和效果。
    验证集
    交叉验证:如果我们将数据集分成了训练集与固定的测试集,那其实来说一个小规模的测试集意味着平均测试误差估计的统计不确定性,这样我们就很难判断算法A是否比算法B在任务上做得更好,二交叉验证则是解决这个问题的一个很好的方法,就比如说我们将数据分成n个flod,其中随机n-1个用来训练,1个用来测试,能够循环n次,然后这n次结果的平均就能够作为我们模型的平均效果。

  • 估计,偏差与方差
    估计:点估计与函数估计
    点估计是用样本统计量来估计总体参数,因为样本统计量为数轴上某一点值,估计的结果也以一个点的数值表示,所以称为点估计
    函数估计又叫函数近似,试图从输入向量x预测变量y,在函数估计中,我们是要用模型估计去近似f。
    偏差:就是我们估计出来的结果与实际结果之间的差别
    方差与标准差:前面有说

  • 最大似然估计
    在这里我就把贝叶斯估计的基本思想做了相关总结,对于里面的具体计算之类的东西也就不再详细多说了。
    极大似然估计,是一种具有理论性的点估计法,此方法的基本思想是:当从模型总体随机抽取n组样本观测值后,最合理的参数估计量应该使得从模型中抽取该n组样本观测值的概率最大。
    说的通俗一点啊,最大似然估计,就是利用已知的样本结果,反推最有可能(最大概率)导致这样结果的参数值(模型已知,参数未知)。

  • 贝叶斯统计
    前面所说的最大似然统计是基于估计单一值θ的方法,然后基于该估计作所有的预测,而这一节所说的贝叶斯统计则是在做预测时会考虑到所有可能的θ,在这里θ是未知的,可是表示成随机变量。
    相比于最大似然估计,贝叶斯估计有两个很大的不同,第一,不想最大似然方法预测时使用θ的点估计,贝叶斯方法使用θ的全分布,第二个区别就是由贝叶斯先验分布造成的,先验能够影响概率密度朝着参数中偏好的先验区域偏移

  • 监督学习方法
    监督学习算法是给定一组输入x和输出y的训练集,学习如何关联输入和输出。
    我们常见的监督学习方法可能分为4类:
    (1)k近邻
    (2)决策树
    (3)朴素贝叶斯
    (4)逻辑回归

  • 无监督学习方法
    无监督学习大多数是指从不需要人为注释的样本分布中抽取信息。常见的无监督学习方法有PCA和K-均值分类。
    我们在之前已经对PCA做了相关介绍,那这里我对k-means做具体介绍:
    k-means是首先随机取k个不同的点作为每一个类别的中心点,然后对于每一个训练样本匹配到最近的中心点所代表的聚类,然后对于每一个类别,中心点更新为聚类中所有训练样本的均值,再对聚类进行更新,直到无法再更新为止。

  • 随机梯度下降
    机器学习中的代价函数通常可以分解成为每个样本的代价函数的总和,利用这一点,随机梯度下降大多运用于在大规模数据上训练大型线性模型,它的主要思想就是在算法的每一步,我们只从训练集中均匀抽出来一小批量样本进行提督下井,而且这个批量样本的数目一般固定,当训练集大小增长时,这个数目也通常不变。
    随机梯度下降能够大大的减少计算量,但是往往容易收敛到一个局部最优解。

  • 构建机器学习算法
    总结来说,一个机器学习算法基本都可以被概括成以下几个部分:特定的数据集,代价函数,优化过程和模型

  • 促使深度学习发展的挑战
    这些我们所提到的机器学习算法虽然能够解决很多问题,但是他们却不能够解决人工智能中的核心问题,如语音识别。传统的这些机器学习算法在这类人工智能问题上的泛化能力不足也就促使了深度学习的发展。
    传统的机器学习一般会有哪些问题是深度学习能够解决的:
    (1)维数灾难
    当数据维数很高时,很多机器学习的问题变得非常困难。
    (2)局部不变性和平滑正则化 :(过于局限)
    一般的机器学习,为了更好的泛化,算法是需要由先验信念引导应该学习什么类型的函数,这种先验又叫做平滑先验或者局部不变性先验,这种先验表明我们学习的函数不应该在小区域内发生很大的变化吗也就是说确定一个点它的输出是什么,哪个在这个点的附近的领域的输出一半不会有太大变化,而这是不能够推广去解决人工智能级别人物中的统计挑战的,因此这也就为深度学习的发展提供了机会。
    (3)流形学习:
    流形学习的主要思想是将高维的数据映射到低维,使该低维的数据能够反映原高维数据的某些本质结构特征。流形学习的前提是有一种假设,即某些高维数据,实际是一种低维的流形结构嵌入在高维空间中。流形学习的目的是将其映射回低维空间中,揭示其本质。
    但是支持流形假设,首先没观察室现实生活中的图像,文本,声音的概率分布都是高度集中的,于此同时,我们至少要能够非正式的想象这些领域和变换,但是这两个要求在一些实际的案例中是不能满足的,比如人脸图像的流形不太可能连接到猫脸图像的流形,这也为深度学习的发展提供了机会。

原创粉丝点击