我有一个训练集,其中输入矢量是速度,加速度和转角变化。输出是一个清晰的类 - 来自给定集合{rest,walk,run}的活动状态。例如,对于输入向量[3.1 1.2 2] - >运行; [2.1 1 1] - >步行等。
我正在使用weka开发神经网络模型。我定义的输出是清晰的(或者更确切地说是单词中的定性值 - 分类值)。在训练模型之后,模型可以对测试数据进行公平分类。
我想知道内部流程(映射功能)是如何发生的?定性输出状态是否在模型中获得一些标称值,并且在处理之后它又被转换为分类数据?因为NN模型不能通过隐藏的神经元将浮点输入值映射到分类数据,所以实际发生了什么,尽管模型工作正常。
如果模型将分类输出转换为名义输出然后开始处理,那么它在什么基础上将分类值转换为某些任意数值?
答案 0 :(得分:0)
神经网络的计算都是在连续值上进行的。要使用离散输出进行多类分类,其最后一层会生成这样的值的向量,每个类对应一个值。要进行离散类预测,请获取该向量中最大元素的索引。
因此,如果四个类的分类网络中的最后一层预测[0 -1 2 1],则向量的第三个元素是最大的,第三个类被选中。通常,这些值也被约束为通过softmax激活函数形成概率分布。
答案 1 :(得分:0)
是的,分类值通常会转换为数字,网络会学习将输入数据与这些数字相关联。然而,这些数字通常被进一步编码,而不是仅使用单个输出神经元。对于无序标签,最常见的方法是添加专用于每个类别的虚拟输出神经元,并使用1-of-C编码,0.1
和0.9
作为目标值。使用Winner-take-all范例解释输出。
对于无序标签,仅使用一个神经元和编码具有不同数字的类别通常会导致问题 - 因为网络将中间类别视为边界类别的“平均值”。但是,如果您有订购的分类数据,则有时可能需要这样做。
您可以在线Neural Network FAQ的这一部分找到关于此问题的非常好的解释。