前言
笔者一直在ipad上做手写笔记,最近突然想把笔记搬到博客上来,也就有了下面这些。因为本是给自己看的笔记,所以内容很简陋,只是提了一些要点。随缘更新。
正文
step1 build model
最简单的模型——一元线性模型:
y=b+w⋅x
稍复杂一点——多元线性模型:
y=b+∑wixi
- x: 各种特征
-
w: 各个特征的权重值
- b: 偏移量
step2 Goodness of Function
Loss function L: 评估模型好坏
L(w,b)=i=1∑n(yi−(b+wi⋅xi))2
L越小,说明模型误差越小。
step3 最佳模型 - gradient decent
目标:
w∗=arg xminL(w)
-
w∗为最佳参数
随机取一个点,重复
w0−η∂w∂L∣w=w0 →
w1(
η为学习率),直到找到最优点。
更简洁的公式:
ΔL=⎣⎡∂w∂L∂b∂L⎦⎤
由于是随机取
w0,我们有可能找到的是局部最小值,而不是全局最小值。
过拟合
在模型上我们可以进一步优化,选择更复杂的模型。如一元二次方程。但更复杂的方程会导致在训练集上表现良好,但是在测试集上表现很差。
正则化
L(w,b)=i=0∑n(yi−(b+wi⋅xi))2+λ∑wi2
-
w 越小,表示
function 较平滑的,
function输出值与输入值相差不大
- 在很多应用场景中,并不是
w 越小模型越平滑越好,但是经验值告诉我们
w 越小大部分情况下都是好的。
-
b 的值接近于0 ,对曲线平滑是没有影响
Bias and Variance
假设真实的模型为
f^,通过数据我们得到的理想模型是
f∗。
Bias(偏差):
- 拿出多个样本点,得出
f∗。
- 计算很多
f∗,计算平均值
f,得到
f=N1∑fn∗。
- 求出
f的期望:
E(f)=E(N1∑f∗)=N1∑E(f∗) ≠
f^
E(f)与
f^的差距称为bias。
扫描二维码关注公众号,回复:
10332602 查看本文章
Variance(方差):
s2=N1n∑(f−f^)2
代表模型与模型之间的误差
归纳
- 简单的模型方差较小,因为简单的模型受到不同训练集的影响比较小。
- 复杂模型的偏差较小,因为复杂模型的空间较大,可能就包含靶心。
判断
- 如果模型没有很好的符合训练集,就是偏差过大,就是欠拟合
- 如果模型很好的符合训练集,但是在测试集上得到较大的错误,这意味着模型可能方差较大,就是过拟合
梯度下降技巧
Adagrad算法
(未完待续)