MATLAB中基于newff函数创建和使用前馈型神经网络进行正向传播与误差反向传播

更新时间:2024-04-28 16:03:07   人气:1526
在MATLAB环境中,利用内置的`newff()`函数可以高效地构建并应用一种基本且实用的人工神经网络模型——前馈型神经网络。该类型网络通过执行正向传播算法计算输出,并借助反向传播过程优化其权重以减少预测误差。

首先,在MATLAB中创建一个前馈型神经网络的过程始于调用`newff()`函数。此函数的基本语法如下:

matlab

net = newff([input_range output_range], [layer_sizes], {transfer_function}, trainFcn)


其中,

- `input_range`: 定义输入层节点的数据范围。
- `output_range`: 指定期望输出值的区间(对于分类问题可能不需要)。
- `[layer_sizes]`: 代表各隐藏层以及输出层的神经元数目组成的数组,例如:[10,5,3]表示包含两隐含层、分别有10个和5个神经元及拥有3个神经元的输出层的一个三层结构网络。
- `{transfer_function}`: 是一组传递函数句柄列表,用于指定每个隐藏层及其输出层采用何种激活函数,默认通常是`tansig`(tanh)或`purelin`(线性)等。
- `trainFcn`: 训练函数名或者训练参数结构体,如 `'trainscg'` 表示选择 conjugate gradient backpropagation with Polak-Ribiere updates 的学习规则来完成权值更新即误差反向传播的学习步骤。

接下来是训练阶段。用户需准备好已标记好的训练数据集并通过以下方式对新建立的网络进行训练:

matlab

[tset, ttarget] = prepare_training_data(); % 用户自定义获取/处理数据的方法
net.trainParam.showWindow = false; % 非图形化模式运行(可选)
net = train(net, tset', ttarget');


经过上述代码段后,前馈神经网路便开始依据提供的训练样本进行迭代式的学习与调整。在网络内部,每一轮循环都会经历两个关键环节:

**正向传播**: 输入信号从输入层沿着连接向前逐级传输到下一层直至到达输出层,每一层级上的神经元均会运用所设定的激活函数对其进行非线性变换生成新的特征表达。

**误差反向传播(BP)**: 将实际输出结果与目标标签对比产生的损失函数梯度沿原路径逆推回至各个层次的权值矩阵上,进而按照选定的优化策略逐步修正这些权值以便减小总体预测偏差。

最后,一旦训练完毕即可将经验证有效的前馈神经网络应用于未知实例的推理任务:

matlab

testData = get_test_dataset();
predictedOutputs = sim(net,testData');
% 对测试集中的样例逐一做模拟运算得出对应的网络预期响应

总结来说,MATLAB 中的 `newff()` 函数提供了一种便捷的方式来搭建并实施完整的前馈神经网络工作流程,包括初始化设置、训练优化乃至最终的实际功能实现。通过对这一系列操作的理解掌握,研究者能够轻松应对各类回归分析、分类识别等问题挑战,发挥出深度学习的强大潜力。