首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是仿射变换与神经网络有关?

问什么是仿射变换与神经网络有关?
EN

Data Science用户
提问于 2016-08-13 11:38:23
回答 3查看 14.6K关注 0票数 8

我最近读了一篇关于公路神经网络的文章,发现了以下内容:

y=H(x,W_H) H通常是仿射变换,然后是非线性激活函数,但通常可以采用其他形式。

在谷歌上搜索了仿射变换之后,我不能说我完全理解它的含义。谁能详细解释一下吗?

EN

回答 3

Data Science用户

回答已采纳

发布于 2016-08-13 12:06:12

这是一个线性变换。例如,在转换之前平行的线仍然是平行的。缩放,旋转,反射等等。对于神经网络,通常只是输入矩阵乘以权矩阵。

票数 8
EN

Data Science用户

发布于 2018-10-24 11:12:58

仿射变换是一种形式,

代码语言:javascript
复制
  `g(\vec(v) = Av+b #qcStackCode#`

其中,A是表示线性变换的矩阵,b是向量。

换言之,仿射变换是线性变换与平移的结合。

线性变换总是将源空间中的向量b =0携带到目标空间中的0。

E.g

y=3x + 4,在学校里我们称它为线性方程,但它不是严格地说线性变换,因为它有平移(+4),而线性变换不这样做。

因此,每一个线性变换都是仿射的(只是将b设为零向量)。然而,并不是每个仿射变换都是线性的。

现在,在机器学习的背景下,线性回归试图以一种最优的方式将一条线拟合到数据上,

行被定义为,y=mx+b。正如所解释的,它实际上不是线性函数,它是仿射函数。也许应该改名。正确使用术语是件好事。

同样,在一层神经网络中,通常用数学表示如下:

y(\vec{x})=W\vec{x}+\vec{b}

W是权矩阵,\vec{b}是偏置向量。这个函数通常也被称为线性函数,尽管它实际上是仿射函数。

票数 13
EN

Data Science用户

发布于 2022-04-09 23:34:20

要从数学上理解线性和仿射变换是什么,请阅读Pratik_Katte的答案。

但是在机器学习中,所谓的线性层实际上是数学上的仿射变换,\mathbb{R}^n\rightarrow\mathbb{R}^m (即将特征转化为向量)。所谓仿射层实际上是n仿射变换\mathbb{R}\rightarrow\mathbb{R} (即特征坐标上的转换)。

代码语言:javascript
复制
class Affine(nn.Module):
    def __init__(self, dim):
        super().__init__()
        self.alpha = nn.Parameter(torch.ones(dim))
        self.beta = nn.Parameter(torch.zeros(dim))
        
    def forward(self, x):
        return self.alpha * x + self.beta

https://github.com/facebookresearch/deit/blob/main/resmlp_models.py

作为线性层的psudo代码可能会去哪里?

代码语言:javascript
复制
class Linear(Module):
    def __init__(self, in_features: int, out_features: int):
        super(Linear, self).__init__()
        self.weight = Parameter(torch.rand((out_features, in_features))
        self.bias = Parameter(torch.rand(out_features))
票数 0
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/13405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档