当前位置:   article > 正文

(二)从零开始学人工智能—数学基础:线性代数_学ai 线性代数

学ai 线性代数

线性代数

上一部分介绍了机器学习的本质是找到一个最优化的映射关系,也就是函数/模型。接下来几章我会陆续给大家介绍AI的数学基础,本章将首先给大家介绍线性代数如何应用于AI。

1. 从初等函数到高等数学

一元线性函数

在中学的初等数学里,把函数 f ( x ) = k x + b f(x)=kx+b f(x)=kx+b ( k , b k,b k,b是不变量),称为一元线性函数,因为在平面直角坐标系中这个函数的图形就是一条线,就是变量(包括自变量和因变量)之间的映射关系描述为一条线,把这种函数形象的称之为“线性”函数(如下图 L 1 L_1 L1);如果 b = 0 b=0 b=0,则这个函数就变成了 f ( x ) = k x f(x)=kx f(x)=kx的形式,也即是一条过原点的直线,如下图 L 2 L_2 L2。此时的变量之间的映射是单个数值之间的映射,这类单独的数我们称之为标量(scalar)

在这里插入图片描述
在大学的代数里,为了线性函数的进一步推广(如推广至双线性函数、多线性函数、线性空间、线性泛函,… …),把一元线性函数 f ( x ) = k x + b f(x)=kx+b f(x)=kx+b b b b舍掉,成了 f ( x ) = k x f(x)=kx f(x)=kx的形式。即只有过原点的最简单的直线 f ( x ) = k x f(x)=kx f(x)=kx才能被称为一元线性函数。因为只有这样才能满足线性函数性质。

线性函数性质:可加性和比例性

1)可加性:即如果函数 f ( x ) f(x) f(x)是线性的,则有:和的函数等于函数的和。

f ( x 1 + x 2 ) = f ( x 1 ) + f ( x 2 ) f(x_1+x_2)=f(x_1)+f(x_2) f(x1+x2)=f(x1)+f(x2)

2)比例性:也叫做齐次性,数乘性或均匀性,即如果函数 f ( x ) f(x) f(x)是线性的,那么有:比例的函数等于函数的比例;或者说自变量缩放,函数也同等比例地缩放。

f ( k x ) = k f ( x ) f(kx)=kf(x) f(kx)=kf(x) 其中 k k k是常数。

下图左右分别描述了最简单的标量映射( k > 0 k>0 k>0)及其基本性质:

在这里插入图片描述

2. 标量、向量、矩阵、张量

多元线性函数

事实上,高等数学里的线性概念正是从最简单的比例函数进行推广的,在大学里所学习的线性代数里的线性函数概念被推广成一个多元线性方程组所表示的映射关系。如方程组:

这与我们定义的 f ( x ) = k x f(x)=kx f(x)=kx形式相去甚远,使形式统一,我们对变量进行了重新定义:
在这里插入图片描述
1)初等数学的线性函数的自变量由一个数 x x x扩展为一个竖排的数组 [ x 1 x 2 ⋮ x n ] \left[ x1x2xn

x1x2xn
\right] x1x2xn,应变量是一个数 y y y也扩展

定义为一个竖排的数组 [ y 1 y 2 ⋮ y m ] \left[ y1y2ym

y1y2ym
\right] y1y2ym,这些 n n n元数组和 m m m元数组称之为列向量(vector)

2)初等线性函数的比例系数 k k k扩展为由所有 k i j k_{ij} kij构成的一个的数的方阵,称之为系数矩阵(matrix)

[ k 11 k 12 ⋯ k 1 n k 21 k 22 ⋯ k 2 n ⋮ ⋮ ⋱ ⋮ k m 1 k m 2 ⋯ k m n ] \left[ k11k12k1nk21k22k2nkm1km2kmn

k11k21km1k12k22km2k1nk2nkmn
\right] k11k21km1k12k22km2k1nk2nkmn

小结

标量、向量、矩阵、张量之间的联系

标量(scalar)
一个标量表示一个单独的数,它不同于线性代数中研究的其他大部分对象(通常是多个数的数组)。我们用斜体表示标量。标量通常被赋予小写的变量名称。

