MindSpore专题——第〇章、概念

初等概念名词解释

在接近学完初级的机器学习后,我意识到单纯的看MindSpore文档以及看Youtube视频是远远不够的,我必须系统的学习一些概念知识以避免在后面的学习中云里雾里,故就有了这一章,在这一章中几乎全是对概念的解释,他们的来源广泛,传送门我都会贴在此处,供查阅:

神经网络入门 - 阮一峰的网络日志 (ruanyifeng.com)

https://github.com/exacity/deeplearningbook-chinese

感知机(Perceptron)

img

​ 上图的圆圈就代表一个感知器。它接受多个输入(x1,x2,x3...),产生一个输出(output),好比神经末梢感受各种外部环境的变化,最后产生电信号。

​ 感知机是输出传入参数的一个函数变换,大多数情况下他是(最初涉及) \[ output = \sigma(w_1*a_1 +\cdots +w_n*a_n + b) \] 其中\[\sigma \]​函数表达式如下 \[ σ(z) = 1 / (1 + e^{-z}) \]

表示学习(Representation Learning)

使用机器学习来发掘表示本身,而不仅仅把表示映射到输出,学习到的表示往往比手动设计的表示表现得更好。并且不需要人工干预就能迅速适应新的任务。

变差因素

在此背景下,‘‘因素’’这个词仅指代影响的不同来源;因素通常不是乘性组合。这些因素通常是不能被直接观察到的量。相反,它们可能是现实世界中观察不到的物体或者不可观测的力,但会影响可观测的量。为了对观察到的数据提供有用的简化解释或推断其原因,它们还可能以概念的形式存在于人类的思维中。

它们可以被看作数据的概念或者抽象,帮助我们了解这些数据的丰富多样性。

可见层

也就是神经网路的输入层,这样命名的原因是因为它包含我们能观察到的变量。

隐藏层

也就是神经网路的中间层。因为它们的值不在数据中给出,所以将这些层称为‘‘隐藏”;模型必须确定哪些概念有利于解释观察数据中的关系。这里的图像是每个隐藏单元表示的特征的可视化。这里也是分形的思想运用的层次。

输出层

输出神经网路的判断也称Object Identify

前馈深度网络

多层感知机(Multilayer Perceptron)

多层感知机仅仅是一个将一组输入值映射到输出值的数学函数。该函数由许多较简单的函数复合而成。我们可以认为不同数学函数的每一次应用都为输入提供了新的表示。

为什么需要使用非线性函数

这是由于线性模型的局限性,一个很经典的例子是,线性模型是无法学习异或函数的。

分布式表示

其思想是:系统的每一个输入都应该由多个特征表示,并且每一个特征都应该参与到多个可能输入的表示。这显然也与神经网络每一层layer与layer之间的dense有关联

激活函数

激活函数是神经网络中的一个重要组件,用于对输入信号进行非线性变换,他决定了一个神经元是否被激活,或者说神经元的输出是什么。

激活函数在数学上表示为一个非线性的函数。下面是一些常见的激活函数

Sigmoid函数

\[σ(x) = 1 / (1 + e^{-x})\] 输出介于0到1之间,常用于二分类任务,但容易在深层网络中造成梯度消失的问题

Sigmoid

Tanh函数

输出值在-1到1之间,相对于Sigmoid函数,其输出均值为0,但同样存在梯度消失的问题。

\[tanh(x) = (e^x - e^{-x}) / (e^x + e^{-x})\]

Tanh

ReLU (Rectified Linear Unit函数)

最常见的激活函数之一

输出非负值,计算简单,能够缓解梯度消失问题,但可能存在“死亡ReLU”现象(即某些神经元在训练过程中永远不被激活)

\[ReLU(x) = max(0 ,x)\]

Leaky ReLU函数

ReLU的改进版本,允许负值以一个小的斜率通过,减少死亡ReLU中的死亡现象。

\[Leaky\ ReLU(x) = max(\alpha x ,x)\]

其中\(\alpha\) 是一个较小的常数

