神经网络(RapidMiner工作室核心)
剧情简介
该算子通过反向传播算法(多层感知器)训练的前馈神经网络学习模型。此操作符不能处理多边形属性。描述
该算子通过反向传播算法(多层感知器)训练的前馈神经网络学习模型。接下来的段落将解释关于神经网络、需要前向神经网络、反向传播和多层感知器的基本思想。
人工神经网络(ANN),通常称为神经网络(NN),是受生物神经网络的结构和功能方面启发而建立的数学模型或计算模型。神经网络由一组相互连接的人工神经元组成,它使用连接主义的计算方法处理信息(中心连接主义原理是,精神现象可以用简单且通常一致的单元的相互连接网络来描述)。在大多数情况下,人工神经网络是一个自适应系统,它根据在学习阶段流经网络的外部或内部信息改变其结构。现代神经网络通常用于建模输入和输出之间的复杂关系,或在数据中寻找模式。
前馈神经网络是一种人工神经网络,其中单元之间的连接不形成有向循环。在这个网络中,信息只向一个方向移动,即从输入节点向前移动,通过隐藏节点(如果有的话)到达输出节点。网络中没有循环或循环。
反向传播算法是一种监督学习方法,可分为传播和权值更新两个阶段。重复这两个阶段,直到网络的性能足够好。在反向传播算法中,将输出值与正确答案进行比较,从而计算出某个预定义的误差函数的值。通过各种技术,然后通过网络反馈错误。利用这些信息,算法调整每个连接的权重,以使误差函数的值减少少量。在重复这个过程足够多的训练周期后,网络通常会收敛到某个计算误差很小的状态。在这种情况下,我们可以说网络已经学习了一个特定的目标函数。
多层感知器(MLP)是一种前馈人工神经网络模型,它将一组输入数据映射到一组适当的输出数据。MLP由有向图中的多层节点组成,每一层与下一层完全相连。除输入节点外,每个节点都是一个具有非线性激活函数的神经元(或处理单元)。MLP利用反向传播来训练网络。这类网络由多层计算单元组成,通常以前馈方式相互连接。在许多应用中,这些网络的单元应用sigmoid函数作为激活函数。
在该算子中,通常使用sigmoid函数作为激活函数。因此,属性的值范围应该缩放到-1和+1。这可以通过正常化参数。如果学习数据描述分类任务,则输出节点的类型为sigmoid;如果学习数据描述数值回归任务,则输出节点的类型为线性。
输入
- 训练集(数据表)
输入端口需要一个ExampleSet。它是示例流程中的Retrieve操作符的输出。其他运算符的输出也可以用作输入。
输出
- 模型(改进的神经网络)
神经网络模型从这个输出端口交付。这个模型现在可以应用于不可见的数据集,用于预测标签属性。
- 榜样(数据表)
通过此端口传递作为输入的ExampleSet而不更改为输出。这通常用于在进一步的操作符中重用相同的ExampleSet,或者在结果工作区中查看ExampleSet。
参数
- hidden_layers该参数描述所有隐藏层的名称和大小。用户可以用这个参数来定义神经网络的结构。每个列表条目描述一个新的隐藏层。每个条目都需要隐藏层的名称和大小。层名可以任意选择。它仅用于显示模型。注意,节点的实际数量将比指定为隐藏层大小的值多一个,因为每个层将添加一个额外的常量节点。此节点将不连接到上一层。如果隐藏层大小值设置为-1,则层大小将从输入示例集的属性数量计算出来。在这种情况下,图层大小将被设置为(属性数量+类数量)/ 2 + 1.如果用户没有指定任何隐藏层,默认的隐藏层sigmoid类型和大小等于(属性数量+类数量)/ 2 + 1将被创建并添加到网络中。如果只指定不带节点的单层,则输入节点直接连接到输出节点,不使用隐藏层。范围:
- training_cycles该参数指定用于神经网络训练的训练周期数。在反向传播中,将输出值与正确答案进行比较,以计算某些预定义的错误函数的值。然后通过网络反馈错误。利用这些信息,算法调整每个连接的权重,以使误差函数的值减少少量。这个过程是重复的n的次数。n可以使用此参数指定。范围:整数
- learning_rate这个参数决定了我们在每一步中改变权重的多少。它不应该是0。范围:真正的
- 动力动量只是将先前权重更新的一部分添加到当前权重更新中。这防止了局部极大值,使优化方向更加平滑。范围:真正的
- 衰变这是一个专家参数。它表示在学习过程中是否应该降低学习率。范围:布尔
- 洗牌这是一个专家参数。它指示在学习之前是否应该打乱输入数据。虽然它增加了内存的使用,但如果数据在排序之前,建议使用它。范围:布尔
- 正常化这是一个专家参数。神经网络算子使用一个常用的sigmoid函数作为激活函数。因此,属性的取值范围应该缩放到-1和+1。这可以通过normalize参数来完成。在学习之前进行归一化。虽然它增加了运行时间,但在大多数情况下是必要的。范围:布尔
- error_epsilon如果训练误差低于这个值,优化将停止。范围:真正的
- use_local_random_seed表明如果一个当地的随机种子应用于随机化。范围:布尔
- local_random_seed此参数指定当地的随机种子.只有在使用本地随机种子参数设置为true。范围:整数
教程的过程
神经网络导论
使用Retrieve操作符加载'Ripley'数据集。这里插入一个断点,以便您可以看到应用神经网络运算符之前的数据集。您可以看到这个数据集有两个常规属性,即att1和att2。label属性有两个可能的值,即1或0。然后对其应用神经网络算子。所有参数与默认值一起使用。当您运行流程时,您可以在Results Workspace中看到神经网络。输入中有x+1个节点数量,其中x是输入ExampleSet中的属性数量(不包括标签属性)。最后一个节点是阈值节点。输出中有y个节点,其中y是输入ExampleSet中的类的数量(即label属性的可能值的数量)。 As no value was specified in the hidden layers parameter, the default value is used. Therefore, the number of nodes are created in hidden layer are = size of hidden layer = (number of attributes + number of classes) / 2 + 1 = (2+2)/2+1= 3. The last node (4th node) is a threshold node. The connections between nodes are colored darker if the connection weight is high. You can click on a node in this visualization in order to see the actual weights.
这个简单的过程只提供这个运算符的基本工作。在实际场景中,所有的参数都应该仔细选择。