矩阵分解

深度学习理论之数学基础

一笑奈何 提交于 2019-12-06 16:34:28
一、线性代数 1.1 标量、向量、矩阵和张量 标量 :一个单独的数 向量 :一列数,一维数组 矩阵 :二维数组 张量:超过二维的数组 转置: 以对角线为轴的镜像。 1.2 矩阵和向量相乘 矩阵乘法 :两个矩阵A和B的矩阵乘积(matrix product)是第三个矩阵 C。为了使乘法定义良好,矩阵 A 的列数必须和矩阵 B 的行数相等。如果矩阵 A 的形状是 m × n,矩阵 B 的形状是 n × p,那么矩阵C 的形状是 m × p 点积: 1.3 单位矩阵和逆矩阵 单位矩阵:所有沿主对角线的元素都是 1,而所有其他位置的元素都是0,计作: 逆矩阵: 求逆矩阵的条件: 矩阵A必须是一个 方阵(square),即 m = n,并且所有列向量都是线性无关的。一个列向量线性相关的方阵被称为 奇异的 (singular)。 1.4 范数 L 2 范数: 当 p = 2 时,L2 范数被称为 欧几里得范数(Euclidean norm)。它表示从原点出发到向量 x 确定的点的欧几里得距离。L2 范数在机器学习中出现地十分频繁,经常简化表示为 ∥x∥,略去了下标 2。平方 L 2 范数也经常用来衡量向量的大小. L 1 范数: 当机器学习问题中零和非零元素之间的差异非常重要时,通常会使用 L 1 范数 Frobenius 范数: 有时候我们可能也希望衡量矩阵的大小。 1.5

深度学习入门之数学基础概念

独自空忆成欢 提交于 2019-12-06 16:33:48
深度学习之线代复习 标量、向量、矩阵和张量 标量(scalar):一个标量就是一个单独的数。 向量:一个向量是一列数,这些数是有序排列的。我们可以把向量看作空间中的点,每个元素是不同坐标轴上的坐标。 矩阵:矩阵是一个二维数组,其中的每一个元素被两个索引(而非 一个)所确定。 张量(tensor):在某些情况下,我们会讨论坐标超过两维的数组。一般地,一 个数组中的元素分布在若干维坐标的规则网格中,我们称之为张量。 矩阵的向量相乘 在深度学习中, 我们也使用一些不那么常规的符号。我们允许矩阵和向量相 加,产生另一个矩阵:C = A + b,其中 C i , j C_{i,j} C i , j ​ = A i , j A_{i,j} A i , j ​ + b j b_j b j ​ 。换言之,向量 b 和矩阵 A 的每一行相加。这个简写方法使我们无需在加法操作前定义一个将向量 b 复制 到每一行而生成的矩阵。这种隐式地复制向量 b 到很多位置的方式,被称为广播。 A ⊙ B(dot product)被称为元素对应乘积(element-wise product)或者Hadamard乘积(Hadamard product) 矩阵乘积满足分配律,结合率,但不一定满足AB=BA的交换律。 单位矩阵和逆矩阵 任意 向量和单位矩阵相乘,都不会改变。我们将保持 n 维向量不变的单位矩阵记作 I n

奇异值与奇异向量

依然范特西╮ 提交于 2019-12-06 14:33:49
定义 特征值分解是求解方阵的特征,对于非方阵而言可以通过奇异值分解描述矩阵的特征。 对于矩阵A为m*n的矩阵,可以分解成如下形式: A是一个m*n的矩阵,那么得到的U是一个m * m的方阵(里面的向量是正交的,称为左奇异向量),Σ是一个m * n的矩阵(除了对角线的元素外,其它都是0,对角线上的元素称为奇异值),VT是一个n * n的矩阵(里面的向量也是正交的,称为右奇异向量)。 右奇异向量求解 矩阵A左乘转置AT,将会得到一个方阵(n*n),通过该方阵求特征值和特征向量,该特征向量即A的右奇异向量。 上面的Vi构成的矩阵即A的右奇异矩阵。 右奇异向量和奇异值的求解 根据上面得到的特征值λ,计算奇异值σ,以及左奇异向量u: python代码实现 dataA = np.array([[1, 1], [1, 1], [0, 0]]) lvecs, vals, rvecs = np.linalg.svd(dataA) 来源: https://my.oschina.net/u/4228078/blog/3137876

特征值与特征向量