Softmax函数

通常用于多分类问题的输出层,将神经元的输出转换为概率分布,输出值的总和为1。

\[Softmax(x_i) = e^{x_i} / \sum e^{x_j}\]

损失函数

用于量化真实值与预测值之间的差距的函数,它量化了模型预测的错误程度,数值越小表示模型的预测越接近真实值,反之则说明预测误差较大。

1回归问题中的损失函数

  • 均方误差(Mean Squared Error, MSE):计算预测值与真实值之间差值的平方和的平均值。MSE是回归问题中最常用的损失函数。

    • 公式:\(MSE = (1/n) * Σ (y_{pred} - y_{true})^2\)
  • 平均绝对误差(Mean Absolute Error, MAE)

    :计算预测值与真实值之间绝对差值的平均值。

    • 公式:\(MAE = (1/n) * Σ |y_{pred} - y_{true}|\)

2. 分类问题中的损失函数

  • 交叉熵损失(Cross-Entropy Loss)

    :用于分类任务,特别是在多分类问题中常用。它衡量模型输出的概率分布与真实分布之间的差异。

    • 对于二分类问题,二元交叉熵损失的公式为:

      • 公式:

      • \[ Binary\ Cross-Entropy\ Loss = - (y_{true} * log(y_{pred}) + (1 - y_{true}) * log(1 - y_{pred})) \]

    • 对于多分类问题,使用Softmax和交叉熵损失的组合:

      • 公式:

      • \[ Categorical\ Cross-Entropy\ Loss = - \sum y_{true} * log(y_{pred}) \]

3. 对比损失(Hinge Loss)

  • 主要用于支持向量机(SVM)等模型,目的是最大化分类边界。Hinge Loss通过惩罚错误分类点来优化分类模型。
  • 公式:\[Hinge Loss = max(0, 1 - y_{true} * y_{pred})\]

4. 自定义损失函数

  • 在某些复杂场景中,标准的损失函数可能无法满足需求。此时,研究人员可以根据具体需求定义自适应的损失函数。

通过最小化损失函数的值,模型可以逐渐提高其在数据上的表现。损失函数的选择应与任务类型及目标密切相关,从而能够准确反映模型性能。

梯度下降

正则化

过拟合

线性代数

主对角线

即满足\[a = \{a_{i,j}|i=j\}\]的元素构成的线,特殊的\[n\not =m\]

image-20240609143044969

转置

即矩阵对主对角线的镜像,特俗的有\[n\not = m\]

image-20240609143213322

元素对应乘积(Hadamard 乘积)

记为\[A\odot B\]

点积

两个相同维数的向量x和y的点积(dot product)可看作是矩阵乘积\[A^\top B\]​。我们可以把矩阵乘积C=AB中计算Cij的步骤看作是A的第i行和B的第j列之间的点积。

矩阵的乘法是不满足交换律的,但是矩阵的点积是满足的。 \[ x^\top y = y^\top x \]

矩阵乘积转置的简单形式 \[ (AB)^\top = B^\top A^\top \] 注意顺序是不能更改的因为矩阵乘法不满足交换律

单位矩阵

单位矩阵指主对角线上的值都为1,其他地方都为零的矩阵。

我们将保持n维向量不变的单位矩阵记作\[I_n\]

逆矩阵

很朴素的定义,需要注意的是由于矩阵乘法不满足交换律,因此我们再说一个矩阵的逆的时候通常是说矩阵的左逆。

对于方阵而言,它的左逆和右逆是相等的

线性相关与生成子空间

如果逆矩阵\[A^{-1}\]​存在。那么式(2.11)肯定对于每一个向量b恰好存在一个解。但是,对于方程组而言,对于向量b的某些值,有可能不存在解,或者存在无限多个解。存在多于一个解但是少于无限多个解的情况是不可能发生的;因为如果x和y都是某方程组的解,则x,y则构成了一个张成空间。

