# 机器学习中向量范数的温和介绍

> 原文： [https://machinelearningmastery.com/vector-norms-machine-learning/](https://machinelearningmastery.com/vector-norms-machine-learning/)

计算向量的长度或幅度通常需要直接作为机器学习中的正则化方法，或作为更宽的向量或矩阵运算的一部分。

在本教程中，您将发现计算向量长度或幅度的不同方法，称为向量范数。

完成本教程后，您将了解：

*   L1 范数，计算为向量绝对值之和。
*   L2 范数，计算为平方向量值之和的平方根。
*   最大范数，计算为最大向量值。

让我们开始吧。

*   **更新 Mar / 2018** ：修正了最大范数方程中的拼写错误。
*   **更新 Sept / 2018** ：修复了与定义的向量大小相关的拼写错误。

![Gentle Introduction to Vector Norms in Machine Learning](img/e4a4a58243578310240b1d079ff99795.jpg)

机器学习中向量范数的温和介绍
[Cosimo](https://www.flickr.com/photos/22932473@N04/4902494396/) 的照片，保留一些权利。

## 教程概述

本教程分为 4 个部分;他们是：

1.  向量范数
2.  向量 L1 范数
3.  向量 L2 范数
4.  向量最大范数

## 向量范数

通常需要直接或作为更宽向量或向量矩阵运算的一部分来计算向量的大小或长度。

向量的长度称为向量范数或向量的幅度。

> 向量的长度是一个非负数，用于描述空间中向量的范围，有时也称为向量的大小或范数。

- 第 112 页，[无线性代数废话指南](http://amzn.to/2k76D4C)，2017 年

除了所有零值的向量之外，向量的长度始终是正数。它是使用一些度量来计算的，该度量总结了向量距向量空间原点的距离。例如，具有 3 个元素的向量的向量空间的原点是（0,0,0）。

符号用于表示更广泛计算中的向量范数，并且向量范数计算的类型几乎总是具有其自己的唯一符号。

我们将看一下机器学习中使用的一些常见的向量范数计算。

## 向量 L1 范数

可以使用 L1 范数计算向量的长度，其中 1 是 L 的上标，例如， L ^ 1。

向量的 L1 范数的符号是​​|| v || 1，其中 1 是下标。因此，这个长度有时被称为出租车标准或曼哈顿标准。

```
l1(v) = ||v||1
```

L1 范数被计算为绝对向量值之和，其中标量的绝对值使用符号| a1 |。实际上，范数是从向量空间的原点计算曼哈顿距离。

```
||v||1 = |a1| + |a2| + |a3|
```

可以使用带有参数的 norm（）函数在 NumPy 中计算向量的 L1 范数，以指定范数顺序，在本例中为 1。

```
# l1 norm of a vector
from numpy import array
from numpy.linalg import norm
a = array([1, 2, 3])
print(a)
l1 = norm(a, 1)
print(l1)
```

首先，定义 1×3 向量，然后计算向量的 L1 范数。

首先运行示例打印定义的向量，然后打印向量的 L1 范数。

```
[1 2 3]

6.0
```

当将机器学习算法拟合为正则化方法时，经常使用 L1 范数，例如，一种保持模型系数较小的方法，反过来，模型不那么复杂。

## 向量 L2 范数

可以使用 L2 范数计算向量的长度，其中 2 是 L 的上标，例如， L ^ 2。

向量的 L2 范数的符号是​​|| v || 2，其中 2 是下标。

```
l2(v) = ||v||2
```

L2 范数计算向量坐标距向量空间原点的距离。因此，它也被称为欧几里德范数，因为它被计算为距离原点的欧几里德距离。结果是正距离值。

L2 范数被计算为平方向量值之和的平方根。

```
||v||2 = sqrt(a1^2 + a2^2 + a3^2)
```

可以使用带有默认参数的 norm（）函数在 NumPy 中计算向量的 L2 范数。

```
# l2 norm of a vector
from numpy import array
from numpy.linalg import norm
a = array([1, 2, 3])
print(a)
l2 = norm(a)
print(l2)
```

首先，定义 1×3 向量，然后计算向量的 L2 范数。

首先运行示例打印定义的向量，然后打印向量的 L2 范数。

```
[1 2 3]

3.74165738677
```

与 L1 范数一样，L2 范数经常在将机器学习算法拟合为正则化方法时使用，例如，一种保持模型系数较小的方法，反过来，模型不那么复杂。

到目前为止，L2 范数在机器学习中比其他向量范数更常用。

## 向量最大范数

向量的长度可以使用最大范数来计算，也称为最大范数。

向量的最大范数被称为 L ^ inf，其中 inf 是上标并且可以用无穷大符号表示。 max norm 的表示法是|| x || inf，其中 inf 是下标。

```
maxnorm(v) = ||v||inf
```

最大范数计算为返回向量的最大值，因此返回名称。

```
||v||inf = max(|a1|, |a2|, |a3|)
```

可以使用 norm（）函数在 NumPy 中计算向量的最大范数，并将 order 参数设置为 inf。

```
# max norm of a vector
from numpy import inf
from numpy import array
from numpy.linalg import norm
a = array([1, 2, 3])
print(a)
maxnorm = norm(a, inf)
print(maxnorm)
```

首先，定义 1×3 向量，然后计算向量的最大范数。

首先运行示例打印定义的向量，然后打印向量的最大范数。

```
[1 2 3]

3.0
```

Max norm 也被用作机器学习中的正则化，例如神经网络权重，称为最大范数正则化。

## 扩展

本节列出了一些扩展您可能希望探索的教程的想法。

*   使用您自己的数据使用每个操作创建 5 个示例。
*   为定义为列表列表的矩阵手动实现每个矩阵操作。
*   搜索机器学习论文并找到每个正在使用的操作的示例。

如果你探索任何这些扩展，我很想知道。

## 进一步阅读

如果您希望深入了解，本节将提供有关该主题的更多资源。

### 图书

*   [线性代数](http://amzn.to/2j2J0g4)简介，2016 年。
*   第 2 章，线性代数，[深度学习](http://amzn.to/2j4oKuP)，2016。

### API

*   [numpy.linalg.norm（）API](https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.linalg.norm.html)

### 用品

*   维基百科上的 [Norm（数学）](https://en.wikipedia.org/wiki/Norm_(mathematics))

## 摘要

在本教程中，您发现了计算向量长度或大小的不同方法，称为向量范数。

具体来说，你学到了：

*   L1 范数，计算为向量绝对值之和。
*   L2 范数，计算为平方向量值之和的平方根。
*   最大范数，计算为最大向量值。

你有任何问题吗？
在下面的评论中提出您的问题，我会尽力回答。