考虑PyTorch 文档的简单自定义模块中的以下语句
首先,让我们看一下 PyTorch 的线性模块的更简单的自定义版本。该模块对其输入应用仿射变换。
由于该段落说的是PyTorch 的线性模块,我猜仿射变换只不过是线性变换。
认为是一个输入,然后线性变换可, 在哪里和是实数的维向量。和点() 代表点积。
仿射变换和线性变换一样吗?如果是,那么为什么使用名称仿射?它是否涵盖了比线性变换更多或更少的东西?
考虑PyTorch 文档的简单自定义模块中的以下语句
首先,让我们看一下 PyTorch 的线性模块的更简单的自定义版本。该模块对其输入应用仿射变换。
由于该段落说的是PyTorch 的线性模块,我猜仿射变换只不过是线性变换。
认为是一个输入,然后线性变换可, 在哪里和是实数的维向量。和点() 代表点积。
仿射变换和线性变换一样吗?如果是,那么为什么使用名称仿射?它是否涵盖了比线性变换更多或更少的东西?
在线性代数中,线性变换(又名线性映射或线性变换)是满足以下两个条件的函数
在哪里
因此,任何满足这两个条件的函数都是线性变换。
在欧几里得几何中,是仿射变换,一般不是线性代数中定义的线性变换。您可以轻松地证明仿射变换不是线性变换。例如,让和, 做对于任何标量,满足上述第二个条件? 不,例如,让, 然后.
然而,在神经网络的上下文中,当人们使用形容词“线性”时,他们通常指的是一条线。例如,在线性回归中,您可以有一个偏差(在仿射变换中上面),这会使函数不是线性变换,但我们仍然称它为线性回归,因为我们将一条线(因此称为线ar 回归)拟合到数据中。
所以,不,仿射变换不是线性代数中定义的线性变换,但所有线性变换都是仿射的。然而,在机器学习中,人们经常用形容词linear来指代直线模型,一般用仿射变换的函数来表示。在这个答案中,我也谈到了这个问题。
事实上,您始终可以将仿射变换表示为线性变换(更方便,因为它只是一个矩阵/点积)。
例如,给定一个输入, 一些权重和偏见,可以表示仿射运算作为 :
, 和和(线性运算)
当您的仿射变换是一个函数时和,您可以使用相同的技巧(通过在权重矩阵的右端添加带有偏差的列),所以你得到:
我在这个视频中找到了一个例子,Andrew Ng 使用这个技巧进行简单的线性回归。