BP神经网络中MAE含义及实现步骤

1. 整体流程

下面是实现BP神经网络中MAE(Mean Absolute Error)的步骤表格:

步骤 描述
1 准备数据集
2 初始化网络参数
3 前向传播
4 计算损失函数
5 反向传播
6 更新参数
7 重复3-6直到收敛

在下面的文章中,我将详细介绍每个步骤的具体内容,并给出相应的代码。

2. 准备数据集

首先,我们需要准备一个数据集作为模型的训练数据。数据集应该包含输入特征和对应的目标输出。可以使用NumPy数组或Pandas数据框来表示数据集。

3. 初始化网络参数

在神经网络中,我们需要初始化网络的权重和偏差。通常,我们可以使用随机数来初始化权重和偏差。以下是一个示例代码,用于初始化一个具有3个输入特征和2个隐藏单元的网络:

import numpy as np

def initialize_parameters(input_shape, hidden_units):
    np.random.seed(0)
    W1 = np.random.randn(hidden_units, input_shape) * 0.01
    b1 = np.zeros((hidden_units, 1))
    parameters = {"W1": W1, "b1": b1}
    return parameters

上述代码中,input_shape表示输入特征的维度,hidden_units表示隐藏单元的数量。W1是一个形状为(hidden_units, input_shape)的权重矩阵,b1是一个形状为(hidden_units, 1)的偏差向量。

4. 前向传播

在前向传播步骤中,我们将输入特征通过网络进行计算,得到模型的预测输出。以下是一个示例代码,用于执行前向传播:

def forward_propagation(X, parameters):
    W1 = parameters["W1"]
    b1 = parameters["b1"]
    Z1 = np.dot(W1, X) + b1
    A1 = np.tanh(Z1)
    return A1

上述代码中,X是输入特征的矩阵,A1是前向传播的输出。

5. 计算损失函数

损失函数用于衡量模型预测输出与目标输出之间的差距。在MAE中,我们使用绝对值误差来计算损失。以下是一个示例代码,用于计算MAE损失:

def compute_loss(A1, Y):
    m = Y.shape[1]
    loss = np.sum(np.abs(A1 - Y)) / m
    return loss

上述代码中,A1是前向传播的输出,Y是目标输出的矩阵。

6. 反向传播

在反向传播步骤中,我们根据损失函数的导数来调整网络的参数,以减小损失。以下是一个示例代码,用于执行反向传播:

def backward_propagation(X, Y, A1, parameters):
    m = Y.shape[1]
    dZ1 = np.sign(A1 - Y)
    dW1 = np.dot(dZ1, X.T) / m
    db1 = np.sum(dZ1, axis=1, keepdims=True) / m
    gradients = {"dW1": dW1, "db1": db1}
    return gradients

上述代码中,dW1是权重矩阵W1的梯度,db1是偏差向量b1的梯度。

7. 更新参数

在更新参数步骤中,我们使用梯度下降算法来更新网络的参数。以下是一个示例代码,用于更新参数:

def update_parameters(parameters, gradients, learning_rate):
    W1 = parameters["W1"]
    b1 = parameters["b1"]
    dW1 = gradients["dW1"]
    db1 = gradients["db1"]
    W1 = W1 - learning_rate * dW1