Datawhale X 李宏毅苹果书 AI夏令营 Task2打卡

线性模型(Linear model)

通常模型的修改来自于对问题的理解,即领域知识

基本定义:把输入特征x乘上一个权重,再加上一个偏置就可以得到预测的结果。

优点:简单易理解,可理解性好(权重w可以直观表达了各属性在预测中的重要性)

1 分段线性曲线

1.1 线性模型的局限性

  • Linear(线性)的Model太过简单,对于绝大多数的实际情况来说x1与y的关系不是简单的线性关系。
  • 随著 x1 越来越高,y 就应该越来越大,可以通过设定不同的 w改变这条线的斜率,可以设定不同的 b改变这一条蓝色的直线跟 y 轴的交点,但是无论怎么改 w 和 b,x1与y永远都是线性关系,永远都是x1越大y就越大。
  • **模型的偏差(Model Bias):**无论如何调整Model中的参数,都无法用Linear的Model制造类似红色的折线,也就是指模型无法模拟真实情况。

1.2 分段曲线的拟合

图中的各种Curves(曲线)都是由许多线段组成的,称为Piecewise Linear 的 Curves(分段线性曲线)。这些曲线都可以用常数+各种蓝色Function组成。曲线转折越多、越复杂,需要的蓝色Function就越多。

在实际案例的训练数据选择中,有时也会考虑数据本身的周期性等规律,以求更好减小模型在训练数据上的损失。

1.3 连续曲线的拟合

基于分段曲线可以逼近任何连续曲线的原理,我们可以使用Sigmoid函数来逼近Hard Sigmoid函数

当x1的值趋近于无穷大时,指数项会消失,函数收敛于c处,当x1趋近于负无穷小,y的值则趋近于0。

1.3.1 Sigmoid函数

中调整 b、w 和 c 可以制造各种不同形状的 Sigmoid 函数

在拟合连续曲线时,使用的Sigmoid函数数量(超参数的一种)可以自行设定,其数量越多,就可以产生有越多断线的分段线性函数,可以逼近更复杂的函数。

1.3.2 损失函数的计算

在这种拟合情况下,将损失函数设置为L(θ),其中,θ代表某一组W,b,的值,通过带入特征值x,可以得到预估的y,从而得到与真实标签之间的误差e,将所有误差通过一定计算进行总和,可以得到对应损失。

为了优化模型,减小损失,可以在一开始先设置一个初始值θ0,

一般来说,梯度更新的停止条件是计算出梯度为0向量,导致无法再更新参数(较小可能)或者我们主动终止计算。

1.3.3 批量

批量(batch):存有B笔数据(N笔数据被随机分成一个个批量)的一组数据。

在实际情况中,通常是每次先选一个批量计算损失函数L的值,并进行梯度更新。当所有批量都看过一次后,称为一个回合(epoch)

注:每次更新一次参数叫做一次更新,把所有的批量都看过一遍,叫做一个回合

2 模型变形

2.1 修正线性单元(Rectified Linear Unit,ReLU)

定义: 是一种常用的人工神经网络中的激活函数(activation function)

形式 f(x) = max(0,x)/。它在x大于零的时候激活,输出x;在x小于等于零的时候不激活,输出零。

**优点:**计算简单、神经元数量少、训练速度快、避免梯度消失的问题等。

它已成为现代神经网络中最为普遍的激活函数之一,用于隐藏层中。

2.2 神经网络(neural network)

过拟合(overfitting):模型在训练数据和测试数据上的能力/结果不一致。

3 机器学习框架

对于训练集,训练过程有3个步骤:

知识竞答

①下面哪种激活函数可以用来逼近Hard Sigmoid函数

A) ReLU

B) Sigmoid

C) tanh

D) softmax

E) ELU

B

②在深度学习中,我们经常遇到过拟合现象。以下哪些方法可以用来解决过拟合现象?

A) 增加训练数据量

B) 减少模型的参数数量

C) 增加模型的层数

D) 使用正则化技术

E) 使用Dropout技术

ABDE

③在预测观看人次的模型中,考虑前 7 天的数据而非前 1 天的数据有什么好处?

A. 可以降低模型的复杂度

B. 可以减少训练时间

C. 可以捕捉数据的周期性变化,降低损失

D. 可以提高模型的非线性能力

E. 可以避免过拟合

C

④教程中提到,模型在训练数据上的性能通常好于在测试数据上的性能。这种现象为什么会发生?

这种现象发生是因为模型直接在训练数据上优化,不可避免会学习到一些训练数据特有的模式,包括可能的噪声。测试数据代表了模型未见过的数据,更能反映模型的泛化能力。在实际应用中,应该更关注模型在测试数据上的表现。

⑤在教程的视频观看次数预测例子中,我们看到了如何从考虑前1天扩展到考虑前7天、28天甚至56天。这种扩展的意义是什么?教程中显示,从28天增加到56天时,在未见过的数据上的性能并没有显著提升,为什么考虑更多天数不一定总能提高预测准确性?