为了分析方程有多少个解,我们可以将A的列向量看作从原点(origin)(元素都是零的向量)出发的不同方向,确定有多少种方法可以到达向量b。在这个观点下,向量x中的每个元素表示我们应该沿着这些方向走多远,即xi表示我们需要沿着第i个向量的方向走多远: \[ Ax = \sum _i x_i A_{:,i} \] 这样的操作我们称为线性组合。形式上,一组向量的线性组合是指每个向量乘以对应标量系数之后的和,即: \[ \sum _i c_i v^{(i)} \] 一组向量的生成子空间(span)是原始向量线性组合后所能抵达的点的集合。

确定Ax=b是否有解相当于确定向量b是否在A列向量的生成子空间中。这个特殊的生成子空间被称为A的列空间(column space)或者A的值域(range)。

为了使方程Ax=b对于任意向量\[b\in \mathbb{R}^m\]都存在解,我们要求A的列空间构成整个\[\mathbb{R}^m\]。如果\[\mathbb{R}^m\]中的某个点不在A的列空间中,那么该点对应的b会使得该方程没有解。矩阵A的列空间是整个\[\mathbb{R}^m\]的要求,意味着A至少有m列,即n>=m。否则,A列空间的维数会小于m。例如,假设A是一个\[3\times 2\]的矩阵。目标b是3维的,但是x只有2维。所以无论如何修改x的值,也只能描绘出\[\mathbb{R}^3\]空间中的二维平面。当且仅当向量b在该二维平面中时,该方程有解。

不等式n>=m仅是方程对每一点都有解的必要条件。这不是一个充分条件,因为有些列向量可能是冗余的。假设有一个\[\mathbb{R}^{2\times2}\]中的矩阵,它的两个列向量是相同的。那么它的列空间和它的一个列向量作为矩阵的列空间是一样的。换言之,虽然该矩阵有2列,但是它的列空间仍然只是一条线,不能涵盖整个\[\mathbb{R}^2\]空间。

正式地说,这种冗余被称为线性相关(linear dependence)。如果一组向量中的任意一个向量都不能表示成其他向量的线性组合,那么这组向量称为线性无关(linearly independent)。如果某个向量是一组向量中某些向量的线性组合,那么我们将这个向量加入这组向量后不会增加这组向量的生成子空间。这意味着,如果一个矩阵的列空间涵盖整个\[\mathbb{R}^m\],那么该矩阵必须包含至少一组m个线性无关的向量。这是对于每一个向量b的取值都有解的充分必要条件。值得注意的是,这个条件是说该向量集恰好有m个线性无关的列向量,而不是至少m个。不存在一个m维向量的集合具有多于m个彼此线性不相关的列向量,但是一个有多于m个列向量的矩阵有可能拥有不止一个大小为m的线性无关向量集。

要想使矩阵可逆,我们还需要保证对于每一个b值至多有一个解。为此,我们需要确保该矩阵至多有m个列向量。否则,该方程会有不止一个解。

奇异矩阵(singular square)

该矩阵必须是一个方阵(square),即m=n,并且所有列向量都是线性无关的。一个列向量线性相关的方阵被称为奇异的(singular)。

矩阵右乘

\[ AA^{-1}=I \]

范数(norm)

用来衡量一个向量的大小。机器学习中常用范数衡量向量大小。形式上\[L^p\]定义如下 \[ ||x||_p = \left( \sum _i |x_i|^p \right) ^{\frac{1}{p}} \] 范数(包括Lp范数)是将向量映射到非负值的函数

严格的讲,范数是满足以下性质的函数

  • f(x) = 0 => x=0
  • f(x+y) <=f(x) + f(y) (三角不等式)
  • \[\forall \alpha \in \mathbb{R},f(\alpha x) = |\alpha|f(x)\]

当p= 2时,\[L^2\]范数被称为欧几里得范数(Euclidean norm)。它表示从原点出发到向量x确定的点的欧几里得距离。\[L^2\]范数在机器学习中出现地十分频繁,经常简化表示为∥x∥,略去了下标2。平方\[L^2\]范数也经常用来衡量向量的大小,可以简单地通过点积\[x ^\top x\]计算。

