pytorch实现
构建一个简单的分类任务,并构建训练集、验证集和测试集。
本任务的数据来自带噪音的两个弯月形状函数,每个弯月对一个类别。我们采集1000条样本,每个样本包含2个特征。
随机采集1000个样本,并进行可视化。
将1000条样本数据拆分成训练集、验证集和测试集,其中训练集640条、验证集160条、测试集200条。
问题1:Logistic回归在不同的书籍中,有许多其他的称呼,具体有哪些?你认为哪个称呼最好?
问题2:什么是激活函数?为什么要用激活函数?常见激活函数有哪些?
交叉熵损失函数
不同于线性回归中直接使用最小二乘法即可进行模型参数的求解,Logistic回归需要使用优化算法对模型参数进行有限次地迭代来获取更优的模型,从而尽可能地降低风险函数的值。
在机器学习任务中,最简单、常用的优化算法是梯度下降法。
使用梯度下降法进行模型优化,首先需要初始化参数W和 b,然后不断地计算它们的梯度,并沿梯度的反方向更新参数。
在分类任务中,通常使用准确率(Accuracy)作为评价指标。
基于RunnerV1,本章的RunnerV2类在训练过程中使用梯度下降法进行网络优化,模型训练过程中计算在训练集和验证集上的损失及评估指标并打印,训练过程中保存最优模型。
Logistic回归模型的训练,使用交叉熵损失函数和梯度下降法进行优化。
使用训练集和验证集进行模型训练,共训练 500个epoch,每隔50个epoch打印出训练集上的指标。
使用测试集对训练完成后的最终模型进行评价,观察模型在测试集上的准确率和loss数据。
Logistic回归可以有效地解决二分类问题。
但在分类任务中,还有一类多分类问题,即类别数C大于2 的分类问题。
Softmax回归就是Logistic回归在多分类问题上的推广。
数据来自3个不同的簇,每个簇对一个类别。我们采集1000条样本,每个样本包含2个特征。
思考题:Logistic函数是激活函数。Softmax函数是激活函数么?谈谈你的看法。
使用3.1.4.2中实现的梯度下降法进行参数更新
实例化RunnerV2类,并传入训练配置。使用训练集和验证集进行模型训练,共训练500个epoch。每隔50个epoch打印训练集上的指标。
使用测试集对训练完成后的最终模型进行评价,观察模型在测试集上的准确率。
步骤:数据处理、模型构建、损失函数定义、优化器构建、模型训练、模型评价和模型预测等,
(说明:使用深度学习进行实践时的操作流程基本一致,后文不再赘述。)
主要配置:
为了加深对机器学习模型的理解,请自己动手完成以下实验:
ref:
NNDL 实验3(上) - HBU_DAVID - 博客园 (cnblogs.com)
NNDL 实验3(下) - HBU_DAVID - 博客园 (cnblogs.com)