Regression
基本步骤
-
Step1: Function Set
使用training data来计算最优的f,以找到 f ^ \hat f f^
f : y = b + w ∗ x c p f : y = b + w 1 ∗ x c p + w 2 ∗ x c p 2 . . . f:y = b + w*x_{cp}\\f:y = b + w_1*x_{cp}+w_2*x_{cp}^2\\...\\ f:y=b+w∗xcpf:y=b+w1∗xcp+w2∗xcp2... -
Step2: Goodness of Function
Training Data: ( x , y ^ ) (x,\hat y) (x,y^)
Loss function: L ( w , b ) = Σ n = 1 10 ( y ^ n − ( b + w ∗ x n ) ) 2 L(w,b)= \Sigma_{n=1}^{10} (\hat y^{n}-(b+w*x_{n}))^2 L(w,b)=Σn=110(y^n−(b+w∗xn))2
f ∗ = m i n f L ( f ) f^* = min_{f} L(f) f∗=minfL(f)
很显然可以用线性规划来做,当然在机器学习中的方法则不同,只要f可微,就可以用梯度下降法
-
Step3: Optimization
Gradient Descent
-
首先考虑其中一个参数w
-
随机选取初始值w
-
计算该点处微分(梯度),根据微分正负,定义下一步学习是增加还是减少梯度
w 1 : = w 0 ± η ∗ d L d w ∣ w = w 0 w^1 := w^0 \pm \eta *\frac {dL}{dw}|_{w=w^0} w1:=w0±η∗dwdL∣w=w0
局部最优、全局最优
如何处理两个参数?
-
-
Step4:结果如何?
testing data
Overfitting
当拟合训练集得非常好、目标函数越复杂时,模型会在测试集上出现较高的误差,也就是过拟合。
正则化regularization
正则化之后,拟合到的曲线会更加平滑,对测试集数据的表现更好
不需要考虑b,bias只能控制曲线偏移,不能控制斜率
Bias and Variance
总 体 期 望 = E ( 样 本 均 值 ) 总 体 方 差 = N N − 1 样 本 方 差 总体期望=E(样本均值)\\总体方差=\frac {N}{N-1}样本方差 总体期望=E(样本均值)总体方差=N−1N样本方差
算法的期望预测与真实预测之间的偏差程度称为Bias;
Variance是指预测值与真实预测的分散程度。
**(Underfitting)当model是一个比较简单的方程时,function set的target space较小,因而存在较大的bias、较小的variance;(Overfitting)**当model较为复杂的,会存在较大的variance、较小的bias
How to fix?
large variance:
- More data
- Regularization(find the balance between bias and variance)
large bias:
- change function set
交叉检验集cross validation
使用validation来评估你使用training set,再选出一个最好的model,这样选出来的model,在testing set上的表现才与现实中的set差距不大。
Gradient Descent
Gradient
L ( θ ) = [ δ l ( θ 1 ) / δ ( θ 1 ) δ l ( θ 2 ) / δ ( θ 2 ) ] L(\theta)= \left[ \begin{matrix} \delta l(\theta_1)/\delta(\theta_1)\\ \delta l(\theta_2)/\delta(\theta_2) \end{matrix}\right] L(θ)=[δl(θ1)/δ(θ1)δl(θ2)/δ(θ2)]
Learning rate
太大或太小的learning rate都不好,太大会导致找不到最优,太小会导致优化时间过长。
常规的方案是随着参数的更新,减小learning rate
η t = η t + 1 \eta^t = \frac {\eta}{\sqrt{t+1}} ηt=t+1η
Optimism
Adagrad方法
其中g表示微分值
推导流程
结果
w
t
+
1
:
=
w
t
−
η
t
σ
t
g
t
w
t
+
1
:
=
w
t
−
η
t
+
1
1
t
+
1
Σ
i
=
0
t
(
g
i
)
2
g
t
w
t
+
1
:
=
w
t
−
η
Σ
i
=
0
t
(
g
i
)
2
g
t
w^{t+1}:=w^t-\frac {\eta^t}{\sigma^t}g^t\\ w^{t+1}:=w^t-\frac {\frac {\eta}{\sqrt{t+1}}}{\sqrt{\frac {1}{t+1}\Sigma^t_{i=0}(g^i)^2}}g^t\\ w^{t+1}:=w^t-\frac {\eta}{\sqrt{\Sigma^t_{i=0}(g^i)^2}}g^t\\
wt+1:=wt−σtηtgtwt+1:=wt−t+11Σi=0t(gi)2t+1ηgtwt+1:=wt−Σi=0t(gi)2ηgt
其中
g
t
g^t
gt表示一次微分,
σ
t
\sigma^t
σt表示二次微分的估计值,二者的比值用来评估点到最低点的距离
Stochastic Gradient Descent
选取一个example,计算一个example的loss,也就是每取一个example,就更新一次参数;
Feature Scaling
特征缩放目的是将每个特征值控制在[-1, 1]的范围(range一致)中,当然这个范围不必那么精确,小于[-3, 3]和大于[-1/3, 1/3]的范围都是可以接受的。这样在做梯度下降时,每个特征的影响是相对一致的。
Formal Derivation
根据泰勒展开可知,当步长(learning rate)很小时,损失函数可以被被近似未下面的式子,其中s、u、v都是常数,s表示在(a,b)点处,参数为θ的一阶值loss,uv为1阶偏微分值
为了使L最小,则需要将Δθ朝与u、v相反的方向移动
最后我们可以发现通过泰勒公式即可推导出gradient descent,可以发现,gradient descent要求学习率是足够小的才能成立。
一些限制
可能找到的结果不是最优,local minimum或高原,但你永远不知道你的结果是什么样的。