Machine Learning Practical 爱宝课程记录week1

训练集、验证集、测试集

机器学习简单流程:

  1. 使用大量和任务相关的数据集来训练模型;

  2. 通过模型在数据集上的误差不断迭代训练模型,得到对数据集拟合合理的模型;

  3. 将训练好调整好的模型应用到真实的场景中;

我们最终的目的是将训练好的模型部署到真实的环境中,希望训练好的模型能够在真实的数据上得到好的预测效果,换句话说就是希望模型在真实数据上预测的结果误差越小越好。我们把模型在真实环境中的误差叫做泛化误差*最终的目的是希望训练好的模型泛化误差越低越好*

★训练集:用于训练模型的训练参数。

★测试集用于检验已经训练好的最终模型的泛化性能(特别注意:经过测试集后,模型参数就不能再动了)

★验证集用于检验模型的性能(这点和测试集相同),但可以根据检验结果反过来调整模型参数,主要是超参数(这点和测试集不同)

验证集是训练集和测试集之间的一个中间件。根据前面的定义,我们发现了一个问题,如果只有训练集和测试集,是无法在测试集之前对模型进行评价的。实际上我们更希望在最终模型确定之前,可以先对模型进行一定的评价,然后根据评价结果调整模型参数(特别是超参数)后重新训练,直到我们认为模型已经不错了,最后再用测试集进行测试,测试就只为了查看模型的近似泛化性能,不再继续更新模型参数。正是为了这个目的,才划分出了一个验证集。可见,验证集一定程度上还是训练集,因为会根据验证集的结果调整模型参数。

单层神经网络

1958年,计算科学家Rosenblatt提出了由两层神经元组成的神经网络。他给它起了一个名字–“感知器”(Perceptron),也可翻译为感知机。

  • 输入层 输入层里的“输入单元”只负责传输数据,不做计算。

  • 输出层 输出层里的“输出单元”则需要对前面一层的输入进行计算。

把需要计算的层次称之为“计算层”,并把拥有一个计算层的网络称之为“单层神经网络”。有一些文献会按照网络拥有的层数来命名,例如把“感知器”称为两层神经网络。

什么是线性回归?简单举个例子,给定一个直线方程 y = k x + b 和位于该直线上的两点(x1,y1)、 (x2,y2) 。问x=x3时,y = y 3 = ? 根据中学知识,先利用已知两点求解直线方程参数k 、b ,再利用求得的直线方程求y3值。该求解过程就是一个简单的线性回归问题。 我们的现实生活中,有很多问题都可以看作是线性回归问题,如:预测房屋价格、气温、销售额等连续值问题。在深度学习中,一般会提供大量的数据,用于估计线性模型,最后根据模型完成回归任务。

线性回归模型实际是一个单输出的单层神经网络。

训练集一共N个,每一条数据是(x,t)x代表数据本身,t为x的标签,t要是只有两种就是二分类任务,否则就是多分类。右上角的n代表是第几个数据。

训练误差,每一条数据都会有一个属于自己的误差,每个人把自己的误差加起来,最后在平均就是总体的平均误差。n代表第几条数据,N代表数据总数。

最后的目的就是要利用梯度下降来缩小总体的损失函数。

在每一步的迭代计算过程中,我们首先要计算预测值(这一步也称为 Forward pass),然后计算预测值与真实值之间的损失函数loss。我们采用梯度下降来更新我们的预测参数 w 和 b ,以便在下一次迭代计算中减小损失函数。这一过程是反向的(Backprop),在此,我们要手动计算损失函数,求出对应参数的梯度,以此来更新权重 w 和偏置 b 。具体的计算过程如下:

 

损失函数一般都加一个二分之一,目的是方便求导,根据链式法则来调整w取值。

week1大部分以课程介绍为主,有问题请留言,后续会持续发布更新

猜你喜欢

转载自blog.csdn.net/qq_58278472/article/details/127166724