我刚开始学习机器学习和人工智能,最近开始接触神经网络。
我在stackoverflow上已经获取了一些信息,但目前我还无法理解从这些信息中得出的逻辑。
假设我们有4个名义值(但不是顺序的)[A, B, C, D]和2个已经标准化的数值[0.35, 0.55] – 因此有2个输入神经元,一个用于名义值,一个用于数值。我在神经网络文献中看到的通常是需要使用4个输入神经元进行编码。但我并不需要预测这些名义值。我只有一个输出神经元,它最多表示一种关系,就像我使用专家系统和规则时那样。
如果我将它们标准化为[0.2, 0.4, 0.6, 0.8],神经网络难道不能区分它们吗?对于神经网络来说,这只是一个数字,不是吗?
我的 naive 思路和想法如下:
A 与 0.35 的数值导致理想的 1。B 与 0.55 的数值导致理想的 0。C 与 0.35 的数值导致理想的 0。D 与 0.55 的数值导致理想的 1。
我的这种思考方式是否有误?
补充信息(编辑):这些名义值被包含在决策过程中(通过与数值结合使用统计工具来衡量其重要性),取决于它们是真是假。我知道它们可以二进制编码,但名义值的列表稍微大一些。
另一个例子:
症状 A 与血液测试 1 导致诊断 X(理想情况)症状 B 与血液测试 1 导致诊断 Y(理想情况)
实际上使用了专家系统。症状是名义值,但结合血液测试值可以得到诊断。最终的主要问题是:我必须以二进制方式编码症状,还是可以用数字替换症状?如果不能用数字替换,为什么在使用神经网络时二进制表示是唯一的方式?
回答:
输入
理论上,如何编码你的输入并不重要。只要不同的样本在输入空间中被表示为不同的点,就有可能用一条线将它们分开——这就是输入层(如果是线性的)所做的——它线性地组合输入。然而,数据在输入空间中的布局方式对学习过程中的收敛时间有巨大影响。一个简单的方式来理解这一点是:想象一组线在二维空间中穿过原点。如果你的数据散布在原点周围,那么这些线中的一些可能会将数据分成几部分,并且只需要很少的“移动”,特别是如果数据是线性可分的。另一方面,如果你的输入数据密集且远离原点,那么大多数初始的输入区分线甚至不会“触及”数据。因此,需要大量的权重更新才能到达数据,并且需要大量的精确步骤来将其“切割”成初始类别。
输出
如果你有类别,那么以二进制方式编码它们是相当重要的。想象一下,你有三个类别:A
、B
和 C
。如果你用三个神经元将它们编码为 1;0;0
、0;1;0
和 0;0;1
,那么在学习过程中以及后来处理噪声数据时,网络在“拿不准”的点可能会在输出层上显示为 0.5;0.0;0.5
。这有意义,如果它真的是概念上介于 A
和 C
之间,但肯定不是 B
。如果你选择一个输出神经元并将 A
、B
和 C
编码为 1
、2
和 3
,那么在相同的情况下,网络会给出 1
和 3
之间的平均值输入,这会给你 2
!所以答案会是“肯定是 B
”——显然是错误的!