神经网络的输入/输出

3

有人可以向我解释如何处理更复杂的数据集,例如团队统计数据、天气、骰子和复数类型吗?

我理解所有的数学知识以及它们的工作原理,但我不知道如何输入更复杂的数据,并且不知道如何读取输出的数据。

如果有人能提供Python示例,那将是一个很大的帮助。


你在使用哪些工具或库? - dalloliogm
在编程中提供Python示例是毫无意义的,你所表示的输入数据集的方式并不取决于你使用的编程语言,而是取决于你需要神经网络学习什么样的信息。也许你可以在一些大学的神经网络课程书上找到一些好的例子(比如Bishop的“模式识别的神经网络”)? - mic.sca
4个回答

3
您需要将输入和输出编码为可以由神经网络单元表示的内容(例如,如果您的单位范围在[-1,1]内,则对于“x具有某个属性p”,请使用1,“x没有属性p”则使用-1)。
您编码输入和解码输出的方式取决于您想要训练神经网络的内容。
此外,不同任务有许多“神经网络”算法和学习规则(如反向传播、Boltzmann机器、自组织映射)。

2
您的特征必须分解为可以表示为实数的部分。神经网络的神奇之处在于它是一个黑盒子,在训练过程中将进行正确的关联(具有内部权重)。
输入
选择尽可能少的功能来准确描述情况,然后将每个功能分解为一组实值数字。
- 天气:[今天的温度,今天的湿度,昨天的温度,昨天的湿度...] 内部自动关联今天的温度和今天的湿度。 - 团队统计信息:[平均身高,平均体重,最大身高,最高得分...] - 骰子:不确定是否理解这一点,您是指如何编码离散值吗? - 复数:[a,ai,b,bi...]
* 离散值特征很棘手,但仍然可以编码为(0.0,1.0)。问题在于它们不提供要学习的阈值的梯度。
输出
您决定输出的含义,然后以该格式对您的训练示例进行编码。输出值越少,训练就越容易。
- 天气:[明天下雨的机会,明天的温度...] ** - 团队统计信息:[获胜的机会,以20分以上的优势获胜的机会...] - 复数:[x,xi...]
** 在这里,您的训练向量将是:如果第二天下雨,则为1.0;如果没有,则为0.0。
当然,问题能否实际上被神经网络建模是另一个问题。

布尔特征没有梯度问题。反向传播从不根据输入计算梯度(因为它不改变输入)。 - Fred Foo

0

您需要为问题添加输入和输出所需的单位数。如果要近似的未知函数取决于n个参数,则将有n个输入单位。输出单位的数量取决于函数的性质。对于具有n个实参数的实函数,您将有一个输出单位。

有些问题(例如时间序列预测)中,您将为函数的m个连续值拥有m个输出单位。编码很重要,这取决于所选择的算法。例如,在前馈网络的反向传播中,最好将尽可能多的特征转换为离散输入,以用于分类任务。

编码的另一个方面是,您必须根据数据量评估输入和隐藏单元的数量。与数据相关的太多单元可能会由于维度问题而导致近似不佳。在某些情况下,您可以以某种方式聚合一些输入数据以避免该问题,或使用一些降维机制,如PCA。


0

更复杂的数据通常意味着在输入和输出层中添加更多的神经元。

您可以将寄存器的每个“字段”,正确编码为实际值(经过规范化等处理),馈送到每个输入神经元,或者甚至可以进一步分解为位字段,将饱和的输入分配给神经元为1或0...对于输出,则取决于您如何训练神经网络,它将尝试模拟训练集的输出。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接