zoukankan      html  css  js  c++  java
  • 线性代数精华——从正交向量到正交矩阵


    向量内积


    这个基本上是中学当中数学课本上的概念,两个向量的内积非常简单,我们直接看公式回顾一下:

    [X cdot Y = sum_{i=1}^n x_i*y_i ]

    这里X和Y都是n维的向量,两个向量能够计算内积的前提是两个向量的维度一样。从上面公式可以看出来,两个向量的内积就等于两个向量对应各个维度的分量的乘积的和。

    为了和矩阵乘法以及普通的乘法做区分,我们通常把两个向量的内积写成:([x, y]=x^Ty)

    这里有一个很重要的性质,对于一个向量而言,我们可以用欧几里得公式计算它的长度。进一步,我们可以用向量的长度以及向量之间的夹角来表示向量的内积,如下:

    [[x, y]=|x|cdot |y|cos heta ]

    其中的( heta)是x和y向量之间的夹角,对于三维及以下空间内的向量,这一点非常直观。对于高维度的向量,我们很难想象它的物理意义。不过没有关系,我们一样可以认为向量之间存在一个广义超空间内的一个夹角。在机器学习领域,我们通常用这个夹角来反应向量之间的相似度。两个向量越相似,那么它们之间的夹角应该越小,对应的cos余弦值应该越大。所以我们可以用两个向量之间的余弦值来反应它们之间的相似度。余弦值的计算就源于此。


    正交向量


    从上面的公式可以看出来,向量的内积等于两个向量长度乘上向量之间的夹角。对于非零向量而言,它们的长度都应该是大于0的。所以两个向量的内积的大小,就完全取决于向量之间的夹角( heta)

    如果( heta)小于90°,那么(cos heta>0),那么内积为正值。如果( heta)大于90°,那么余弦值为负值。所以我们可以通过余弦值正负判断夹角是锐角还是钝角。既然说到夹角,自然就离不开一种特殊情况——垂直

    如果是在二维平面当中,两个向量夹角是90°,那么显然这两个向量垂直。在高维空间当中也是一样,不过我们一般不说垂直,而是会换一个词——正交。两个非零向量的内积为0,说明两个向量正交。


    正交向量组


    搞清楚了正交向量之后,正交向量组也就明确了。正交向量组是指一组两两正交且非零的向量组

    如果n维的向量组:(a_1, a_2, cdots,a_r)两两正交,那么,它们一定线性无关。也就是说不存在一组不为零的系数(lambda),使得:

    [lambda_1a_1+lambda_2a_2+cdots + lambda_ra_r=0 ]

    这点很容易证明,由于向量组内向量均不为0,我们只需要在等式两边随便乘上一个向量即可,假设我们乘的是(a_1)。由于它与其他向量两两正交,所以其他项全为0。如果要等式成立,那么必须要:

    [lambda_1a_1^Ta_1=0 ]

    由于(a_1)不为0,那么(a_1^Ta_1)必然不为0,要使得等式成立,只能是(lambda_1)为0。


    规范正交基


    我们把正交向量组的概念和基的概念融合,如果向量组(e_1, e_2, cdots, e_r)是向量空间V的一个基。如果它们之间彼此正交,那么就称它们是一组规范正交基。

    对于向量a,我们可以很方便地求出它在规范正交基下各个维度的坐标:

    [lambda_i = e_i^Ta=[a, e_i] ]

    也就是说向量a,在规范正交基下某一个维度的坐标, 等于它和这个维度的正交基向量的内积

    如果说我们已经知道向量空间V中的一组基是(a_1, a_2, cdots, a_r),我们怎么求V的规范正交基呢?

    这里要用到一个算法,叫做施密特算法。通过这个算法,我们可以通过向量空间的一组基来求出它的正交基。

    这个算法很简单,我们可以直接写出它的公式:

    [egin{aligned} b_1 &= a_1 \ b_2 &= a_2 - frac{[b_1, a_2]}{[b_1, b_1]}b_1\ cdots\ b_r &= a_r - frac{[b_1, a_r]}{[b_1, b_1]}b_1-frac{[b_2, a_r]}{[b_2, b_2]}b_2 - cdots - frac{[b_{r-1}, a_r]}{[b_{r-1}, b_{r-1}]}b_{r-1} end{aligned} ]

    我们随便取两个b向量乘一下就知道,b向量组之中两两正交。所以,我们只要将b向量组单位化一下,就可以求出对应的规范正交基了。

    即:

    [e_1=frac{1}{||b_1||}b_1, quad e_2=frac{1}{||b_2||}b_2 quad cdots quad e_r=frac{1}{||b_r||}b_r ]

    这个算法虽然不难,但蛮重要。在机器学习领域中一些降维算法,很多都与施密特正交化方法有关。


    正交矩阵


    之前我们在介绍矩阵的时候,曾经说过,我们可以把一个矩阵看成是一个特定的向量组的结构。同样,我们也可以把一个规范正交基向量组看成是一个矩阵,那么这个矩阵就称为是正交矩阵

    它拥有如下性质:

    [A^TA=I ]

    其中I是单位矩阵,它的充要条件是矩阵A当中的每一列都是一个单位列向量,并且两两正交。

    最后,我们看一下正交矩阵的性质。它的主要性质有三个:

    1. 如果A是正交矩阵,那么(A^{-1}=A^T),也是正交矩阵,并且(|A|=pm 1)

    2. 如果A和B都是正交矩阵,并且它们阶数一样,那么AB也是正交矩阵。

    3. 如果A是正交矩阵,向量y经过A变换之后行列式保持不变。

    这三个性质都很简单,我们通过正交矩阵的性质基本上都可以直接推导得到,或者是非常直观,和我们的直觉吻合。其实怎么推导不是重点,对于算法工程师而言,更重要的是理解这些概念的意思,并且将它与算法模型当中起到的功能联系起来,这才是最重要的事情。

    今天关于正交向量和矩阵的内容就到这里,如果觉得有所收获,请顺手点个关注或者转发吧,你们的支持是我最大的动力。

  • 相关阅读:
    第19章 网络通信----网络程序设计基础
    第18章 多线程----线程同步
    第18章 多线程----线程的优先级
    一款基于jquery和css3的响应式二级导航菜单
    一款纯css3实现的颜色渐变按钮
    一款基于jquery的手风琴显示详情
    推荐10款纯css3实现的实用按钮
    一款纯css3实现的数字统计游戏
    一款基于jquery ui的动画提交表单
    一款纯css实现的漂亮导航
  • 原文地址:https://www.cnblogs.com/techflow/p/12220591.html
Copyright © 2011-2022 走看看