【问题标题】:How can you constrain a neural network layer to simply be a n-dimensional rotation layer?如何将神经网络层限制为简单的 n 维旋转层?
【发布时间】:2021-09-27 21:28:47
【问题描述】:

我希望限制我的神经网络的一层,以专门找到其输入的最佳旋转,以满足目标。 (我的最终目标是R 是旋转层,格式为R.transpose() @ f(R @ z))。

我希望通过梯度下降来训练这个(+其他组件)。如果 z 只是二维的,那我只能说

R = [ cos(theta)   -sin(theta)
      sin(theta)    cos(theta)]

并让theta 成为可学习的参数。但是,我不知道如何为 d 维空间(其中 d>10)实际设置它。我已经尝试查看有关如何制作 d 维旋转矩阵的资源,它在线性代数中变得很重要,并且超出了我的想象。感觉这应该比看起来容易,所以我觉得我忽略了一些东西(比如也许 R 应该只是一个没有任何非线性激活的普通线性层)。

有人有什么想法吗?提前谢谢你:)

【问题讨论】:

  • 抱歉,我不确定这是否适合 StackOverflow 或交叉验证,所以我发布了这两个地方。我相信经过交叉验证的答案很好,所以我应该将它复制到这里(附上信用),还是应该删除这篇文章?

标签: neural-network linear-algebra rotational-matrices


【解决方案1】:

QR 分解可以帮助解决这个问题(因为 Q 是正交的),方法是让 W 成为一个不受约束的可学习矩阵(没有偏置项)并求解 W = QR,然后实际使用 Q 作为您的正交。如果你使用the pytorch QR,那么反向传播将能够从 QR 分解中返回并更新 W。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-28
    • 2013-03-02
    • 2019-09-01
    • 2016-09-02
    • 1970-01-01
    • 2017-10-20
    • 2012-09-22
    • 2018-11-05
    相关资源
    最近更新 更多