diff --git a/2024/01/30/dl_summary/index.html b/2024/01/30/dl_summary/index.html index 4f288e2..2fcc46c 100644 --- a/2024/01/30/dl_summary/index.html +++ b/2024/01/30/dl_summary/index.html @@ -25,7 +25,7 @@ - + @@ -211,7 +211,7 @@
@@ -222,7 +222,7 @@ - 96 mins + 144 mins @@ -435,6 +435,46 @@1 |
|
1 |
|
1 |
|
1 |
|
设计和实现一个基于强化学习的自动驾驶决策规划系统是一个复杂而且需要深入思考的任务。下面是一个基本的设计和实现方案:
+以上是一个基本的设计和实现方案,实际项目中可能还涉及到更多的细节和挑战,如安全性保障、仿真环境与真实环境的一致性等问题。因此,在实施过程中需要综合考虑各种因素,以确保系统的稳定性和安全性。
diff --git a/local-search.xml b/local-search.xml index 441abe6..5a9c48b 100644 --- a/local-search.xml +++ b/local-search.xml @@ -64,7 +64,7 @@深度学习八股文,这里将会收集深度学习中的基本概念和常见的问题
L2范数
L1L2范数
Transformer为什么用多头
Transformer里的LN
batch和minibatch
优化器
BN
神经网络权重初始化
bert模型细节
为什么Bert三个embedding可以相加
LLAMA2结构
旋转位置嵌入
Qlora
RLHF
[https://zhuanlan.zhihu.com/p/599016986](https://zhuanlan.zhihu.com/p/599016986)
线性回归解决的是回归问题,逻辑回归相当于是线性回归的基础上,来解决分类问题。
线性回归(Linear Regression) \[\begin{aligned}&f_{w, b}(x)=\sum_i w_i x_i+b\\\end{aligned}\] 逻辑回归(Logistic Regression) $$\[\begin{aligned}&f_{w, b}(x)=\sigma\left(\sum_i w_i x_i+b\right)\end{aligned}\]$$ 逻辑回归可以理解为在线性回归后加了一个 sigmoid
函数。将线性回归变成一个0~1
输出的分类问题。逻辑回归本质上是一个线性回归模型,因为除去sigmoid
映射函数关系,其他的步骤,算法都是线性回归的。可以说,逻辑回归都是以线性回归为理论支持的,只不过逻辑回归可以轻松解决0/1
分类问题。
因为参数越小代表模型越简单,越是复杂的模型,越是尝试对所有样本进行拟合,包括异常点。这就会造成在较小的区间中产生较大的波动,这个较大的波动也会反映在这个区间的导数比较大。只有越大的参数才可能产生较大的导数。因此参数越小,模型就越简单。
参数的稀疏,在一定程度上实现了特征的选择。一般而言,大部分特征对模型是没有贡献的。这些没有用的特征虽然可以减少训练集上的误差,但是对测试集的样本,反而会产生干扰。稀疏参数的引入,可以将那些无用的特征的权重置为0
为什么batch-size小,学习率取的大会发生nan?学习率较高的情况下,直接影响到每次更新值的程度比较大,走的步伐因此也会大起来。如下图,过大的学习率会导致无法顺利地到达最低点,稍有不慎就会跳出可控制区域,此时我们将要面对的就是损失成倍增大(跨量级)
优化器optimizer
和损失函数loss function
的区别:
残差结构设计思想:残差网络的本质也是解决梯度消失/爆炸的问题,只不过是在网络结构层面的改变残差网络的出现解决了构建深层神经网络时网络退化即梯度消失/爆炸的问题。残差结构主要设计有两个,快捷连接(shortcutconnection)和恒等映射(identitymapping),快捷连接使得残差变得可能,而恒等映射使得网络变深,恒等映射主要有两个:跳跃连接和激活函数
Adam与SGD的区别
SGD缺点是其更新方向完全依赖于当前batch计算出的梯度,因而十分不稳定。
Adam的优点主要在于:
但是Adam也有其自身问题:可能会对前期出现的特征过拟合,后期才出现的特征很难纠正前期的拟合效果。二者似乎都没法很好避免局部最优问题。
softmax如何防止指数上溢
在计算softmax函数时,指数上溢是一个常见的问题,特别是当输入的数值非常大时,指数函数的计算结果可能会溢出。为了解决这个问题,可以采取以下几种方法:
数值稳定性技巧:为了避免指数函数的溢出,可以将输入的数值减去一个常数,使得输入相对较小,从而减少指数函数的值。通常,可以通过找到输入向量中的最大值,并将所有元素减去这个最大值来实现数值稳定性。
这样做可以保持相对稳定,防止指数函数的溢出。
利用性质:softmax函数的分子和分母同时除以一个相同的常数并不会改变函数的值。因此,我们可以在计算softmax时,将所有输入向量的值都减去向量中的最大值,然后进行softmax计算。
以上两种方法都可以有效地避免指数上溢的问题,并保持softmax函数的数值稳定性。在实际应用中,通常会使用这些技巧来计算softmax函数,以确保模型的稳定性和数值精度。
训练过程中发现loss快速增大应该从哪些方面考虑?
model.eval vs和torch.no_grad区别
Dropout和Batch norm能否一起使用?
可以,但是只能将Dropout放在Batchnorm之后使用。因为Dropout训练时会改变输入X的方差,从而影响Batchnorm训练过程中统计的滑动方差值;而测试时没有Dropout,输入X的方差和训练时不一致,这就导致Batchnorm测试时期望的方差和训练时统计的有偏差。
梯度消失和梯度爆炸
梯度消失的原因和解决办法
(1)隐藏层的层数过多
反向传播求梯度时的链式求导法则,某部分梯度小于1,则多层连乘后出现梯度消失
(2)采用了不合适的激活函数
如sigmoid函数的最大梯度为1/4,这意味着隐藏层每一层的梯度均小于1(权值小于1时),出现梯度消失。
解决方法:1、relu激活函数,使导数衡为1 2、batch norm3、残差结构
梯度爆炸的原因和解决办法
(1)隐藏层的层数过多,某部分梯度大于1,则多层连乘后,梯度呈指数增长,产生梯度爆炸。
(2)权重初始值太大,求导时会乘上权重
解决方法:1、梯度裁剪 2、权重L1/L2正则化 3、残差结构 4、batchnorm
Batch Normalization(Batch Norm):缺点:在处理序列数据(如文本)时,BatchNorm可能不会表现得很好,因为序列数据通常长度不一,并且一次训练的Batch中的句子的长度可能会有很大的差异;此外,BatchNorm对于Batch大小也非常敏感。对于较小的Batch大小,BatchNorm可能会表现得不好,因为每个Batch的统计特性可能会有较大的波动。
Layer Normalization(Layer Norm):优点:LayerNorm是对每个样本进行归一化,因此它对Batch大小不敏感,这使得它在处理序列数据时表现得更好;另外,LayerNorm在处理不同长度的序列时也更为灵活。
Instance Normalization(Instance Norm):优点:InstanceNorm是对每个样本的每个特征进行归一化,因此它可以捕捉到更多的细节信息。InstanceNorm在某些任务,如风格迁移,中表现得很好,因为在这些任务中,细节信息很重要。缺点:InstanceNorm可能会过度强调细节信息,忽视了更宏观的信息。此外,InstanceNorm的计算成本相比Batch Norm和Layer Norm更高。
Group Normalization(Group Norm):优点:Group Norm是Batch Norm和InstanceNorm的折中方案,它在Batch的一个子集(即组)上进行归一化。这使得GroupNorm既可以捕捉到Batch的统计特性,又可以捕捉到样本的细节信息。此外,GroupNorm对Batch大小也不敏感。 缺点:GroupNorm的性能取决于组的大小,需要通过实验来确定最优的组大小。此外,GroupNorm的计算成本也比Batch Norm和Layer Norm更高。
自注意力
1 |
|
多头注意力机制
1 |
|
1 |
|
1 |
|
1 |
|
深度学习八股文,这里将会收集深度学习中的基本概念和常见的问题
L2范数
L1L2范数
Transformer为什么用多头
Transformer里的LN
batch和minibatch
优化器
BN
神经网络权重初始化
bert模型细节
为什么Bert三个embedding可以相加
LLAMA2结构
旋转位置嵌入
Qlora
RLHF
[https://zhuanlan.zhihu.com/p/599016986](https://zhuanlan.zhihu.com/p/599016986)
线性回归解决的是回归问题,逻辑回归相当于是线性回归的基础上,来解决分类问题。
线性回归(Linear Regression) \[\begin{aligned}&f_{w, b}(x)=\sum_i w_i x_i+b\\\end{aligned}\] 逻辑回归(Logistic Regression) $$\[\begin{aligned}&f_{w, b}(x)=\sigma\left(\sum_i w_i x_i+b\right)\end{aligned}\]$$ 逻辑回归可以理解为在线性回归后加了一个 sigmoid
函数。将线性回归变成一个0~1
输出的分类问题。逻辑回归本质上是一个线性回归模型,因为除去sigmoid
映射函数关系,其他的步骤,算法都是线性回归的。可以说,逻辑回归都是以线性回归为理论支持的,只不过逻辑回归可以轻松解决0/1
分类问题。
因为参数越小代表模型越简单,越是复杂的模型,越是尝试对所有样本进行拟合,包括异常点。这就会造成在较小的区间中产生较大的波动,这个较大的波动也会反映在这个区间的导数比较大。只有越大的参数才可能产生较大的导数。因此参数越小,模型就越简单。
参数的稀疏,在一定程度上实现了特征的选择。一般而言,大部分特征对模型是没有贡献的。这些没有用的特征虽然可以减少训练集上的误差,但是对测试集的样本,反而会产生干扰。稀疏参数的引入,可以将那些无用的特征的权重置为0
为什么batch-size小,学习率取的大会发生nan?学习率较高的情况下,直接影响到每次更新值的程度比较大,走的步伐因此也会大起来。如下图,过大的学习率会导致无法顺利地到达最低点,稍有不慎就会跳出可控制区域,此时我们将要面对的就是损失成倍增大(跨量级)
优化器optimizer
和损失函数loss function
的区别:
残差结构设计思想:残差网络的本质也是解决梯度消失/爆炸的问题,只不过是在网络结构层面的改变残差网络的出现解决了构建深层神经网络时网络退化即梯度消失/爆炸的问题。残差结构主要设计有两个,快捷连接(shortcutconnection)和恒等映射(identitymapping),快捷连接使得残差变得可能,而恒等映射使得网络变深,恒等映射主要有两个:跳跃连接和激活函数
Adam与SGD的区别
SGD缺点是其更新方向完全依赖于当前batch计算出的梯度,因而十分不稳定。
Adam的优点主要在于:
但是Adam也有其自身问题:可能会对前期出现的特征过拟合,后期才出现的特征很难纠正前期的拟合效果。二者似乎都没法很好避免局部最优问题。
softmax如何防止指数上溢
在计算softmax函数时,指数上溢是一个常见的问题,特别是当输入的数值非常大时,指数函数的计算结果可能会溢出。为了解决这个问题,可以采取以下几种方法:
数值稳定性技巧:为了避免指数函数的溢出,可以将输入的数值减去一个常数,使得输入相对较小,从而减少指数函数的值。通常,可以通过找到输入向量中的最大值,并将所有元素减去这个最大值来实现数值稳定性。
这样做可以保持相对稳定,防止指数函数的溢出。
利用性质:softmax函数的分子和分母同时除以一个相同的常数并不会改变函数的值。因此,我们可以在计算softmax时,将所有输入向量的值都减去向量中的最大值,然后进行softmax计算。
以上两种方法都可以有效地避免指数上溢的问题,并保持softmax函数的数值稳定性。在实际应用中,通常会使用这些技巧来计算softmax函数,以确保模型的稳定性和数值精度。
训练过程中发现loss快速增大应该从哪些方面考虑?
model.eval vs和torch.no_grad区别
Dropout和Batch norm能否一起使用?
可以,但是只能将Dropout放在Batchnorm之后使用。因为Dropout训练时会改变输入X的方差,从而影响Batchnorm训练过程中统计的滑动方差值;而测试时没有Dropout,输入X的方差和训练时不一致,这就导致Batchnorm测试时期望的方差和训练时统计的有偏差。
梯度消失和梯度爆炸
梯度消失的原因和解决办法
(1)隐藏层的层数过多
反向传播求梯度时的链式求导法则,某部分梯度小于1,则多层连乘后出现梯度消失
(2)采用了不合适的激活函数
如sigmoid函数的最大梯度为1/4,这意味着隐藏层每一层的梯度均小于1(权值小于1时),出现梯度消失。
解决方法:1、relu激活函数,使导数衡为1 2、batch norm3、残差结构
梯度爆炸的原因和解决办法
(1)隐藏层的层数过多,某部分梯度大于1,则多层连乘后,梯度呈指数增长,产生梯度爆炸。
(2)权重初始值太大,求导时会乘上权重
解决方法:1、梯度裁剪 2、权重L1/L2正则化 3、残差结构 4、batchnorm
Batch Normalization(Batch Norm):缺点:在处理序列数据(如文本)时,BatchNorm可能不会表现得很好,因为序列数据通常长度不一,并且一次训练的Batch中的句子的长度可能会有很大的差异;此外,BatchNorm对于Batch大小也非常敏感。对于较小的Batch大小,BatchNorm可能会表现得不好,因为每个Batch的统计特性可能会有较大的波动。
Layer Normalization(Layer Norm):优点:LayerNorm是对每个样本进行归一化,因此它对Batch大小不敏感,这使得它在处理序列数据时表现得更好;另外,LayerNorm在处理不同长度的序列时也更为灵活。
Instance Normalization(Instance Norm):优点:InstanceNorm是对每个样本的每个特征进行归一化,因此它可以捕捉到更多的细节信息。InstanceNorm在某些任务,如风格迁移,中表现得很好,因为在这些任务中,细节信息很重要。缺点:InstanceNorm可能会过度强调细节信息,忽视了更宏观的信息。此外,InstanceNorm的计算成本相比Batch Norm和Layer Norm更高。
Group Normalization(Group Norm):优点:Group Norm是Batch Norm和InstanceNorm的折中方案,它在Batch的一个子集(即组)上进行归一化。这使得GroupNorm既可以捕捉到Batch的统计特性,又可以捕捉到样本的细节信息。此外,GroupNorm对Batch大小也不敏感。 缺点:GroupNorm的性能取决于组的大小,需要通过实验来确定最优的组大小。此外,GroupNorm的计算成本也比Batch Norm和Layer Norm更高。
自注意力
1 |
|
多头注意力机制
1 |
|
1 |
|
1 |
|
1 |
|
1 |
|
1 |
|
设计和实现一个基于强化学习的自动驾驶决策规划系统是一个复杂而且需要深入思考的任务。下面是一个基本的设计和实现方案:
以上是一个基本的设计和实现方案,实际项目中可能还涉及到更多的细节和挑战,如安全性保障、仿真环境与真实环境的一致性等问题。因此,在实施过程中需要综合考虑各种因素,以确保系统的稳定性和安全性。
]]>
|
|
|
|
设计和实现一个基于强化学习的自动驾驶决策规划系统是一个复杂而且需要深入思考的任务。下面是一个基本的设计和实现方案:
+以上是一个基本的设计和实现方案,实际项目中可能还涉及到更多的细节和挑战,如安全性保障、仿真环境与真实环境的一致性等问题。因此,在实施过程中需要综合考虑各种因素,以确保系统的稳定性和安全性。
]]>