【机器学习】RNN循环神经网络
循环神经网络归属:领域:机器学习方向:自然语言处理贡献:自动文本生成循环神经网络实际应用:生活中因为原始数据都是序列化的,比如自然语言,语音处理,时间序列问题(股票价格)等问题,这个时候需要序列建模,单层的神经网络不能处理这样的序列化问题,所以,采用循环神经网络,它是一种序列型数据进行建模的深度模型。根据现实需要,一共有四种循环神经网络;N VS 1 RNN (适合序列分类问...
前面的文章提到Word2Vec是一种用于将词语映射到高维空间中的词向量表示的模型,它能够捕捉词语之间的语义和语法关系。这些词向量可以用于文本分类、推荐系统、情感分析等任务,同时也可以作为RNN循环神经网络的输入,从而提高模型对文本序列的理解和表达能力。
RNN循环神经网络是一种适用于处理序列数据的神经网络模型,它在处理自然语言任务时能够考虑到文本的上下文信息,因此特别适合于语言建模、机器翻译、文本生成等任务。在RNN模型中,可以使用Word2Vec提取的词向量作为输入,从而提高模型对词语语义信息的理解,从而更好地处理文本数据。
因此,Word2Vec模型和RNN循环神经网络可以结合使用,在自然语言处理任务中相辅相成,提高模型对文本数据的理解和表达能力。
循环神经网络 归属:
- 领域:机器学习
- 方向:自然语言处理
- 贡献:自动文本生成
循环神经网络实际应用:
生活中因为原始数据都是序列化的,比如自然语言,语音处理,时间序列问题(股票价格)等问题,
针对这种类型的问题,需要进行序列建模。单层的神经网络无法很好地处理这类序列化问题,因此采用了循环神经网络。循环神经网络是一种适用于序列型数据建模的深度模型。根据现实需求,通常有四种循环神经网络:
- N to 1 RNN (适合序列分类问题)
特点:输入为序列,输出为单独的值
适合场景:文本分类,音频分类,视频分类,数据生成 - 1 to N RNN (适合单一生成多个的问题)
特点:输入为单个值,输出为序列
适合场景:图像生成文字,类别生成音乐或语音 - N to N RNN (适合文本生成问题)
特点:输入为序列,输出为单独的值
适合场景:生成文字(诗歌,歌词,报道,linux代码,对话)视频中的每一帧预测下一个字符的概率 - LSTM改进的RNN(优化处理文本生成问题)
特点:输入为序列,输出为序列
适合场景:生成文字过程中,解决长程传播,学习语义信息
改进的RNN循环神经网络:
RNN循环神经网络的使用:
- 定义数据,随机选择训练的文本
- 使用TensorFlow机器学习框架,定义RNN的基本单元RNNCell抽象类
- 普通的RNN使用BasicRNNCell类,在改进RNN(LSTM)中使用BasicLSTMCell类
- RNN堆叠,实现循环输入,处理序列化问题,多次调用RNNCell的call方法
- 定义模型中的一些的参数(损失,embedding稠密向量)
- 执行训练
- 查看日志,得到训练结果 转化为可视化效果图
模型的实现:
- 在每一次完整的变换中,神经网络节点进行处理
- 单层网络的输入是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(Vht+ c)
- 经典的RNN结构就像搭积木一样,将其搭好了。
模型的结果:
我训练的数据是从网上随意寻找的关于米老师的报道,第一次训练的样本较小,当训练轮次为100、1000、10000时的效果为
第二次训练的样本较小,当训练轮次为100、1000、10000时的效果为
除此之外,还验证了一些关于歌词,诗歌,linux源码,英文对话
【这些是网上有人训练过的,我只是执行不同轮次的训练,看模型的输出会有什么不一样,发现了一些有意思的东西】
最终的结论:
文本量越大,循环的次数越多,自动生成的文本效果越好
对比中英文的结果,可以看出输入的文本越是词法完整,语义清晰,语法无误,相关性强,机器自动生成的文本效果就越好。
更多推荐
所有评论(0)