石 溪
毕业于清华大学计算机系,长期从事知识图谱、自然语言处理等方向的研究工作,同时擅长技术文章写作,是颇受读者欢迎和认可的技术专栏作家。
展开
-
线性代数:攀登机器学习的阶梯
机器学习中,数学为什么重要?大家好,我是张雨萌,毕业于清华大学计算机系,目前从事自然语言处理相关的研究工作。撰写《机器学习中的数学》系列专栏并和大家一起共同交流学习,是我们准备了很久的一个计划。当下,机器学习、人工智能领域吸引了许多有志者投身其中,其中包含了大量非科班出身或从其他行业切换赛道转行而来的朋友。大家在学习的过程中经常会感觉学习曲线陡峭、难度较大,而机器学习之所以这么难,首要原因就是...原创 2020-10-28 16:08:47 · 5789 阅读 · 0 评论 -
【机器学习线性代数】01 构建空间:从向量和基底出发
1.向量基础概念回顾1.1.向量的几何含义向量对于大家而言一定不陌生,他的概念很简单,把数字排成一行或一列就是向量。他是描述空间的有力工具。比如二维向量:[45]\begin{bmatrix} 4\\5 \end{bmatrix}[45],他有两个成分:第一个成分是444,第二个成分是555。一方面,我们可以把他理解成二维平面中xxx坐标为444,yyy坐标为555的一个点,也可以理解为以平面原点(0,0)(0,0)(0,0)为起点,到目标终点(4,5)(4,5)(4,5)的有向线段,如图1所示:原创 2020-11-15 10:47:36 · 11715 阅读 · 15 评论 -
【机器学习线性代数】02 初识矩阵:让向量动起来
1.矩阵?一排向量,一堆数介绍完了向量,这一节我们开始介绍矩阵。对于矩阵而言,最直观的描述就是一个m×nm\times nm×n大小的数字方阵,他可以看作是nnn个mmm维列向量从左到右并排摆放,也可以看成是mmm个nnn维行向量从上到下进行叠放。我们举一个实际的例子:一个2×32\times 32×3的矩阵A=[1230.4−42]A=\begin{bmatrix} 1 & 2 & 3 \\ 0.4 & -4 & 2 \end{bmatrix}A=[10.42−43原创 2020-11-15 10:50:17 · 6564 阅读 · 9 评论 -
【机器学习线性代数】03 再论矩阵:空间映射关系的描述
1.利用矩阵表示空间映射回顾上一讲中所讲的内容,在默认基底(e1,e2,...,en)(e_1,e_2,...,e_n)(e1,e2,...,en)构成的RnR^nRn空间中,矩阵AAA与列向量xxx的乘法AxAxAx的本质就是变换向量的基底。将默认基底中的各基向量(e1,e2,...,en)(e_1,e_2,...,e_n)(e1,e2,...,en)分别对应的变换为矩阵AAA的各列,由矩阵AAA的各列充当新的“基向量” ,再结合原向量的坐标,得到目标向量在目标空间中的新位置。总结概况一下原创 2020-11-15 10:51:19 · 6579 阅读 · 6 评论 -
【机器学习线性代数】04 由果寻因:谈谈逆映射与逆矩阵
1.分析映射的逆过程1.1.说说逆矩阵在前面的内容中,我们反复讲矩阵的本质是映射。对于一个m×nm × nm×n的矩阵,乘法y=Axy=Axy=Ax的作用就是将向量从nnn维原空间中的xxx坐标位置,映射到mmm维目标空间的yyy坐标位置,这是正向映射的过程。那么,如果已知结果向量的坐标yyy去反推原向量的坐标xxx,这个过程就称之为逆映射,因为逆映射也是一种映射过程,因此表征逆映射的矩阵,我们称之为:A−1A^{-1}A−1。1.2.和反函数进行类比为了更直观的说明问题,我们在深入讨论逆映射、逆矩原创 2020-11-15 10:52:42 · 3607 阅读 · 5 评论 -
【机器学习线性代数】05 封闭小世界:向量空间及其子空间
在前面的内容中,我们在内容介绍的过程中多次提到了空间的概念,例如空间的映射、空间的压缩、张成空间等等。当然大家凭借感性的认识和一些印象,是可以对空间建立理解的,但是这一讲里,我们想更专业、更系统的来树立起向量空间的认知,而不是一个模糊的感觉。1.向量空间1.1.最常见的向量空间:RnR^nRn首先直观的看:前面我们反复见到的RnR^nRn就是一种向量空间,比如:R1R^1R1,R2R^2R2,R3R^3R3,R4R^4R4等等,RnR^nRn空间由所有含有nnn个成分的列向量构成。比如我们R3R^3R原创 2020-11-15 10:53:22 · 3350 阅读 · 13 评论 -
【机器学习线性代数】06 解方程组:从空间的角度再引入
1.从空间映射的角度再来看方程组这一节我们来系统的聊一下解方程组的问题。这看上去像是中小学生干的事儿。例如我们来解一个三元一次方程组,老师会告诉我们:如果有三个未知数,那么方程组里就需要有三个方程来对其进行求解,如果方程的个数不足三个,那么方程的解就不唯一,如果方程组的个数超过了三个,方程组就无解。对这段话是不是有一些印象?这是一种非常朴素的理解方法,至于说为什么朴素,一方面他的确说明了一些问题,但是实际上描述并不完备、准确。在这一讲里面,我们就把解方程组和前面反复讨论的空间映射结合起来思考,利用矩阵原创 2020-11-15 10:55:17 · 2792 阅读 · 9 评论 -
【机器学习线性代数】07 寻找最近:空间中的向量投影
1.从两个实际问题谈起在近似拟合这一部分内容正式开始之前,我们先抛出两个问题。1.1.如果线性方程组无解怎么办第一个问题还是关于线性方程组解的问题。在上一讲里,我们从空间映射的角度分析了线性方程组的解,阐述了在何种情况下有解,并且如何来描述整个解的空间。那么接下来,我们看看下面这个方程组:2x+y=42x+y=42x+y=4x+2y=3x+2y=3x+2y=3x+4y=9x+4y=9x+4y=9很明显,这个方程组没有解。但是我们不能仅仅停留在这里,因为实际工程领域如果出现这种情况,该如何去解原创 2020-11-15 10:55:54 · 3200 阅读 · 15 评论 -
【机器学习线性代数】08 最小二乘:投影的本质与方法技巧
在上一讲,我们学习了如何将一个向量向空间中任意一个子空间进行投影,那么这一讲我们重点关注向哪投影,即如何选择投影子空间的问题,并介绍运用这一思想的最小二乘近似法。1.互补的子空间我们知道,在一个RmR^mRm空间中有一个向量bbb,我们可以选取mmm个线性无关的向量a1a_1a1,a2a_2a2,…,ama_mam,我们将向量bbb向每个基向量上进行投影,我们得到了mmm个投影向量p1p_1p1,p2p_2p2,…,pmp_mpm,并且显而易见的是,他们满足:b=p1+p2+...+pmb=原创 2020-11-15 10:56:42 · 3140 阅读 · 16 评论 -
【机器学习线性代数】09 相似变换:不同视角下的相同变换
1.知识回顾:坐标值取决于基底1.1.基底不同,向量的坐标值就不同在这一讲的开始,我们再次提及一个反复强调的核心概念:向量在空间中的位置是绝对的,而其坐标值却是相对的,坐标的取值依托于其所选取的基底。更直白的说就是,对于同一个向量,选取的基底不同,其所对应的坐标值就不同。我们用图1.来再次回顾一下:我们看到,图中的向量aaa,他在空间中的位置是固定的,如果我们使用第一组基底(e1,e2)(e_{1},e_{2})(e1,e2), 即([10],[01])(\begin{bmatrix} 1 \原创 2020-11-15 10:59:03 · 2712 阅读 · 8 评论 -
【机器学习线性代数】10 相似对角矩阵:漂亮的最简形式
1.构造对角化转换矩阵PPP的思路现在,我们来讨论上一节末尾遗留的那个问题:既然我们知道对角矩阵是具有最佳性质的相似矩阵,并且我们可以通过P−1APP^{-1}APP−1AP得到矩阵AAA的相似对角矩阵,那么转换矩阵PPP给如何构造?很简单,我们直接从这个式子入手:首先,矩阵PPP和AAA一样,均为nnn阶方阵。为了方便分析和描述,我们把他写成一组列向量并排排列的形式:P=[p1p2...pn]P=\begin{bmatrix} p_{1}&p_{2}&...&p_{n} \e原创 2020-11-16 21:45:06 · 2826 阅读 · 4 评论 -
【机器学习线性代数】11 核心灵魂:矩阵的特征值与特征向量
有了前面两讲的理论铺垫,我们对矩阵相似和对角化有了深入了解,最终,我们的落脚点就是特征值和特征向量。在这一讲当中,我们将这一块儿的内容彻底解决,一方面系统性的梳理一下他的相关重要特性,另一方面从技术层面来讲解特征值和特征向量的求解方法。1.几何意义回顾我们简要的再回顾一下Ap=λpAp=\lambda pAp=λp这个核心表达式:从空间几何意义的角度来理解,对于一个方阵AAA,若ppp是他的特征向量,λ\lambdaλ是对应的特征值,则意味着向量ppp在方阵AAA的作用下,他的空间变换就是其长度沿着向量原创 2020-11-16 21:47:03 · 3336 阅读 · 4 评论 -
【机器学习线性代数】12 对称矩阵的优秀特性
这里,我们花一讲的篇幅专门讨论一下对称矩阵,我们把对称矩阵称之为“最重要的”矩阵丝毫不夸张,因为他拥有许多非常重要和漂亮的性质。1.对称矩阵基本特性回顾首先,我们简单的回顾一下在之前的内容里介绍过的关于对称矩阵的基本特性:如果一个矩阵SSS的所有数据项都满足Sij=SjiS_{ij}=S_{ji}Sij=Sji,那么这个矩阵就是一个对称矩阵。通俗的说,一个对称矩阵通过转置操作,得到的仍然是他自身,即满足:S=STS=S^TS=ST。我们从这里面还可以推断出对阵矩阵SSS所蕴含的一个前提条件:他必须原创 2020-11-16 21:48:33 · 2595 阅读 · 7 评论 -
【机器学习线性代数】13 提取主成分:矩阵的特征值分解
1.期望与方差看到这个小标题,读者也许会想,这里不是在讲线性代数么,怎么感觉像是误入了概率统计的课堂?这里我专门说明一下,在这一讲里,我们的最终目标是分析如何提取数据的主成分,如何对手头的数据进行降维,以便后续的进一步分析。往往问题的切入点就是数据各个维度之间的关系以及数据的整体分布。因此,我们有必要先花点功夫,来梳理一下如何对数据的整体分布情况进行描述。首先大家知道,期望衡量的是一组变量XXX取值分布的平均值,我们一般记作:E[X]E[X]E[X],反映的是不同数据集的整体水平。比如,在一次期末考试原创 2020-11-16 21:49:11 · 3469 阅读 · 11 评论 -
【机器学习线性代数】14 奇异值分解(上):原理与通用性
1.再谈特征值分解的几何意义在上一讲,我们讲了通过特征值分解(EVD)的方法对样本的特征提取主成分,从而实现数据的降维。在介绍奇异值分解(SVD)之前,我们再着重挖掘一下特征值分解的几何意义。1.1.分解过程回顾我们最开始获得的是一组原始的m×nm\times nm×n数据样本矩阵AAA,其中,mmm表示特征的个数,nnn表示样本的个数。通过与自身转置相乘:AATAA^TAAT得到了样本特征的mmm阶协方差矩阵CCC,通过求取协方差矩阵CCC的一组标准正交特征向量q1,q2,...qmq_1,q_2,原创 2020-11-16 21:51:03 · 2637 阅读 · 3 评论 -
【机器学习线性代数】15 奇异值分解(下):进行数据降维
我们在上一讲的理论基础上继续推进,来讲解将任意一个m×nm\times nm×n形状的矩阵AAA成功完成奇异值分解之后,应如何对原始数据进行主成分分析和数据降维。1.行压缩数据降维我们直接从矩阵AAA的奇异值分解:A=UΣVTA=U\Sigma V^TA=UΣVT入手,分析如何进行行压缩数据降维。等式两侧同时乘以左奇异矩阵的转置:UTU^TUT,得到:UTA=UTUΣVT=ΣVTU^TA=U^TU\Sigma V^T=\Sigma V^TUTA=UTUΣVT=ΣVT,重点是左侧的UTAU^TAUTA,原创 2020-11-16 21:52:07 · 1685 阅读 · 2 评论 -
【机器学习线性代数】16 SVD在推荐系统中的应用
1.应用背景在这一节里,我们来重点分析一下如何把 SVDSVDSVD 的处理方法应用到推荐系统中,我们在一个实际的案例中进行探讨。有一个风味美食平台,经营着多种不同风味儿的地方特色美食,在系统中维护着一个原始的打分表:表中的行表示各个用户,列表示各种菜品,每一个用户在对一个菜品消费之后都会对其进行打分,分数为1分~5分,分数越高表示评价越高。如果该用户没有消费某道菜品,则分数值默认为0分。在我们的例子中,一共有18名用户对11个不同的菜品进行了打分评价,原始的打分数据如下:2.整体思路概述我原创 2021-04-08 10:51:59 · 1524 阅读 · 3 评论 -
【机器学习线性代数】17 利用SVD进行彩色图片压缩
这一节,我们再来介绍一个奇异值分解的实际案例:即如何基于SVD的主成分分析方法,来对一张彩色图像进行压缩处理。1.图像的数据表示很明显,如果要对一张图像进行压缩,首先我们得知道应该如何用数据的形式来表示一张具体的图像,在此基础上才能进行下一步的数据压缩处理。那么首先我们利用python中的第三方工具 pillowpillowpillow,来读取一张样例图片,观察他的参数信息。这里我们要处理的样例图片如下:这里要提醒一下大家,由于pillowpillowpillow库是第三方工具,不是python3原创 2021-04-08 11:00:50 · 1738 阅读 · 3 评论 -
【机器学习线性代数】18 傅里叶级数:从向量的角度看函数
1 函数:无穷维向量空间是整个线性代数理论与实践的核心概念,在这一节中我们再一次的遇见了他。我们先简要的回顾一下之前介绍过的向量空间有关概念。向量空间RnR^nRn由所有含有 nnn 个成分的列向量所构成。比如,R4R^4R4空间中就包含了所有含有 444 个成分的列向量[x1x2x3x4]\begin{bmatrix} x_1\\x_2\\x_3\\x_4\end{bmatrix}⎣⎢⎢⎡x1x2x3x4⎦⎥⎥⎤, 因此RnR^nRn空间也称为是 nnn 维空间,并且在这个向量空间RnR原创 2021-04-08 11:05:04 · 1818 阅读 · 1 评论 -
【机器学习线性代数】19 复数域中的向量与矩阵
#1 回顾:复数和复平面首先我们快速的回顾一下复数和复平面的基本知识,便于后续知识的介绍。我记得当我们接触到x2=−1x^2=-1x2=−1这个方程的时候,虚数iii第一次进入到了我们的世界中,对于虚数而言,他的加法和乘法运算都并无新意:i+i=2ii+i=2ii+i=2i2i+3i=5i2i+3i=5i2i+3i=5i唯一的新奇之处就在于虚数的平方运算,也就是在解方程x2=−1x^2=-1x2=−1的时候,其平方运算结果是i2=−1i^2=-1i2=−1。那么对虚数有了认识之后,复数的概念就很原创 2021-04-08 11:06:42 · 2367 阅读 · 2 评论