循环神经网络(RNN)

45 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第二十六天,点击查看活动详情

总结:此文为12月更文计划第二十六天第四十一篇。、

循环神经网络( RNN)

Embedding 层可以理解为一个查找表,它从整数索引(代表特定词)映射到密 集向量(它们的嵌入)。嵌入的维数(或宽度)是一个您可以试验的参数,以查 看哪些方法对您的问题有效,这与您在 Dense 层中试验神经元数量的方式非常 相似。

Embed a 1,000 word vocabulary into 5 dimensions.

embedding_layer = tf.keras.layers.Embedding(1000, 5)

创建嵌入层时,嵌入的权重是随机初始化的(就像任何其他层一样)。在训练期 间,它们通过反向传播逐渐调整。训练后,学习到的词嵌入将粗略地编码词之间 的相似性(因为它们是针对您的模型训练的特定问题而学习的)。 embedding 层的工作内容是首先定义一个 vocab_size * embedding_dim 的矩阵,然后 将我们传进去的每条数据根据这个矩阵变成 max_length (每条数据词的数量)* embedding_dim(每个词的长度),最后就会生成一个 batch_size * max_length * embedding_dm 的 3D 张量 输 出 是 [batch_size, max_length, embedding_dim], GlobalAveragePooling1D 会 在 max_length 这 一 维 上 去 做 平 均 , 所 以 才 能 消 掉 。 而 在 哪 一 维 上 去 做 平 均 是 由 data_format='channels_last' 这个参数决定的,如果是 channels_last,那么就消掉中间 这一维,如果是 channels_first, 就消掉最后一维。而这个 channel 你可以理解成特征的维 度 , 对 于 图 像 , 就 是 图 像 的 通 道 数 , 对 于 文 本 就 是 embedding_dim , 而 GlobalAveragePooling 会把特征维保留(对于代码实战,16 是我们的特征维),把另一个维 度 max_length 给消掉

image.png

合并+ padding 的缺点

◆信息丢失

◆多个 embedding 合并

(求均值)

◆Pad 噪音、无主次

( padding 太多,即便没有 padding,一些重要的表达情 感的词语,没有主次)

◆无效计算太多,低效

◆太多的 padding

解决办法就是循环神经网络

image.png

核心:维护一个状态作为下一步的额外输入

每一步使用同样的激活函数和参数 也就是 RNN 的 w 是不变的,