循环神经网络归属:
- 领域:机器学习
- 方向:自然语言处理
- 贡献:自动文本生成
循环神经网络实际应用:
- 生活中因为原始数据都是序列化的,比如自然语言,语音处理,时间序列问题(股票价格)等问题,
这个时候需要序列建模,单层的神经网络不能处理这样的序列化问题,所以,采用循环神经网络,它是一种序列型数据进行建模的深度模型。
根据现实需要,一共有四种循环神经网络; - N VS 1 RNN (适合序列分类问题)
特点:输入为序列,输出为单独的值
适合场景:文本分类,音频分类,视频分类,数据生成 - 1 vs N RNN (适合单一生成多个的问题)
特点:输入为单个值,输出为序列
适合场景:图像生成文字,类别生成音乐或语音
模型的作用: - N VS N RNN (适合文本生成问题)
特点:输入为序列,输出为单独的值
适合场景:生成文字(诗歌,歌词,报道,linux代码,对话)视频中的每一帧预测下一个字符的概率 - 改进RNN——LSTM (优化处理文本生成问题)
特点:输入为序列,输出为序列
适合场景:生成文字过程中,解决长程传播,学习语义信息
改进的RNN循环神经网络:
RNN循环神经网络的使用:
8. 定义数据,随机选择训练的文本
9. 使用TensorFlow机器学习框架,定义RNN的基本单元RNNCell抽象类
10. 普通的RNN使用BasicRNNCell类,在改进RNN(LSTM)中使用BasicLSTMCell类
11. RNN堆叠,实现循环输入,处理序列化问题,多次调用RNNCell的call方法
12. 定义模型中的一些的参数(损失,embedding稠密向量)
13. 执行训练
14. 查看日志,得到训练结果 转化为可视化效果图
模型的实现:
- 每一次完整的变换就是神经网络节点的处理
- 单层网络的输入是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时的效果为
第二次训练的样本较小,当训练轮次为100、1000、10000时的效果为
除此之外,还验证了一些关于歌词,诗歌,linux源码,英文对话
【这些是网上有人训练过的,我只是执行不同轮次的训练,看模型的输出会有什么不一样,发现了一些有意思的东西】
最终的结论:
文本量越大,循环的次数越多,自动生成的文本效果越好
对比中英文的结果,可以看出输入的文本越是词法完整,语义清晰,语法无误,相关性强,机器自动生成的文本效果就越好。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:【机器学习】RNN循环神经网络 - Python技术站