平常生活或生产实际中常常须要求一些量,用未知数 x1,x2,....,xn表示这些量,根据问题的实际状况列出方程组,而最多见的就是线性方程组(固然并非说只能用线性方程组,深度神经网路里就是非线性方程组)。html
须要特别理解和思考的是,数学的各个分支以及天然科学、工程技术中,有很多问题均可以概括为线性方程组的问题,养成抽象思惟很是重要。 算法
某食品厂收到了某种食品2000kg的订单,要求这种食品含脂肪5%,碳水化合物12%,蛋白质15%。该厂准备用5种原料配置这种食品,其中每一种原料含脂肪、碳水化合物、蛋白质的百分好比下表示:数组
如今的问题是:可否用上述5种原料配置出2000kg的这种食品?若是能够,那么有多少种这种配方?若是不能够,那么如何在知足养分成分的状况下,尽可能的靠近目标产量(2000kg)。网络
这是一个很是贴近现实业务的问题,咱们从这个例子出来,来一块儿体会下机器学习是如何运用线性方程组来解决这种问题的。app
设每种原料(A一、A二、A三、A四、A5)所须要的的量分别为 x1,x2,x3,x4,x5,则将上述问题场景抽象为以下线性方程组:机器学习
这个方程是咱们在初高中学习中很是熟悉的行方程组,从行视角来看,4行方程组5个未知数,没法彻底消元,所以方程组的解有无数多个。对应到问题自己的现实场景就是,在实数域空间(强调重点)有无数种搭配方案能够知足题目的要求。svg
笔者思考:列向量相比行向量,有一种瞬间穿透事物表面,洞悉事物所有内核的哲学意味。若是把行向量比做量的累计,那么列向量则是质的变化,直接纵向穿透事物的全部维度。函数
上面的问题还能够用代数学的视角来从新思考,接下来咱们用线性代数的相关知识来重写上述线性方程组。post
咱们把上述方程组的系数和常数项以列向量的形式抽象为一个增广矩阵:学习
在这个场景中,列向量的物理意义仍是相对明确的,即:每kg原料中包含了4个维度的物质量,这4个维度分别为【原料重量,脂肪量,碳水化合物量,蛋白质量】。A1,A2,A3,A4,A5这5种原料构成了5个实例(样本),每一个数据样本的特征维度是4。
将改增广矩阵中系数据很和常数矩阵分别写成列向量组的形式:
,
,其中,
。注意向量的转置。
,
将要求解的未知量用向量组w来表示:
,
,一个w行向量4个维度都相同,即一个w行向量是一个1维向量。
它的物理意义是:每kg原料中,对4个维度的物质分别包含多少kg的原料。
用向量组简写形式表达上面增广矩阵:
这个公式就是从列向量的角度从新看线性方程组。
笔者思考:在这题的特定场景下,这里w1必须是1维的列向量,由于这是一个现实物理世界中的问题,咱们不能说咱们取了1kg的原料,咱们同时也取了2kg的原料,这是不符合现实的。
可是在其余的抽象逻辑场景中,参数向量w经常能够是高维向量,例如深度神经网络中,参数权重向量w经常是上百甚至上千维的向量,从这个例子也能够更直观地体会到,更高维度的w向量,意味着咱们对输入向量X中的不一样维度能够由更细粒度的“取舍和控制”,more dimension,more complex。
围绕上述线性方程组,须要研究下列几个问题:
1. 线性方程组是否必定有解?若是有解,有多少个解? 2. 如何求线性方程组的解?如何高效地求解? 3. 线性方程组有解时,它的每个解是否都符合实际问题的需求,就像上面第一小节的线性方程组,在是属于上这个线性方程组有无穷多的解,可是实数域在现实世界每每不太实用,大多时候咱们会选择整数域或者一个有限精度的浮点数域,这样解的个数就是有限的了。 4. 线性方程组的解不仅一个时,这些解之间有什么关系?
咱们在实际业务场景中遇到的建模和机器学习问题,基本上能够概括为上述问题的抽象和组合。
文章的接下来部分,咱们会围绕上面的几个问题展开讨论。
Relevant Link:
http://liyangbit.com/math/jupyter-latex/ 《简明线性代数》 - 丘维声教授 https://zhuanlan.zhihu.com/p/33691914 内含B站的一组线性代数教学视频,讲的超级通俗易懂
利用向量的加法运算和数乘运算,咱们能够把数域K上的n元线性方程组:
写成:
令:
则该线性方程组可写成:
因而,数域K上的线性方程组有解,等价于下面两种表达:
K中存在一组数,c1,c2,...,cn,使得成立;即 β 能够由a1,a2,...,an线性表出。
在上一小节中,咱们把线性方程组有没有解的问题归结为:常数项列向量能不能由系数矩阵的列向量线性表出。接下来问题就是,如何研究中一个向量能不能由一个向量组线性表示呢?
这个问题涉及到向量组的线性相关性的讨论,咱们由浅入深,借助咱们容易理解的3维几何空间来逐渐理解这个概念。
实数域R上的3维向量空间的元素是3元有序实数组。在几何空间(由全部以原点为起点的向量组成)中,取定一个作个坐标系后,每一个3元有序实数组表示一个向量。所以能够把
当作几何空间。这样咱们能够从几何空间出发,来研究
中一个向量可否由向量组线性表出的问题。
在几何空间中,设 a1 和 a2 不共线(这是向量基的充分条件)。
若是 a3 能够由 a1,a2 线性表出,则 a1,a2,a3 共面;
若是 a3 不能由 a1,a2 线性表出,则 a1,a2,a3 不共面;
从解析几何角度咱们知道:
a1,a2,a3 共面的充分条件是有不全为零的实数 k1,k2,k3,使得 k1a1 + k2a2 +k3a3 = 0;
a1,a2,a3 不共面的充要条件是:从 k1a1 + k2a2 +k4a4 = 0,直接推出 k1 = 0,k2 = 0,k4 = 0,即只有零解。
从几何空间的上述例子受到启发,在中为了研究一个向量可否由一个向量组线性表出,就须要研究上述两种类型的向量组,即定义一组向量基,而且计算该向量可否由该向量基线性表出。
下面给出向量组线性相关和线性无关的抽象定义公式,具体如何数值化计算该公式,咱们文章后面继续深刻讨论。
中向量组
称为线性相关的,若是有K中不全为零的数
,使得
。
从线性组合视角来看:即它们有系数不全为零的线性组合等于零向量。
从线性表出视角来看:即向量组中至少有一个向量能够由其他向量线性表出,也能够说这个向量组存在冗余向量,后面讨论PCA的时候会再谈到这点。
从齐次线性方程组视角来看:即齐次线性方程组有非零解。
从行列式视角来看:n个n维行向量线性相关当且仅当以
为行向量组的矩阵的行列式等于零。
中向量组
若是不是线性相关的,则称为线性无关的,即若是从
能够推出全部系数
全为0,则称向量组
是线性无关的。
从线性组合视角来看:即它们只有系数全为零的线性组合才会等于零向量。
从线性表出视角来看:向量组中每个向量都不能由其他向量线性表出。
从齐次线性方程组视角来看:即齐次线性方程组只有非零解。
从行列式视角来看:n个n维行向量线性相关当且仅当以
为行向量组的矩阵的行列式不等于零。
根据上述定义以及解析几何的结论能够获得第一小节的问题:
1. 几何空间中,共面的3个向量是线性相关的,不共面的3个向量是线性无关的; 2. 共线的2个向量是线性相关的,不共线的2个向量是线性无关的;
1. 若是一个向量组线性无关,则它的任何一个部分组也线性无关;
笔者思考:若是高维的向量组是线性无关的,则它的低维子集组一样也是”紧密的“,即线性无关。
2. 若是一个向量组线性相关,则该向量组中必定存在某个缩短组也线性相关;
咱们能够借助3维空间来理解这个定义,下图中,向量E是一个(x,y,z)3维向量,B和C都是(-x,-y,0)的2维平面上的向量,D是(x,y,0)的2维平面向量,D的方向和B/C相反。
能够很容易理解,向量组(B,C,D,E)是线性相关的。同时该向量组的一个缩短组(B,C,E)是线性相关的。
可是也容易看到,另外一个缩短组(B,C)是线性无关的。
笔者思考:一个向量组是线性相关的,能够理解为这个向量组中存在一个冗余结构,若是对应的部分组(缩短组)包含了这个冗余结果则该缩短组也一样是线性相关的,但若是该缩短组足够”小“,不包含该冗余结构,则该部分组是线性无关的。须要读者朋友注意的是,从3维几何空间来看线性相关和线性无关很是形象,可是到了更高维的空间就须要借助公式的推导和定义,由于高维空间超出人的想象空间了。
1. 若是一个向量组的一个部分组线性相关,则整个向量组(延伸组)也线性相关;
证实:
设向量组的一个部分组,例如说
线性相关,则有数域K中不全为零的数 k1,k2,...,kt,使得
。
从而有。
因为不全为零,所以
线性相关。
笔者思考:若是咱们将线性相关理解为一个存在冗余的的空间结构的话,低维的部分组若是存在冗余结构,则维度升高到更高维后,这种冗余度必然是继续存在的(用真子集的概念来理解)。
笔者思考:这个很容易理解,一个紧密结构的的向量组,当扩充新的向量进来后,有可能会破坏这种紧密结构。
咱们来一块儿看一个特殊的线性无关向量组。
在中,向量组”
是线性无关的。证实:
设,即
从而:
由此得出,所以向量组
是线性无关的。
值得注意的是,这个向量组不只是相关无关的,并且向量组内的向量仍是彼此正交的,这样的向量组能够做为其余向量组的正交基。
上个章节中咱们讨论了向量组中部分组和由部分组线性表出一个另外一个向量的话题。
接下来新的问题来了,部分组能够随意选取吗?随便一个部分组均可以线性表出原向量组中的其他向量吗?若是不是,那这个部分组的向量个数是多少呢?部分组的选取是惟一的吗?
带着这些问题,咱们来讨论向量组的秩的问题。
如上图所示,几何空间中,设 a1,a2,a3 共面,而且 a1,a2,a3 两两不共线。
它的一个部分组 a1,a2 线性无关;
部分组 a1 也线性无关;
部分组 a1,a2 和部分组 a1 虽然都线性无关,可是它们有区别:
对于部分组 a1 来讲,添加上 a3 后获得的部分组 a1,a3 仍然线性无关;
而部分组 a1,a2 添加上 a3 后获得的 a1,a2,a3 就线性相关的了;
从几何的视角来看,a1加上a3后,没有改变部分组的“线性无关紧密结构”。而 a1,a2 加上 a3 后,再也没法保持原部分组的”线性无关紧密结构“,变成了线性相关。
这个性质很是有趣,也很是有用,在不少算法中,咱们都须要获取并利用这个极大线性无关组。
中向量组的一个部分组称为一个极大线性无关组,当且仅当这个部分组自己是线性无关的,可是从向量组的其他向量(若是还有的话)中任取一个添加进去,获得的新的部分组都线性相关。
在上述例子中,a2,a3 和 a1,a3 都是 a1,a2,a3 的一个极大线性无关组。
能够看到,这2个极大线性无关组的向量个数是相等的,这个性质是广泛存在的吗?这2个极大线性无关组之间的关系是怎样的?互相等价的吗?
若是向量组的每个向量均可以由向量组
线性表出,则称向量组
能够由向量组
线性表出。
进一步,若是向量组能够由向量组
能够互相线性表出,则称向量组
能够由向量组
等价,记做
.
向量组的等价是向量组之间的一种关系,这种关系具备下述三条特性:
1. 反身性:任何一个向量组都与自身等价; 2. 对称性: 3. 传递性:
由上述基本特性能够推出:向量组的任意两个极大线性无关组等价。
须要注意的是,向量组的等价性质,不是数值意义上的等价,而是解空间结构的等价性。 两个向量组等价,是在说这两个向量组的解空间结构相同。解空间结构相同,进而这两个向量组的秩也相同,秩能够理解为描述解空间结构维度的度量。
这里仍是从空间几何角度来帮助理解。
设 a1,a2 不一样线。若是能够由 a1,a2 线性表出,则
必定共面,以下图所示:
能够看到,向量组虽然有3个向量,可是由于和向量组 a1,a2 等价,因此它的秩依然是2。
设 a1,a2 同线,若是能够由 a1,a2 线性表出,则
必定共线,即秩为1,以下图:
由上述能够推出一个推论:等价的线性无关的向量组所含向量的个数相等。
这个推论和咱们本章的标题本质是一致的:
方程组(向量组)的解空间结构,就是由该向量组的全部等价的极大线性无关组组成的。其中每一个极大线性无关组都是线性无关的,且他们的向量个数相同(等价的向量组有相同的秩),等于原向量组的秩。
向量组的极大线性无关组所含向量的个数称为这个向量组的秩。
有了上面章节的铺垫后,接下来能够来讨论咱们如何直接用线性方程组的系数和常数项判断方程组有没有解,有多少解的问题。
线性方程组有解的充要条件是:它的系数矩阵A与增广矩阵A'有相同的秩。这个定理能够这么理解,线性方程组有解,等价于:
存在一组不全为0的{a1,...,an},使得有解;
也即 β 能够由向量组线性表出;
也即向量组线性相关;
向量组是向量组
的一个极大线性无关组,向量组
和向量组
等价;
须要注意的是,这个定理只能判断线性方程组是否有解,至因而有惟一解仍是有无穷解没法判断。
线性方程组有解时,若是它的系数矩阵A的秩等于未知量的个数n,则方程组有惟一解;
若是A的秩小于n,则方程组有无穷多个解;
其次线性方程组有非零解的充要条件是:它的系数矩阵的秩小于未知量的个数;
齐次线性方程组比较特殊,若是它又惟一解那必定是零解,所以其次线性方程组要么无解,要么有无穷多个解。
讨论了通用线性方程组解的通常性质以后,咱们来缩小范围,将讨论视角集中在齐次线性方程组,齐次线性方程组是一类很是重要的方程组,在机器学习的不少算法和优化理论中都有它的身影。
实数域R上一个3元齐次线性方程表示过原点的一个平面。
所以3元齐次线性方程组的解集W多是如下几种状况:
1. 过原点的一条直线 l:W中每一个向量能够由 l 中的一个方向向量线性表出; 2. 过原点的一个平面 ∏:W中每一个向能够由平面∏上不共线的两个向量线性表出; 3. 原点(即零向量);
这代表在3元齐次线性方程组对应的3维空间中,解集W中无穷多个向量能够用W中一个或两个向量线性表出。
接下来讨论通常状况下,齐次线性方程组的解空间结构。
齐次线性方程组的解空间(线性子空间)对加法封闭。
齐次线性方程组的解空间(线性子空间)对数量乘法封闭。
综合上述2个性质得出,齐次线性方程组的解集W是的一个子空间,称为方程组的解空间。
齐次线性方程组有非零解时,此时方程组有无限多的解。可是这无限多的解能够由一组有限多个解来概括表示,这组有限多的解知足如下条件:
1. 线性无关;
2. 方程组的每个解均可以由线性表出;
则称是齐次线性方程组的一个基础解系。
若是齐次线性方程组有一个基础解系,那么称为方程组的通解。
基础解析是用来表示全部解的一组解集,它自己具备概括总结特性。
数域K上n元齐次线性方程组的系数矩阵A的秩小于未知量个数n时,它必定有基础解系。而且它的每个基础解系所含解向量的个数等于 n - rank(A);
设U是的一个子空间,U中的向量组
若是知足下述两个条件:
1. 线性无关;
2. U中每个向量均可以由线性表出;
则称是U的一个基(基能够有不少)。
因而,若是是齐次线性方程组的一个基础解系,则
同时也能够被称为是解空间W的一个基(基的概念比基础解析的范围更泛)。
因为线性无关,而且
中每个向量均可以由
线性表出,所以
是
的一个基,称它为
的标准基。
几何空间中,任取三个不共面的向量a1,a2,a3,因为任何一个向量β 能够由 a1,a2,a3 线性表出,而且 a1,a2,a3 线性无关,所以 a1,a2,a3 是几何空间的一个基。
能够证实,的每个非零子空间U 都有一个基。也就是说,任何一个解集,均可以经过对应的一个基(基础解析)来概括表示。
的非零子空间U的任意两个基所含向量个数相等,这两个基互相等价。
设U是的一个非零子空间,U的一个基所含向量的个数称为U的维数,记做
或者简记为
。特别的,零子空间的维数规定为0。
因为是
的一个基,所以
,所以咱们也把
称为n维向量空间。
在几何空间中,任意三个不共面的向量是它的一个基,所以几何空间是3维空间;
过原点的一个平面,它的任意两个不共线的向量是它的一个基,所以过原点的平面是2维的子空间;
过原点的一条直线,它的一个方向向量是它的一个基,所以过原点的直线是1维的子空间;
数域K上n元齐次线性方程组有非零解时,它的解空间W的每个基所含向量个数为 n - rank(A),其中A是方程组的系数矩阵。所以解空间的维数为
基对于决定子空间的结构起了很是重要的做用,若是知道了子空间U的一个基,那么U中每个向量均可以由这个基线性表出,而且表出的方式是惟一的,其中系数组成的有序数组称为该向量在这个基下的坐标。
在中,向量组
的一个极大线性无关组是子空间
的一个基,从而:
该定理代表:向量组的秩等于由它生成的子空间的维数。
从而将线性子空间的基/维数的概念和线性方程组/极大线性无关组/秩的概念联系了起来。
数域上n元非齐次线性方程组
的一个解是
中的一个向量,称它为方程组的一个解向量。
3元非齐次线性方程组的解集是不过原点的一个平面
,而相应的齐次线性方程组
的解集是过原点的一个平面
,以下图所示:
能够由
沿着向量
平移获得。
因而上每个向量
能够表示成:
从上面3维几何空间的的例子咱们受到启发,n元非齐次线性方程组的解集U,与相应的n元齐次线性方程组的解集W 有以下关系:
其中,是非齐次线性方程组的一个特解,W是方程组的导出组的解集。
咱们把n元齐次线性方程组称为非齐次线性方程组的导出组。
1)性质1:n元非齐次线性方程组的两个解的差是它的导出组的一个解。
2)性质2:n元非齐次线性方程组的一个解与它的导出组的一个解之和,还是非齐次线性方程组的一个解。
当n元非齐次线性方程组有无穷多个解时,它的导出组必有非零解。此时导出组的一个基础解系,其中 t 是导出组的系数矩阵A的秩。
则非齐次线性方程组的解集U为:
其中是非齐次线性方程组的一个特解;解集U的表明元素
称为非齐次线性方程组的通解。
齐次方程组的解与非齐次方程组的解关系是:
非齐次组的解向量等于齐次组的解+非齐次组的一个特解;
也就是说只要求出齐次组的解空间的一组基础解系,好比是,一个非齐次组的特解好比是X1,,那么非齐次组全部解能够表示为
因此求非齐次组的通解只需求出其一个特解,再求出对应的齐次组的基础解系便可。
区别是:
非齐次组的解不能造成线性空间,由于其解向量关于线性运算不封闭:任何齐次组的解的线性组合仍是齐次组的解,可是非齐次组的任意两个解其组合通常再也不是方程组的解(除非系数之和为1)而任意两个非齐次组的解的差变为对应的齐次组的解。
非齐次线性方程组的解集不能称为基础解系,因这些解不能生成解空间(线性运算不封闭)
Relevant Link:
https://zhidao.baidu.com/question/478480630.html
假设一个维数为3的线性方程组(即基础解析的向量个数为3),该线性方程组包含若干个三元一次方程:
其中每个三元一次方程表明三维空间中的一个平面,也叫由3维基础解析张成的向量空间。
若是平面个数大于维度,称为超定方程;
小于维度,称为欠定方程;
等于维度,称为适定方程;
知足这个线性方程组的解 x=[x1,x2,x3] 同时属于全部平面,接下来咱们来讨论线性方程组的解的个数从0,1,无穷多时,分别对应的几何概念。
齐次方程组具备形式,每一个方程对应的平面都是过原点的。根据系数矩阵A的秩不一样,有如下三种状况。
A的每一行,即全部平面的法向量[a11,a12,a13],[a21,a22,a23],[a31,a32,a33]...可以张成一个三维空间。
平面只有一个交点:[0,0,0],线性方程有一个解,即零解。
全部平面的法向量,都处于同一个平面内。
因为三个平面都过同一个点[0,0,0],因此他们共有一条交线,线性方程有无穷多解。
同时要注意的是,这些解共线,换句话说,解集构成了一个二维的子空间。
全部平面的法向量共线,整个线性方程组其实能够简化为一行。
因为三个平面都过同一个点,全部平面重合于过[0,0,0]的平面,线性方程有无穷多解。
非齐次方程具备形式,至关于把齐次线性方程组对应的若干平面进行总体平移。
这种状况至关于全部平面都平移
写成矩阵形式:,即,常数项b能够表示成A的列的线性组合,即b处于A的列空间内。把A,b并列组成的增广矩阵[A;b]。
从矩阵的角度来讲,增长一列不会减小矩阵的秩,即 r(A) ≤ r([A;b]
若是 r(A) = r([A;b]),则 Ax = b 的解的状况和Ax=0相同;
若是 r(A) < r([A;b]),则 Ax = b 无解(参考文章前面对线性方程组解存在条件的讨论);
Relevant Link:
https://blog.csdn.net/shenxiaolu1984/article/details/54893299 https://technology.cpm.org/general/3dgraph/
向量空间是为线性代数准备的舞台。而演员,就是矩阵。
矩阵在线性代数中是一个很是重要而又复杂的概念,从任何一个角度来阐述都是对的,笔者这里不纠结具体的公式定义,而是从各个视角来展现矩阵的本质,但愿能给读者朋友构建一个全面的多维度认知,对矩阵创建感性和理性上的认识,从而在从此学习更多线性代数知识以及理解机器学习中核心算法时能有帮助。
这样,矩阵就再也不是系数
了,而是一个函数(或者说是映射)了,矩阵是一个更泛化的概念。
要讨论线性变换,首先须要定义线性空间。
空间这个概念是现代数学的核心概念之一。对于空间的理解须要更抽象一些,简单的说,能装东西的就是空间。
好比计算机内有存储单元,那么就有内存空间;咱们上课有课表,那么就有课表空间;有一个能装载梦境的东西,咱们能够叫它盗梦空间。对于数学来讲,空间里装载的是能运算的东西。从拓扑空间开始,一步步往上加定义,能够造成不少空间。
线形空间相对是一种比较初级的空间;若是在里面定义了范数,就成了赋范线性空间;赋范线性空间知足完备性,就成了巴那赫空间;赋范线性空间中定义角度,就有了内积空间;内积空间再知足完备性,就获得希尔伯特空间;若是空间里装载全部类型的函数,就叫泛函空间。
咱们从咱们生活在其中的(按照牛顿的绝对时空观)的三维空间开始提及,逐步解释空间的数学定义,从数学上说,这是一个三维的欧几里德空间,这个三维的空间有以下几个特色:
1. 由不少(其实是无穷多个)位置点组成; 2. 这些点之间存在相对的关系; 3. 能够在空间中定义长度、角度; 4. 这个空间能够容纳运动;
上面的这些性质中,最最关键的是第4条,也就是说:容纳运动是空间的本质特征。
认识到了这些,咱们就能够把咱们关于三维空间的认识扩展到其余的空间。事实上,无论是什么空间,都必须容纳和支持在其中发生的符合规则的运动(变换)。好比拓扑空间中有拓扑变换,线性空间中有线性变换,仿射空间中有仿射变换,其实这些变换都只不过是对应空间中容许的运动形式而已。本质上来讲,“空间”是容纳运动的一个对象集合,而变换则规定了对应空间的运动。
线性空间中的任何一个对象,经过选取坐标系(基)和坐标的办法,均可以表达为向量的形式。
只要找到合适的坐标轴(也就是基),就创建了一个坐标系,就能够用坐标(表示成向量的形式)表示线性空间里任何一个对象。换句话说,给你一个空间,你就能用基和坐标来描述这个空间中的对象。
向量表面上只是一列数,可是因为向量的有序性,除了这些数自己携带的信息以外,还在对应位置上携带信息。
线性空间中的运动,被称为线性变换。也就是说,从线性空间中的一个点运动到任意的另一个点,均可以经过一个线性变化来完成。
在线性空间中,当选定一组基以后,不只能够用一个向量来描述空间中的任何一个对象,并且能够用矩阵乘法来描述该空间中的任何一个运动(变换)。而使某个对象发生对应运动的方法,就是用表明那个运动的矩阵,乘以表明那个对象的向量。
简而言之,在线性空间中选定基以后,向量(坐标)刻画对象,矩阵刻画对象的运动(矩阵乘法的本质是运动的施加),用矩阵与向量的乘法施加运动。
上面讨论的线性空间和矩阵乘法过于抽象,线性空间拥有向量夹角,向量旋转等概念,所以这个章节咱们来三角几何旋转的角度来直观的呈现矩阵的本质。
平面上取定一个直角坐标系Oxy,全部以原点为起点的向量组成的集合记做V,让V中每一个向量绕原点O旋转角度θ,以下图所示:
这个旋转是一个transformation动做,那如何经过数学来形式化定义这个旋转动做呢?
咱们将上述旋转角度θ的这个动做记做σ
设的坐标为(x,y),它在旋转 σ 下的像
的坐标为(x',y')。设以 x 轴的正半轴为始边,以射线OP为终边的角为a,设
,从三角函数的定义得:
由此得出:
上式就是旋转σ的公式,把公式中的系数写成矩阵的形式:
该矩阵就表示了转角为θ的旋转变换,即将输入向量的坐标总体移动一个角度。旋转变换是一种线性变换,它将全部向量点共同移动了一个相同的角度。
从向量基(初等数学里叫坐标系)来讨论下矩阵映射的本质。
所在平面为
、
所在平面为
,都是二维平面,即
。
在下图中,咱们把也用一个灰色方块表示(表明了一个映射),
会经过
映射到
:
设:
,其中
为
的列向量。
根据矩阵乘法的规则有:
则至关于在
空间中,以
为基,坐标为
的向量,再将
向量用天然基表示,变换过程以下动图所示:
总体来讲,矩阵映射的本质是基改变,致使向量的坐标发生变化。
风动?帆动?或者都没动。也许世界历来都没有变换,变的只是你看世界的方式。
咱们前面的小节展现了三角旋转和矩阵的对应关系,实际上,矩阵不只有旋转运动,同时还有拉伸运动。
左乘表明进行一个向量基的旋转:
继续左乘对角矩阵:
能够看到:
反向变换(即求逆)也是一样道理
设,令
,其中
则矩阵C称为矩阵A与B的乘积,记做 C = AB
矩阵乘法有几个要点:
1. 只有左矩阵的列数与右矩阵的行数相同的两个矩阵才能相乘; 2. 乘积矩阵的(i,j)元等于左矩阵的第 i 行与右矩阵的第 j 列的对应元素的乘积之和; 3. 乘积矩阵的行数等于左矩阵的行数,乘积矩阵的列数等于右矩阵的列数;
进一步来讲,矩阵的乘法本质上是将矩阵对应的变换应用到被乘的向量组上。若是是多个矩阵相乘,则能够理解为复合变换函数,即f(g(x...)),将全部的变换综合在一块儿总体做用于被做用向量组。
继续上面三角旋转的例子,如今相继做旋转 θ 与 φ,总的效果是做了 θ + φ 的角度,同上理,能够用矩阵来表示这个叠加的旋转角度:
咱们把相继旋转 θ 与 φ 角度的总效果称为 θ 与 φ 的乘积,即:θφ。
对应的,咱们把矩阵C称为矩阵A与B的乘积,即 C = AB。
咱们来一块儿仔细看下矩阵C的元素与矩阵A,B的元素之间有什么关系。
利用两角和的余弦、正弦公式得:
将这个公式转化为矩阵元素相乘的公式以下:
能够看到,这里就等于矩阵AB相乘的结果,读者朋友能够经过矩阵的行列乘法技巧本身在草稿纸上演算一下,相信和笔者第一次看到这个公式同样会有不同的体会和感觉。
固然,咱们不能说矩阵的乘法就是表明了旋转,矩阵和乘法之间存在等价性还有更深层次的数学原理这里没有阐明,可是三角几何旋转这个视角让咱们很是清晰的体会到了矩阵乘法的本质。
在构建深度神经网络的时候,咱们脑子里能够复现出你构建出的一层层网络结果,正常不断的”拧转“、”扭曲“输入向量,使其从线性不可分,逐渐成为一个在另外一个向量基(线性变换改变了向量基)下线性可分的向量组,从而机器学习模型获得找到一个最佳超分界面进行二分类或者多分类。
下图展现了将原始向量组旋转180°对应的矩阵:
读者朋友能够本身修改矩阵的元素值,观察不一样的矩阵元素值对应的不一样的转换动做。
笔者这里手工调整了几个参数,经过gif图的方式来展现不一样的矩阵对应的不一样变换动做:
经过把
映射到
:
再经过把
映射到
:
矩阵的乘法能够以下图所示:
Relevant Link:
https://jingyan.baidu.com/article/425e69e6f6c290be14fc165c.html https://www.geogebra.org/search/matrix%20transformation https://www.geogebra.org/m/wsTPe55F https://www.geogebra.org/m/u6jD5As8 https://www.yasuotu.com/gifhecheng https://blog.csdn.net/wenzhilu/article/details/79684667 https://www.matongxue.com/madocs/755.html https://www.matongxue.com/madocs/555.html
文章的开头,咱们举了一个工厂生产某种食品的例子。在这个例子中,咱们没有借助任何机器学习算法,而是直接基于样本输入数据,获得了一个线性方程组,而后尝试求解这个线性方程组。
这看起来毫无毛病,我按照你题目给的条件构建一个对应的方程组,而后求解,若是获得了惟一解,则该解就是最优解,也即惟一的可行解。
但遗憾的是,包括本例在内,现实世界中的几乎全部场景中,几乎不可能恰好获得一个惟一解,换句话说,99.99%的场景中,咱们都没法获得一个100% recall,100% precision的model。
在不少时候,咱们基于样本数据和对应的条件构建出的线性方程组是无解或者有无穷多的解的,这个时候咱们如何该如何继续下去呢?宣布放弃,这个问题没法解决了吗?
答案显然不是的,咱们能够退而求其次,既然没法100%达到全局最优解,那咱们能够尝试得到一个次优解,并使该次优解和最优解的“距离”在全部次优解中最接近。
引入损失函数的目的就是:将原始问题转换为另外一个最优化问题,经过求解损失函数下最优解获得原始问题的一个次优解,损失函数(loss function)的做用就是完成这个”问题域转换“的桥梁。
引入损失函数后,咱们的优化目标转换为了:求得一个使当前损失函数值最小的最优解。那接下来的问题就是,基于损失函数构建的新的方程长什么样?解空间结构如何?是否有解?如何求解?
损失函数有不少种选择,这里以linear regression最契合的MSE(均方损失函数)为例:
在线性回归问题中,假设模型为:
线性模型试图学得。同时在噪声符合高斯分布的假设前提下,均方偏差是衡量 f(x) 和 y 之间的差异的最佳损失函数。
咱们构建让均方偏差最小化的公式,即:
能够看到,均方偏差最小化公式是一个累加公式,将全部样本数据(经过下标 i 表示)对应的线性方程值和目标值的差值的平方进行了累计,即全部样本的偏差的平方和。
读者朋友能够这么理解:将本来基于样本数据获得线性方程组,每一列(列向量)都减去一个目标值并计算平方,而后将全部方程都累加起来。注意,有的书籍或者paper在上述公式中还会加入一个1/N,但对最终结果是没有影响的,由于咱们求的是对w的偏导数,实数在这里会被忽略。
求解 w 和 b 使最小化的过程,称为线性回归模型的最小二乘参数估计(parameter estimation)。咱们可将
分别对 w 和 b 求导,获得:
令上式等于零可获得 w 和 b 最优解的闭式(closed-form)解,同时损失函数中极值就是上式参数优化公式的最小值,线性规划问题得解。
上一小节中咱们经过偏导数方式实现了对均方偏差函数的求解,这很直观利于理解,可是在计算机科学中,求解偏导数的运算并不高效,像sklearn这种数学库采用的都是矩阵matrix的形式进行快速计算。
Relevant Link:
https://www.cnblogs.com/LittleHann/p/10498579.html https://zhuanlan.zhihu.com/p/27664917 https://www.cnblogs.com/pinard/p/10750718.html http://www.cnblogs.com/pinard/p/10791506.html
咱们将构建一个神经网络:包括五个全链接层,每层都含有不一样数目的单元,结构以下:
对于单个神经元来讲,计算过程对应的线性方程为:
整个一层隐藏层的权重参数向量组构成了一个向量矩阵W,为了清楚起见,如下是第二层的全部表达式:
从矩阵视角来看,一层隐藏层对应的矩阵运算公式以下:
上图中的a 是激活函数,激活函数是一种非线性变换,激活函数对输入向量组的扭曲是非线性的。
综上咱们看到,深度神经网络的本质是线性变换的矩阵+非线性变换的激活函数,经过矩阵的拉伸/旋转,以及非线性函数的扭曲做用,原始输入空间的向量基会被转换到一个新的维度(通常是高维)中,在这个新的线性子空间中,本来线性不可分的向量组可能就能够变得线性可分,或者在必定的错误冗余下线性可分,进而获得一个解空间。
大体的回答是,由于非线性性,和高维度的缘由,矩阵偏导数运算、求逆变得十分困难,有时甚至没法计算。
举个例子,普通最小二乘的最佳参数表达为:
虽然咱们能够得到解析表达,可是当数据量变得很是庞大的时候,连计算矩阵的逆、矩阵求偏导都会变得很是慢。
同时在不少状况下,咱们没法得到参数的解析表达,就须要采用迭代的方式逼近最佳的参数值。
相关的一些讨论,能够参阅我另外一篇blog.
https://www.cnblogs.com/LittleHann/p/10498579.html 2)梯度降低算法(Gradient decent)来求解线性回归模型参数
咱们从一阶泰勒级数展开这个话题开始讨论,逐步分析GD梯度降低成立的前提条件以及它的合理性。
首先,泰勒当年为何要发明这条公式?由于当时数学界对简单函数的研究和应用已经趋于成熟,而复杂函数,好比:这种一看就头疼的函数,还有那种根本就找不到表达式的曲线(例如深度神经网络中,线性和非线性复合层叠,隐层的函数形式已经变得极度复杂)。除了代入一个x能够获得它的y,就啥事都很难干了。因此泰勒同窗就迎难而上!决定让这些式子通通现出原形,通通变简单。
能够简单的理解为:泰勒级数展开和微积分的本质原理很相似,都是经过大量小区间的线性近似来模拟原始函数。
以下图所示:
想要两个向量的乘积小于零,咱们先来看一下两个向量乘积包含哪几种状况:
A和B均为向量,α为两个向量之间的夹角。A和B的乘积为:
由上述讨论可知,GD梯度降低过程当中,就等价于不断进行一阶泰勒级数展开来”近似“地”沿着目标函数降低的方向“进行前进。但其实咱们也能够看到,每次前进都伴随着必定的损失,这是一阶泰勒级数和真实函数之间的差值致使的。
要特别强调的是,这既是一个原理性的理解,也是一个工程实践中要谨记的要点,咱们在使用pytorch/TensorFlow/keras进行项目开发的时候,学习率η必定要设置的足够小,设置的足够小,不只仅是为了让咱们足够靠近局部最优,这同时也是一阶泰勒级数展开的必要条件,若是不知足这个条件,GD梯度降低自己的偏差就会很大,天然也就没法有效逼近全局次优解。
由上个小节的讨论咱们知道,一阶泰勒级数展开自己也只是对原始函数的的一种近似线性模拟,即便你每次选择的是负梯度方向,也不能100%沿着原始函数的真实方向进行降低,每一次GD迭代都是存在偏差的。
即便采用同二阶泰勒级数,偏差也一样存在,只是会比一阶要小,可是阶数越往上,计算的复杂度就越大。在通常状况下,一阶泰勒级数展开已经能够得到比较好的近似度和优化速度了,工业场景中基本上默认采用一阶泰勒级数展开。
先抛出结论:以二维图像为例,对于二维图像的某点的Hessian矩阵,其最大特征值对应了其邻域二维曲线最大曲率的强度,该特征值对应的特征向量对应了邻域二维曲线最大曲率的方向,即山坡陡的那面,最小特征值对应的特征向量对应与其垂直的方向,即平缓的方向。简单来说,图像某点的hessian矩阵特征值大小和符号决定了该点邻域内的几何结构。
在进行GD梯度降低的时候,梯度的方向就是最大特征值对应的特征向量方向,而特征值决定了GD学习的步长。
GD中所谓的最大梯度方向,就是Hessian矩阵最大特征值对应的特征向量的方向。
那什么是最小梯度,注意不是加个负号就变成最小了,向量是一个带方向性的数学量。
最小梯度的方向是Hessian矩阵中最小特征值对应的特征向量方向,这个方向和最大梯度的方向是垂直的。
笔者提醒:Hessian矩阵自己也是一种近似,它的本质是二阶泰勒导数,而二阶泰勒展开自己也是一种近似模拟,只是说这种近似模拟的精确度已经相对比较高了。
咱们先来看下,在一阶状况下,梯度降低(GD)方法:
这里有一个问题是:如何动态控制步长,当梯度大的时候缩短步长避免overstep,当梯度小的时候适当提升步长以尽早离开低谷区。
显然,咱们须要将梯度的值引入步长的控制公式中,以获得动态调整步长的能力。
将函数在局部极值点
附近进行二阶Taylor展开近似可得:
,其中,
为梯度向量,
为Hessian矩阵。
对上式求导并置0,以求在二阶泰勒展开近似原函数的状况下快速求出函数极值点,可解得:
从上面公式能够看出,Hessian矩阵起到了控制步长的做用。
继续推导H,咱们有
,其中
是单位特征向量矩阵,
是对应特征值对角矩阵。
重写上面公式:
能够看出,这里控制(每一个特征方向)步长的,有两个因素:一阶梯度(做为分子)和Hessian矩阵特征值(做为分母)。
Relevant Link:
https://juejin.im/post/5a570c25518825734f529e3b https://www.tinymind.cn/articles/1272?from=articles_commend https://blog.csdn.net/SoHardToNamed/article/details/80550935 https://blog.csdn.net/sinat_15443203/article/details/82048888 https://www.zhihu.com/question/24623031