如何确定我的神经网络工作中的线性可分性?

人工智能 神经网络
2021-11-10 04:11:28

我将设计一个神经网络,它将能够将 5 个字母(字符)的单词分解成相应的音节(混合音节,我的意思是它不会严格遵守语法音节规则,而是基于我提供的一些训练集)。

示例:火车 -> 火车

我想用一些前馈网络来实现它,如下所示:

输入层 -> 隐藏层 -> 输出层

将有 5 个小数形式的输入节点(1/26 = 0.038 for 'A' ; 2/26 = 0.076 for 'B' ......)

输出层由 4 个节点组成,对应于单词中两个字符之间的每个间隙。

并触发如下:

对于“火车”(TRA-IN):输入(0.769,0.692,0.038,0.346,0.538) 输出(0,0,1,0)

对于“ BORIC”(BO-RI-C):**输入.... 输出(0,1,0,1)

是否有可能以我正在做的方式实现神经网络?

如果可能的话,那么我将如何确定每层中隐藏层和节点的数量?

(在我正在阅读的书中,给出了 XOR 门问题及其使用隐藏层的实现。在 XOR 中,我们可以通过使用两条线查看 XOR 的线性可分离性来决定所需的节点和隐藏层的数量。但在这里我认为这样的分析不能制造。

那我该怎么办??或者这是一个反复试验的过程?)

1个回答

我强烈建议对如何将字母呈现给模型进行不同的建模。虽然对于卷积或递归神经网络来说问题可能更自然,但尝试在前馈网络上运行它是没有问题的。但是,您将字母作为输入的方式对于网络来说会非常混乱,并且会使学习变得非常困难。我建议对字母使用一种热编码,甚至是二进制编码。如果这不仅仅是为了玩耍,我会尝试添加一些信息(单独编码字母是否在“aeiou”中)。

至于隐藏层,试着玩一下。两种系统化的方法是从非常简单的开始让模型变得更复杂,或者从复杂的开始让你的模型更简单(或者只是标准化很多)。在训练期间查看训练集和单独验证集的性能。如果模型在训练数据上不断改进,但在验证数据上开始恶化,那么您可能过度拟合。在这种情况下,您应该使模型更简单(更少的节点,更少的层)或正则化(从权重的 l2 归一化开始)。如果数据在训练数据上表现不佳,您可能希望使模型更复杂。

一旦你尝试了前馈网络,就真的要尝试使用 CNN 或 RNN 来完成这项任务。