前言
在TASK1中简单了解了一下机器学习所具备的三个关键要素和实际应用,在TASK2中更近一步地了解在构建模型中的优化方案
线性模型基础
在最开始的阶段,首先尝试使用简单的线性模型来预测观看次数。线性模型的形式为 (y = b + wx),其中 (w) 是权重,(b) 是偏置项,(x) 是前一天的观看次数。通过梯度下降法不断更新 (w) 和 (b) 的值,以最小化损失函数 (L(w, b))。最终找到的最优参数值为 (w^* = 0.97) 和 (b^* = 100),此时在训练数据上的平均误差(损失)为 480。
模型改进
观察到实际数据存在周期性模式,即每7天出现观看次数低谷。因此,通过改进模型,使其考虑过去7天的观看次数,形式变为 (y =
)。在这个新模型中,(x_j) 代表第 (j) 天的观看次数,而 (w_j) 是对应的权重。使用该模型后,训练数据上的损失降至 380,在未知数据(2021年数据)上的损失则为 490。
引入非线性模型
为了进一步提高模型的预测能力,引入了非线性元素。首先尝试使用1000个ReLU单元作为模型的一部分,这降低了训练数据上的损失,但在未知数据上的损失没有明显变化。
接下来,构建了一个更加复杂的模型,它包含了多个层。每一层的计算过程如下:
- 输入 (x) 乘以权重 (w) 并加上偏置 (b),即 (a = b + wx)。
- 将上述结果通过激活函数(如ReLU或Sigmoid),得到 (a’)。
通过多次重复这个过程,可以形成一个深层神经网络。例如,如果使用3层ReLU单元,则损失可以进一步降低至140(在训练数据上),在未知数据上的损失则降低至380。
避免过拟合
当增加模型复杂度时,可能会遇到过拟合问题,即模型在训练数据上表现非常好,但在未知数据上的表现较差。例如,4层神经网络在训练数据上的损失仅为100,但在未知数据上的损失上升至440。这意味着模型过于复杂,对训练数据过度拟合。
在面对过拟合时,我们应该选择在未知数据上表现较好的模型。尽管4层网络在训练数据上的性能优于3层网络,但基于未知数据的表现,我们应当选择3层网络。
机器学习框架
构建和训练模型的通用流程如下:
- 定义一个包含未知参数 (\theta) 的函数 (f_\theta(x)),其中 (\theta) 包含模型的所有参数。
- 定义损失函数 (L(\theta)) 用于评估参数的好坏。
- 解决优化问题,找到使损失函数最小化的参数 (\theta^*)。
打个比方
想象你在准备一道菜,你想要预测这道菜在明天是否会受欢迎。最开始你可能只考虑了昨天这道菜的受欢迎程度,但随后你注意到每周五和周六这道菜都不太受欢迎,于是你开始考虑过去一周内每一天的受欢迎程度。接着,你意识到这道菜受欢迎的程度不仅仅依赖于过去的受欢迎程度,还可能受到一些其他因素的影响,比如天气或者特殊事件。于是你开始使用更复杂的模型来捕捉这些非线性的关系。然而,你需要小心不要过度调整你的食谱,以至于它只适用于你已经测试过的特定情况,而无法很好地适应新的情况。这就像是在训练一个模型时要防止过拟合一样。
在通俗一点,就是先大概拟合,再不断改参数使其无限逼近真实值。
希望这份笔记能帮助大家在夏令营中更好地理解线性模型到深度学习模型的演进过程。❤