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