扩展考虑的天数允许模型捕捉更长期的模式,如周期性变化。然而,考虑更多天数并不总是能提高准确性,因为:1) 可能引入无关或噪声信息;2) 增加了模型复杂度,可能导致过拟合;3) 很久以前的数据可能对当前预测不再相关。

⑥在视频观看人数预测模型中,为什么使用100个ReLU比使用10个ReLU效果更好?这种改进是否总是有效的?

每一层ReLU都可以被视为对数据的一次非线性变换,使用更多的ReLU可以增加模型的复杂度,使其能够捕捉更复杂的非线性关系 。100个ReLU相比于10个ReLU,可以学习更细致的模式,有更强的表达能力。然而,这种改进并非总是有效,因为过多的ReLU可能导致过拟合,特别是在数据量较小的情况下。此外,还需要考虑计算资源和推理时间的限制。应该在模型性能不再显著提升,或者验证集性能开始下降时停止增加复杂度。

⑦在教程中,我们看到了如何使用ReLU函数构建深层网络。为什么要在每个线性变换后都加入非线性激活函数?如果去掉这些激活函数会发生什么?

非线性激活函数(如ReLU)在每个线性变换后引入非线性变换,使得模型能够学习复杂的非线性关系。如果去掉这些激活函数,多层线性变换可以简化为单个线性变换,这会大大降低模型的表达能力,使其无法捕捉复杂的模式。

⑧在改进模型时,为什么使用ReLU函数比使用Sigmoid函数效果更好?这可能与什么因素有关?

ReLU函数比Sigmoid函数计算更简单,能缓解梯度消失问题,允许模型学习更复杂的非线性关系。在视频观看人数预测这种可能存在突然变化的场景中,ReLU的非饱和性可能更有利于捕捉数据中的急剧变化。

与Sigmoid激活函数相比,ReLU有几个明显的优点。首先,ReLU在处理正数时非常简单,它直接将正数传递出去,这使得计算更高效。相比之下,Sigmoid函数在处理正数时会变得非常平缓,导致梯度变得非常小,这使得训练过程变得缓慢。这种平缓的性质还可能导致训练过程中会出现梯度消失的问题,即模型在训练时更新参数的速度变得非常慢。

其次,ReLU函数的计算过程非常简单,只需检查输入是否大于零,这使得模型训练速度更快。而Sigmoid函数需要进行复杂的数学运算,这会增加计算的复杂性和时间。

⑨在使用梯度下降法优化模型时,为什么使用小批量而不是整个数据集?这种方法有什么优势和劣势?

优势:

小批量更新可以充分利用现代计算硬件(如GPU)的并行处理能力,而且不需要等待整个数据集的梯度计算完成就可以更新参数,从而加快训练速度 。其次,处理整个数据集可能需要大量内存,而小批量可以在有限的内存中进行训练,使得训练过程更加可行 。另外还引入了一定的随机性,有助于逃离局部最小值

劣势:

由于小批量梯度下降每次更新都是基于一个子集的估计,这可能导致收敛路径不如全批量梯度下降平滑,有时可能会出现震荡或不稳定。此外,选择小批量的大小是一个需要经验的过程,不同的大小可能对训练过程的效率和模型性能产生影响。过小的批量可能导致梯度估计不准确,过大的批量可能导致内存不足或训练速度慢。

参考资料

Datawhale (linklearner.com)

机器学习------线性模型(内附详细公式推导)_简单描述几个线性模型建立的过程-CSDN博客

相关推荐
yusaisai大鱼43 分钟前
TensorFlow如何调用GPU?
人工智能·tensorflow
珠海新立电子科技有限公司3 小时前
FPC柔性线路板与智能生活的融合
人工智能·生活·制造
IT古董3 小时前
【机器学习】机器学习中用到的高等数学知识-8. 图论 (Graph Theory)
人工智能·机器学习·图论
曼城周杰伦3 小时前
自然语言处理:第六十三章 阿里Qwen2 & 2.5系列
人工智能·阿里云·语言模型·自然语言处理·chatgpt·nlp·gpt-3
余炜yw4 小时前
【LSTM实战】跨越千年,赋诗成文:用LSTM重现唐诗的韵律与情感
人工智能·rnn·深度学习
莫叫石榴姐4 小时前
数据科学与SQL:组距分组分析 | 区间分布问题
大数据·人工智能·sql·深度学习·算法·机器学习·数据挖掘
如若1235 小时前
利用 `OpenCV` 和 `Matplotlib` 库进行图像读取、颜色空间转换、掩膜创建、颜色替换
人工智能·opencv·matplotlib
YRr YRr5 小时前
深度学习:神经网络中的损失函数的使用
人工智能·深度学习·神经网络
ChaseDreamRunner5 小时前
迁移学习理论与应用
人工智能·机器学习·迁移学习
Guofu_Liao5 小时前
大语言模型---梯度的简单介绍;梯度的定义;梯度计算的方法
人工智能·语言模型·矩阵·llama