放肆的年华 提交于 2019-12-06 13:52:17
特征值分解 如果一个向量v是方阵A的特征向量,可以表示成如下形式: 其中λ称为特征向量v对应的特征值,一个矩阵的一组特征向量是一组正交向量。 需要注意的是:只有方阵才能进行特征分解。 特征值分解是将一个矩阵分解成下面的形式: 其中Q是这个矩阵A的特征向量组成的矩阵,Σ是一个对角阵,每一个对角线上的元素就是一个特征值。 代码实现 python: //方阵A dataA = np.array([[0.00178, -0.00296, 0.000427], [-0.00296, 0.00704, -0.00093], [0.00043, -0.00093, 0.000197]]) //求特征值和特征向量 eigVals, eigVectors = np.linalg.eig(dataA) //定义特征值的对角阵 smat = np.zeros((3, 3)) smat = np.diag(eigVals) //根据特征值和特征向量重新计算A = QΣQ(-1) result = np.dot(eigVectors, np.dot(smat, np.linalg.inv(eigVectors))) print(result) print(dataA) //对比两个矩阵值是否相同 print(np.allclose(dataA, result)) 来源: https://my.oschina

特征值与特征向量

北战南征 提交于 2019-12-06 07:11:40
特征值分解 如果一个向量v是方阵A的特征向量,可以表示成如下形式: 其中λ称为特征向量v对应的特征值,一个矩阵的一组特征向量是一组正交向量。 需要注意的是:只有方阵才能进行特征分解。 特征值分解是将一个矩阵分解成下面的形式: 其中Q是这个矩阵A的特征向量组成的矩阵,Σ是一个对角阵,每一个对角线上的元素就是一个特征值。 特征值的性质 设n阶矩阵A=(aij) 的特征值为λ1,λ2,...λn λ1+λ2+...+λn = a11+ a22+…+ann,trail(A)=特征值的和; λ1λ2… λn =|A|,特征值的乘积=A的行列式; 如果A是实对称矩阵,则特征向量两两正交,任意两个向量的叉积(np.cross)等于第三个特征向量; 如果A是实对称矩阵,则特征向量构成的矩阵Q有:Q的转置等于Q的逆,即 Q.T = np.linalg.inv(Q); 如果A是实对称矩阵,则特征向量构成的矩阵Q单位正交阵,即np.dot(Q, Q.T) = E; 代码实现 python: # 方阵A 此处为实对称矩阵 dataA = np.array([[0.00178, -0.00296, 0.000427], [-0.00296, 0.00704, -0.00093], [0.00043, -0.00093, 0.000197]]) # 求特征值和特征向量 #

机器学习:数据清洗和特征选择

孤街醉人 提交于 2019-12-06 07:01:23
数据清洗和特征选择 数据清洗 清洗过程 数据预处理: 选择数据处理工具:数据库、Python相应的包; 查看数据的元数据及数据特征; 清理异常样本数据: 处理格式或者内容错误的数据; 处理逻辑错误数据:数据去重,去除/替换不合理的值,去除/重构不可靠的字段值; 处理不需要的数据:在进行该过程时,要注意备份原始数据; 处理关联性验证错误的数据:常应用于多数据源合并的过程中。 采样: 数据不均衡处理:上采样、下采样、SMOTE算法 样本的权重问题 数据不平衡 在实际应用中,数据的分布往往是不均匀的,会出现"长尾现象",即绝大多数的数据在一个范围/属于一个类别,而在另外一个范围或者类别中,只有很少一部分数据。此时直接采用机器学习效果不会很好,因此需要对数据进行转换操作。 长尾效应: 解决方案01 设置损失函数的权重, 使得少数类别数据判断错误的损失大于多数类别数据判断错误的损失 ,即:当我们的少数类别数据预测错误的时候,会产生一个比较大的损失值,从而导致模型参数往让少数类别数据预测准确的方向偏。 可通过设置sklearn中的class_weight参数来设置权重。 解决方案02 下采样/欠采样(under sampling): 从多数类中随机抽取样本从而减少多数类别样本数据 ,使数据达到平衡的方式。 集成下采样/欠采样:采用普通的下采样方式会导致信息丢失

卷积核filter和kernal的区别

余生颓废 提交于 2019-12-06 05:43:51
在一堆 介绍卷积的帖子中,这篇特别之处在于很萌的示例配色,令人眼前一亮,当然直观也是很直观滴,保证了能在昏昏欲睡见周公子前看完。 https:// towardsdatascience.com/ types-of-convolution-kernels-simplified-f040cb307c37 直观介绍各种迷人的CNN层 一个简短的介绍 卷积使用“kernel”从输入图像中提取某些“特征” 。kernel是一个矩阵,可在图像上滑动并与输入相乘,从而以某种我们期望的方式增强输出。看下面的GIF。 上面的kernel可用于锐化图像。但是这个kernel有什么特别之处呢?考虑下图所示的两个输入图像。第一个图像,中心值为3 * 5 + 2 * -1 + 2 * -1 + 2 * -1 + 2 * -1 =7,值3增加到7。第二个图像,输出是1 * 5 + 2 * -1 + 2 * -1 + 2 * -1 + 2 * -1 = -3,值1减少到-3。显然,3和1之间的对比度增加到了7和-3,图像将更清晰锐利。 通过深层 CNN,我们无需再用手工设计的kernel来提取特征,而是可以直接学习这些可提取潜在特征的kernel值。 Kernel与Filter 在深入探讨之前,我想先明确区分“kernel”和“filter”这两个术语,因为我已经看到很多人把它们混为一谈。如前所述

