1.损失函数
损失函数(Loss Function)是用来衡量模型预测结果与真实标签之间差异的函数。在机器学习和深度学习中,损失函数通常用来衡量模型的预测误差,帮助优化算法调整模型参数以使预测结果尽可能接近真实标签。
常见的损失函数包括:
1.均方误差(Mean Squared Error,MSE):计算预测值与真实值之间的平方差,常用于回归问题。
2.交叉熵损失(Cross Entropy Loss):适用于分类问题,特别是多分类问题。
3.对数似然损失(Log Likelihood Loss):常用于逻辑回归等二分类问题。
4.Hinge Loss:用于支持向量机(SVM)等分类任务。
5.KL 散度损失(Kullback-Leibler Divergence Loss):用于衡量两个概率分布之间的差异。
这些是常见的损失函数,选择合适的损失函数取决于所解决的任务类型和模型结构。通过最小化损失函数,可以使模型更好地拟合数据并提高预测准确性。
2.梯度下降算法
梯度下降算法是一种常用的优化算法,用于最小化函数(通常是损失函数)的数值,通过迭代地调整参数以找到函数的局部最小值或全局最小值。在机器学习和深度学习中,梯度下降算法被广泛应用于调整模型参数,使模型能够更好地拟合训练数据。
梯度下降算法的基本思想是沿着函数梯度的反方向更新参数,以降低函数值。具体步骤如下:
1.计算梯度:计算损失函数关于参数的梯度,即损失函数对每个参数的偏导数。
2.更新参数:沿着梯度的反方向更新参数,减小损失函数值。
其中,θ是待优化的参数,α 是学习率(控制参数更新的步长),∇J(θ) 是损失函数关于参数的梯度。(这个涉及到数学计算求偏导,如果大家感兴趣可以去找一下反向传播算梯度相关的帖子和视频学习一下。在实际应用中只要会调用梯度计算的函数,了解梯度下降算法的作用,运用场景。)
3.重复迭代:重复以上步骤直到满足停止条件,例如达到最大迭代次数、损失函数收敛等。
常见的梯度下降算法包括:
1.批量梯度下降(Batch Gradient Descent):在每一轮迭代中使用所有训练样本计算梯度。
2.随机梯度下降(Stochastic Gradient Descent,SGD):在每一轮迭代中随机选择一个样本计算梯度,更新参数。
3.小批量梯度下降(Mini-batch Gradient Descent):结合了批量梯度下降和随机梯度下降的优点,每一轮迭代使用一小部分训练样本计算梯度。
4.动量梯度下降(Momentum Gradient Descent):引入动量项来加速收敛,并减少震荡。
5.AdaGrad:自适应学习率的梯度下降算法,根据参数的历史梯度调整学习率。
6.RMSprop:Root Mean Square Propagation,也是一种自适应学习率的算法,针对 AdaGrad 的学习率衰减问题做出改进。
7.Adam:Adaptive Moment Estimation,结合了动量和自适应学习率的优点,广泛应用于深度学习中。
3.损失函数和梯度下降算法的联系
损失函数用于衡量模型输出与真实标签之间的差异,在模型训练过程中损失函数越小说明模型预测或者分类任务的精确度越高。但是如何让损失函数变小?这需要不断调整更新损失函数中的参数,让参数达到最佳值。梯度优化算法就是起到更新损失函数中的参数的作用。它通过反向传播、计算梯度,可以通过更新损失函数中的参数,让损失函数越来越小,进而让模型的效果越来越好。
4.使用梯度下降优化的节点分类任务的基本步骤:
1.数据准备:准备包含节点信息和标签的数据集。每个节点都有一个特征向量表示,同时有相应的标签(类别)信息。
2.神经网络建模:设计一个适合节点分类任务的神经网络模型。典型的模型如 Graph Convolutional Network (GCN) 或 Graph Neural Network (GNN) 可以用于学习节点表示。
3.前向传播:将节点特征输入神经网络模型中,通过前向传播计算输出结果。输出结果通常是节点的分类预测结果。
4.损失函数:定义一个损失函数(如交叉熵损失),用于衡量模型输出与真实标签之间的差异。
5.梯度计算:通过反向传播计算损失函数对模型参数的梯度。
6.参数更新:根据梯度下降算法,更新模型参数以减小损失函数值。可以使用不同的梯度下降算法,如随机梯度下降(SGD)或 Adam 等。
7.迭代训练:重复进行前向传播、损失计算、反向传播和参数更新的过程,直到模型收敛或达到设定的停止条件。
8.评估模型:使用验证集或测试集评估训练好的模型在节点分类任务上的性能,如准确率、精确度、召回率等指标。