-
线性模型的应用与局限
- 初始模型:一开始使用模型进行预测,在训练数据上损失为 480,在 2021 年未看过的数据上误差较大。
- 改进模型 1:考虑到数据的周期性,修改模型为,在训练数据上损失降低到 380,在未看过的数据上损失为 490。
- 改进模型 2:进一步考虑更多天的数据,如使用模型,在训练数据上损失为 330,在未看过的数据上损失为 460;使用模型,在训练数据上损失为 320,在未看过的数据上损失仍为 460,此时考虑天数可能已到极限。
- 线性模型的局限:线性模型过于简单,无法模拟 x1 跟 y 中间复杂的关系,如当 x1 小于某一数值时,x1 与 y 成正比;当 x1 大于某一数值时,x1 与 y 成反比的情况,这种模型的限制称为模型的偏差。
-
分段线性曲线
- 构建分段线性曲线:红色曲线(分段线性曲线)可以看作是一个常数加上一堆 Hard Sigmoid 函数。通过设置不同 Hard Sigmoid 函数的斜坡起点、终点和斜率,使其组合逼近红色曲线。分段线性曲线可以用常数项加不同的 Hard Sigmoid 函数组合出来,且越复杂的分段线性曲线需要越多的 Hard Sigmoid 函数。
- 用分段线性曲线逼近连续曲线:可以在连续曲线(如图 1.9 所示)上取点,将这些点连接成分段线性曲线,若点取的够多或位置适当,分段线性曲线可逼近连续曲线。
- 用 Sigmoid 函数逼近 Hard Sigmoid 函数:可以用 Sigmoid 函数逼近 Hard Sigmoid 函数,通过调整 b、w 和 c 可以制造各种不同形状的 Sigmoid 函数,用不同的 Sigmoid 函数叠起来可逼近各种不同的分段线性函数,从而逼近不同的连续函数。
-
更有灵活性的函数
- 引入多个特征:不只用一个特征 x1,可考虑多个特征(如前 28 天,j = 1 到 28)。例如,考虑前三天的情况,输入为 x1(前一天观看次数)、x2(两天前观看次数)、x3(三天前观看次数),每个蓝色函数用 Sigmoid 函数近似,可表示为(),通过 Sigmoid 函数得到,最终函数表示为。
- 参数表示与优化:将所有未知参数(W, b, c^T, b)拉直拼成一个向量,损失函数变为。通过梯度下降更新参数,先随机选初始值,计算梯度,然后根据更新参数,直到不想做或梯度为 0 向量为止。
- 分批量进行梯度下降:实际使用梯度下降时,会将数据随机分成批量(batch),每个批量有 B 笔数据。每次选一个批量算损失,根据算梯度并更新参数,看过所有批量称为一个回合(epoch),每更新一次参数叫做一次更新。
-
模型变形
- 激活函数:Hard Sigmoid 可看作是两个 ReLU 的加总,Sigmoid 或 ReLU 称为激活函数。实验中,使用 100 个 ReLU 作为模型,在训练数据上损失从 320 降到 280,在测试数据上好一些;使用 1000 个 ReLU 作为模型,训练数据上损失更低,但在没看过的数据上损失没有变化。
- 改进模型:将 x 通过一系列运算(乘上 w 加 b,再通过激活函数)产生 a,再对 a 进行同样运算产生 a',反复多次,每次增加不同的未知参数(如 w',b')。例如,输入 56 天前的数据,每次加 100 个 ReLU,做两次损失从 280 降到 180,做三次损失从 180 降到 140,在没看过的数据上损失从 430 降到 380。
- 神经网络与深度学习:Sigmoid 或 ReLU 称为神经元,很多神经元组成神经网络。神经网络中每一排称为一层,称为隐藏层,很多隐藏层就 “深”,称为深度学习。例如,AlexNet 有 8 层,错误率是 16.4%;VGG 有 19 层,错误率进步到 7.3%;GoogleNet 有 22 层,错误率降到 6.7%;ResNet 有 152 层,错误率降到 3.57%。但在实验中,3 层网络在训练数据上比 4 层差,但在没看过的数据上比 4 层好,这种情况称为过拟合。
-
机器学习框架
- 训练过程:
- 写出有未知数的函数,输入特征为 x。
- 定义损失函数,输入一组参数判断其好坏。
- 解优化问题,找到使损失最小的,即。
- 应用:将带入测试集进行预测,输出结果存起来上传到 Kaggle。
- 训练过程:
“Datawhale X 李宏毅苹果书 AI夏令营”深度学习-第一章 机器学习基础1.2
最新推荐文章于 2024-10-06 23:41:31 发布