前面大概有2年时间,利用业余时间断断续续写了一个机器学习方法系列,和深度学习方法系列,还有一个三十分钟理解系列(一些趣味知识);新的一年开始了,今年给自己定的学习目标——以补齐基础理论为重点,研究一些基础课题;同时逐步继续写上述三个系列的文章。

最近越来越多的研究工作聚焦研究多层神经网络的原理,本质,我相信深度学习并不是无法掌控的“炼金术”,而是真真实实有理论保证的理论体系;

本篇打算摘录整理一些最最基本的数据知识,包括线性代数,矩阵求导,凸函数等,一方面便于自己平时查用,一方面也给读者想入门的有一个初步的介绍。

1.线性代数

线性代数作为数学中的一个重要的分支,我感觉是一般人学习机器学习或者深度学习算法的必备知识,作为博主这样的CS出身的工科生,学了线性代数、微积分、概率论这些基础课程,平时也就够用了,再复杂的一些数学分支涉及的很少。(这一部分摘录自[1],加上我自己的一些理解)

1.1 标量,向量,矩阵和张量

  • 标量(scalar):一个标量就是一个单独的数。用斜体表示标量,如 s∈Rs\in R.
  • 向量(vector):一个向量是一列数,我们用粗体的小写名称表示向量。比如
    x,将向量x 写成方括号包含的纵柱:

    x=⎡⎣⎢⎢⎢⎢x1x2⋮xn⎤⎦⎥⎥⎥⎥

    {\bf x}= \begin {bmatrix} x_1\\x_2\\ \vdots \\x_n\\ \end{bmatrix}

  • 矩阵(matrix):矩阵是二维数组,我们通常赋予矩阵粗体大写变量名称,比如
    A​ 。如果一个矩阵高度是m​,宽度是n​,那么说A∈Rm×nA \in R^{m×n} 。一个矩阵可以表示如下:

A=[x11x21x12x22]

{\bf A}= \begin{bmatrix} x_{11} &x_{12}\\ x_{21} & x_{22}\\ \end{bmatrix}

  • 张量(tensor):某些情况下,我们会讨论不止维坐标的数组。如果一组数组中的元素分布在若干维坐标的规则网络中,就将其称为张量。用A​ 表示,如张量中坐标为(i,j,k)​的元素记作Ai,j,kA_{i,j,k}

  • 转置(transpose):矩阵的转置是以对角线为轴的镜像,这条从左上角到右下角的对角线称为主对角线(main diagonal)。将矩阵A的转置表示为ATA^T。定义如下: (A⊤)i,j=Aj,i({\bf A^\top})_{i,j}=\bf A_{j,i}

A=⎡⎣⎢x11x21x31x12x22x32⎤⎦⎥⟹A⊤=[x11x21x21x22x31x32]

{\bf A} = \begin{bmatrix} x_{11} &x_{12}\\ x_{21} & x_{22}\\ x_{31} & x_{32} \end{bmatrix} \implies {\bf A^\top}= \begin{bmatrix} x_{11} &x_{21}&x_{31} \\ x_{21} & x_{22}& x_{32} \end{bmatrix}

1.2 矩阵和向量相乘

  • 矩阵乘法:矩阵运算中最重要的操作之一。两个矩阵A和B 的矩阵乘积(matrix product)是第三个矩阵C 。矩阵乘法中A 的列必须和 B的行数相同。即如果矩阵 A的形状是 m×n,矩阵B的形状是 n×p,那么矩阵 C的形状就是 m×p。即

    C=A×B

    \bf C = \bf A \times \bf B具体的地,其中的乘法操作定义为

    Ci,j=∑kAi,kBk,j

    {\bf C}_{i,j} = \sum_k {\bf A}_{i,k} {\bf B}_{k,j}矩阵乘积服从分配律,结合律,但是矩阵乘法没有交换律,

A(B+C)=AB+ACA(BC)=(AB)CAB≠BA

