Datawhale X 李宏毅苹果书 AI夏令营 Task02:线性模型

Datawhale X 李宏毅苹果书 AI夏令营 Task02:线性模型

请添加图片描述

y = b + ∑ j = 1 7 w j x j y = b + \sum^{7}_{j=1} w_jx_j y=b+j=17wjxj
其中 x j x_j xj 代表第 j j j 天的观看测试,也就是 7 天前的数据,通通乘上不同的权重 w j w_j wj,加起来,再加上偏置得到预测的结果。考虑更多天没有办法再更降低损失了。看来考虑天数这件事,也许已经到了一个极限。这些模型都是把输入的特征 x x x 乘上一个权重,再加上一个偏置就得到预测的结果,这样的模型称为线性模型(linear model)。接下来会看如何把线性模型做得更好

分段线性曲线

分段曲线就是只要有足够的线性函数把它加起来,就可以变成任何连续的曲线。

请添加图片描述

而这里可以用一个用 Sigmoid 函数来逼近 Hard Sigmoid,Sigmoid 函数的表达式为:
y = c 1 1 + e − ( b + w x 1 ) y = c\frac{1}{1 + e^{-(b+wx_1)}} y=c1+e(b+wx1)1
如果 x 1 x_1 x1 的值,趋近于无穷大的时候, e − ( b + w x 1 ) e^{−(b+wx_1)} e(b+wx1) 这一项就会消失,当 x 1 x_1 x1 非常大的时候,这一条就会收敛在高度为 c c c 的地方。如果 x 1 x_1 x1 负的非常大的时候,分母的地方就会非常大, y y y 的值就会趋近于 0。调整这里的 b、w 和 c 可以制造各种不同形状的 Sigmoid 函数,用各种不同形状的 Sigmoid函数去逼近 Hard Sigmoid 函数

请添加图片描述
请添加图片描述

线性代数表示方式:
y = b + c T σ ( b + W x ) y = b + c^T \sigma(b + Wx) y=b+cTσ(b+Wx)
第一个 b b b 常数,第二个 b b b 是以一个向量

将未知量 w , b w, b w,b 用 $ \theta $ 代替,这里将Loss函数改写为 L ( θ ) L(\theta) L(θ) , 计算方法依旧不变,给一组 b , c T , b , W , x b, c^T, b, W, x b,cT,b,W,x 计算结果 y y y 与真实值 y ^ \hat{y} y^ 之间的差距,并累计求平均、
L o s s : L = 1 N ∑ n e n Loss: L = \frac{1}{N}\sum_{n}e_n Loss:L=N1nen

θ = [ θ 1 θ 2 θ 3 . . . ] \theta = \begin{bmatrix} \theta_1 \\ \theta_2 \\ \theta_3 \\ ... \end{bmatrix} θ= θ1θ2θ3...

优化新模型
θ ∗ = a r g m i n θ L \theta^* = arg min_\theta L θ=argminθL

  • 随机选一个 $ \theta^0 $

  • 计算每一个 θ \theta θ​ 的 “评分” 来最终接近最优解,用向量 g g g 来表示 ,也成为 gradient (梯度)
    g = [ δ L δ θ 1 ∣ θ = θ 0 δ L δ θ 2 ∣ θ = θ 0 . . . ] g = \begin{bmatrix} \frac{\delta L}{\delta \theta_1}|_{\theta=\theta^0} \\ \frac{\delta L}{\delta \theta_2}|_{\theta=\theta^0} \\ ... \end{bmatrix} g= δθ1δLθ=θ0δθ2δLθ=θ0...

g = ∇ L ( θ 0 ) g = \nabla L(\theta^0) g=L(θ0)

接下来对 θ \theta θ 进行更新

. . . ← [ θ 1 3 θ 2 3 . . . ] ← [ θ 1 2 θ 2 2 . . . ] ← [ θ 1 1 θ 2 1 . . . ] ← [ θ 1 0 θ 2 0 . . . ] − [ η δ L δ θ 1 ∣ θ = θ 0 η δ L δ θ 2 ∣ θ = θ 0 . . . ] ... \leftarrow \begin{bmatrix} \theta_1^3 \\ \theta_2^3 \\ ... \end{bmatrix} \leftarrow \begin{bmatrix} \theta_1^2 \\ \theta_2^2 \\ ... \end{bmatrix} \leftarrow \begin{bmatrix} \theta_1^1 \\ \theta_2^1 \\ ... \end{bmatrix} \leftarrow \begin{bmatrix} \theta_1^0 \\ \theta_2^0 \\ ... \end{bmatrix} - \begin{bmatrix} \eta\frac{\delta L}{\delta \theta_1}|_{\theta=\theta^0} \\ \eta\frac{\delta L}{\delta \theta_2}|_{\theta=\theta^0} \\ ... \end{bmatrix} ... θ13θ23... θ12θ22... θ11θ21... θ10θ20... ηδθ1δLθ=θ0ηδθ2δLθ=θ0...

. . . ← θ 3 ← θ 2 ← θ 1 ← θ 0 − η g ... \leftarrow \theta^3 \leftarrow \theta^2 \leftarrow \theta^1 \leftarrow \theta^0 - \eta g ...θ3θ2θ1θ0ηg
根据 gradient 将 θ 0 \theta^0 θ0 更新为 θ 1 \theta^1 θ1, 再算再更,再算再更,当然我们不是拿所有数据一次直接算一个gradient,而是将其分为多个batch,再用其算每个batch对应的gradient,再进行update,把所有的数据进行一遍更新称为epoch
请添加图片描述

当然不止Sigmoid一种函数,还可以用Rectified Linear Unit(ReLU)
请添加图片描述
所以两个ReLU才是一个Sigmoid, 这就是Activation Function激活函数
y = b + ∑ i c i s i g m o i d ( b i + ∑ j w i j x j ) y = b + \sum_i c_i sigmoid(b_i + \sum_j w_{ij} x_j) y=b+icisigmoid(bi+jwijxj)

y = b + ∑ 2 i c i m a x ( 0 , b i + ∑ j w i j x j ) y = b + \sum_{2i} c_i max(0, b_i + \sum_j w_{ij} x_j) y=b+2icimax(0,bi+jwijxj)

反复,反复多次即为深度学习:
请添加图片描述
当然训练中出现Train Data预测在变好,但在未见Data上并没变好,即为过拟合Overfitting
请添加图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值