首先,什么是回归模型?
回归模型就是解决综合定量(定性指标用虚拟变量或者delta函数解决)考虑样本的各个因素情况下,对样本某一个指标的预测(或解释)的问题。
例如: f(汽车的前方多少米有障碍物,周围哪个方位距离多少米有机动车,驾驶员目的地)=方向盘角度。这个模型可以帮助我们确定一个我们所考虑范围内最佳的方向盘角度。
在李宏毅老师的课程中,提出了一个预测pokemon进化后CP值的一个例子,下面我们也借用这个例子对回归进行一个初步的介绍并谈谈我自己的理解。
-
确定问题指标:
在初步解决这个问题时,只选定了进化前的CP值作为我们回归的变量,并没有考虑pokemon的种类、体重、HP值等其他的一些可以定量考虑的变量。完事开头难,一开始研究一个问题可以不用考虑那么多变量,先从简单的变量理解起来可能更加容易,之后,遇到无法解释的回归现象,在进行添加变量,增加模型的维度也不失为一种研究思路。 -
建立回归模型:
在初步解决该问题时,选用了进化前的CP值作为指标,建立了一元线性回归模型:
实际上后面还可以选取其他的一些模型,比如引入二次项、三次项、交叉项等等:
引入高次项的好处是降低平均误差,使得拟合的更精准,但也会出现过拟合的现象(有点类似于插值算法里的龙格现象,插值多项式次数越高,对已有样本点的解释能力越强,而对于未知点的插值效果就会很差)。
而深度学习中,我们不仅希望模型对已有样本点的拟合效果很好,同时也希望对未知点的预测也有个较好的效果,可以把已有样本分为训练(Training)组和测试(Testing)组。
对两个组中样本点都有较好的解释效果,才是我们建立的最优模型:
所以,第三组才是基于我们考虑(只考虑进化前CP值)下的最优模型。 -
损失函数Loss Function的引出:
损失函数是比较模型形式一致但参数不一致的模型对样本点拟合程度的好坏。(损失函数的值越小说明模型越能解释已有样本点,越大说明模型对原有样本点拟合较差。)
通过损失函数,我们可以对回归模型的参数进行估计,进而把一个确定的模型建立起来。 -
梯度下降法Gradient Descent确定参数:
从本人的个人角度而言,我认为在确定参数时的不同方法是计量经济学的线性回归模型与深度学习中的回归模型最大的不同。在计量经济学中,可以通过普通最小二乘法确定回归系数,这是对一个既定的模型计算回归系数的方法,他需要事先从理论上对回归系数与样本指标取值之间的关系式进行推导。
而对于深度学习中的回归模型使用的则是梯度下降法Gradient Descent,来确定w、b。其具体思想是:先确定一个learning rating,并给定一组初始的参数取值,通过对损失函数Loss Function求偏导,进而不断的对参数w、b进行调整,最终确定一个最优的w、b取值,即损失函数取值最小的模型,也就是所建立模型下的模型最优解。 -
梯度下降法要考虑的一个问题:
对于任意的一个函数图像,梯度下降法可能无法找到真正意义上的很有可能最后得到的是局部最优解,而不是全局最优,这里可以通过蒙特卡洛模拟或者模拟退火算法解决(这里不做赘述)。但在线性回归中不需要担心这个问题,因为线性回归的损失函数是一个凸函数。 -
正则化(Regularization):
正则化的引入是直接在损失函数Loss Funcion后面加了一项:
实际上,加的这一项是为了是模型更加平滑,不会对某一个变量的变化特别敏感。这是因为,不管任何可以定量测量确定的数据,都会存在一定的扰动(残差),这样以来,当模型中某一个变量出现一些扰动时,不会对模型结果造成太大影响。
另外,这里的lambda是权重的含义,就有点像多目标规划中的问题,这里也可以看作一个多目标规划,lambda越小,表明研究者越重视对原本数据的解释;lambda越大,表明研究者越重视模型的光滑度(受扰动项影响程度)。
-
梯度下降法改进1:调整模型Learning Rate、 Adagrad模型引出
由于,参数调整的步长不仅取决于损失函数对参数的导数,也取决于Learning Rate的取值,所以Learning Rate的取值大小将直接决定了能否通过不断迭代的方式得到最优解。
有点类似于模拟退火算法中的取法(随着时间的增加,搜寻范围减小):
之后,引出了更有理论背景的Adagrad模型:
Adagard模型理论说明:
还记得,前文所提到的线性回归模型中的损失函数是凸函数的形式,所以我们考虑,如果损失函数对某一个参数的导数的绝对值越大,说明离最优解越远,所以最佳移动距离就相对来说较大,一阶导数值绝对值越小说明,最佳移动距离就越近。基于这点考虑,我们认为,模型的Learning Rate应该和导数的绝对值呈正比:
但,当有两个不同指标进行比较时,这个问题就不一定了,因为不同指标的凹凸程度也不相同:
如上图,c的斜率的绝对值比a大,然而,它离最优解的距离比a离最优解的距离还要小,说明还和曲线的凹凸程度有关(二阶导数),所以在定义最优的Learning Rate时,加入了二阶导数的考。就算是加入了二阶导数的考虑,与这里所提到的Adagrad模型有什么联系呢?
就是利用一阶导数估计二阶导数的联系:
以上就是李宏毅老师对Adagard模型的讲解,但我还是不太能接受这种观点,可能还没有理解透彻。(小声bb) -
梯度下降法改进2:Stochastic Gradient Descent:
这种算法会比普通的梯度下降法更快的确定模型的最优回归系数解:
-
梯度下降法改进3:Feature Scaling
我认为,李宏毅老师这里讲到的Feature Scaling实际上是一个指标标准化的过程,为了消去量纲的影响。
-
个人对深度学习回归模型的理解:
深度学习中的模型是一种预测型的回归模型,并不是解释型的回归,它对拟合优度是有要求的,将样本点随机分为训练组和测试组,使得通过训练组得出的模型对测试组样本点有较好的拟合效果。深度学习中的回归模型与计量经济学中的多元线性回归模型求解方法不同,后者多使用的是OLS(普通最小二乘法)或者是含有标准误的最小二乘法对回归系数进行估计,还要进行显著性检验,而前者使用的是梯度下降法来确定模型最优解。由于求解的方便性,深度学习回归模型可以通过不断地修改模型,调整参数,找到一个最优的预测模型。