表示学习和特征工程
more
表示学习又叫做特征学习,指的是机器学习自动学习特征的过程。
比如以下算法就是表示学习如:深度学习,包括大部分常见的模型如CNN/RNN/DBN等
某些无监督学习算法,如主成分分析(PCA)及自编码器(autoencoder)通过对数据转化而使得输入数据更有意义
某些树模型可以自动的学习到数据中的特征并同时作出预测
特征工程(feature engineering),主要指对于数据的人为处理提取,而模型的主要任务是预测,比如简单的线性回归期待良好的输入数据(如离散化后的数据)
浪潮一
时间:1940-1960年
起因:单个神经元的训练
奠定的基础:自适应线性单元(这是随机梯度下降的前身)
衰退原因:学习的是一种线性模型,无法学习异或
主要思想:控制论
浪潮二
时间:1980-1990年
起因:联合主义(已不流行)
奠定的基础:反向传播,LSTM
衰退原因:算力不够
主要思想:联合主义
ps:
1.什么是联合主义?
又叫做并行分布处理,当网络将大量简单的计算单元连接在一起时可以实现智能行为。
举例:系统的每一个输入都应该由多个特征表示,并且每一个特征都应该参与到多个可能输入的表示。例如,假设我们有一个能够识别红色、绿色或蓝色的汽车、卡车和鸟类的视觉系统,表示这些输入的其中一个方法是将9个可能的组合:红卡车、红汽车、红鸟、绿卡车等使用单独的神经元或隐藏单元激活。这需要9个不同的神经元,并且每个神经必须独立地学习颜色和对象身份的概念。改善这种情况的方法之一是使用分布式表示,即用3个神经元描述颜色,3个神经元描述对象身份。这仅仅需要6个神经元而不是9个,并且描述红色的神经元能够从汽车、卡车和鸟类的图像中学习红色,而不仅仅是从一个特定类别的图像中学习。
浪潮三
时间:2006年-至今
起因:“深度信念网络”的神经网络可以使用一种称为“贪婪逐层预训练”的策略来有效地训练
趋势:无监督学习技术和深度模型在小数据集的泛化能力
流行:比较传统的监督学习算法和深度模型充分利用大型标注数据集的能力,现在看来还是这样,传统的监督方法还是盛行。
矩阵
在python编码中切片常常出现:
,也许是取自于数学表达吧。
张量(tensor)
几何代数中定义的张量是基于向量和矩阵的推广,通俗一点理解的话,我们可以将标量视为零阶张量,矢量视为一阶张量,那么矩阵就是二阶张量。
Hadamard 乘积, s⊙t
两个矩阵的标准乘积不是指两个矩阵中对应元素的乘积。不过,那样的矩阵操作确实是存在的,称为元素对应乘积(element-wiseproduct)或者Hadamard乘积(Hadamard product),记为A⊙B。
点积
数量积(也称为内积、标量积、点积、点乘)是接受在实数R上的两个向量并返回一个实数值标量的二元运算。它是欧几里得空间的标准内积。
点乘的几何意义是可以用来表征或计算两个向量之间的夹角,以及在x向量在y向量方向上的投影。
向量相乘
最常见的就是用来简化方程组运算。
矩阵求逆方法
矩阵求逆通常不会作为实际中使用,因为逆矩阵在计算机上精度有限。但理论上会见得多。
求逆的意义在于,如果有逆,那么代表对于每一个向量b恰好存在一个解。
线性相关
在方程中线性相关是一种冗余
要想使矩阵可逆,我们还需要保证式对于每一个b值至多有一个解。为此,我们需要确保该矩阵至多有m个列向量。否则,该方程会有不止一个解。综上所述,这意味着该矩阵必须是一个方阵(square),即m=n,并且所有列向量都是线性无关的。
一个列向量线性相关的方阵被称为奇异的 ,奇异解是指无法由通解中求出但仍能符合微分方程式的解,奇异解只会在非线性方程式中才会出现。
范数作用
用于衡量向量的大小。
范数意义是衡量从原点到x的距离(所以取了个绝对值)。想一想1-范数,2-范数大家就很清楚了,阐述的就是在P唯独下到X的距离。
范数性质
2-范数
最常见,又叫做欧几里得范数,经常简化表示为‖x‖,略去了下标2。平方L2范数也经常用来衡量向量的大小,可以简单地通过点积计算。
在回归里面,有人把有它的回归叫“岭回归”(Ridge Regression),有人也叫它“权值衰减weight decay”。这用的很多吧,因为它的强大功效是改善机器学习里面一个非常重要的问题:过拟合。
L2和L1适用情况
平方L2范数对x中每个元素的导数只取决于对应的元素,而L2范数对每个元素的导数和整个向量相关。但是在很多情况下,平方L2范数也可能不受欢迎,因为它在原点附近增长得十分缓慢。在某些机器学习应用中,区分恰好是零的元素和非零但值很小的元素是很重要的。
Frobenius范数
结构类似于L2,用于衡量矩阵的大小。所以很明显,与L2不同就在于一个是针对向量一个是针对矩阵。
正交矩阵
正交矩阵受到关注是因为求逆计算代价小。我们需要注意正交矩阵的定义。违反直觉的是,正交矩阵的行向量不仅是正交的,还是标准正交的。对于行向量或列向量互相正交但不是标准正交的矩阵,没有对应的专有术语。
特征向量
这篇博客形象的说明了特征向量,特征空间
特征向量分解的意义
就跟一个整数分解成质数一样,特征向量分解是为了研究它的更核心性质。
矩阵是奇异的,当且仅当含有零特征值。实对称矩阵的特征分解也可以用于优化二次方程[插图],其中限制‖x‖2=1。当x等于A的某个特征向量时,f将返回对应的特征值。在限制条件下,函数f的最大值是最大特征值,最小值是最小特征值。
不是每一个矩阵都可以分解成特征值和特征向量。在某些情况下,特征分解存在,但是会涉及复数而非实数。幸运的是,在本书中,我们通常只需要分解一类有简单分解的矩阵。具体来讲,每个实对称矩阵都可以分解成实特征向量和实特征值。
虽然任意一个实对称矩阵A都有特征分解,但是特征分解可能并不唯一。如果两个或多个特征向量拥有相同的特征值,那么在由这些特征向量产生的生成子空间中,任意一组正交向量都是该特征值对应的特征向量。因此,我们可以等价地从这些特征向量中构成Q作为替代。按照惯例,我们通常按降序排列Λ的元素。在该约定下,特征分解唯一,当且仅当所有的特征值都是唯一的。
特征分解公式
就是通过特征向量和特征值拿到A的结果。这里将lambda变成了对角矩阵,是因为lambda是一个数.
不是每一个矩阵都可以分解成特征值和特征向量。在某些情况下,特征分解存在,但是会涉及复数而非实数。
因为实对称矩阵得转置和逆矩阵相等,在计算中可将其用
正定矩阵
正定
所有特征值都是正数的矩阵称为正定(positivedefinite);所有特征值都是非负数的矩阵称为半正定(positive semidefinite)。同样地,所有特征值都是负数的矩阵称为负定(negative definite);所有特征值都是非正数的矩阵称为半负定(negative semidefinite)。半正定矩阵受到关注是因为它们保证。此外,正定矩阵还保证
实对称矩阵
对称矩阵,指的是转置后和原来矩阵一样的矩阵。
顾名思义,实对称矩阵就是元素全是实数的对称矩阵。最重要的两条,所有特征值都是实数,可对角化。
奇异值分解(singular value decomposition, SVD)与特征值分解
同:两者类似,通过奇异值分解,我们会得到一些与特征分解相同类型的信息。
异:奇异值分解更通用,因为特征值分解涉及转置与逆转置相乘,最低要求是方阵。
为什么要使用Moore-Penrose伪逆
对于非方矩阵而言,其逆矩阵没有定义。假设在下面的问题中,我们希望通过矩阵A的左逆B来求解线性方程
计算方法:
计算伪逆的实际算法没有基于这个定义,而是使用下面的公式
迹运算
迹运算返回的是矩阵对角元素的和
迹不变
多个矩阵相乘得到的方阵的迹,和将这些矩阵中的最后一个挪到最前面之后相乘的迹是相同的。当然,我们需要考虑挪动之后矩阵乘积依然定义良好
即使循环置换后矩阵乘积得到的矩阵形状变了,迹运算的结果依然不变。
另一个有用的事实是标量在迹运算后仍然是它自己:a=Tr(a)
作用
行列式的绝对值可以用来衡量矩阵参与矩阵乘法后空间扩大或者缩小了多少。如果行列式是0,那么空间至少沿着某一维完全收缩了,使其失去了所有的体积;如果行列式是1,那么这个转换保持空间体积不变。
我不明白这里,有明白的求告知。
主成分分析(Principal components analysis,以下简称PCA)是最重要的降维方法之一。在数据压缩消除冗余和数据噪音消除等领域都有广泛的应用。
主要思想
降低维度却最小损失质量。找到的那个更好的向量方向成为最大
一个变量的概率质量函数
离散型变量的概率分布描述方法,大学学的很多概率质量函数,离散涉及到不同的离散对象,因此我们常见名称会
特别指定是哪一个变量。
多个变量的概率质量函数
这时候叫做联合概率分布。表示变量同时发生的情况。
概率密度函数
概率密度函数与概率质量函数对象不同,后者给出的是特定状态,前者给出的是落入面积无限小区域的概率。
进而可以说明为什么前者的表示方法需要传入参数,因为这个参数代表的是面积。
为什么要提出边缘概率
前面已经知道了多个变量产生的概率,即联合概率。而边缘概率所做的是对其中一个子集的概率分布的描述。
边缘概率是与联合概率对应的,P(X=a)或P(Y=b),这类仅与单个随机变量有关的概率称为边缘概率
如果关于x和y的条件概率分布对于z的每一个值都可以写成乘积的形式,那么这两个随机变量x和y在给定随机变量z时是条件独立的(conditionally independent)
方差
衡量的是当我们对x依据它的概率分布进行采样时,随机变量x的函数值会呈现多大的差异:
当方差很小时,f(x)的值形成的簇比较接近它们的期望值。方差的平方根被称为标准差(stan-darddeviation)
协方差
给出了两个变量线性相关的强度以及这些变量的尺度。
协方差的绝对值如果很大,则意味着变量值变化很大,并且它们同时距离各自的均值很远
相关系数
相关系数(correlation)将每个变量的贡献归一化,为了只衡量变量的相关性而不受各个变量尺度大小的影响。
伯努利分布
伯努利试验是单次随机试验(注意是单次实验,多次实验伯努利的叫二项分布),其概率分布称为伯努利分布(Bernoulli distribution),也称为两点分布或者0-1分布,是最简单的离散型概率分布。我们记成功概率为p(0≤p≤1),则失败概率为q=1-p,
重要的是关注一点:即某个事情发生的概率计算公式。
某件事发生的概率计算
Multinoulli 分布
指在具有k个不同状态的单个离散型随机变量上的分布,其中k是一个有限值。
Multinoulli 分布与多项式区别
多项式分布是{0,…, n}k中的向量的分布,用于表示当对Multinoulli分布采样n次时k个类中的每一个被访问的次数。很多文章使用“多项式分布”而实际上说的是Multinoulli分布,但是他们并没有说是对n=1的情况,这点需要注意
高斯分布
也叫正态分布
正态分布可以推广到Rn空间,这种情况下被称为多维正态分布(multivariate normal dis-tribution)。它的参数是一个正定对称矩阵Σ:
指数分布和Laplace分布
Dirac分布和经验分布
more
sigmoid
在二分类中很常见
tanh函数
TanHyperbolic(tanh)函数又称作双曲正切函数,其函数曲线与Sigmoid函数非常相似, 可以通过缩放平移相互变换,
为什么提出测度论
测度论是连续型随机变量和概率密度函数的扩充。
对于求概率密度函数,取什么样的形状是有悖论的,测度论的一个重要贡献就是提供了一些集合的特征,使得我们在计算概率时不会遇到悖论。
零测度
可以认为零测度集在我们的度量空间中不占有任何的体积。
Jacobian矩阵
有时我们需要计算输入和输出都为向量的函数的所有偏导数。包含所有这样的偏导数的矩阵被称为Jacobian矩阵。
自信息:用在单个x
为了满足上述3个性质,我们定义一个事件x=x的自信息(self-information,有的文献中直接称为信息量)为
从公式中可见:当一条信息出现的概率低的时候,信息量越多。
关于信息量有两个衡量单位,衡量主要看log的底数。为e单位是奈特。为2是比特。
下面就是一个例子。
香农熵:用在整体分析
那些接近确定性的分布(输出几乎可以确定)具有较低的熵;那些接近均匀分布的概率分布具有较高的熵。图3.5给出了一个说明。当x是连续的,香农熵被称为微分熵(differential entropy)。
KL散度
它的另一个名字更合适,叫做相对熵。
如果我们对于同一个随机变量 x 有两个单独的概率分布 P(x) 和 Q(x),我们可以使用 KL 散度(Kullback-Leibler (KL) divergence)来衡量这两个分布的差异。
下图的P在Q前面,通常是P是用来描述目标问题,在机器学习中,P往往用来表示样本的真实分布,比如[1,0,0]表示当前样本属于第一类。Q用来表示模型所预测的分布,比如[0.7,0.2,0.1]
直观的理解就是如果用P来描述样本,那么就非常完美。而用Q来描述样本,虽然可以大致描述,但是不是那么的完美,信息量不足,需要额外的一些“信息增量”才能达到和P一样完美的描述。因此在下面公式中增加了Q的信息增量。
KL散度有很多有用的性质,最重要的是,它是非负的(如果我们的Q通过反复训练,也能完美的描述样本,那么就不再需要额外的“信息增量”,Q等价于P,简而言之就似乎不再需要Q的信息增量时)。
KL散度为0,当且仅当P和Q在离散型变量的情况下是相同的分布,或者在连续型变量的情况下是“几乎处处”相同的。然而,它并不是真的距离,因为它不是对称的:只有特殊情况下会有DKL(P||Q)=DKL(Q||P)。这种非对称性意味着选择DKL(P||Q)还是DKL(Q||P)影响很大。
为什么要提出结构化概率模型
ML会有很多随机变量,但这些随机变量并不是直接的一起发生的,这时候对整个进行联合概率分布就很低效。
这时候就是将联合概率拆分成连乘形式
可以用图来描述这种分解。这里我们使用的是图论中的“图”的概念:由一些可以通过边互相连接的顶点的集合构成。当用图来表示这种概率分布的分解时,我们把它称为结构化概率模型(structured probabilistic model)或者图模型(graphical model)。
图模型
有两种主要的结构化概率模型:有向的和无向的。两种图模型都使用图G,其中图的每个节点对应着一个随机变量,连接两个随机变量的边意味着概率分布可以表示成这两个随机变量之间的直接作用。
有向:有向模型对于分布中的每一个随机变量xi都包含着一个影响因子,xi都包含着一个影响因子,这个组成xi条件概率的影响因子被称为xi的父节点,记为pag(Xi)
无向:无向模型中的每个团C(i)都伴随着一个因子φ(i)(C(i))。这些因子仅仅是函数,并不是概率分布。每个因子的输出都必须是非负的,但是并没有像概率分布中那样要求因子的和或者积分为1。
请记住,这些图模型表示的分解仅仅是描述概率分布的一种语言。它们不是互相排斥的概率分布族。有向或者无向不是概率分布的特性;它是概率分布的一种特殊描述(description)所具有的特性,而任何概率分布都可以用这两种方式进行描述
这就是现在奠定的GNN基础吧,本质上只是一种概率模型,用于描述变量之间的之间的关系。
数值上溢:大量级的数被近似为正无穷或负无穷时发生上溢,进一步运算导致无限值变为非数字。
数值下溢:接近零的数被四舍五入为0时发生下溢。被零除,取零的对数,进一步运算会变为非数字。
softmax就是一个必须要防止过拟合的例子。
当x输入很小的负数时,分母就会变为0,这时候发生下溢。
当x输入很大的正数时,分子分母都会趋向于无穷大,这时候发生上溢。
条件数指的是函数相对于输入的微小变化而变化的快慢程度。
在ML既不希望模型条件数太大,也不希望太小。
太大意味着,输入被轻微扰动而迅速改变的函数对于科学计算来说可能是有问题的,因为输入中的舍入误差可能导致输出的巨大变化。
太大softmax就是例子。
病态条件的矩阵也会放大预先存在的误差。在实践中,该错误将与求逆过程本身的数值误差进一步复合。
作用
对于模型总是希望它能找到一个最值点,这就是为什么要用梯度下降的思想不断求导。
问题
在极大极小鞍点时,模型都可能误以为找到极值得方法了。
Jacobian矩阵
将一阶导数合在一起叫做Jacobian矩阵
Hessian矩阵是什么
将二阶导数合在一起的矩阵叫做海森矩阵.
从下图公式还可以得知Hessian矩阵还是实对称矩阵。
Hessian矩阵应用
Hessian Matrix,它有着广泛的应用,如在牛顿方法、求极值以及边缘检测、消除边缘响应等方面的应用。一个Hessian Matrix涉及到很多数学相关的知识点,比如泰勒公式、极值判断、矩阵特征值及特征向量、二次型等。
在机器学习中海森矩阵告诉我们:一阶导数将如何随着输入的变化而改变。它表示只基于梯度信息的梯度下降步骤是否会产生如我们预期的那样大的改善。
ps:曲率
曲线的曲率(curvature)就是针对曲线上某个点的切线方向角对弧长的转动率,通过微分来定义,表明曲线偏离直线的程度。数学上表明曲线在某一点的弯曲程度的数值。
曲率越大,表示曲线的弯曲程度越大。曲率的倒数就是曲率半径。比如地球的曲率很小,乒乓球的曲率很大。
ps:曲率和二阶导的关系
二阶导数的含义是变量变化率的变化率;曲率反映的也是变化率变化的快慢(例如,两条斜率不一样的直线,变量的变化率是不一样的,但曲率是一样的,都为0)。因此,可以将曲率和二阶导数视为相同的东西
约束优化方法一
将约束考虑在内,用梯度下降进行修改。
约束优化方法二
设计一个不同的、无约束的优化问题,其解可以转化成原始约束优化问题的解。
例如,我们要在[插图]中最小化f(x),其中x约束为具有单位L2范数。我们可以关于θ最小化,最后返回[cosθ, sinθ]作为原问题的解。这种方法需要创造性;优化问题之间的转换必须专门根据我们遇到的每一种情况进行设计。
约束优化方法三 KKT方法
对于等式约束的优化问题,可以应用拉格朗日乘子法去求取最优值;如果含有不等式约束,可以应用KKT条件去求取。
KKT方法—KKT推导
求解方法——通过引入松弛变量将不等式变为等式.,用拉格朗日方法求偏导。
注解:松弛变量也就是最优变量。
参考
注意,对于等式约束的KKT乘子,并没有非负的要求!以后求其极值点,不必再引入松弛变量,直接使用KKT条件判断!
这里KKT乘子约束是有推导过程的,在知乎这篇就有推导,但我觉得暂时没什么必要掌握,就省略了。
KKT是确定一个点是最优点的必要条件,但不一定是充分条件。
用文字描述上面的三个KKT条件,它是
广义Lagrangian的梯度为零
不等式约束显示的“互补松弛性”:α⊙h(x)=0。
所有关于x和KKT乘子的约束都满足。