前言:RNN的出现,解决了CNN在处理时空序列上的糟糕表现。所谓时空序列可以简单理解上前后的输入是有联系的,比如自然语言处理,我们说的前一句话和后一句话之间是有联系的;智能视频处理,每一帧的前后是有联系的;雷达信号,每个信号之间是有联系的……传统的图像处理,图像中的每个像素点,这些像素值之间是没有联系的。我们利用RNN做一个自动歌词生成器,本文先介绍一下RNN的理论基础。
目录
语言模型
语言模型(language model)是计算一个句子的概率的模型。自然语言处理中最常见的数据是文本数据。我们可以把一段自然语言文本看作一段离散的时间序列。假设一段长度为TT的文本中的词依次为w1,w2,…,wTw1,w2,…,wT,那么在离散的时间序列中,wt(1≤t≤T)可看作在时间步(time step)t的输出或标签。给定一个长度为TT的词的序列w1,w2,…,wTw1,w2,…,wT,语言模型将计算该序列的概率:
P(w1,w2,…,wT)
如果句子中的每一个词都是独立出现的,那么我们就可以把概率写成:
但是我们前言中说了,自然语言中,每个词肯定相互之间有联系的,如果这个词出现依赖前一个词,这就是二元语法:
同理,一个词出现依赖前两个词,这就是三元语法:
因此,一个词出现依赖于前N-1个次,就是N元语法:
RNN原理和网络结构
- x是一个向量,它表示输入层的值。
- s是一个向量,它表示隐藏层的值。
- U是输入层到隐藏层的权重矩阵。
- o也是一个向量,它表示输出层的值。
- V是隐藏层到输出层的权重矩阵。
- W是权重矩阵。循环神经网络的隐藏层的值s不仅仅取决于当前这次的输入x,还取决于上一次隐藏层的值s。权重矩阵 W就是隐藏层上一次的值作为这一次的输入的权重。
将刚才那个抽象图画成具体图:
按照时间线展开就是:
最后我们用公式表示:
好了,RNN理论能理解这些就够了,后面开始写代码。
参考
标签:RNN,手把手,神经网络,w2,序列,自然语言,隐藏 来源: https://blog.csdn.net/qq_41895747/article/details/121183750
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。