\bf A(B + C) = \bf AB+AC \\ \bf A(BC) = (AB)C\\ \bf AB \neq \bf BA

  • 点积(dot product)两个相同维数的向量x和y的点积可看作是矩阵乘积 xTyx^Ty

  • 矩阵乘积的转置 (向量也是一种特殊的矩阵)

    (AB)⊤=B⊤A⊤x⊤y=(x⊤y)⊤=y⊤x

    (\bf AB)\top = B \top A\top\\ \bf x \top y = (x\top y)\top = y\top x

1.3 单位矩阵和逆矩阵
矩阵A的矩阵逆被记作 A−1A^{−1},被定义为如下形式:

A−1A=AA−1=InInA=A

\bf A^{-1}A=AA^{-1}=I_n\\ I_nA = A
线性无关(linearly independent): 如果一组向量中的任意一个向量都不能表示成其他向量的线性组合,那么这组向量被称之为线性无关。要想使矩阵可逆,首先必须矩阵是一个方阵(square),即 m=n,其次,所有的列向量都是线性无关的。一个列向量线性相关的方阵被称为 奇异的(singular)。

1.4 范数
需要衡量一个向量的大小,在机器学习中,我们使用称为范数(norm)的函数来衡量向量大小,形式上, LpL^p范数如下[5]:

||x||p=(∑i|xi|p)1p,其中p∈R,p≥1​

||{\bf x}||_p = (\sum_i |x_i|^p)^\frac{1}{p},其中 p∈R,p≥1​
范数是将向量映射到非负值的函数。直观上来说,向量 x的范数就是衡量从原点到 x的距离。更严格来说,范数满足下列性质的函数:

f(x)=0⟹x=0f(x+y)≤f(x)+f(y)∀α∈R,f(αx)=|α|f(x)

{\bf f(x)}=0 \implies {\bf x} =0\\ {\bf f(x+y)} \leq {\bf f(x)} + {\bf f(y)}\\ \forall \alpha \in \Bbb R, \bf f(\alpha {\bf x}) = |\alpha|f({\bf x})
当 p=2时, L2被称作欧几里得范数(Euclidean norm)。它表示从原点出发到向量x确定的点的欧几里得距离。L2范数常被用来衡量向量的大小,因为它便于求导计算(如对向量中每个元素的导数只取决于对应的元素,但是它也有缺陷,即它在原点附近增长得十分缓慢),可以简单用点积 xTxx^Tx来计算。

当p=1时,称为L1范数,是向量元素绝对值之和;

当p=0时,上面的定义没有包含,称为0范数,定义为向量非零元素的数量

max范数(max norm):这个范数表示向量中具有最大幅度得元素的绝对值,用L∞L_\infty 范数表示,形式为:

||x||∞=max|xi|

||x||_\infty = max |x_i |
两个向量的点积(dot product)也可以用范数来表示。具体地

x⊤y=||x||2||y||2cosθ

\bf x \top y = ||x||_2||y||_2 \cos \theta
矩阵的范数(matrix norm)具体请参考[6],最常用的就是 Frobenius norm

||A||F=(∑i∑j|aij|2)1/2

||A||_F = (\sum_i \sum_j |a_{ij}|^2)^{1/2}

1.5 特殊类型的矩阵和向量

  • 对角矩阵 (diagonal matrix) 只在主对角线上含有非零元素,其它位置都是零。矩阵D是对角矩阵,当且仅当 ∀i≠j,Di,j=0,用 diag(v)表示一个对角元素由向量v中元素给定的对角矩。对称(symmetric) 矩阵是任意转置和自己相等的矩阵: A=A⊤\bf A = A^ \top.

  • 单位向量(unit vector) 是具有单位范数(unit norm) 的向量:||x||2=1||{\bf x}||_2 = 1

  • 正交矩阵(orthonormal matrix) 是指行向量是标准正交的,列向量是标准正交的方阵:
    如果x⊤y=0x^⊤y=0,那么向量 x和向量 y互相正交(orthogonal)。如果两个向量都有非零范数,那么表示这两个向量之间的夹角是90度。在RnR^n 中,至多有n个范数非零向量互相正交。如果这些向量不仅互相正交,并且范数都为1那么我们称它们是标准正交(orthonormal) 。

    A⊤A=AA⊤=I,即A−1=A⊤

    \bf A^ \top A = A A^\top = I, 即\bf A^{-1} = A^\top
    所以正交矩阵受到关注是因为求逆计算代价小。

