这些天在写前几个月学习的三维重建方面的知识的同时,也开始学习着目前比较火的深度学习。学习这个不是跟着潮流,总是在想读研到底学到了什么。
我想也就是个自学能力吧。其实感觉自己反而有点不自信了,本科毕业什么都不担心,可是现在担心的越来越多,人也慢慢变得浮躁起来,嗨,不多说了,写一写这两天学到的东西,唯有写点东西才感觉心里上的踏实。
主要参考吴恩达cs229课程
作者给出问题的引入是房价的问题,房价跟面积有关
然后将这些数据在下面坐标系中列出所有的点。
然后给出问题,就是如果我们来了一个新的面积,而面前已有的数据中没有,那我们该怎么办。
首先我们想到的我们用一个曲线去拟合这些点,得到了曲线的方程,这样自然就可以解出来。
下面之前我们先给出一些概念。
则我们给出一个学习过程
好,下面言归正传,给个说明就是
如果y的值是连续的,这就是一个回归问题,如果y的值是离散的,这就是一个分类问题。那下面开始学习线性回归。
对于上述问题,房价不仅仅跟面积有关还跟很多其他的因素有关,比如卧室的个数。如下图:
可能房价还与朝向等等其他特征有关
我们用X1,X2..Xn 去描述特征里面的分量,比如x1=房间的面积,x2=卧室的个数等等,我们可以给出y的一个估计函数:
θ这系数也就是权限,就是这个特征的份量。
我们令X0=0,则我们就可以把上述公式写成
也就是转换到向量中处理
那我们的目标也就是求出这些θ。
我们采用假设法,先假设θ已经得出,那我们就要考虑给出的θ到底好不好呢,怎么衡量呢
我们采用下面的式子:
这个函数一般称为损失函数或者错误函数,主要来描述我们估计的函数h到底好不好。
对于上述式子中的1/2主要是为了求导用,假设有m个训练数据,y为真实值,h为估计值
那我们的目标就是求:
在上述最小的情况下θ的值。最好的情况也就是为0,也就是每个y跟h一样,但一般达不到。那这个怎么解呢?
首先作者给出的是梯度下降法。
我们对于上述问题可以换个思路,求在情况下的θ,也就是要选择一个θ是J(θ)最小,那怎么处理呢。
我们先给出θ的一个初始值,然后改变θ的值,使J(θ)沿梯度下降方向进行减小,即:
为什么可以写成单独一个,因为标量y对列向量X求导:
对N×1向量求导后还是N×1向量 y = f(x1,x2,..,xn) --> dy/dX = (Dy/Dx1,Dy/Dx2,..,Dy/Dxn)'
对于上式我们要求的也就是J(θ)的偏导数,下面我们假设训练数据只有一个,则可以得到:
则对于单一的训练数据有:
对于上述的迭代更新的方式有两种,批梯度下降,增量梯度下降。
批量梯度下降,就是对所有的训练数据都计算完之后在对θ更新,即
i是训练数据,j是维度,不要搞混了。
另外一种是增量梯度下降,就是每训练一个数据就对θ进行更新,如下: