首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何处理大型数据集上的单词嵌入训练中的内存问题?

如何处理大型数据集上的单词嵌入训练中的内存问题?
EN

Data Science用户
提问于 2016-06-07 18:37:51
回答 2查看 3.9K关注 0票数 6

我想训练一个单词可预见性任务来生成单词嵌入。文档集合包含243 k文档。代码实现在torch中。我正在与庞大的数据集作斗争,并需要关于如何在这样一个大的数据集上训练单词嵌入的想法,这个数据集包含了24.3万篇完整的文章文档。研究计算资源是定时的,因此可以短时间访问GPU节点,因此选择了增量模型培训:

  1. 增量模型培训:在整个数据集上进行培训的一种方法是使用增量模型培训,即在数据块上对模型进行训练并保存它。稍后,拿起同样的预先训练的模型,并开始对它的下一块数据进行培训。在这种方法中,我面临的问题是如何维护单词的词汇表/字典。在词嵌入方法中,字典/词汇表起着重要的作用。我们扫描所有的文档,并创建单词的声音,这些单词的计数超过最低设定的频率。实际上,这个词汇表是一个散列图,它有与每个单词相关的索引,在训练样本中,为了模型的简单性,我们用它们的索引替换单词。在增量培训的情况下,如何逐步创建字典?我必须先在整个文档上创建词汇表/字典,然后逐步进行培训吗?或者,在增量训练中也是一种扩展声乐的方法?
  2. 另一个问题是内存限制了词汇表数据结构的大小。我正在实现我的模式在火炬,这是基于LUA的。因此,LUA限制了表的大小,我不能在一个表中加载整个文档的词汇表。如何克服这些记忆问题?
  3. 从手套矢量中吸取灵感。在他们的论文中,他们说“我们在五个不同规模的语料库上训练了我们的模型:2010年的维基百科转储有10亿标记;2014年维基百科的转储有16亿元;Gigaword 5有43亿个标记;Gigaword5 + Wikipedia2014组合有60亿个令牌;以及420亿个来自公共Crawl5的网络数据标记。我们用斯坦福标记器对每个语料库进行标记和小写,建立40万个最常见的words6词汇表,然后构造一个共现计数X的矩阵“。你知道手套向量是如何在这么大的语料库和大词汇量上训练的吗?在这种情况下,记忆限制是如何处理的呢?参考文献- http://nlp.stanford.edu/pubs/glove.pdf
  4. 对于如何限制生成单词嵌入的数据集的大小,有什么想法吗?随着文档数量的增加或减少,它将如何影响word嵌入的性能或覆盖范围?使用抽样技术从数据集中抽取文档是个好主意吗?如果是,那么请提出一些抽样技术。
EN

回答 2

Data Science用户

回答已采纳

发布于 2016-11-15 05:22:13

您可以通过tds库克服内置内存限制,它允许您构建不受Lua内存限制的或多或少等效的结构。这将无助于您的硬件的限制,但您将能够拥有大于2GB的表。

https://github.com/torch/tds

另外,如果所有这些都失败了,您可以考虑将词汇表划分为较小的表。然后,当您需要访问它时,您将有某种类型的主表,其中您将查找要查找的元素的正确的词汇表。这将需要对词汇表进行排序,因此仍然必须同时将其全部存储在内存中(或者实现您自己的巧妙排序算法),但只要词汇表保持不变,您只需要进行一次排序。然后,您序列化所有的词汇表,并根据需要从磁盘上加载它们,这将是缓慢的,但仍然比填充物理内存和消耗交换空间更快。可能吧。

票数 1
EN

Data Science用户

发布于 2016-06-08 08:56:15

我对火炬并不熟悉,但是由于基本上考虑了word2vec和doc2vec,所以这些模型可以从每个句子中学习,所以没有必要将所有的句子都存储在记忆中。你可以遍历语料库中的每个句子,让模型从每个句子中学习。这可能就是人们如何训练庞大的语料库,有或没有高计算机器。

在python中有一个简短的例子:

代码语言:javascript
运行
复制
class SentenceIterator(object):
   def __iter__(file_name):
      for line in open(file_name)
         yield line

sentences = SentenceIterator("path/to/file")
for line in sentences:
    model.train(line)

这样,内存一次只加载一个句子,当它完成时,内存加载下一个句子。为了构建词汇表,您可以通过所有文档进行整个迭代,首先构建词汇表,然后根据实现的单词嵌入函数对数据进行训练。

票数 1
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/12109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档