神经网络 Matlab 中的字符串输入

String input in Neural Network Matlab

我正在尝试使用 Matlab 中的神经网络来预测所生产的批次是否会通过某些测试。为此,我有输入变量(温度、使用的着色剂千克数、material 等)和输出,一个告诉我效果如何的数值。首先,我想训练网络,然后用它来预测新批次的结果。

当我需要输入批次的 material、颜色等时,问题就出现了,因为它们是字符串,它们必须保持原样,换句话说,它们是组而不是连续值。 我读到可以将单词更改为它们的数字表示,但它会根据数字的接近程度给出一个顺序,这并不代表单词在现实生活中的相关程度。例如,用棉花制成的批次比用丝绸制成的批次好,我想在神经网络中进行观察。

是否可以让字符串一个字符串,或者让组分开?

首先要注意的是,在这种情况下,您不应该将组映射到连续数字,即不是(1=丝绸,2=棉花等)。这里选择的方法是一个热包特征,(即 1 0 0 - 丝绸,0 1 0 - 棉花 0 0 1 - 一些其他 material) - 所以你有一个二元特征对于每个可能的值material。这样,输入就不会暗示组值之间存在某种任意联系。

你也可以尝试,在这样做之后,在每组输入的顶部放置一个额外的隐藏层,同时从这一层断开其他特征的输入。如果您有足够的训练示例,此类中间隐藏层可以学习更好的表示,其中相似的组成员彼此接近。这在引入反向传播本身的 now classical work 中得到了证明。这可能会或可能不会比完全连接的网络更好,具体取决于您的数据和任务细节。

以类似的方式,可以学习向量 space 中单词的数字表示,因此语义相似的单词被映射到彼此接近的向量(通过欧几里得或其他度量),但这对您的情况不太可能有帮助,因为一般语义相似性并不反映测试批次的统一性,但对其他任务可能有用。

终于有一种方法可以将字符串输入到 NN 中(这对你的情况也没有用,但既然你问的是字符串,我为了完整性而提到它)。这是通过使用单热表示(如上所述)对字符进行编码来完成的,主要用于文本处理任务。