1.回归、多项式回归、多重回归
1.1 回归(单变量)
预测一个变量
x
x
x与一个变量
y
y
y的关系
例如:广告费
x
x
x与点击量
y
y
y
用直线拟合数据
1.2 多项式回归(单变量)
预测一个变量
x
x
x与一个变量
y
y
y的关系
例如:广告费
x
x
x与点击量
y
y
y
用曲线拟合数据
n次曲线
f
θ
(
x
)
=
θ
0
+
θ
1
x
+
θ
2
x
2
+
⋯
+
θ
n
x
n
f_{\theta}(x)=\theta_0+\theta_1x+\theta_2x^2+\cdots+\theta_nx^n
fθ(x)=θ0+θ1x+θ2x2+⋯+θnxn
尽管次数越高对训练数据拟合越精确(过拟合)但我们的目的是用这个拟合曲线去预测训练数据之外的数据,需要这个曲线或模型具备泛化能力,而不是仅仅代表训练数据,过拟合使得模型不再具有代表性了,不能预测一般情形了
1.3 多重回归(多变量)
预测多个变量
x
x
x与一个变量
y
y
y的关系
例如:广告费
x
1
x_1
x1、广告展示位置
x
2
x_2
x2、广告版面大小
x
3
x_3
x3与点击量
y
y
y
f
θ
(
x
1
,
⋯
,
x
n
)
=
θ
0
+
θ
1
x
1
+
θ
2
x
2
+
⋯
+
θ
n
x
n
f_{\theta}(x_1,\cdots,x_n)=\theta_0+\theta_1x_1+\theta_2x_2+\cdots+\theta_nx_n
fθ(x1,⋯,xn)=θ0+θ1x1+θ2x2+⋯+θnxn
θ
=
[
θ
0
θ
1
⋮
θ
n
]
、
x
=
[
x
0
x
1
⋮
x
n
]
(
x
0
=
1
)
\boldsymbol{\theta}= \left [ \begin{matrix} \theta_0\\ \theta_1 \\ \vdots\\ \theta_n \end{matrix} \right ] 、 \boldsymbol{x}= \left [ \begin{matrix} x_0\\ x_1 \\ \vdots\\ x_n \end{matrix} \right ](x_0=1)
θ=
θ0θ1⋮θn
、x=
x0x1⋮xn
(x0=1)
f
θ
(
x
)
=
θ
T
x
=
θ
0
x
0
+
θ
1
x
1
+
θ
2
x
2
+
⋯
+
θ
n
x
n
f_{\boldsymbol{\theta}}(\boldsymbol{x})=\boldsymbol{\theta}^T\boldsymbol{x}=\theta_0x_0+\theta_1x_1+\theta_2x_2+\cdots+\theta_nx_n
fθ(x)=θTx=θ0x0+θ1x1+θ2x2+⋯+θnxn
θ
j
:
=
θ
j
−
η
∑
i
=
1
n
(
f
θ
(
x
(
i
)
)
−
y
(
i
)
)
x
j
(
i
)
\theta_j:=\theta_j-\eta\sum_{i=1}^n\big(f_{\boldsymbol{\theta}}(\boldsymbol{x}^{(i)})-y^{(i)}\big)x_j^{(i)}
θj:=θj−ηi=1∑n(fθ(x(i))−y(i))xj(i)
上述表达式使用了所有训练数据的误差
对目标函数的优化方法:
最速下降法(梯度下降法/Gradient Descent) 对所有训练数据都重复进行计算
梯度下降法的问题是训练数据越多,循环次数越多,计算时间越长,选用随机数作为初始值,每次初始值都会变,进而导致陷入局部最优解的问题
在GD算法中,每次的梯度都是从所有样本中累计获取的,这种情况最容易导致梯度方向过于稳定一致,且更新次数过少,容易陷入局部最优–摘自:防止梯度下降陷入局部最优的三种方法
随机梯度下降法(Stochastic GD)随机选择一个训练数据,并使用它来更新参数
k是被随机选中的数据索引
θ
j
:
=
θ
j
−
η
(
f
θ
(
x
(
k
)
)
−
y
(
k
)
)
x
j
(
k
)
\theta_j:=\theta_j-\eta\big(f_{\boldsymbol{\theta}}(\boldsymbol{x}^{(k)})-y^{(k)}\big)x_j^{(k)}
θj:=θj−η(fθ(x(k))−y(k))xj(k)
注意这里没有求和,因为只使用了一个训练数据
为什么随机梯度下降法不容易陷入局部最优?
stochastic GD是GD的另一种极端更新方式,其每次都只使用一个样本进行参数更新,这样更新次数大大增加,更新参数时使用的又是选择数据时的梯度,每次梯度方向不同,也就不容易陷入局部最优。–摘自:防止梯度下降陷入局部最优的三种方法
小批量梯度下降法(Mini-Batch GD)随机选择m个训练数据来更新参数
θ
j
:
=
θ
j
−
η
∑
k
∈
K
(
f
θ
(
x
(
k
)
)
−
y
(
k
)
)
x
j
(
k
)
\theta_j:=\theta_j-\eta\sum_{k\in K}\big(f_{\boldsymbol{\theta}}(\boldsymbol{x}^{(k)})-y^{(k)}\big)x_j^{(k)}
θj:=θj−ηk∈K∑(fθ(x(k))−y(k))xj(k)
∑
k
∈
K
\sum_{k\in K}
∑k∈K代表将集合K中的所有元素相加
Mini-Batch GD便是两种极端的折中,即每次更新使用一小批样本进行参数更新。Mini-Batch GD是目前最常用的优化算法,严格意义上Mini-Batch GD也叫做stochastic GD,所以很多深度学习框架上都叫做SGD。–摘自:防止梯度下降陷入局部最优的三种方法
动量(Momentum)
动量也是GD中常用的方式之一,SGD的更新方式虽然有效,但每次只依赖于当前批样本的梯度方向,这样的梯度方向依然很可能很随机。动量就是用来减少随机,增加稳定性。其思想是模仿物理学的动量方式,每次更新前加入部分上一次的梯度量,这样整个梯度方向就不容易过于随机。一些常见情况时,如上次梯度过大,导致进入局部最小点时,下一次更新能很容易借助上次的大梯度跳出局部最小点。–摘自:防止梯度下降陷入局部最优的三种方法
无论使用哪种优化方法对目标函数进行优化,我们都必须考虑学习率 η \eta η设置为合适的值很重要,这个问题比较难,可以通过反复尝试来找到合适的值