为什么 LSTM 在参数初始化时要使用 SVD 方法使参数正交
答案:1 悬赏:80 手机版
解决时间 2021-11-08 02:11
- 提问者网友:雾里闻花香
- 2021-11-07 03:43
为什么 LSTM 在参数初始化时要使用 SVD 方法使参数正交
最佳答案
- 五星知识达人网友:春色三分
- 2021-11-07 04:38
首先,除了 orthogonal initialization 和 uniform initialization,现在常用的还有 Gaussian initialization。不常用的还有 identity initialization 和现在“已经被时代抛弃”的 pretraining with autoencoder。这些方法在不同的场景下都被人选择了。个人感觉,比较复杂的 LSTM 用 orthogonal initialization 的人比较多,而在 research paper 讨论一个小 task 时,我看到的大部分还是说用 uniform/Gaussian。这里可能的直观的原因是后者的 layer 和 magnitude 比较少/小。
说到 layer 比较少,其实我是想说,orthogonal initialization,个人认为对于 LSTM (deep, high-dimensitional, non-convex)比较有效的原因是,(1)可以很方便地减缓 gradient vanishing/exploding problem 和 activation functions 的 saturation。因为 orthogonal matrix 的所有 vectors 都是 orthonormal 的,也就是不仅 orthogonal,还 magnitude 为 1. 这样,在计算时候,乘上这个 matrix,就可以修正 vanishing 也可以重置 saturation。(2)这个问题应该是和 saddle point 有关系,复杂的 LSTM 受 saddle point structures 带来的各种问题更严重,而基于 SVD/QR 的 orthogonal initialization 可以 decouple networks 之间的依赖,消除 non-global minima。(3)当然还有这几种 initialization 都用来破坏 symmetry。
上面这是可被证实的,下面来点个人的猜测:这和 weight variation 也有关系。
综上,有些人觉得这几种方法没区别,有人觉得有,完全是 case-by-case。我个人在实践过程中,即使是小网络,也觉得有区别。
说到 layer 比较少,其实我是想说,orthogonal initialization,个人认为对于 LSTM (deep, high-dimensitional, non-convex)比较有效的原因是,(1)可以很方便地减缓 gradient vanishing/exploding problem 和 activation functions 的 saturation。因为 orthogonal matrix 的所有 vectors 都是 orthonormal 的,也就是不仅 orthogonal,还 magnitude 为 1. 这样,在计算时候,乘上这个 matrix,就可以修正 vanishing 也可以重置 saturation。(2)这个问题应该是和 saddle point 有关系,复杂的 LSTM 受 saddle point structures 带来的各种问题更严重,而基于 SVD/QR 的 orthogonal initialization 可以 decouple networks 之间的依赖,消除 non-global minima。(3)当然还有这几种 initialization 都用来破坏 symmetry。
上面这是可被证实的,下面来点个人的猜测:这和 weight variation 也有关系。
综上,有些人觉得这几种方法没区别,有人觉得有,完全是 case-by-case。我个人在实践过程中,即使是小网络,也觉得有区别。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