4_Making RNNs More Effective(提升RNN的效果)

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 4_Making RNNs More Effective(提升RNN的效果)

一、Stacked RNN(多层RNN)


80417e2c2fd48834f81ba2631a400391.png

from keras.models import Sequential
from keras.layers import LSTM,Embedding,Dense
# 设置超参数
vocabulary = 10000   # 词典里面有10000个词汇
embedding_dim=32     # shape(x)=32,词向量x的维度为32
word_num = 500       # 每个电影评论有500个单词,如果超过500个单词,就会被截掉;如果不到500,就会补够。
state_dim =32        # shape(h) = 32,状态向量h的维度为32
# 开始搭建网络
model = Sequential()     # 建立Sequential()模型
# 往model里面加层,Embedding层,把词映射成向量
model.add(Embedding(vocabulary,embedding_dim,input_length=word_num))
# 需要指定状态向量h的维度,设置RNN层的return_sequences=False,表示RNN只输出最后一个状态向量h,把之前的状态向量舍去
model.add(LSTM(state_dim,return_sequences=True,dropout=0.2))
model.add(LSTM(state_dim,return_sequences=True,dropout=0.2))
model.add(LSTM(state_dim,return_sequences=False,dropout=0.2))
# 全连接层,输入RNN的最后一个状态h,输出0-1之间的数
model.add(Dense(1, activation="sigmoid"))
model.summary()

cb178483b3c2a593abe7d48560c92d3f.png


二、Bidirectional RNN(双向RNN)


  • 训练两条RNN,一条从左往右,另一条从右往左。
  • 两条RNN是独立的,不共享参数,也不共享状态
  • 两条RNN各自输出自己的状态向量,然后把他们的状态向量进行合并,计作向量y。


e2e0d34f68eec3011f576c9416a4fc7f.png


from keras.models import Sequential
from keras.layers import LSTM,Embedding,Dense,Bidirectional
# 设置超参数
vocabulary = 10000   # 词典里面有10000个词汇
embedding_dim=32     # shape(x)=32,词向量x的维度为32
word_num = 500       # 每个电影评论有500个单词,如果超过500个单词,就会被截掉;如果不到500,就会补够。
state_dim =32        # shape(h) = 32,状态向量h的维度为32
# 开始搭建网络
model = Sequential()     # 建立Sequential()模型
# 往model里面加层,Embedding层,把词映射成向量
model.add(Embedding(vocabulary,embedding_dim,input_length=word_num))
# 需要指定状态向量h的维度,设置RNN层的return_sequences=False,保留两条链最后的状态,把之前的状态向量舍去
model.add(Bidirectional(LSTM(state_dim,return_sequences=False,dropout=0.2)))
# 全连接层,输入RNN的最后一个状态h,输出0-1之间的数
model.add(Dense(1, activation="sigmoid"))
model.summary()


三、Pretrain(预训练)


预训练在深度学习中非常常用:比如在训练卷积神经网络的时候,如果网络太大而训练集不够大,那么可以先在大数据上做预训练,这样可以让神经网络有比较好的初始化,也可以避免过拟合。


Observation: The embedding layer contributes most of the parameters!


有320000个参数,而我们只有20000个训练样本,这个embedding layer太大,导致模型过拟合。


解决办法:对embedding layer层做预训练。


d70cc8752eb5deef4a205b5c2d1ff8d3.png

3.1 Pretrain the Embedding Layer


第一步,首先找一个更大的数据集,可以是情感分析的数据,也可以是其它类型的数据,但是任务最好是接近情感分析的任务,最好是学出来的词向量带有正面或者负面的情感,两个任务越相似,预训练之后的transformer就会越好,有了大数据集之后要搭建一个神经网络,这个神经网络是什么样的结构都可以(可以不用是RNN,只要这个神经网络有Embedding layer),然后在这个大数据集上训练神经网络。


e1d7094273386f05c7b5f7e5aa790c4f.png


第二步,训练好之后,把上面的层全部丢弃,只保留Embedding Layer和训练好的模型参数。


433c8e82fc955d4f0ca7f66d49717be1.png


第三步,搭建自己的RNN网络,这个新的RNN网络跟之前预训练的可以有不同的结构。搭建好之后,新的RNN层和全连接层都是随机初始化,而Embedding Layer的参数是预训练出来的,要把Embedding Layer的参数固定住,不训练这个Embedding Layer,只训练其它的层。


697d7bea4bfbe15dc86eaa8fd2890d43.png


四、Summary(总结)


SimpleRNN and LSTM are two kinds of RNNs; always use LSTM instead of SimpleRNN.