1.6 特征分解
许多数学对象可以通过将它们分解成多个组成部分,或者找到它们的一些属性而被更好地理解,这些属性是通用的,而不是由我们选择表示它们的方式引起的。就像我们可以通过分解质因数来发现一些关于整数的真实性质,我们也可以通过分解矩阵来获取一些矩阵表示成数组元素时不明显的函数性质。

特征分解(eigendecomposition) 是使用最广的矩阵分解之一,即我们将矩阵分解成一组特征向量和特征值。方阵A的特征向量(eigenvector)是指与A相乘后相当于对该向量进行缩放的非零向量v:

Av=λv

\bf Av=\lambda v

标量λ被称为这个特征向量对应的特征值(eigenvalue);如果v是A的特征向量,那么任何放缩后的向量sv,s∈R,s≠0sv,s\in R,s\neq0也是A的特征向量并且其与v\bf v 有相同的特征值。所以我们通常只考虑单位特征向量。

假设矩阵A有n个线性无关的特征向量{v1,v2,...,vn}\{v^1,v^2,...,v^n\},对应的特征值是{λ1,λ2,...,λn}\{\lambda_1,\lambda_2,...,\lambda_n\},我们将特征向量连成一个矩阵,使得每一列是一个特征向量:

V={v1,v2,...,vn}

\bf V = \{v^1,v^2,...,v^n\}类似地,特征值连成一个向量:

λ=[λ1,λ2,...,λn]⊤

\bf \lambda = [\bf \lambda_1, \lambda_2, ...,\lambda_n]^\top

因此A\bf A的特征分解(eigen-decomposition)可以记作

A=Vdiag(λ)V−1

{\bf A = V}diag({\bf \lambda}){\bf V}^{-1}
上面我们构建具体特定的特征值和特征向量,能够使我们在目标方向上延伸空间。我们也常常希望将矩阵分解(decompose) 成特征值和特征向量。这样可以帮助我们分析矩阵的特定性质,就像质因数分解有助于我们理解整数。

并不是所有的方阵都可以被对角化,这里主要考虑对称矩阵(A=ATA=A^T)的特征分解。如果一个对称矩阵的特征值都不相同,则其相应的所有特征向量正交

VVT=VTV=I

\bf{VV^T=V^TV=I}

A=VΛVT=[v1,v2,⋯,vn]⎡⎣⎢⎢λ1⋱λn⎤⎦⎥⎥⎡⎣⎢⎢⎢⎢⎢vT1vT2⋮vTn⎤⎦⎥⎥⎥⎥⎥=∑i=1nλivivTi

\begin{split} \bf{A =V \Lambda V^T=\begin{bmatrix} v_1,v_2,\cdots,v_n \end{bmatrix} } \begin{bmatrix}\lambda_1 & &\\ & \ddots &\\ & & \lambda_n\end{bmatrix} \begin{bmatrix} \bf{v_1^T\\ v_2^T\\ \vdots\\v_n^T} \end{bmatrix} = \sum_{i=1}^n \lambda_i \bf{v_i v_i^T} \end{split}

其中V是A的特征向量组成的正交矩阵,Λ是对角矩阵。因为V是正交矩阵,所以可以将A看作是沿方向viv_i延展λi\lambda_i倍的空间。如下图所示:

1.7 矩阵的迹
矩阵的迹定义是矩阵对角元素的和:

Tr(A)=∑iAi,i

Tr({\bf A}) = \sum_i {\bf A}_{i,i}
标量的迹是它本身: a=Tr(a)a=Tr(a)。迹运算因为很多原因而受到关注。若不使用求和符号,有些矩阵运算很难描述,而通过矩阵乘法和迹运算符号,可以进行清楚地表示。例如,迹运算提供了另一种描述矩阵Frobenius 范数的方式:

||A||F=Tr(AA⊤)−−−−−−−−√

||{\bf A}||_F = \sqrt {Tr(\bf AA^\top)}

用迹运算表示式,使我们可以用很多有用的性质来操纵表示式。例如迹运算在转置下是不变的:

Tr(A)=Tr(A⊤)

Tr(\bf{A}) = Tr(\bf{A}^\top)

矩阵乘积的迹可以按顺序调换矩阵的位置:

Tr(ABC)=Tr(BCA)=Tr(CAB)

Tr(\bf ABC) = Tr(BCA) =Tr(CAB)

1.8 二次型(Quadratic Form)
给定矩阵A∈Rm×nA\in R^{m×n},函数

xTAx=∑∑xixjaij

\bf{x^TAx=\sum\sum}x_ix_ja_{ij}
被称为二次型。如果对于所有 x∈Rnx\in R^n,有 xTAx≥0x^TAx≥0,则为半正定矩阵,此时 λ(A)≥0\lambda(A)≥0.如果对于所有 x∈Rnx\in R^n,有 xTAx>0x^TAx>0,则为正定矩阵,此时 λ(A)>0\lambda(A)>0.

2. 矩阵求导, 凸函数

下一篇特别写一下求导,以及凸优化的基本概念,这些都是机器学习基本的知识。本篇就到这里。

未完待续…

[1] http://blog.csdn.net/u010976453/article/details/54342895
[2] http://blog.csdn.net/u010976453/article/details/78482502
[3] http://blog.csdn.net/u010976453/article/details/54381248
[4] Jacobian矩阵和Hessian矩阵 http://jacoxu.com/jacobian%e7%9f%a9%e9%98%b5%e5%92%8chessian%e7%9f%a9%e9%98%b5/
[5] https://en.wikipedia.org/wiki/Norm_(mathematics)
[6] https://en.wikipedia.org/wiki/Matrix_norm
[7] 机器学习中的线性代数之矩阵求导 http://blog.csdn.net/u010976453/article/details/54381248
[8] 牛顿法与Hessian矩阵http://blog.csdn.net/linolzhang/article/details/60151623

