我根据我获取的维基百科数据构建了一个文章分类器,它来自5个总分类。
他们是:
Finance (15 articles) [1,0,0,0,0]
Sports (15 articles) [0,1,0,0,0]
Politics (15 articles) [0,0,1,0,0]
Science (15 articles) [0,0,0,1,0]
None (15 random articles not pertaining to the others) [0,0,0,0,1]
我去维基百科并从这些类别中抓取了大约15篇相当冗长的文章,以构建我可以用来训练我的网络的语料库。
在构建了从所有文章中收集的大约1000个单词的词典后,我将每篇文章转换为word vector
以及正确的classifier
标签。
单词vector是hot array
,而标签是one hot array
。
例如,以下是一篇文章的表示:
[
[0,0,0,1,0,0,0,1,0,0,... > 1000], [1,0,0,0] # this maps to Finance
]
所以,从本质上讲,我将word vectors
这个随机列表映射到正确的classifiers
。
我的网络是一个3层深度神经网络,每层包含500个节点。我通过网络超过30个时代,然后只显示我的模型到底有多准确。
现在,我的准确率达到了53%到55%。我的问题是,我能做些什么才能将其纳入90年代?它是否可能,或者我是否会疯狂地试图训练这件事?
也许另外,可以说我的主要瓶颈是什么?
根据以下评论进行编辑
神经网络并非真正设计为在单台计算机上运行最佳,如果您拥有集群或至少是生产级计算机,它们的工作效果会更好。消除语料库的“长尾”是很常见的 - 如果一个术语只出现在一个文档中一次,那么你可能想要消除它。您可能还想应用一些词干,以便不捕获同一个词的倍数。我强烈建议您在修剪之前尝试将TFIDF转换应用于您的语料库。
网络规模优化本身就是一个领域。基本上,您尝试添加更多/更少的节点,并查看它的位置。有关技术讨论,请参阅以下内容。 https://stats.stackexchange.com/questions/181/how-to-choose-the-number-of-hidden-layers-and-nodes-in-a-feedforward-neural-netw
答案 0 :(得分:0)
没有看到数据就不可能知道。
要尝试的事情:
将您的单词向量转换为TFIDF。你在删除停用词吗?您可以在单词向量中添加bi-gram / tri-gram。
添加更多文章 - 在如此小的语料库中将它们分开可能很困难。特定文档的长度不一定有帮助,您希望有更多文章。
30个时代对我来说感觉很低。