线性模型的基本概念
线性模型是通过线性组合输入特征来预测输出的一种模型。其基本形式为:y = b + wx其中,y 是预测值,b 是偏置(intercept),w 是权重(weight),x 是输入特征
训练与预测
在已知历史数据的基础上,我们可以使用线性模型进行预测。例如,使用2017到2020年的观看次数数据来预测2021年的观看次数。通过不断更新权重和偏置,最终得到的最优参数可以用于未来数据的预测
线性模型的局限性
线性模型的局限性在于它只能捕捉到输入特征与输出之间的线性关系。在实际应用中,很多数据的关系是非线性的,因此线性模型可能无法很好地拟合复杂的数据模式
在探讨线性模型时,我们了解到x1与y之间的关系被固定为一条直线。这条直线的斜率由权重w决定,而直线与y轴的交点则由偏置b确定。因此,无论我们如何调整w和b,模型的输出都将保持为线性关系,即当x1增大时,y也会相应地增大,这在某些情境下(如前一天观看次数与隔天观看次数的简单预测)可能适用。
然而,在现实世界中,这种线性关系往往过于简化。例如,可能存在一种情况:当x1(前一天观看次数)低于某个阈值时,它与y(隔天观看次数)之间呈现正比关系;但当x1超过该阈值时,由于某种饱和效应或疲劳感,隔天观看次数y可能会减少。这种情况下,x1与y之间的关系可能更接近于一条曲线(如你提到的红色线),而非直线。
遗憾的是,无论我们如何调整线性模型的w和b参数,都无法使其完美拟合这种非线性关系。这种因模型形式(在此为线性)与数据实际关系(可能为非线性)之间的不匹配而导致的限制,被称为模型偏差。模型偏差是机器学习和统计建模中一个重要的概念,它强调了选择合适的模型类型以准确反映数据内在规律的重要性。
Hard Sigmoid 函数
Hard Sigmoid函数是一种通过分段线性近似Sigmoid函数的激活函数。其特性主要体现在以下几个方面:
分段线性:Hard Sigmoid函数由几个线性段组成,这些线性段通过特定的阈值(或定值)来划分。这些阈值定义了函数在哪些区间内是水平的,哪些区间内是斜坡的。
水平段:当输入 x x x的值小于某个较低的阈值时,Hard Sigmoid函数的输出会保持在一个非常接近0的水平段上。同样地,当输入 x x x的值大于某个较高的阈值时,函数的输出会保持在一个非常接近1的水平段上。这两个水平段分别对应了Sigmoid函数在极端负值和极端正值时的渐近行为。
斜坡段:在介于这两个阈值之间的中间区域,Hard Sigmoid函数表现为一个斜坡,即函数的输出随输入的增加而线性增加。这个斜坡段模拟了Sigmoid函数在输入值适中时的非线性增长特性,但采用了更简单、更高效的线性近似。
Sigmoid函数
y = c 1 1 + e − ( b + w x 1 ) y=c \frac{1}{1+e^{-\left(b+w x_{1}\right)}} y=c1+e−(b+wx1)1
当 x 1 x_1 x1的值趋近于无穷大时,由于指数函数的性质, e − ( b + w x 1 ) e^{-(b+wx_1)} e−(b+wx1)这一项会迅速趋近于0。因此,在 x 1 x_1 x1非常大的情况下,Sigmoid函数 σ ( b + w x 1 ) \sigma(b+wx_1) σ(b+wx1)的输出会趋近于1。
另一方面,当
x
1
x_1
x1的值负的非常大时,
b
+
w
x
1
b+wx_1
b+wx1会是一个很小的负数(假设
w
w
w为正),导致
e
−
(
b
+
w
x
1
)
e^{-(b+wx_1)}
e−(b+wx1)变得非常大。但由于Sigmoid函数
σ
(
x
)
=
1
1
+
e
−
x
\sigma(x) = \frac{1}{1+e^{-x}}
σ(x)=1+e−x1的分母
1
+
e
−
x
1+e^{-x}
1+e−x的存在,当
x
x
x(即这里的
b
+
w
x
1
b+wx_1
b+wx1)变得非常小时,整个函数
σ
(
x
)
\sigma(x)
σ(x)的值会趋近于0。
通过调整参数 b(偏移量)、w(斜率)和 c(高度或缩放因子),可以灵活地生成多种形状的Sigmoid函数。这些参数的变化分别控制函数的左右平移、斜率和高度,从而能够构建出多样化的Sigmoid曲线。将这些具有不同特性的Sigmoid函数叠加起来,可以有效地逼近各种复杂的分段线性函数,而分段线性函数又能作为工具来近似广泛的连续函数。这种方法为函数逼近和表示提供了极大的灵活性和可能性。
ReLU函数
ReLU和sigmoid函数都被称为激活函数
分段线性模型
下图中的红色曲线可以看成一个常数再加上一群 Hard Sigmoid 函数
对于任意复杂的曲线,可以通过一种称为“分段线性逼近”或“分段逼近”的方法,将其划分为多个小段,每段用一个线性函数来近似。
使用更灵活的模型进行机器学习
Sigmoid 的数量是由自己决定的,而且Sigmoid 的数量越多,可以产生出来的分段
线性函数就越复杂。Sigmoid 越多可以产生有越多段线的分段线性函数,可以逼近越复杂的函数。Sigmoid 的数量也是一个超参数
计算损失
直接用 θ 来统设所有的参数,所以损失函数就变成L(θ)。损失函数能够判断 θ 的好坏,其计算方法跟刚才只有两个参数的时候是一样的。先给定 θ 的值,即某一组W, b, cT, b 的值,再把一种特征x 代进去,得到估测出来的y,再计算一下跟真实的标签之间的误差e。把所有的误差通通加起来,就得到损失。
优化
未知的参数有常数b、c、sigmoid函数中的b、sigmoid函数中的w,损失函数与他们均有关
将他们拼成一个向量θ,再分别求偏导计算梯度
然后在不断更新 θ 的值直到梯度为0向量(几乎不可能)或训练次数到达指定次数停止
实际上更新 θ 的过程会将所有的训练数据分为若干个批量(batch),每个batch都会算出各自的损失函数,走完所有的batch称为一个回合(epoch)