循环神经网络(RNN):原理、实现与挑战
维度灾难
当可能的输入变量(如单词)数量增加时,这些输入值的不同组合数量会呈指数级增长,这就是维度灾难问题。在 n - 元语法建模中,学习算法需要每个相关值组合至少一个示例,n 越大,越能近似原始分布,但也需要更多数据来准确估计 n - 元语法概率。不过,n - 元语法语言模型为后续研究提供了重要线索,它强调了单词上下文的重要性,接下来我们将借助神经网络模拟 n - 元语法模型的概率分布。
循环神经网络(RNN)简介
RNN 是一种可以处理可变长度序列数据的神经网络,例如文本序列或不同时刻的股票价格。序列元素之间相互关联,顺序至关重要,就像打乱一本书中的单词顺序后,文本将失去意义。
RNN 得名于其对序列反复应用相同的函数,可定义为递归关系:
[s_t = f(s_{t - 1}, x_t)]
其中,(f) 是可微函数,(s_t) 是 RNN 在步骤 (t) 的内部状态向量,(x_t) 是步骤 (t) 的网络输入。与普通神经网络不同,(s_t) 不仅取决于当前输入,还与前一状态 (s_{t - 1}) 有关,(s_{t - 1}) 可看作 RNN 对之前所有输入的总结。
RNN 有三组在所有步骤中共享的参数(权重):
- (U):将输入 (x_t) 转换为状态 (s_t)。
- (W):将前一状态 (s_{t - 1}) 转换为当前状态 (s_t)。
- (V):将新计算的内部状态 (s_t) 映射到输出 (y_t)。
内部状态和 RNN 输出可定义为:
[s_t = f(s_{t - 1}W + x_tU)]
超级会员免费看
订阅专栏 解锁全文
1527

被折叠的 条评论
为什么被折叠?