向量(vector)
一个向量表示一组有序排列的数。通过次序中的索引,我们可以确定每个单独的数。通常我们赋予向量粗体的小写变量名称,比如xx。向量中的元素可以通过带脚标的斜体表示。向量 X X X的第一个元素是 X 1 X_1 X1,第二个元素是 X 2 X_2 X2,以此类推。我们也会注明存储在向量中的元素的类型(实数、虚数等)。

矩阵(matrix)
矩阵是具有相同特征和纬度的对象的集合,表现为一张二维数据表。其意义是一个对象表示为矩阵中的一行,一个特征表示为矩阵中的一列,每个特征都有数值型的取值。通常会赋予矩阵粗体的大写变量名称,比如 A A A

张量(tensor)
在某些情况下,我们会讨论坐标超过两维的数组。一般地,一个数组中的元素分布在若干维坐标的规则网格中,我们将其称之为张量。使用 A A A 来表示张量“A”。张量 A A A中坐标为 ( i , j , k ) (i,j,k) (i,j,k)的元素记作 A ( i , j , k ) A_{(i,j,k)} A(i,j,k)

四者之间关系

标量是0阶张量,向量是一阶张量。举例:
标量就是知道棍子的长度,但是你不会知道棍子指向哪儿。
向量就是不但知道棍子的长度,还知道棍子指向前面还是后面。
张量就是不但知道棍子的长度,也知道棍子指向前面还是后面,还能知道这棍子又向上/下和左/右偏转了多少。

张量与矩阵的区别

  • 从代数角度讲, 矩阵它是向量的推广。向量可以看成一维的“表格”(即分量按照顺序排成一排), 矩阵是二维的“表格”(分量按照纵横位置排列), 那么 n n n阶张量就是所谓的 n n n维的“表格”。 张量的严格定义是利用线性映射来描述。
  • 从几何角度讲, 矩阵是一个真正的几何量,也就是说,它是一个不随参照系的坐标变换而变化的东西。向量也具有这种特性。
  • 张量可以用3×3矩阵形式来表达。
  • 表示标量的数和表示向量的三维数组也可分别看作1×1,1×3的矩阵。

3)然后定义一种系数矩阵与向量(矩阵)相乘的运算法则,则式(1)可以改写成如下形式:

[ y 1 y 2 ⋮ y m ] = [ k 11 k 12 ⋯ k 1 n k 21 k 22 ⋯ k 2 n ⋮ ⋮ ⋱ ⋮ k m 1 k m 2 ⋯ k m n ] [ x 1 x 2 ⋮ x n ] (2) \left[ y1y2ym

y1y2ym
\right]=\left[ k11k12k1nk21k22k2nkm1km2kmn
k11k21km1k12k22km2k1nk2nkmn
\right]\left[ x1x2xn
x1x2xn
\right] \tag {2} y1y2ym=k11k21km1k12k22km2k1nk2nkmnx1x2xn(2)

式(2)与(1)等价。

矩阵和向量相乘结果

若使用爱因斯坦求和约定(Einstein summation convention),矩阵 A A A, B B B相乘得到矩阵 C C C可以用下式表示:
a i k ∗ b k j = c i j a_{ik}*b_{kj}=c_{ij} aikbkj=cij
其中, a i k a_{ik} aik, b k j b_{kj} bkj, c i j c_{ij} cij分别表示矩阵 A , B , C A, B, C A,B,C的元素, k k k出现两次,是一个哑变量(Dummy Variables)表示对该参数进行遍历求和。
而矩阵和向量相乘可以看成是矩阵相乘的一个特殊情况,例如:矩阵 B B B是一个 n × 1 n \times 1 n×1的矩阵。

4)式(2)可进一步简写为:

y = f ( X ) = K X y=f(X)=KX y=f(X)=KX