Use Bi-RNN instead of RNN whenever possible.

Stacked RNN may be better than a single RNN layer (if n is big).

Pretrain the embedding layer (if n is small). 如果训练数据较小,在大数据集上预训练


相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
2月前
|
算法 数据挖掘 数据处理
文献解读-Sentieon DNAscope LongRead – A highly Accurate, Fast, and Efficient Pipeline for Germline Variant Calling from PacBio HiFi reads
PacBio® HiFi 测序是第一种提供经济、高精度长读数测序的技术,其平均读数长度超过 10kb,平均碱基准确率达到 99.8% 。在该研究中,研究者介绍了一种准确、高效的 DNAscope LongRead 管道,用于从 PacBio® HiFi 读数中调用胚系变异。DNAscope LongRead 是对 Sentieon 的 DNAscope 工具的修改和扩展,该工具曾获美国食品药品管理局(FDA)精密变异调用奖。
29 2
文献解读-Sentieon DNAscope LongRead – A highly Accurate, Fast, and Efficient Pipeline for Germline Variant Calling from PacBio HiFi reads
|
4月前
|
机器学习/深度学习 网络协议 PyTorch
【文献学习】DCCRN: Deep Complex Convolution Recurrent Network for Phase-Aware Speech Enhancement
本文介绍了一种新的深度复数卷积递归网络(DCCRN),用于处理语音增强问题,特别是针对低模型复杂度的实时处理。
190 5
|
4月前
|
机器学习/深度学习 算法 测试技术
|
6月前
|
机器学习/深度学习 算法 关系型数据库
Hierarchical Attention-Based Age Estimation and Bias Analysis
【6月更文挑战第8天】Hierarchical Attention-Based Age Estimation论文提出了一种深度学习方法,利用层次注意力和图像增强来估计面部年龄。通过Transformer和CNN,它学习局部特征并进行序数分类和回归,提高在CACD和MORPH II数据集上的准确性。论文还包括对种族和性别偏倚的分析。方法包括自我注意的图像嵌入和层次概率年龄回归,优化多损失函数。实验表明,该方法在RS和SE协议下表现优越,且在消融研究中验证了增强聚合和编码器设计的有效性。
48 2
|
7月前
|
TensorFlow 算法框架/工具
[seq2seq]论文实现:Effective Approaches to Attention-based Neural Machine Translation(上)
[seq2seq]论文实现:Effective Approaches to Attention-based Neural Machine Translation(上)
54 1
|
7月前
|
机器学习/深度学习 Python TensorFlow
[seq2seq]论文实现:Effective Approaches to Attention-based Neural Machine Translation(下)
[seq2seq]论文实现:Effective Approaches to Attention-based Neural Machine Translation(下)
50 1
|
算法 计算机视觉 知识图谱
ACL2022:A Simple yet Effective Relation Information Guided Approach for Few-Shot Relation Extraction
少样本关系提取旨在通过在每个关系中使用几个标记的例子进行训练来预测句子中一对实体的关系。最近的一些工作引入了关系信息
131 0
|
机器学习/深度学习 自然语言处理 算法
TASLP21-Reinforcement Learning-based Dialogue Guided Event Extraction to Exploit Argument Relations
事件抽取是自然语言处理的一项基本任务。找到事件论元(如事件参与者)的角色对于事件抽取至关重要。
107 0
|
机器学习/深度学习 编解码 自然语言处理
SegFormer: Simple and Efficient Design for Semantic Segmentation with Transformers论文解读
我们提出了SegFormer,一个简单,高效而强大的语义分割框架,它将transformer与轻量级多层感知器(MLP)解码器统一起来。
829 0
|
机器学习/深度学习
【论文阅读】(2019)SimGNN:A Neural Network Approach to Fast Graph Similarity Computation
- 图形相似性搜索是最重要的基于图形的应用程序之一,例如查找与查询化合物最相似的化合物。 - 图相似性距离计算,如图编辑距离(GED)和最大公共子图(MCS),是图相似性搜索和许多其他应用程序的核心操作,但实际计算成本很高。 - 受神经网络方法最近成功应用于若干图形应用(如节点或图形分类)的启发,我们提出了一种新的基于神经网络的方法来解决这一经典但具有挑战性的图形问题,**旨在减轻计算负担,同时保持良好的性能**。 - 提出的**方法称为SimGNN**,它结合了两种策略。 - 首先,我们**设计了一个可学习的嵌入函数**,将每个图映射到一个嵌入向量中,从而提供图的全局摘要。**提出了一种新的
276 0
【论文阅读】(2019)SimGNN:A Neural Network Approach to Fast Graph Similarity Computation