1. ML环境配置
- Anaconda、Jupyter、Pytorch、TensorFlow
-
链接: download directly and use bash to install https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/?C=M&O=D
-
换源清华操作
#清华镜像下载较快 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple +包名
2. 基础学习
2.1 算法研究
- 神经网络commen
- 链接: neural Network学习网站
- 反向梯度传播解释:反向梯度传播解释1
- 反向梯度传播解释:反向梯度传播解释2
- 神经网络之RNN
- 神经网络之Transformer
- 参数调优
系统安装好文
https://zhuanlan.zhihu.com/p/37772825 u盘
https://blog.csdn.net/lele_god/article/details/109046860 引导
部分概念学习笔记
正则化
https://zhuanlan.zhihu.com/p/376282535
卷积 池化
https://zhuanlan.zhihu.com/p/552595660
网络术语
Backbone(骨干网络):
骨干网络是整个神经网络的基础部分,负责提取输入数据的特征。它通常由卷积层组成,能够有效地捕捉图像中的空间特征。骨干网络的选择对整个模型的性能有很大的影响。一些流行的骨干网络包括VGG、ResNet、Inception、MobileNet等。
Neck(颈部):
颈部是指连接骨干网络和头部(输出层)的中间部分。颈部的作用是进一步提取和整合骨干网络提取的特征,以便更好地适应具体任务的需求。在一些目标检测的模型中,颈部通常包括降采样(downsampling)和上采样(upsampling)等操作,以调整特征图的大小和分辨率。
Head(头部):
头部是网络的顶部部分,负责生成最终的输出。在图像分类任务中,头部可能是一个全连接层,输出类别的概率分布。在目标检测任务中,头部通常包括位置回归(bounding box regression)和类别分类的子网络,用于识别和定位目标物体。
Encoder-Decoder结构:
这是一种常见的神经网络结构,用于处理序列到序列的任务,如机器翻译。Encoder负责将输入序列编码成中间表示,而Decoder则根据这个表示生成输出序列。这种结构与backbone和head的概念有一些相似之处。
Skip Connections(跳跃连接):
跳跃连接是指在网络中跳过一些层的连接,将低层的特征直接传递给高层。这种连接有助于缓解梯度消失问题,并有助于更好地传递底层的信息。ResNet中的残差块是一个常见的例子。
Normalization Layers(归一化层):
归一化层如批归一化(Batch Normalization)和层归一化(Layer Normalization)等有助于网络的训练稳定性。它们可以看作是在网络中添加的一种正规化模块。有助于提高网络的训练稳定性,加速收敛。
卷积层(Convolutional Layer):
卷积层是深度学习中常用的层,用于检测输入数据中的特征。它通过卷积操作在输入数据上滑动卷积核来提取特征。卷积操作允许网络有效地捕获局部特征和空间结构。
池化层(Pooling Layer):
池化层用于减小特征图的空间维度,通过取区域内的最大值(最大池化)或平均值(平均池化)来降低计算量。它有助于保留主要特征并减少对输入的敏感度。
全连接层(Fully Connected Layer):
全连接层将输入的每个节点连接到输出的每个节点,形成完全连接的结构。在神经网络的最后一层通常是全连接层,用于输出最终的预测或分类结果。
激活函数层(Activation Function Layer):
激活函数层引入非线性性,使得神经网络能够学习更复杂的函数。常见的激活函数包括ReLU(Rectified Linear Unit)、Sigmoid和Tanh等。
嵌入层(Embedding Layer):
嵌入层通常用于将离散的类别数据(如单词或用户ID)映射到连续的向量空间。它在自然语言处理和推荐系统等任务中经常使用。
循环神经网络层(Recurrent Neural Network Layer):
循环神经网络(RNN)层用于处理序列数据,具有记忆单元,可以捕捉序列中的上下文信息。长短时记忆网络(LSTM)和门控循环单元(GRU)是常见的RNN变体。
残差块(Residual Block):
残差块是ResNet中的基本单元,引入了跳跃连接,允许梯度更容易地传播。它有助于训练非常深的神经网络。
Dropout层:
Dropout层是一种正则化技术,用于减少过拟合。它在训练过程中随机丢弃部分神经元,以减少神经网络的耦合性,提高泛化能力。
自注意力层(Self-Attention Layer):
自注意力机制允许模型在处理序列数据时聚焦于不同位置的信息。Transformer模型中广泛应用了自注意力层。
条件层(Conditional Layer):
条件层根据额外的输入信息进行计算。条件层允许模型根据条件动态调整其行为,例如条件生成模型中的条件变量。
降采样层(Downsampling Layer)和上采样层(Upsampling Layer):
降采样层用于减少特征图的尺寸,通常使用池化操作。上采样层则用于增加特征图的尺寸,通常使用插值或反卷积操作。
残差连接层(Residual Connection Layer):
类似于残差块中的跳跃连接,残差连接层将输入直接与输出相加,有助于减少梯度消失问题。
胶囊层(Capsule Layer):
胶囊网络是一种提出来代替传统卷积网络的结构,它试图更有效地处理空间关系和层级特征。
交叉通道连接层(Cross-channel Connection Layer):
这种层用于引入不同通道之间的关联信息,帮助网络更好地理解特征之间的相关性。
深度可分离卷积层(Depthwise Separable Convolution Layer):
类似于MobileNet中使用的结构,深度可分离卷积将标准卷积分为深度卷积和逐点卷积,以减少计算量。
主要的backbone
1.VGG(Visual Geometry Group):
概念:
VGG是由牛津大学视觉几何组(Visual Geometry Group)提出的一种卷积神经网络结构。它的主要特点是将深度网络的设计模块化,采用了相对较小的卷积核(3x3),并使用了堆叠的卷积层和池化层。
优缺点:
优点:简单清晰,易于理解和实现。由于小卷积核的使用,具有较小的参数量。
缺点:相比于后来的一些网络,VGG的模型参数较多,训练和推理速度较慢。
2. ResNet(Residual Network):
概念:
ResNet是由微软研究院提出的,通过引入残差块解决了深度网络训练过程中的梯度消失问题。残差块中包含了跳跃连接(skip connection),允许直接将输入信息传递到网络的后面层,从而保留了更多的原始信息。
优缺点:
优点:有效解决了深层网络的梯度消失问题,允许训练更深的网络。在大规模图像分类任务中取得了显著的性能提升。
缺点:相对于一些轻量级网络,ResNet的模型参数较多,可能需要更多的计算资源。
3. Inception(GoogLeNet):
概念:
Inception是由Google提出的,其核心思想是在同一层网络中使用不同大小的卷积核,以便同时捕捉不同尺度的特征。Inception模块包括1x1、3x3、5x5卷积以及最大池化,这些操作并行进行,最后将它们的输出连接在一起。
优缺点:
优点:通过不同大小的卷积核可以更全面地捕捉图像特征。在一些图像分类任务中取得了很好的性能。
缺点:模型相对复杂,计算量较大,可能不适用于一些轻量级的应用。
4. MobileNet:
概念:
MobileNet是为移动设备和嵌入式设备设计的轻量级卷积神经网络。它使用深度可分离卷积(Depthwise Separable Convolution),将标准卷积拆分为深度卷积和逐点卷积,从而减少参数量和计算量。
优缺点:
优点:轻量级设计适用于移动设备和嵌入式系统,速度较快,模型较小。
缺点:相对于一些更深、更复杂的网络,MobileNet可能在一些复杂任务上性能稍逊。
归一和标准化
标准化和归一化的区别是什么
标准化(Standardization):
目标: 将数据转换为均值为0,标准差为1的分布,使得数据呈现出标准正态分布。
操作: 对于每个特征,计算其均值(( \mu ))和标准差(( \sigma )),然后使用以下公式进行标准化:
[ x_{\text{standardized}} = \frac{x - \mu}{\sigma} ]
归一化(Normalization):
目标: 将数据缩放到一个特定的范围,通常是[0, 1]或者[-1, 1]。
操作: 对于每个特征,计算其范围(最大值 ( \max ) 和最小值 ( \min )),然后使用以下公式进行归一化:
[ x_{\text{normalized}} = \frac{x - \min}{\max - \min} ]
总体而言,标准化更关注于将数据转换为均值为0、标准差为1的标准正态分布,而归一化更关注于将数据缩放到一个特定的范围。在实际应用中,选择使用标准化还是归一化通常取决于具体的任务需求和算法模型。例如,对于涉及距离度量的算法(如K近邻算法),标准化可能更合适,而对于神经网络等算法,归一化可能更为常见。
对所有数据的同一个特征标准化或归一化的操作叫什么,对一个样本的所有特征标准化或归一化的操作叫什么
对所有数据的同一个特征进行标准化或归一化的操作通常称为全局特征标准化或全局特征归一化。在这种情况下,对于每个特征,计算整个数据集的均值和标准差(或范围),然后对所有样本的该特征进行标准化或归一化。
对一个样本的所有特征进行标准化或归一化的操作通常称为样本内特征标准化或样本内特征归一化。在这种情况下,对于每个样本,计算该样本所有特征的均值和标准差(或范围),然后对该样本的所有特征进行标准化或归一化。
这两种操作有不同的应用场景。全局特征标准化通常用于确保整个数据集中的每个特征都具有相似的尺度,以便更容易训练模型。样本内特征标准化则更关注于每个样本内部的特征关系,通常用于序列数据等情况。选择使用哪种取决于具体的数据和任务需求。
层归一化 批次归一化 还有标准化有什么区别 用一个具体例子来说明
层归一化(Layer Normalization)、批次归一化(Batch Normalization)和标准化(Normalization)都是用于神经网络中的正则化技术,它们有一些区别。下面是它们的简要区别,以及一个具体例子来说明:
批次归一化(Batch Normalization):
在每个训练小批次上计算均值和方差,然后对该批次的每个样本进行归一化。引入了可学习的参数(缩放和偏移),以便网络可以学习更复杂的变换。
公式:[ \text{BN}(x) = \gamma \left( \frac{x - \mu}{\sqrt{\sigma^2 + \epsilon}} \right) + \beta ]
其中,(\gamma) 和 (\beta) 是可学习参数,(\mu) 和 (\sigma) 分别是均值和标准差,(\epsilon) 是一个很小的常数用于数值稳定性。
层归一化(Layer Normalization):
在每个样本上计算均值和方差,然后对该样本的每个特征进行归一化。与批次归一化不同,不依赖于小批次的统计信息。
公式:[ \text{LN}(x) = \gamma \left( \frac{x - \mu}{\sqrt{\sigma^2 + \epsilon}} \right) + \beta ]
与批次归一化类似,(\gamma) 和 (\beta) 是可学习参数,(\mu) 和 (\sigma) 分别是均值和标准差,(\epsilon) 是一个很小的常数。
标准化:
通常指的是将数据进行零均值化和单位方差化的过程,不同于批次归一化和层归一化,它通常不包含学习的参数。在神经网络中,标准化可能是指将输入数据进行零均值化和单位方差化,而不涉及归一化的操作。