其中: y = f ( X ) = [ y 1 y 2 ⋮ y m ] , K = [ k 11 k 12 ⋯ k 1 n k 21 k 22 ⋯ k 2 n ⋮ ⋮ ⋱ ⋮ k m 1 k m 2 ⋯ k m n ] , X = [ x 1 x 2 ⋮ x n ] 。 y=f(X)=\left[ y1y2ym

y1y2ym
\right], K=\left[ k11k12k1nk21k22k2nkm1km2kmn
k11k21km1k12k22km2k1nk2nkmn
\right], X=\left[ x1x2xn
x1x2xn
\right]。 y=f(X)=y1y2ym,K=k11k21km1k12k22km2k1nk2nkmn,X=x1x2xn

到此为止,我们终于看到初等线性函数和高等线性函数的概念在形式上得到了统一,同时也引入了标量、向量、矩阵、张量等概念,这些在机器学习的计算中都是最常用的基本单元。那么,这些基本单元究竟应用于机器学习的什么地方呢?下面插入一个例子

例子:卷积是怎么回事?

在最初接触图像处理的时候,我们一般是从图像的平滑(高低通滤波等)开始的,如下图所示:

在这里插入图片描述

  • 如上图的平滑,一个典型的8领域平滑,其结果中的每个值都来源于原对应位置和其周边8个元素与一个 3 X 3 3 X 3 3X3矩阵的乘积,也就相当于对原矩阵,按照顺序将各区域元素与 W W W矩阵相乘, W W W被称作核(Kernel, 3 X 3 3X3 3X3)。

  • 也就是,这个核对图像进行操作,相当于对图像进行了低通滤波(如图中左下角月球图片,亮暗交界的地方变得平滑)。因此这个核也被称为滤波器,整个操作过程按照概念称为卷积

  • 扩展来讲,对二维图像的滤波操作可以写成卷积,比如常见的高斯滤波、拉普拉斯滤波(算子)等。

图像识别中的卷积

在这里插入图片描述

  • 不如我们预想一个识别问题:我们要识别图像中的某种特定曲线,也就是说,这个滤波器要对这种曲线有很高的输出,对其他形状则输出很低,这也就像是神经元的激活。

  • 想要识别一条曲线(左上),对应用一个矩阵表示。

  • 假设上面的核(滤波器)按照卷积顺序沿着右上图移动。

  • 那么当它移动到尾部黄色方框的位置时,按照矩阵操作,将这个区域的图像像素值与滤波器相乘,我们得到一个很大的值(6600)(右下),类似激活了神经元,识别出是我们想要找的曲线。

  • 而当这个滤波器移动到其他区域,如耳部黄色方框,我们得到一个相对很小的值(左下),表明神经元没有激活,该线段不是我们想要的曲线。

  • 对整个原图进行一次卷积,得到的结果中,在那个特定曲线和周边区域,值就很高,在其他区域,值相对低。这就是一张激活图。对应的高值区域就是我们所要检测曲线的位置。

  • 扩展一下,通俗语言来说,当我们判别整个图像是不是小鼠的时候,应用检测各种形状的卷积核(如检测耳朵的圆圈、眼睛的黑点、胡须的直线等),再综合这些卷积核的信息,就得到图片各个部位的激活图,如果符合小鼠的图片,代表该图片是小鼠图片,否则就不是激活图片。

若对VGG16网络的各层卷积核进行可视化(可视化工具toolbox:yosinski/deep-visualization-toolbox),结果如下所示:
conv1
在这里插入图片描述
conv2
在这里插入图片描述
conv3
在这里插入图片描述
conv4
在这里插入图片描述
conv5
在这里插入图片描述

VGG16卷积核:

  • 低层的卷积核似乎对颜色,边缘信息感兴趣。
  • 越高层的卷积核,感兴趣的内容越抽象(非常魔幻啊),也越复杂。
  • 高层的卷积核感兴趣的图像越来越难通过梯度上升获得(conv5有很多还是随机噪声的图像)

针对这个图像识别的例子,大家可能会有一个疑问:如果我们用一个复杂一点的卷积核,囊括图中小鼠所有部位的特征,这样一次性解决,这样不好么?非得整这么复杂声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】

推荐阅读
相关标签