怎么理解 RNN 循环神经网络工作原理?

1 天前
 James369
对于简单的网络(网络结构是固定不变的,静态的),比如全连接的我可以理解,就是训练一个函数:
y = f(x, θ)
这里函数 f 的定义是固定的。那么,只要输入一组 x 和 y ,就可以训练出θ。


但是对于 RNN ,我不大理解的是:
1. 它的网络结构是不定的,多重的。假如循环了 n 次,相当于要训练 n 个函数: f1(x,θ), f2(x,θ),,, fn(x,θ).
2. 对于这样多重的网络结构,它是怎么训练收敛的?
3. 后面输入进来训练的 x ,是否会对前面已经训练好的θ产生影响(类似灾难性遗忘)
1350 次点击
所在节点    机器学习
11 条回复
Int100
1 天前
建议老老实实找份教材,系统学习一下
James369
1 天前
@Int100 老老实实的系统学,估计得学一年多
Sawyerhou
1 天前
1 ,没有 n 个函数,只有一个函数,该函数被使用了 n 次
2 ,并不一定收敛,有的数据用 rnn 就是跑不出来
3 ,会,在这种情况下可以换用 lstm 或者 gru 之类的带记忆的门控模型
lrigi
1 天前
建议 b 站找个视频看看
Ericality
1 天前
(直接贴总结部分了)
一下来源于 gpt:
总结
RNN 的网络结构是固定的,权重是共享的,所有时间步使用相同的参数 θ。
通过时间的反向传播( BPTT ) 是 RNN 收敛的核心机制,优化整个序列的损失函数。
后续输入会影响模型参数,但不会导致灾难性遗忘,LSTM/GRU 等机制可以进一步缓解序列过长导致的信息丢失问题。
你这个问题 本身就是 rnn 基础结构可能都没搞清楚就问的 更多的是你就理解了个概念(当然可能是我理解的有问题) 就来提问 还不想系统学 那建议还是 gpt 问问吧 但是就算是 gpt 要解释这几个问题 也要牵扯到很多概念 比如反向传播 比如梯度爆炸/消失等 那其实为了理解他所说的 还是要先学习了才行
所以建议如果想学的话 还是不要投机取巧 不然一个答案只会牵扯出更多问题.....
JeffreyZhuang
1 天前
业余人士回答下,

1. 没有 n 个函数,他们的 θ 一致,举个简单的例子
(y0, h1) = f(x1, θ, h0)
(y1, h2) = f(x2, θ, h1)
...
最后 y{0...N} 再经一 个 fc 网络得到最终的结果。其中 h 是 cell 输出的 hidden state; h0 是初始 hidden state 。
2. 不保证
3. 会。cell 之间传递的 h 会产生 vanishing gradient problem
565656
1 天前
rnn 已经过时了,只能按照顺序执行,
jimrok
1 天前
1. RNN 是一种简单的网络结构,他只能应对一些简单的序列,并不是训练 n 个函数,而是尽量记住你给的序列,找到可能最好的θ,来预测输出。但这种简单的网络,只能记住一些简单的序列特征,跟 LLM 相比,就是草履虫和人脑的差别。

2. 不太可能收敛,对简单的序列数据应该收敛。比如发送的信息是 SOS ,SOS ,识别出来就报警。这个可能能收敛,再复杂的序列,你用来预测客户的问询,基本效果不好。

3. 会,本身网络简单,记不住那么多内容,继续变换输入,基本前面的θ会被干废掉。
balalaFairty
1 天前
@James369 一年多学会了,往后走基础更扎实岂不美哉。
frayesshi1
14 小时 18 分钟前
rnn 已经过时了,用 LSTM ,LSTM 在 cnn 基础上加一层,或者直接使用 transform ,先"嵌入"把你输入的 token 转换成数组,再加"注意力",经过网络后算出下一个 token
iambic
12 小时 1 分钟前
CNN 是在空间维度上复用参数,RNN 则是在时间维度上复用参数

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1100332

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX