线性回归

数学来了

假设\theta _{1}是年龄的参数, \theta _{2}是工资的参数

拟合的平面: h_{\theta }\left ( x \right )=\theta _{0}+\theta _{1}x_{1}+\theta _{2}x_{2}\theta _{0}是偏置项)
整合:h_{\theta }\left ( x \right )=\sum _{i=1}^{n}\theta _{i}x_{i}=\theta ^{T}x

误差

真实值和预测值之间肯定是要存在差异的 (用\varepsilon来表示该误差)

对于每个样本:y^{i}=\theta ^{T}x^{(i)}+\varepsilon ^{(i)}

误差\varepsilon ^{(i)}是独立并且具有相同的分布, 并且服从均值为0方差为\theta ^{2}的高斯分布

独立:张三和李四一起来贷款,他俩没关系

同分布:他俩都来得是我们假定的这家银行

高斯分布:银行可能会多给,也可能会少给,但是绝大多数情况下 这个浮动不会太大,极小情况下浮动会比较大,符合正常情况

预测值与误差:y^{i}=\theta ^{T}x^{(i)}+\varepsilon ^{(i)}          (1)

由于误差服从高斯分布:p(\epsilon ^{(i)})=\tfrac{1}{\sqrt{2\pi \sigma }}exp\left ( -\tfrac{(\epsilon ^{(i)})^{2}}{2\sigma ^{2}} \right )          (2)

将(1)式带入(2)式:p(y^{(i)}|x^{(i)};\theta )=\tfrac{1}{\sqrt{2\pi \sigma }}exp\left ( -\tfrac{(y^{(i)}-\theta ^{T}x^{(i)})^{2}}{2\sigma ^{2}} \right )

似然函数:

L(\theta )=\prod _{i=1}^{m}p(y^{(i)}|x^{(i)};\theta )=\prod _{i=1}^{m}\tfrac{1}{\sqrt{2\pi \sigma }}exp\left ( -\tfrac{(y^{(i)}-\theta ^{T}x^{(i)})^{2}}{2\sigma ^{2}} \right )

解释:什么样的参数跟我们的数据组合后恰好是真实值

对数似然:

log L(\theta )=log\prod _{i=1}^{m}\tfrac{1}{\sqrt{2\pi \sigma }}exp\left ( -\tfrac{(y^{(i)}-\theta ^{T}x^{(i)})^{2}}{2\sigma ^{2}} \right )

解释:乘法难解,加法就容易了,对数里面乘法可以转换成加法

展开化简:\sum _{i=1}^{m}log\tfrac{1}{\sqrt{2\pi \sigma }}exp\left ( -\tfrac{(y^{(i)}-\theta ^{T}x^{(i)})^{2}}{2\sigma ^{2}} \right )=m log\tfrac{1}{\sqrt{2m\sigma }}-\tfrac{1}{\sigma ^{2}}\cdot \tfrac{1}{2}\sum _{i=1}^{m}(y^{(i)}-\theta ^{T}x^{(i)})^{2}

目标:让似然函数(对数变换后也一样)越大越好。也就是J(\theta )=\tfrac{1}{2}\sum _{i=1}^{m}(y^{(i)}-\theta ^{T}x^{(i)})^{2}(最小二乘法)越小越好

目标函数:J(\theta )=\tfrac{1}{2}\sum _{i=1}^{m}(h_{\theta }(x^{(i)})-y^{*i})^{2}=\tfrac{1}{2}(X\theta -y)^{T}(X\theta -y)

求偏导过程:

\bigtriangledown _{\theta }J(\theta )=\bigtriangledown _{\theta }\left [ \tfrac{1}{2} (X\theta -y)^{T}(X\theta -y) \right ]=\bigtriangledown _{\theta }\left [ \tfrac{1}{2} (X^{T}\theta^{T} -y^{T})(X\theta -y) \right ]

              =\bigtriangledown _{\theta }\left [ \tfrac{1}{2}(\theta ^{T}X^{T}X\theta -\theta ^{T}X^{\theta }y-y^{T}X\theta +y^{T}y) \right ]

              =\tfrac{1}{2}(2X^{T}X\theta -X^{T}y-X^{T}y-(y^{T}X)^{T})

              =X^{T}X\theta -X^{T}y

令偏导数等于0:\theta =(X^{T}X)^{-1}X^{T}y

梯度下降算法