但是在很多情况下,平方\[L^2\]范数也可能不受欢迎,因为它在原点附近增长得十分缓慢。在某些机器学习应用中,区分恰好是零的元素和非零但值很小的元素是很重要的。在这些情况下,我们转而使用在各个位置斜率相同,同时保持简单的数学形式的函数:\[L^1\]范数。\[L^1\]范数可以简化如下: \[ ||x||_1 = \sum _i |x_i| \] 有时候我们会统计向量中非零元素的个数来衡量向量的大小。有些作者将这种函数称为“\[L^0\]范数’’,但是这个术语在数学意义上是不对的

另外一个经常在机器学习中出现的范数是\[L^\inf\]范数,也被称为最大范数(maxnorm)。这个范数表示向量中具有最大幅值的元素的绝对值: \[ ||x||_1 = \max _i |x_i| \] 有时候我们可能也希望衡量矩阵的大小。在深度学习中,最常见的做法是使用Frobenius范数(Frobenius norm), \[ ||A||_F = \sqrt{\sum _{i,j} A^2_{i,j}} \] 两个向量的点集可以用范数来表示,具体的 \[ x^\top y = ||x||_2 ||y||_2 cos\theta \] \[\theta\]表示x,y之间的夹角

对角矩阵

只在主对角线上含有非零元素,,其他位置都是零。用diag(\[v\])表示一个对角矩阵。

计算乘法diag(v)x,我们只需要将x中的每个元素xi放大vi倍。换言之,diag(v)x=v⊙x

对角方阵的逆矩阵存在,当且仅当对角元素都是非零值,在这种情况下,diag(v)1=diag([1/v1;.... ;1/vn]⊤)。

非方阵的对角矩阵没有逆矩阵

对称矩阵

对称矩阵是矩阵的转置和自己相等的矩阵 \[ A = A ^\top \]

单位矩阵

具有单位范数的矩阵

如果\[x^\top y=0\],那么向量x和向量y互相正交(orthogonal)。如果两个向量都有非零范数,那么这两个向量之间的夹角是90度。在Rn中,至多有n个范数非零向量互相正交。如果这些向量不仅互相正交,并且范数都为1,那么我们称它们是标准正交(orthonormal)。

正交矩阵(orthogonal matrix)是指行向量和列向量是分别标准正交的方阵,更具体的,他们是满足以下条件的矩阵 \[ A^\top A = A ^\top A = I. \] 这样意味着 \[ A^{-1} = A^\top \]

特征分解

特征分解(eigendecomposition)是使用最广的矩阵分解之一,即我们将矩阵分解成一组特征向量和特征值。

方阵A的特征向量(eigenvector)是指与A相乘后相当于对该向量进行缩放的非零向量v: \[ A v = \lambda v \] 标量\(\lambda\)被称为这个特征向量对应的特征值(eigenvalue)。

(类似地,我们也可以定义左特征向量(left eigenvector)\[v^⊤A=\lambda v^⊤\],但是通常我们更关注右特征向量(right eigenvector))。

所有特征值都是正数的矩阵被称为正定(positive definite);所有特征值都是非负数的矩阵被称为半正定(positive semidefinite)。同样地,所有特征值都是负数的矩阵被称为负定(negative definite);所有特征值都是非正数的矩阵被称为半负定(negative semidefinite)。

然而,我们也常常希望将矩阵分解(decompose)成特征值和特征向量。这样可以帮助我们分析矩阵的特定性质,就像质因数分解有助于我们理解整数。

矩阵A的特征分解可以记作 \[ A = V diag(\lambda) V^{-1} \] 不是每一个矩阵都可以分解成特征值和特征向量。在某些情况下,特征分解存在,但是会涉及复数而非实数。

其中Q是A的特征向量组成的正交矩阵,是对角矩阵。特征值\[\lambda_{i;i}\]对应的特征向量是矩阵Q的第i列,记作Q:;i。因为Q是正交矩阵,我们可以将A看作沿方向v(i)延展i倍的空间