循环神经网络归属:

  1. 领域:机器学习
  2. 方向:自然语言处理
  3. 贡献:自动文本生成

循环神经网络实际应用

  1. 生活中因为原始数据都是序列化的,比如自然语言,语音处理,时间序列问题(股票价格)等问题,
    这个时候需要序列建模,单层的神经网络不能处理这样的序列化问题,所以,采用循环神经网络,它是一种序列型数据进行建模的深度模型。
    根据现实需要,一共有四种循环神经网络;
  2. N VS 1 RNN (适合序列分类问题)
    特点:输入为序列,输出为单独的值
    适合场景:文本分类,音频分类,视频分类,数据生成
  3. 1 vs N RNN (适合单一生成多个的问题)
    特点:输入为单个值,输出为序列
    适合场景:图像生成文字,类别生成音乐或语音
    模型的作用:
  4. N VS N RNN (适合文本生成问题)
    特点:输入为序列,输出为单独的值
    适合场景:生成文字(诗歌,歌词,报道,linux代码,对话)视频中的每一帧预测下一个字符的概率
  5. 改进RNN——LSTM (优化处理文本生成问题)
    特点:输入为序列,输出为序列
    适合场景:生成文字过程中,解决长程传播,学习语义信息
    【机器学习】RNN循环神经网络
    改进的RNN循环神经网络:
    【机器学习】RNN循环神经网络

RNN循环神经网络的使用:
8. 定义数据,随机选择训练的文本
9. 使用TensorFlow机器学习框架,定义RNN的基本单元RNNCell抽象类
10. 普通的RNN使用BasicRNNCell类,在改进RNN(LSTM)中使用BasicLSTMCell类
11. RNN堆叠,实现循环输入,处理序列化问题,多次调用RNNCell的call方法
12. 定义模型中的一些的参数(损失,embedding稠密向量)
13. 执行训练
14. 查看日志,得到训练结果 转化为可视化效果图

模型的实现:
【机器学习】RNN循环神经网络

  • 每一次完整的变换就是神经网络节点的处理
  • 单层网络的输入是x,经过变换Wx+b和**函数f得到输出y y=f(Wx+b)
  • 为了处理建模序列问题,RNN引入了隐状态h(hidden state)
  • h可以对序列形的数据提取特征,接着再转换为输出 h1=f(Uxt+Wht-1+b)
  • 在计算时,每一步使用的参数U、W、b都是一样的,即每个步骤的参数都是共享的,这是RNN 的重要特点
  • 隐层也会作为下一个计算的部分输入,从而循环学习
  • 最后输出 yt:Softmax(Vh~t ~+ c)
  • 最经典的RNN结构,像搭积木一样把它搭好了

模型的结果:
我训练的数据是从网上随意寻找的关于米老师的报道,第一次训练的样本较小,当训练轮次为100、1000、10000时的效果为
【机器学习】RNN循环神经网络
【机器学习】RNN循环神经网络
【机器学习】RNN循环神经网络
第二次训练的样本较小,当训练轮次为100、1000、10000时的效果为
【机器学习】RNN循环神经网络
【机器学习】RNN循环神经网络
【机器学习】RNN循环神经网络
除此之外,还验证了一些关于歌词,诗歌,linux源码,英文对话
【这些是网上有人训练过的,我只是执行不同轮次的训练,看模型的输出会有什么不一样,发现了一些有意思的东西】
【机器学习】RNN循环神经网络
【机器学习】RNN循环神经网络
【机器学习】RNN循环神经网络
最终的结论:
文本量越大,循环的次数越多,自动生成的文本效果越好
对比中英文的结果,可以看出输入的文本越是词法完整,语义清晰,语法无误,相关性强,机器自动生成的文本效果就越好。