具有非二进制输出的多标签分类

人工智能 神经网络 机器学习 深度学习 分类
2021-11-16 09:03:14

我正在寻找一个可以输出字母序列的数据集(我将其用于肽序列)。由于我有 22 种不同的氨基酸可能性,我需要输出一个包含多个频率不同的氨基酸的向量。例如,输出看起来像 [0,1,3,2,0,2,0,3...](一个 22 长的向量)。

如何训练神经网络输出这种类型的向量?

1个回答

从技术上讲,您并没有真正进行分类您拥有的输出不是标签,它们是真实值。所以我有两个(可能!)解决方案,您必须自己测试它们:

解决方案 1

因为每个输出实际上都是一个数值,所以您可以像标准化所有其他数值一样标准化它们。因此,您为标签选择一个您期望的最大值(您也可以为每个标签执行此操作),然后将实际值除以该值以对其进行规范化。

因此,如果您预计每个肽序列中的相同氨基酸不会超过 10 个,那么您将所有数量除以 10:

0 becomes 0.0
1 becomes 0.1
2 becomes 0.2
3 becomes 0.3
etc.

解决方案 2

这更复杂,但如果你试一试,它肯定会奏效。该解决方案需要循环网络就像LSTM网络适​​用于逐个字符的文本预测一样,它们也适用于您的“肽序列语言”。

该解决方案还允许任意长度的输出序列。

怎么运行的?您有一个具有一个输出 (m/z) 和 22 个输出(单热编码氨基酸)+ 1 个输出的网络,当此输出具有最高值时,它告诉您序列已完成。

您继续输入相同的 m/z 值,直到您的网络告知序列已完成。网络将根据之前的输出在每次激活时输出不同的字母(LSTM 模型具有某种记忆)。

这个解决方案有点难以解释,但如果你提供给我一小段肽序列(不要太长,也不要太多),那么我会为你做一个在线工作示例。


正如所承诺的,我对解决方案 2 进行了简单的实现。但是,我认为无论如何你都应该选择解决方案 1。我没有任何真实数据,所以我的模型基本上是过拟合的,但它基本上可以工作:https ://jsfiddle.net/ovpkL2xx/2/ (可能需要一些时间才能运行)

Neataptic制造