线性代数之——矩阵范数和条件数

守給你的承諾、 提交于 2019-12-06 02:34:34
1. 矩阵范数 我们怎么来衡量一个矩阵的大小呢?针对一个向量,它的长度是 \(||\boldsymbol x||\) 。针对一个矩阵,它的范数是 \(||A||\) 。有时候我们会用向量的范数来替代长度这个说法,但对于矩阵我们只说范数。有很多方式来定义矩阵的范数,我们来看看所有范数的的要求然后选择其中一个。 Frobenius 对矩阵中的所有元素进行平方 \(|a_{ij}|^2\) 再相加,然后 \(||A||_F\) 就是它的平方根。这就像把矩阵看作是一个很长的有 \(n^2\) 个元素的向量,这有时候会很有用,但这里我们不选择它。 向量范数满足三角不等式,即 $||\boldsymbol x+\boldsymbol y|| $ 不大于 $||\boldsymbol x|| + ||\boldsymbol y|| $, \(2\boldsymbol x\) 或者 \(-2\boldsymbol x\) 的长度变为两倍。同样的规则也应用于矩阵的范数: 第二个对矩阵范数的要求是新的,因为矩阵可以相乘。范数 \(||A||\) 控制着从 \(\boldsymbol x\) 到 \(A\boldsymbol x\) 和从 \(A\) 到 \(B\) 的增长。 根据此,我们可以这样定义矩阵的范数: 恒等矩阵的范数为 1,针对一个正交矩阵,我们有 \(||Q\boldsymbol x||=

深度学习之数学基础(线性代数篇)

空扰寡人 提交于 2019-12-06 01:53:09
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/z4909801/article/details/78359952 2-1、标量 一个标量就是一个单独的数,一般用小写的的变量名称表示。 2-2、向量 一个向量就是一列数,这些数是有序排列的。用过次序中的索引,我们可以确定每个单独的数。通常会赋予向量粗体的小写名称。当我们需要明确表示向量中的元素时,我们会将元素排 列成一个方括号包围的纵柱: 我们可以把向量看作空间中的点,每个元素是不同的坐标轴上的坐标。 2-3、矩阵 矩阵是二维数组,其中的每一个元素被两个索引而非一个所确定。我们通常会赋予矩阵粗体的大写变量名称,比如A。 如果一个实数矩阵高度为m,宽度为n,那么我们说 。 2-4、张量 几何代数中定义的张量是基于向量和矩阵的推广,通俗一点理解的话,我们可以将标量视为零阶张量,矢量视为一阶张量,那么矩阵就是二阶张量。 例如,可以将任意一张彩色图片表示成一个三阶张量,三个维度分别是图片的高度、宽度和色彩数据。将这张图用张量表示出来,就是最下方的那张表格: 其中表的横轴表示图片的宽度值,这里只截取0~319;表的纵轴表示图片的高度值,这里只截取0~4;表格中每个方格代表一个像素点,比如第一行第一列的表格数据为[1.0,1.0,1

线性代数之——对角化和伪逆

不问归期 提交于 2019-12-05 17:58:11
这部分我们通过选择更好的基底来产生更好的矩阵。当我们的目标是对角化矩阵时,一个选择可以是一组特征向量基底,另外一个选择可以是两组基底,输入基底和输出基底是不一样的。这些左右奇异向量是矩阵四个基本子空间中标准正交的基向量,它们来自于 SVD。 事实上,所有对 \(A\) 的分解都可以看作是一个基的改变。在这里,我们只关注两个突出的例子,有一组基的 \(\Lambda\) 和有两组基的 \(\Sigma\) 。 \(S^{-1} AS=\Lambda\) 如果输入和输出基都是 \(A\) 的特征值。 \(U^{-1} AV=\Sigma\) 如果这些基分别是 \(A^TA\) 和 \(AA^T\) 的特征值。 只有当 \(A\) 是方阵并且有 \(n\) 个不相关的特征向量时,我们才能将其对角化成 \(\Lambda\) 。而通过 SVD,任意矩阵都可以对角化成 \(\Sigma\) 。如果一个矩阵是对称的、反对称的或者正交的,那么有 \(A^TA=AA^T\) ,在这种情况下,奇异值是特征值的绝对值,上面的两个对角化形式除了一个 \(-1\) 或者 \(e^{i\theta}\) 的因子外是相同的。 另外,注意 Gram-Schmidt 分解 \(A=QR\) 只选择了一个新的基底,也就是通过 \(Q\) 给出的输出正交基,而输入基底则是标准基由 \(I\) 给出