我正在尝试训练一个神经网络,用于一个可以被认为是一个宏观层面的邮政网络的系统。我的输入是两个位置(美国的50个州中的一个)以及1到3个其他变量,我想要一个数字结果。
我最初的想法是将这些州表示为0-49之间的数字值,然后创建一个只有3个左右输入的网络。然而,我发现我的训练永远不会收敛到一个有用的值。我假设这是因为这些州的值完全是任意的 – MA的39这个值与CA的38这个值没有任何关系,尤其是当37代表跳回到CT的时候。
有没有更好的方法来做到这一点?我是否应该创建一个具有超过100个输入的网络,用布尔值表示起始州和目标州?
回答:
我认为你关于将不同州表示为连续整数的困难的想法是正确的 —— 这种表示将大量信息压缩到每个输入中。这意味着你的网络可能需要学习很多关于如何将这些信息解码成对解决你的问题真正有用的事实。
每个州一个输入,使用布尔输入,可能会有所帮助。这将使网络更容易弄清楚你在谈论哪两个州。当然,这种方法不一定使网络容易学习有用的事实,比如哪些州彼此相邻。
尝试确定是否存在一些信息,既便于你提供,又能使学习更容易,这可能会很有用。例如,如果这些州的物理布局对于解决你的问题很重要(即CT与NY相邻,NY与PA相邻),那么你可以将该国划分为多个区域(例如,西北、东南、中西部),并为每个区域提供布尔输入。
将几个这样的输入方案输入到单个网络中,可以让你使用(可能)更有用的表示方式来指定单个州:例如,你不会说“它是第39号州”,你可以说(例如)“它是位于东部区域,接触超过五个邻近州的最北端的州”。
如果网络发现确定两个州是否彼此靠近很有用,那么这种表示方式可能会使学习更快一些 —— 网络可以通过简单地比较这两个州的“区域”输入来大致了解两个州是否靠近。检查两个区域输入是否相等要比记住第39号州靠近第38、21、7和42号州的事实容易得多。