【Datawhale X 李宏毅苹果书 AI夏令营】[深度学习 入门] Task2 《深度学习详解》- 1.2 线性模型

【Datawhale X 李宏毅苹果书 AI夏令营】[深度学习 入门] Task2 《深度学习详解》- 1.2 线性模型

内容来自李宏毅老师的机器学习/深度学习:
github:李宏毅深度学习教程LeeDL-Tutorial(苹果书)
bilibili课程视频:李宏毅《机器学习/深度学习》2021课程(P3)
Datawhale:Datawhale AI 夏令营(第五期)

1.2 线性模型

  先前,我们已经通过2017-2020年的播放数据得到一个误差 L = 480 L = 480 L=480 的模型,即平均每天有480人次播放量的误差。接下来,我们用2021年的数据对该模型进行回测,结果发现 L = 580 L = 580 L=580,模型表现并没有那么好,预测的数据有强烈的滞后性。
图1.6 预估曲线图
  通过观察真实数据,我们不难发现一个现象:播放量似乎有周期性,7天一个周期,每周五周六的新增播放量尤其少。那么,我们可以试着修改模型,让它的预测值与前7天的值相关,而非只与前1天的相关,或许就能达到更加准确的预测效果。通常一个模型的修改,往往来自于对这个问题的理解,即领域知识,以上便是领域知识的一个例子。
  于是,我们修改模型,让它考虑前7天的播放数据 (也可以让它考虑前更多天):
y = b + ∑ j = 1 7 w j x j y = b + \sum_{j=1}^7 w_j x_j y=b+j=17wjxj通过梯度下降得到参数的最优值,并回测:

参数: b b b w 1 ∗ w_1^* w1 w 2 ∗ w_2^* w2 w 3 ∗ w_3^* w3 w 4 ∗ w_4^* w4 w 5 ∗ w_5^* w5 w 6 ∗ w_6^* w6 w 7 ∗ w_7^* w7
最优值: 50 50 50 0.79 0.79 0.79 − 0.31 -0.31 0.31 0.12 0.12 0.12 − 0.01 -0.01 0.01 − 0.10 -0.10 0.10 − 0.30 -0.30 0.30 0.18 0.18 0.18
模型2017-2020训练数据上的损失2021回测数据上的损失
y = b + w x 1 y = b + w x_1 y=b+wx1 480 480 480 580 580 580
y = b + ∑ j = 1 7 w j x j y = b + \sum_{j=1}^7 w_j x_j y=b+j=17wjxj 380 380 380 490 490 490
y = b + ∑ j = 1 2 8 w j x j y = b + \sum_{j=1}^28 w_j x_j y=b+j=128wjxj 330 330 330 460 460 460
y = b + ∑ j = 1 5 6 w j x j y = b + \sum_{j=1}^56 w_j x_j y=b+j=156wjxj 320 320 320 460 460 460

  可见,改进后的模型效果更好了。对于7天模型,机器的逻辑是,前1天跟要预测的那天数值关系很大,故 w 1 ∗ = 0.79 w_1^* = 0.79 w1=0.79,而之前的第2, 4, 5天则与预测值呈反比,故 w 2 , w 4 , w 5 w_2, w_4, w_5 w2,w4,w5 的最优值为负。
  相比7天模型,28天、56天模型通过考虑更多历史数据达到了更低的损失。这样的模型成为线性模型 linear model。然而,进一步增加天数已经无法再降低损失了。接下来,我们将学习如何将线性模型做得更好。

1.2.1 分段线性曲线

  上述线性模型或许过于简单, x , y x, y x,y 之间的关系或许比单纯一条直线的线性关系更加复杂,比如,或许 y y y x x x 上先递增、再递减?但无论如何改变 w , b w, b w,b,线性模型还是只能给出一条直线,如图1.7,假设这样一条红线表示了 x , y x, y x,y 之间的关系,我们无法用蓝线 (线性模型) 来合成红线。
图1.7 线性模型的局限性  因此,我们需要更复杂、灵活、有未知参数的函数。我们采用Hard Sigmoid 函数——“硬限制线性单元”:
KaTeX parse error: Expected 'EOF', got '&' at position 139: … n \end{cases} &̲emsp; 如图1.7,我们可以用 Hard Sigmoid 函数 + 常数项 (都是蓝线) 来合成红线: 0 ◯ + 1 ◯ + 2 ◯ + 3 ◯ = \textcircled{0} + \textcircled{1} + \textcircled{2} + \textcircled{3} = 0+1+2+3= 红线。
图1.8 构建红色曲线
  上图中的红线称为 分段线性曲线 (piecewise linear curve)。通过合适的常数项与合适斜率的 Hard Sigmoid 函数组合,我们能够合成任意的分段线性曲线。分段线性曲线越复杂、转折的点越多,所需的 Hard Sigmoid 函数就越多。
  分段线性曲线模型比线性模型更复杂,往往具有更好的效果。即使 x , y x, y x,y 之间的关系是如图1.9的黑色曲线,我们也把它分割近似成分段线性曲线,再用 Hard Sigmoid 函数去合成。
图1.9 分段曲线可以逼近任何连续曲线
  如果说直接写 Hard Sigmoid 函数不是很容易,我们也可以用别的函数来达到相同的效果。比如 (Soft) Sigmoid 函数 (如图1.10) 就可以用一根曲线来逼近 Hard Sigmoid 函数:
y = c ⋅ 1 1 + e − ( b + w x 1 ) = c ⋅ σ ( b + w x 1 ) ,   lim ⁡ x 1 → − ∞ y = 0 ,    lim ⁡ x 1 → + ∞ y = c y = c \cdot \frac{1}{1 + e^{-(b + wx_1)}} = c \cdot \sigma(b + wx_1), \\~ \\ \lim_{x_1 \to -\infty} y = 0, ~~ \lim_{x_1 \to +\infty} y = c y=c1+e(b+wx1)1=cσ(b+wx1), x1limy=0,  x1+limy=c
图1.10 使用 Sigmoid 逼近 Hard Sigmoid
  通过调整参数 b , w , c b, w, c b,w,c,我们可以得到不同形状的 Sigmoid 函数 (如图1.11),从而逼近不同的 Hard Sigmoid 函数,从而再合成我们所需的分段线性曲线 (如图1.12)。
y = b + ∑ i c i σ ( b i + w i x 1 ) y = b + \sum_{i} c_i \sigma(b_i + w_i x_1) y=b+iciσ(bi+wix1)图1.11 调整参数,制造不同的 Sigmoid 函数
图1.12 使用 Hard Sigmoid 来合成红色
  此外,我们可以用不止一个特征 x 1 x_1 x1,而是用多个特征 x 1 , x 2 , x 3 , ⋯ x_1, x_2, x_3, \cdots x1,x2,x3,,代入不同的 c , b , w c, b, w c,b,w,组合出不同的 Sigmoid 函数,从而合成更有灵活性 (flexibility) 的函数,如图1.13蓝框内所示。在我们的案例中,如果要考虑前28天,那么特征编号 j j j 就是 1 至 28。
图1.13 构建更有灵活性的函数

To be continue…

  • 13
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值