神经网络性能优化

时间:2017-04-23 12:31:21

标签: machine-learning tensorflow neural-network gradient-descent multilabel-classification

我试图根据报告中提到的症状对医疗报告进行分类。我正在做的步骤是

1)从每份医疗报告中提取症状。

2)创建一组从所有医疗报告中提取的所有症状,到目前为止的总学期是3700。

3)在这些出院摘要中创建一套诊断和提及的所有疾病,到目前为止的总学期为1500.

4)现在,我遍历所有医疗报告,为每个报告及其诊断创建一个热矢量。我有5000个文件。

对于症状,我得到5000 X 3700的矩阵 其中每行代表一个文档,每列显示一个症状。如果文档中存在症状,则列的值为1,否则值为零则症状为

enter image description here

对于诊断,我得到5000 X 1500的矩阵

enter image description here

I am using a backward propagating neural network for training. The network has 3700 input neurons, 1 hidden layer and 1500 output neurons.

此处使用代码http://jrmeyer.github.io/tutorial/2016/02/01/TensorFlow-Tutorial.html来创建分类器。

问题在于无论我训练多少(到目前为止,我已经尝试了25000个时期),我的结果非常糟糕,

对于160多个标签,输出具有最大概率值(1),而我期待5个标签。

我可能做错了什么,或者我该怎么做才能改善结果。

更新:我尝试用最少的数据(100个文档和85000个时期)测试网络。

可能导致问题的一个问题是,从每个文档中,最多提取15到20个术语,因此一个热矢量具有20个1和3680个。有人可以建议这可能是问题吗?

2 个答案:

答案 0 :(得分:1)

没有足够的细节了解您的问题和实施 但一个很好的起点将帮助您了解您是否有更多的技术问题(错误,网络架构等...)或数据问题是创建您知道应该适合您的模型的合成数据(假冒某些疾病,每个有一系列症状)

如果模型没有给出所需的结果,则可能是技术问题。 如果是这样,它更可能是一个数据问题:可能你的数据太嘈杂,或者底层模型更复杂,或者你没有足够的数据。

答案 1 :(得分:0)

以下是您可以尝试的一些事项(尽管这些并不能保证提高性能):

  1. 绘制学习曲线以确定最佳学习率,l2惩罚等。
  2. 生成合成数据
  3. 增加网络深度