目录
step2: define loss from training data
1.3.1 ReLU (Rectified Linear Unit)
1.3.3 Tanh (Hyperbolic Tangent)
0. task2 任务 :1.2 了解线性模型
对应《深度学习详解》目录
第一章 机器学习基础
1.2 线性模型
1. 线性模型
观察长期数据,有周期性增加,可以增加特征,模拟周期性循环。
7天循环模型: (前七天的数据都纳入考虑,不是只考虑前第七天的值)
表格理解:b的最优值50;w则是不同j值下的不同最优值;
前一天数据j=1,y=b+w1x1,权重w1最优值0.79;
前三天j=3,权重0.12;……;每一个特征xj都有一个对应的最优权重wj;
w正值正相关,负值负相关。
七天数据得出一个损失L:2017-2020 L=0.38k(已知数据损失)2021 L'=0.49k(未知数据损失)
28天循环模型:
56天循环模型:
结论:到一定天数后,损失无法再降低
线性模型 linear model :这些模型都是 权重w×特征x+偏置b
1.1 分段线性曲线
model bias :模型(形式上)的偏差(比如:分段线性不能用单一线性描述)
结论:只要有足够多的蓝色函数相加,就可以变成任何连续的曲线
step1: function with unknown
这里直接写出蓝色函数(Hard sigmoid)很难,选择用sigmoid函数逼近(调整参数c,b,w)
sigmoid函数:
c——高度height,b——偏移 shift,w——斜率 slopes
红色函数: [y=b+wx的升级]
纳入j天的函数: [
的升级]
详细解析:
①j—j天前的数据; i—一个蓝色函数
②
i=1,j=123
i=2,j=123
i=3,j=123
r = b + W x
③得到曲线
,
,
, 化简表达:
④最终形成
其中
;
x—特征,W, b, cT, b—未知参数
step2: define loss from training data
定义损失L(θ): 把所有未知数的每一行/列 组合(叠拼)形成向量θ
(这里的损失L还能如何判断损失是小还是大?可以)
依旧 : 这里e仍然是计算出的
和真实的
的误差
step3:optimization
对于损失L(θ),视作
找到最优的使得L最小:
①计算L对每一个参数的微分,
记为
② 依旧更新每一个参数,
③结束条件依旧是:1)完成指定步数;2)计算到梯度为0向量(微分=0)
④实际计算时,会把L的N行/列数据随机分配成批量 batch,每个批量里有B行/列数据,一个批量统一计算一个损失L1和g,用来更新 update θ1,把所有的批量都算过一次(更新过一次θ),算作一个回合 epoch 。
批量的大小(batch size)是人为设定的,也是一个超参数 hyperparameter。
1.2 模型变形
①蓝色函数(Hard sigmoid)可以看做两个修正线性单元 Rectified Linear Unit ReLu 的加和
上小节的结论
变形成
激活函数 activation function : sigmoid或ReLU [ReLU是更好的选择]
②
其中, x可以视作一个深层的a,
形成
叠加的层数是人为设定的,也是一个超参数 hyperparameter。
③取一个fancy的名字
神经元 neuron :sigmoid或ReLU 神经网络 neural network : 整套神经元
隐藏层 hidden layer :一层 深度学习 deep learning : 整套技术
过拟合 overfitting :增加层数时,在已知数据上的误差还在减少,但在未知数据上的误差开始反弹变大。
1.3 关于激活函数
激活函数主要作用在于引入非线性因素,因为仅靠线性函数堆叠起来的模型无法学习和表示复杂的模式。
1.3.1 ReLU (Rectified Linear Unit)
①定义:
②优点:
- 计算简单,速度快。
- 在大多数情况下可以有效地缓解梯度消失问题。
- 能够提供稀疏激活,有助于减少模型复杂度。
③适用范围:
- 深度网络:特别适合深层神经网络,因为可以有效避免梯度消失。
- 计算机视觉:在图像识别任务中表现优异,如卷积神经网络(CNNs)中广泛使用。
- 语音识别:在一些语音识别任务中也有不错的表现。
④局限性:
- “死亡ReLU”问题:如果输入为负,则梯度为0,导致神经元永久失活。
- 输出非零均值:可能需要对权重初始化和偏置项进行特殊处理以保持网络的稳定性。
1.3.2 Sigmoid
①定义:
②优点:
- 输出在(0, 1)之间,适用于二分类问题作为输出层。
- 激活函数具有光滑性,易于求导。
③适用范围:
- 二分类任务:特别适合用作输出层,用于生成概率值。
- 浅层网络:在较浅的网络中,梯度消失问题不严重时可以使用。
④局限性:
- 梯度消失:随着网络加深,梯度消失问题严重。
- 计算成本较高:指数运算相对耗时。
1.3.3 Tanh (Hyperbolic Tangent)
①定义:
②优点:
- 输出在(-1, 1)之间,有助于数据归一化。
- 光滑且连续,适合梯度下降优化。
③适用范围:
- 中间层:常用于隐藏层中,特别是在需要输出值中心化的任务中。
- RNNs和LSTMs:在循环神经网络(RNNs)和长短期记忆网络(LSTMs)中用于门控机制。
④局限性:
- 梯度消失:与Sigmoid类似,随着网络深度增加,梯度消失问题明显。
- 计算成本高:涉及指数运算。
1.3.4 Softmax
①定义:用于多分类问题,将输入向量转换为概率分布。
②优点:
- 输出为概率分布,适用于多分类任务。
- 提供了一种自然的方式将多个输出节点转换为概率。
③适用范围:
- 多分类任务:特别适合于最后一层,用于生成类别的概率分布。
- 独热编码:与独热编码(one-hot encoding)标签一起使用。
④局限性:
- 只适用于输出层。
- 计算成本较高,特别是当类别数目很大时。
2. 知识竞答
2.1 0828
Q1: 单选题 :下面哪种激活函数可以用来逼近Hard Sigmoid函数
A) ReLU
B) Sigmoid
C) tanh
D) softmax
E) ELU
B 用sigmoid 模拟hard sigmoid
参考答案: B
Q2: 不定项选择题-在深度学习中,我们经常遇到过拟合现象。以下哪些方法可以用来解决过拟合现象?
A) 增加训练数据量
B) 减少模型的参数数量
C) 增加模型的层数
D) 使用正则化技术
E) 使用Dropout技术
ABDE A-加数据降低过拟合风险;B-降低模型复杂度;C-错误,加剧过拟合;D-向损失函数添加惩罚项,限制过拟合;E-随机丢弃部分神经元输出,减少过拟合
正则化技术通过向模型的损失函数中添加一个正则项(或惩罚项)来实现,这个正则项会对模型的复杂度进行惩罚,从而限制模型在训练数据上的过度拟合。
Dropout技术在训练过程中随机丢弃一部分神经元的输出,这可以降低模型对特定神经元输出的依赖,从而减少过拟合。
参考答案: ABDE
Q3: 单选题—在预测观看人次的模型中,考虑前 7 天的数据而非前 1 天的数据有什么好处?
A. 可以降低模型的复杂度
B. 可以减少训练时间
C. 可以捕捉数据的周期性变化,降低损失
D. 可以提高模型的非线性能力
E. 可以避免过拟合
C,A-增加复杂度,B-增加训练时间 C √ D-增加历史数据本身并不直接提高模型的线性能力,但能帮助模型更好地拟合数据中的线性关系 E-no 加剧
参考答案: C
2.2 0829
Q1: 简答题-教程中提到,模型在训练数据上的性能通常好于在测试数据上的性能。这种现象为什么会发生?
参考答案:这种现象发生是因为模型直接在训练数据上优化,不可避免会学习到一些训练数据特有的模式,包括可能的噪声。测试数据代表了模型未见过的数据,更能反映模型的泛化能力。在实际应用中,应该更关注模型在测试数据上的表现。
Q2: 简答题-在教程的视频观看次数预测例子中,我们看到了如何从考虑前1天扩展到考虑前7天、28天甚至56天。这种扩展的意义是什么?教程中显示,从28天增加到56天时,在未见过的数据上的性能并没有显著提升,为什么考虑更多天数不一定总能提高预测准确性?
参考答案:扩展考虑的天数允许模型捕捉更长期的模式,如周期性变化。然而,考虑更多天数并不总是能提高准确性,因为:1) 可能引入无关或噪声信息;2) 增加了模型复杂度,可能导致过拟合;3) 很久以前的数据可能对当前预测不再相关。
Q3: 简答题-在视频观看人数预测模型中,为什么使用100个ReLU比使用10个ReLU效果更好?这种改进是否总是有效的?
参考答案:每一层ReLU都可以被视为对数据的一次非线性变换,使用更多的ReLU可以增加模型的复杂度,使其能够捕捉更复杂的非线性关系。100个ReLU相比于10个ReLU,可以学习更细致的模式,有更强的表达能力。然而,这种改进并非总是有效,因为过多的ReLU可能导致过拟合,特别是在数据量较小的情况下。此外,还需要考虑计算资源和推理时间的限制。应该在模型性能不再显著提升,或者验证集性能开始下降时停止增加复杂度。
2.3 0830
Q1:在教程中,我们看到了如何使用ReLU函数构建深层网络。为什么要在每个线性变换后都加入非线性激活函数?如果去掉这些激活函数会发生什么?
参考答案:非线性激活函数(如ReLU)在每个线性变换后引入非线性变换,使得模型能够学习复杂的非线性关系。如果去掉这些激活函数,多层线性变换可以简化为单个线性变换,这会大大降低模型的表达能力,使其无法捕捉复杂的模式。
Q2:在改进模型时,为什么使用ReLU函数比使用Sigmoid函数效果更好?这可能与什么因素有关?
Sigmoid函数会让误差变得越来越小,导致“梯度消失”现象,减慢训练速度。ReLU函数偏向于稀疏激活,大多数神经元输出为0,可以更快获得有用的特征。
参考答案:ReLU函数比Sigmoid函数计算更简单,能缓解梯度消失问题,允许模型学习更复杂的非线性关系。在视频观看人数预测这种可能存在突然变化的场景中,ReLU的非饱和性可能更有利于捕捉数据中的急剧变化。
与Sigmoid激活函数相比,ReLU有几个明显的优点。首先,ReLU在处理正数时非常简单,它直接将正数传递出去,这使得计算更高效。相比之下,Sigmoid函数在处理正数时会变得非常平缓,导致梯度变得非常小,这使得训练过程变得缓慢。这种平缓的性质还可能导致训练过程中会出现梯度消失的问题,即模型在训练时更新参数的速度变得非常慢。
其次,ReLU函数的计算过程非常简单,只需检查输入是否大于零,这使得模型训练速度更快。而Sigmoid函数需要进行复杂的数学运算,这会增加计算的复杂性和时间。
Q3:在使用梯度下降法优化模型时,为什么使用小批量而不是整个数据集?这种方法有什么优势和劣势?
优势:小批量数据减少对计算能力的要求。 劣势:小批量的大小是一个超参数,受人为设定影响,设置不合适会导致计算成本增加;数据太小可能会过拟合。
参考答案:
优势:
小批量更新可以充分利用现代计算硬件(如GPU)的并行处理能力,而且不需要等待整个数据集的梯度计算完成就可以更新参数,从而加快训练速度。其次,处理整个数据集可能需要大量内存,而小批量可以在有限的内存中进行训练,使得训练过程更加可行。另外还引入了一定的随机性,有助于逃离局部最小值。
劣势:
由于小批量梯度下降每次更新都是基于一个子集的估计,这可能导致收敛路径不如全批量梯度下降平滑,有时可能会出现震荡或不稳定。此外,选择小批量的大小是一个需要经验的过程,不同的大小可能对训练过程的效率和模型性能产生影响。过小的批量可能导致梯度估计不准确,过大的批量可能导致内存不足或训练速度慢。