手把手写深度学习(3)——用RNN循环神经网络自动生成歌词之理论篇

前言:RNN的出现,解决了CNN在处理时空序列上的糟糕表现。所谓时空序列可以简单理解上前后的输入是有联系的,比如自然语言处理,我们说的前一句话和后一句话之间是有联系的;智能视频处理,每一帧的前后是有联系的;雷达信号,每个信号之间是有联系的……传统的图像处理,图像中的每个像素点,这些像素值之间是没有联系的。我们利用RNN做一个自动歌词生成器,本文先介绍一下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)

如果句子中的每一个词都是独立出现的,那么我们就可以把概率写成:

但是我们前言中说了,自然语言中,每个词肯定相互之间有联系的,如果这个词出现依赖前一个词,这就是二元语法:

 手把手写深度学习(3)——用RNN循环神经网络自动生成歌词之理论篇_第1张图片

 同理,一个词出现依赖前两个词,这就是三元语法:

手把手写深度学习(3)——用RNN循环神经网络自动生成歌词之理论篇_第2张图片

因此,一个词出现依赖于前N-1个次,就是N元语法:

RNN原理和网络结构

手把手写深度学习(3)——用RNN循环神经网络自动生成歌词之理论篇_第3张图片

  • x是一个向量,它表示输入层的值。
  • s是一个向量,它表示隐藏层的值。
  • U是输入层到隐藏层的权重矩阵
  • o也是一个向量,它表示输出层的值。
  • V是隐藏层到输出层的权重矩阵
  • W是权重矩阵。循环神经网络隐藏层的值s不仅仅取决于当前这次的输入x,还取决于上一次隐藏层的值s。权重矩阵 W就是隐藏层上一次的值作为这一次的输入的权重。

将刚才那个抽象图画成具体图:

手把手写深度学习(3)——用RNN循环神经网络自动生成歌词之理论篇_第4张图片

 按照时间线展开就是:

手把手写深度学习(3)——用RNN循环神经网络自动生成歌词之理论篇_第5张图片

最后我们用公式表示:

手把手写深度学习(3)——用RNN循环神经网络自动生成歌词之理论篇_第6张图片

好了,RNN理论能理解这些就够了,后面开始写代码。

参考

  • 史上最详细循环神经网络讲解(RNN/LSTM/GRU) - 知乎
  • 一文搞懂RNN(循环神经网络)基础篇 - 知乎
  • 动手学深度学习
  • 深入浅出讲解语言模型 - 知乎
  • 数学之美

你可能感兴趣的:(手把手写深度学习,深度学习,rnn,计算机视觉)