深度学习/机器学习入门基础数学知识整理(一):线性代数基础,矩阵,范数等相关推荐

  1. 深度学习/机器学习入门基础数学知识整理(四):拟牛顿法、BFGS、L-BFGS、DFP、共轭梯度法

    欢迎查看我的博客文章合集:我的Blog文章索引::机器学习方法系列,深度学习方法系列,三十分钟理解系列等 文章目录 拟牛顿法 BFGS算法(Broyden–Fletcher–Goldfarb–Shan ...

  2. 深度学习/机器学习入门基础数学知识整理(六):Hoeffding不等式,

    开写之前先推荐一个林轩田先生的书,<Learning From Data>,我从网上得到电子版资源放在这里获取,仅用于学习交流之用,不可用与商用,谢谢.网上还有配套的Slides,我虽然还 ...

  3. 深度学习/机器学习入门基础数学知识整理(五):Jensen不等式简单理解,共轭函数

    Jensen不等式及其延伸 凸函数最基本的不等式性质,又称Jensen不等式[1] f(θx+(1−θ)y)≤θ f(x)+(1−θ) f(y)f(θx+(1−θ)y)≤θf(x)+(1−θ)f(y) ...

  4. 深度学习/机器学习入门基础数学知识整理(七):数学上sup、inf含义,和max、min的区别

    文章目录 inf和sup的定义 inf和sup的性质.证明 sup, inf和max, min的区别 参考资料 inf和sup的定义 经常在文献中看到inf和sup,很多人不知道是什么意思.其实这两个 ...

  5. 【机器学习】机器学习和深度学习概念入门

    机器学习和深度学习概念入门(上) 作者:谭东  来源:机器学习算法与自然语言处理 目  录 1   人工智能.机器学习.深度学习三者关系 2   什么是人工智能 3  什么是机器学习 4  机器学习之 ...

  6. 史上最萌最认真的机器学习/深度学习/模式识别入门指导手册(一)

    喵喵喵~大家元宵节快乐噢.有没有要陪小夕出去看烟花的吖... 小夕借此给热爱学习的喵喵们献上这篇拙文,希望不要嫌弃哦~ 还有,小夕画的封面图是不是很棒呀( ̄∇ ̄) 小夕发现现在想进军人工智能领域的程序 ...

  7. [面试笔试整理1]:深度学习机器学习面试问题准备(必会)

    此系列三篇文章的原文链接 面试笔试整理1:深度学习机器学习面试问题准备(必会) 1.神经网络基础问题 (1)Backpropagation(要能推倒) 后向传播是在求解损失函数L对参数w求导时候用到的 ...

  8. 信号处理深度学习机器学习_机器学习与信号处理

    信号处理深度学习机器学习 机器学习性能与两种关键信号处理算法(快速傅里叶变换和最小均方预测)的有趣对比. (A fun comparison of machine learning performan ...

  9. 150页书籍《PyTorch 深度学习快速入门指南》附PDF电子版

    为什么说是极简教程,首先本书只涵盖了150页.内容比较精简,特别适合作为 PyTorch 深度学习的入门书籍.为什么这么说呢?因为很多时候,一份厚重的书籍往往会削弱我们学习的积极性,在学习一门新的语言 ...

最新文章

  1. Vivado 双口RAM 的调用和实现
  2. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言—— 1052:计算邮资
  3. 腾讯云AI应用产品总监王磊:AI 在传统产业的最佳实践
  4. 如何开始使用centos_如何开始使用CentOS
  5. Node.js自学完全总结
  6. git pull keeping local changes
  7. Redis复制与可扩展集群搭建
  8. oracle expdp作业外表报错ORA-20011KUP-11024ORA-29913
  9. 8700k超频测试软件,超频及功耗温度测试_Intel 酷睿i7 8700K_CPUCPU评测-中关村在线...
  10. 补码,负数比整数多表示一个
  11. 获取32位的uuid方法
  12. Xmap的NullPointerException
  13. Android基础入门教程——4.3.1 BroadcastReceiver牛刀小试
  14. 【JSP】用户信息界面操作 ---- 用户信息修改
  15. 广西省谷歌地球高程DEM等高线下载
  16. C++到底还能做什么? ----感觉说的还是很有道理的,共勉!
  17. PWM脉宽调制信号转模拟电流电压4-20ma0-5v10v隔离变送器
  18. 李宏毅《机器学习》模型压缩-知识蒸馏
  19. php生成mobileconfig,.mobileconfig的生成与签名
  20. 3D电影的原理 - 原作者 猛犸

热门文章

  1. 打开录像 android,android录像/打开video文件
  2. CreateProcess()接收程序的输出
  3. AVC1和H264的区别及利用
  4. TrueTpye字体和postscript字体
  5. 内网渗透(八十一)之搭建Exchange服务器
  6. 在Linux环境下使用gfortran编译器生成fortran语言的.so共享对象文件 并使用JNA调用 带参方法
  7. 关于提单,你不知道的事!
  8. 1158 Telefraud Detection
  9. Decorating The Pastures
  10. initWithFormat 和stringWithFormat的区别