深度学习(一):线性代数基础

作者: 交大小浪花 | 来源:发表于2019-08-06 13:18 被阅读69次
    版权声明:本文为博主原创文章,转载请注明出处,商业转载请联系作者(huxingfei097@163.com),谢谢合作!
    

    1 标量、向量、张量:

    • 标量:
        一个标量就是一个单独的数,一般用斜体表示,如令 s∈R 表示一条直线的斜率
    • 向量:
        一个向量是一列数,通常用粗体的小写字母表示,如 x。使用带下标的斜体表示向量中的具体元素,如 x1x2,等等。也可以批量索引,定义集合 S={1,3,5},写作 xs,表示x1x3x3。还可以用负号表示对应索引补集中的元素,如x-1表示除x1所有元素,x-s表示除x1x3x5外所有的元素。
        可以将向量看成是空间中的点,每个元素是不同坐标轴上的坐标。
    • 张量:
        一个数组中的元素分布在若干维坐标的规则网格中,称之为张量。一般使用大写加粗字母来表示,如A。张量既有大小又有方向。可以将张量理解成多维的数组数据。标量可以视为零阶张量,矢量可以称之为一维张量,矩阵可以称之为二维张量。想更加深入的理解可以查看:通俗理解张量tensor

    2 矩阵:

    • 转置
        沿着主对角线(从左上角到右下角)翻转矩阵。定义如下:
            (AT)i,j = Aj,i
        转置之后矩阵的形式会变,会由Am * n变成An * m的形式。
    • 广播:
        通常情况下相加(减)的矩阵必须具有相同的形式,即每个矩阵的行数相同,列数也相同。但在深度学习中运行矩阵和向量相加,称之为广播。形式如下:
              C m * n = A m * n + b m * 1
        其中C是m行n列的矩阵,A也是m行n列的矩阵,b可以是列向量或者行向量(这里以m行的列向量为例),在相加的时候,b自动复制自身元素n次成为m行n列的矩阵,b' m * nAb'同形之后执行对应加(减)操作。
    • 矩阵乘积:
        矩阵A与矩阵B相乘时,A的列数必须和B的行数相同,形式如下:
              C m * n = A m * n * B n * x
        具体的,C中的每一个元素定义如下:
              C i,j = Σ (A i,k * B k,j )     k∈{0,1,2...,n-1,n}
    • 元素对应乘积(也叫Hadamard乘积):
        对应的元素乘积,记作 AB
    • 逆矩阵:
        矩阵A的逆矩阵记作A-1,满足:
            A A-1 = In  其中 In为单位矩阵(对角线为1,其余元素全为0的矩阵)
        逆矩阵不一定存在。
    • 范数:
        用来衡量向量大小的一个函数。形式上Lp定义为:
      Lp范数.png
        常用的范数有L1,L2,L∞三种范数:
    L1范数 L2范数 L∞范数
    • 矩阵范数:
        常使用FroBenius范数,类似向量的L2范数,形式如下:
      矩阵范数
      特征向量与特征值:
        方阵A的特征向量是指一个向量vA相乘后相当于对v进行缩放的非零向量,即满足:
               A v = λ v
        其中标量 λ 称为该特征向量对应的特征值(类似的可以定义左特征向量vT A = λ vT,但通常只关注右特征向量,即A v = λ v)。通常只考虑单位特征向量。
       所有特征值都是正数的矩阵称为正定矩阵,所有特征值非负的矩阵称为半正定矩阵。类似的可定义负定/非负定矩阵。
    • 特征分解:
        将矩阵分解成一组特征向量和特征值,称为特征分解。
        假设矩阵A有n个线性无关的特征向量{v(1),...,v(n)},对应着特征值{λ1,...,λn},可以将特征向量连接成一个矩阵,V = [v(1),...,v(n)],同时将特征值也连接成一个向量:λ = [λ1,...,λn],则A的特征分解可以记作:
            A = V diag(λ) V -1
      不是每一个矩阵都有都能进行特征值分解,但实对称矩阵一定可以进行分解,在深度学习中通常也只考虑分解实对称矩阵。每个实对称矩阵可以分解成如下形式:
            A = Q Λ Q T
        其中QA的特征向量组成的正交矩。,Λ是对角矩阵,其对角元素Λi,iA的特征值,对应着矩阵Q中的第i列(该第i列是矩阵A的特征向量)。通常按降序排列Λ的对角元素。
    • 奇异分解(SVD):
        并非所有的矩阵都能进行特征分解,但所有的矩阵都可以进行奇异分解(非方阵也能进行奇异分解)。类比于特征分解:A = Q Λ Q T,奇异值分解如下:
            A = U D V T
       假设A为m * n的矩阵,则U是一个m * m的矩阵,D是一个m * n的矩阵,V是一个n * n的矩阵。其中 UV 都是正交矩阵,D 为对角矩阵。D的对角线上的元素称之为奇异值,U 中的列向量称为左奇异向量V 中的列向量称为右奇异向量。其中A的左奇异向量是A AT的特征向量,A 的右奇异向量是AT A的特征向量,A的非零奇异值是AT A特征值的平方根(也是A AT 特征值的平方根)。详细推导过程可见:奇异值分解
    • Moore-Penrose伪逆:
       对于非方阵而言,其逆矩阵没有意义。但在实际情况中可能会需要解决下列线性方程:
            A x = y
        如果矩阵 A 的行数大于列数,该方程可能无解,如果A的行数小于列数,该方程可能有多个解。
      Moore-Penrose伪逆 使得我们在解决该类问题上取得了一定的进展。矩阵 A 的伪逆定义为:
             伪逆定义
        但在实际计算中,通常使用下面的公式:
            A+ = V D+ UT
      其中,UDV是矩阵 A 奇异分解之后得到的矩阵。对角矩阵D的伪逆 D+ 是其非零元素取倒数之后再转置得到的。
        当矩阵 A 的列数多于行数时,x = A+ y是方程所有可行解中欧几里得范数||x||2最小的一个。
        当矩阵 A 的列数少于行数时,可能没有解。此时,通过伪逆求的 x 使得||A x - y ||2最小。
    • 迹运算:
        迹运算返回的是矩阵对角元素的和:
              Tr(A) = ∑ Ai,i
      迹运算提供了另外一种描述矩阵FroBenius范数的方式:
              迹运算下的Frobenius范数
        使用迹运算表示表达式,可以使用很多等式巧妙的处理表达式。多个矩阵相乘,迹具有循环不变性:
             Tr(A B C) = Tr(B C A) Tr(C A B)
       此外,标量在迹运算之后仍然是它自身:a = Tr(a)。
    • 行列式:
        行列式,记作det(A),是将一个方阵映射到实数的函数。行列式的值等于对应矩阵的特征值的乘积。行列式的绝对值可以用来衡量矩阵参与矩阵乘法后空间扩大/缩小了多少。如果行列式为0,则意味着空间至少沿某一维完全收缩了,如果行列式值为1,则结果矩阵乘法变换后空间体积不变。

    参考资料:
      《深度学习》
    深度学习新手,文章若有疏漏,欢迎及时指正!

    相关文章

      网友评论

        本文标题:深度学习(一):线性代数基础

        本文链接:https://www.haomeiwen.com/subject/jtoydctx.html