- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
TL;DR:双向 RNN 对简单文本分类有帮助吗?填充是否有害?
在我最近的工作中,我为同一任务(即文本分类)创建了 LSTM 模型和 BLSTM 模型。 LSTM 模型做得非常好,但我决定尝试一下 BLSTM,看看它是否可以进一步提高准确性。最后,我发现 BLSTM 的收敛速度要慢得多,而且令人惊讶的是,它过度拟合了,尽管我以 50% 的概率应用了 dropout。
在实现过程中,我对 LSTM 和 BLSTM 使用了展开的 RNN,希望能够加快训练速度。为了满足要求,我手动将输入文本填充到固定长度。
假设我们有一个句子“我早上睡得很晚,错过了对尼布甲尼撒的采访”,然后在转换为预先训练的词嵌入索引数组时,在其末尾填充 0。所以我们得到类似 [21, 43, 25, 64, 43, 25, 6, 234, 23, 0, 0, 29, 0, 0, 0, ..., 0] 的结果。请注意,“th”(应该是“the”)是一个拼写错误,而“Nebuchadnezzar”这个名字太罕见,因此这两个名字都不出现在词汇表中,因此我们也将其替换为 0,这对应于一个特殊的完整 -零词向量。
以下是我的感想:
有些人喜欢在将语料库输入 GloVe 或 Word2Vec 模型之前将未知单词更改为特殊单词,例如“< unk >”。这是否意味着我们必须先建立词汇表,然后将一些低频词(根据最小计数设置)更改为“< unk >”才能进行训练?训练 RNN 时,将未知词变为 0 还是将其删除,是不是更好?
就我而言,输入 LSTM 或 BLSTM 网络的尾随 0 会弄乱输出。尽管没有来自外部的新信息,但单元状态仍然会在接下来的每个时间步中更新,因此最终单元的输出将受到长尾随 0 的严重影响。我相信,BLSTM 会受到更大的影响,因为它还按照相反的顺序处理文本,例如 [0, 0, 0, ..., 0, 321, 231],特别是如果我们设置初始值忘记通往 1.0 的大门,以在一开始就培养内存。我看到很多人使用填充,但是如果文本被填充到很长,并且在 BLSTM 的情况下,会不会造成灾难?
对这些问题有什么想法吗? :-o
最佳答案
我基本上同意法布里斯上面的回答,但添加一些评论:
您不应该对 UNK 和 PAD 使用相同的 token 。大多数深度学习库都会掩盖 PAD,因为它不提供任何信息。另一方面,UNK 确实向您的模型提供信息(这里有一个单词,我们只是不知道它是什么,它可能是一个特殊的单词),所以您不应该掩盖它。是的,这确实意味着在单独的预处理步骤中,您应该检查训练/测试数据,建立一个词汇表,例如前 10,000 个最常见的单词,并将其他所有内容切换为 UNK。
如 1 中所述,大多数库只是屏蔽(即忽略)填充字符,因此这不是问题。但正如你所说,你没有必要填充句子。例如,您可以在训练时按长度对它们进行分组,或者一次将一个句子输入模型中。
关于machine-learning - (双向)RNN 用于简单文本分类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35580662/
表架构 DROP TABLE bla; CREATE TABLE bla (id INTEGER, city INTEGER, year_ INTEGER, month_ INTEGER, val I
我需要拆分字符串/或从具有以下结构的字符串中获取更容易的子字符串。 字符串将来自 window.location.pathname 或 window.location.href,看起来像 text/n
每当将对象添加到数组中时,我都会尝试更新 TextView ,并在 TextView 中显示该文本,如下所示: "object 1" "object 2" 问题是,每次将新对象添加到数组时,它都会覆盖
我目前正在寻找使用 Java 读取网站可见文本并将其存储为纯文本字符串的方法。 换句话说,我想转换成这样: Hello stupid World进入“ Hello World ” 或者类似的东西 Un
我正在尝试以文本和 HTML 格式发送电子邮件,但无法正确发送正确的 header 。特别是,我想设置 Content-Type header ,但我找不到如何为 html 和文本部分单独设置它。 这
我尝试了上面的代码,但我无法绑定(bind)文本,我怎样才能将资源内部文本 bloc
我刚刚完成了 Space Shooter 教程,由于没有 GUIText 对象,所以我创建了 UI.Text 对象并进行了相应的编码。它在统一播放器中有效,但在构建 Web 应用程序后无效。我花了一段
我有这个代码: - (IBAction)setButtonPressed:(id)sender { NSUserDefaults *sharedDefaults = [[NSUserDefau
抱歉标题含糊不清,但我想不出我想在标题中做什么。无论如何,对于图像上的文本,我使用了 JLabel 文本并将其添加到图标中。 JLabel icon = new JLabel(new Imag
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
我在将 Twitter 嵌入到我从 HTML 5 转换的 wordpress 运行网站时遇到问题。 我遇到的问题是推文不是我的自定义字体... 这是我无法使用任何 css 定位的 HTML 代码,我正
我正在尝试找到解决由于使用以下形式的代码而导致的冗余字符串连接问题的最佳方法: logger.debug("Entering loop, arg is: " + arg) // @1 在大多数情况下,
我写了这个测试 @Test public void removeRequestTextFromRouteError() throws Exception { String input = "F
我目前正在创建一个正则表达式来拆分所有匹配以下格式的字符串:&[文本],并且需要获取文本。字符串可能类似于:something &[text] &[text] everything &[text] 等
有没有办法将标题文本从一个词变形为另一个词,同时保留两个词中使用的字母?我看过的许多 css 文本动画大多是视觉的,很少有旋转整个单词的。 我想要做的是从一个词过渡,例如“BEACH”到“CHANGE
总结matplotlib绘图如何设置坐标轴刻度大小和刻度。 上代码: ?
我在容器 (1) 中创建了容器 (2)。你能帮忙如何向容器(1)添加文本吗?下面是我的代码 return Scaffold( body: Padding( padding: c
我似乎找不到任何人或任何人这样做过。我试图限制我们使用的图像数量,并想创建一个带有渐变作为其“颜色”的文本,并在其周围设置渐变轮廓/描边 到目前为止,我还没有看到任何将两者结合在一起的东西。 我可以自
我正在为视频游戏暗黑破坏神 2 使用 discord.py 构建一个不和谐机器人。其中一项功能要求机器人从暗黑破坏神 2 屏幕截图中提取项目的名称和属性。我目前正在为此使用 pytesseract,但
我很难弄清楚如何旋转 strip.text theme 中的属性来自 ggplot2 .我使用的是 R 版本 3.4.2 和 ggplot2 版本 2.2.1。 以下是 MWE 的数据。 > dput
我是一名优秀的程序员,十分优秀!