引入:当我们得到了一个目标函数后,如何进行求解? 直接求解?(并不一定可解,线性回归可以当做是一个特例)

常规套路:机器学习的套路就是我交给机器一堆数据,然后告诉它 什么样的学习方式是对的(目标函数),然后让它朝着这个方向去做

如何优化:一口吃不成个胖子,我们要静悄悄的一步步的完成迭代 (每次优化一点点,累积起来就是个大成绩了)

目标函数:J(\theta _{0},\theta _{1})=\tfrac{1}{2m}\sum _{i=1}^{m}(h_{\theta }(x^{(i)})-y^{(i)})^{2}

寻找山谷的最低点,也就是我们的目标函数终点 (什么样的参数能使得目标函数达到极值点)

沿着方向导数(梯度)下降最快的方向即为山谷方向

下山分几步走呢?(更新参数)

  1. 找到当前最合适的方向
  2. 走那么一小步,走快了该”跌倒 ”了
  3. 按照方向与步伐去更新我们的参数

批量梯度下降(Batch Gradient Descent,BGD)

批量梯度下降法是最原始的形式,它是指在每一次迭代时使用所有样本来进行梯度的更新。从数学上理解如下:

对目标函数求偏导:

\tfrac{\Delta J(\theta )}{\Delta \theta _{j}}=\tfrac{1}{m}\sum _{i=1}^{m}(h_{\theta }(x^{(i)})-y^{(i)})x_{j}^{(i)}

其中i=1,2,...,m表示样本数,偏置项x_{0}^{(i)}=1

每次迭代对参数进行更新:

\theta _{j}=\theta _{j}-\alpha\tfrac{1}{m}\sum _{i=1}^{m}(h_{\theta }(x^{(i)})-y^{(i)})x_{j}^{(i)}

优缺点:容易得到最优解,但是由于每次考虑所有样本,速度很慢

优点:

  1. 一次迭代是对所有样本进行计算,此时利用矩阵进行操作,实现了并行。
  2. 由全数据集确定的方向能够更好地代表样本总体,从而更准确地朝向极值所在的方向。当目标函数为凸函数时,BGD一定能够得到全局最优。

缺点:

  1. 当样本数目 m 很大时,每迭代一步都需要对所有样本计算,训练过程会很慢。
  2. 从迭代的次数上来看,BGD迭代的次数相对较少

随机梯度下降(Stochastic Gradient Descent,SGD)

随机梯度下降法不同于批量梯度下降,随机梯度下降是每次迭代使用一个样本来对参数进行更新。使得训练速度加快。

对于一个样本的目标函数为:

J^{(i)}(\theta )=\tfrac{1}{2}(h_{\theta }(x^{(i)})-y^{(i)})^{2}

对目标函数求偏导:

\tfrac{\Delta J^{(i)}(\theta )}{\Delta \theta _{j}}=(h_{\theta }(x^{(i)})-y^{(i)})x_{j}^{(i)}

参数更新:

\theta _{j}=\theta _{j}-\alpha(h_{\theta }(x^{(i)})-y^{(i)})x_{j}^{(i)}

优点:

  1. 由于不是在全部训练数据上的损失函数,而是在每轮迭代中,随机优化某一条训练数据上的损失函数,这样每一轮参数的更新速度大大加快。

缺点:

  1. 准确度下降。由于即使在目标函数为强凸函数的情况下,SGD仍旧无法做到线性收敛。
  2. 可能会收敛到局部最优,由于单个样本并不能代表全体样本的趋势。
  3. 不易于并行实现。

小批量梯度下降(Mini-Batch Gradient Descent, MBGD)

小批量梯度下降,是对批量梯度下降以及随机梯度下降的一个折中办法。其思想是:每次迭代 使用 ** batch_size** 个样本来对参数进行更新.

参数更新:

\theta _{j}=\theta _{j}-\alpha\tfrac{1}{10}\sum _{k=i}^{i+9}(h_{\theta }(x^{(k)})-y^{(k)})x_{j}^{(k)}

优点:

  1. 通过矩阵运算,每次在一个batch上优化神经网络参数并不会比单个数据慢太多。
  2. 每次使用一个batch可以大大减小收敛所需要的迭代次数,同时可以使收敛到的结果更加接近梯度下降的效果。
  3. 可实现并行化。

缺点:

  1. batch_size的不当选择可能会带来一些问题。

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值