当前位置: 直线机 >> 直线机资源 >> AI课堂第5讲ML神经网络线性回归
机器学习中有三大问题,分别是回归、分类和聚类。
线性回归属于回归问题,而逻辑回归属于分类问题。
线性模型线性回归和逻辑回归都是单层神经络,且属于机器学习的基础模型,它们涉及到的概念和技术同样适于多数的深度学习模型。
我们以线性回归为例,从数学角度介绍模型的构建求解过程。
任务
我们以工作年龄来预测个人年薪为例子介绍线性回归的基本要素。该任务是通过给定工作年龄预测个人年薪。
模型构建
线性回归模型包括:一元线性回归和多元线性回归;
先以一元线性回归模型为例:函数为f(X)=aX+b+ε,对于损失函数的建立主要使用的是最小二乘法,使用梯度下降法拟合线性模型。
该模型中只含有一个自变量和一个因变量,用来建模的数据集可以表示成{(x1,y1),(x2,y2),……,(xn,yn)}。x表示自变量,y表示因变量,n表示数据集的样本量。
当模型构建好以后,就可以根据其他自变量x的值,预测因变量y的值。
在模型的数学公式f(X)=aX+b+ε中,
a为模型的斜率项,
b为模型的截距项,
ε为模型的误差项
模型中的a和b统称为回归系数,误差项ε的存在主要是为了平衡等号两边的值,通常被称为模型无法解释的部分。
数据关系图在上图中,蓝色圆点是样本(f(X)=aX+b+ε),绿色直线为一元线性拟合函数(f(X)=aX+b)。
上图反映了自变量工龄与因变量薪水之间的散点图,我们期望所有的散点都尽可能地落在直线上,这样我们的模型效果最好,且误差项ε也趋近于0。即当误差项越小,模型拟合越好,问题转换为求解误差项最小值。
由上图可知,误差项是y与ax+b的差,结果可能为正值或负值,因此误差项ε达到最小的问题需转换为误差平方和最小的问题(最小二乘法的思路)。误差平方和的公式可以表示为
上述公式作为我们优化模型的目标函数(损失函数),转变成了二元二次函数求解最小值的问题,可以使用偏导数的方法求解出参数a和b,进而得到目标函数的最小值。
求导过程如下:
Step1:展开平方项
Step2:设偏导数为0
Step3:和公式转换
Step4:化简
Step5:求解a
根据上述推导公式可知,参数a和b的值都是关于x和y的公式。因此,可用根据数据集推导出a和b的结果数值。
上面演示了一个简单线性模型的推理求解过程,实际应用中的模型远比这个要复杂,因此出现了好多机器学习算法包(如sklearn)和深度学习的算法包(pytorch和tensorflow),这些算法包将各种模型封装起来供使用者调用,极大地简化了深度学习的应用难度,因此深度学习应用者常自称“调包侠”。
下面我们分别介绍如何使用PyTorch和TensorFlow实现线性回归模型
首先介绍一下多数深度学习模型训练的基本要素。
我们需要通过数据来寻找特定的模型参数值,使得模型在数据上的误差尽可能小。这个过程叫做模型训练(modeltraining)。下我们介绍模型训练所涉及的三个要素。
1,训练数据
我们通常收集系列的真实数据,例如某个职业的工龄和对应的年薪。我们希望在这个数据上寻找模型参数来最小化模型的预测年薪与真实年薪的误差。在机器学习术语,该数据集被称为训练数据集(trainingdataset)或训练集(trainingset),个人的数据被称为个样本(sample),其年薪叫做标签(label),来预测年薪的因素(工龄)叫做特征(feature)。特征来表征样本的特点。
2,损失函数
用于衡量预测值与真实值之间的误差的函数。通常我们会选取个负数作为误差,且数值越小表误差越小。例如:平函数(上述模型构建中用到的)。
3,优化算法
当模型和损失函数形式较为简单时,可以直接公式求解上的误差最小化问题。这类解叫做解析解(analyticalsolution)。前面模型构建中使用的线性回归和平误差就属于此类。但是,多数深度学习模型并没有解析解,只能通过优化算法有限次迭代模型参数来尽可能降低损失函数的值。这类解叫做数值解(numericalsolution)。
深度学习中常用的优化算法有:SGD、Adam等,其中涉及到的需要人为设置辅助训练的参数(小批量、学习率)称为超参数(hyperparameter)。
Tensorflow代码演示(基于jupyternotebook)
Pytorch代码演示(基于pycharm)
总结,线性回归模型是机器学习的经典模型,同时也是深度学习入门的第一个网络模型!