机器学习入门知识点

先了解一些基本概念,如下

一、神经网络

(Neural Network)是一种受到人类神经系统启发的计算模型,用于机器学习和人工智能任务。它是一种由神经元(也称为节点或单元)组成的网络结构,这些神经元通过连接相互通信。神经网络的设计灵感来源于人脑的结构,其中神经元通过突触相互连接,通过电信号进行信息传递。

在神经网络中,通常有三种类型的层:

  1. 输入层(Input Layer): 接受原始数据的层,每个输入节点对应输入数据的一个特征。

  2. 隐藏层(Hidden Layer): 中间层,用于学习输入数据的内部表示。深度神经网络有多个隐藏层。

  3. 输出层(Output Layer): 提供网络的输出,表示模型对输入数据的预测或分类。

神经网络通过学习调整连接权重,这是网络的参数,以最小化预测与实际结果之间的差异。这个过程通常称为训练,通过反向传播算法来进行。反向传播通过计算梯度(导数)来调整网络权重,以最小化损失函数。

常见的神经网络架构包括:

  • 前馈神经网络(Feedforward Neural Network): 信息在网络中只前进,不反馈。这是最基本的神经网络形式。

  • 循环神经网络(Recurrent Neural Network,RNN): 具有循环连接,可以处理序列数据,具有一定的记忆性。

  • 卷积神经网络(Convolutional Neural Network,CNN): 主要用于图像处理,通过卷积操作提取图像特征。

  • 深度神经网络(Deep Neural Network,DNN): 具有多个隐藏层的神经网络。深度学习通过使用深度神经网络来学习复杂的表示。

神经网络已经在各种领域取得了显著的成功,包括图像和语音识别、自然语言处理、游戏领域等。

二、深度学习

深度学习(Deep Learning)是机器学习的一个分支,它通过使用深度神经网络(具有多个隐藏层的神经网络)来学习复杂的表征和模式。深度学习的目标是让计算机系统能够模仿人脑的工作方式,从而能够自主地学习和做出决策。

以下是深度学习的一些关键概念和方面:

  1. 神经网络结构: 深度学习主要使用神经网络来进行学习和预测。这些网络可以包含多个层和大量的参数,通过层与层之间的连接来传递信息。

  2. 深度神经网络: 这是指神经网络中包含多个隐藏层的结构。深度学习强调使用深层次的结构来表示和学习数据的层次化特征。

  3. 反向传播: 是深度学习中常用的优化算法之一,用于调整神经网络中的权重,以最小化模型的预测误差。通过计算损失函数的梯度,反向传播将误差逐层传递回网络,更新权重以提高模型性能。

  4. 卷积神经网络(CNN): 主要用于图像处理任务,通过卷积操作来提取图像的空间层次特征。CNN在计算机视觉领域取得了很大成功。

  5. 循环神经网络(RNN): 适用于处理序列数据,如自然语言。RNN具有记忆性,能够捕捉数据中的时序信息。

  6. 自监督学习: 是一种无监督学习的形式,其中模型从输入数据中自动生成标签,然后使用这些标签进行学习。这在处理大量未标记数据时很有用。

  7. 迁移学习: 是一种训练模型以在一个任务上学到的知识能够应用到另一个相关任务上的方法。迁移学习可以加速在新任务上的学习过程。

深度学习在图像和语音识别、自然语言处理、推荐系统等领域取得了显著的成果。由于其强大的表征学习能力和适应性,深度学习在解决复杂问题上表现出色,成为人工智能领域的关键技术之一。

三、Batch Normalization

Batch Normalization(批归一化)是深度学习中一种用于加速神经网络训练的技术。它在训练过程中对每个小批次的输入数据进行归一化,有助于缓解深度神经网络中的内部协变量偏移问题。内部协变量偏移指的是在训练过程中,网络每一层的输入分布发生变化,导致网络训练变得困难。

Batch Normalization的主要思想是在每个小批次上对输入数据进行标准化处理,使其均值接近零,标准差接近一。这通过以下步骤实现:

  1. 对每个特征在小批次上计算均值和标准差。
  2. 对每个特征进行归一化,使其均值为零,标准差为一。
  3. 使用学习的缩放参数和平移参数对归一化后的数据进行缩放和平移,以便网络可以学习适合当前任务的变换。

Batch Normalization有以下优点:

  • 加速训练收敛: Batch Normalization有助于加速神经网络的训练收敛,允许使用更大的学习率,从而减少训练时间。

  • 减少对初始化的敏感性: Batch Normalization减轻了对神经网络初始权重的依赖,使得网络对初始化的选择不那么敏感。

  • 抑制梯度消失或爆炸: Batch Normalization有助于防止梯度消失或梯度爆炸问题,使得网络更容易训练。

  • 正则化效果: 在某种程度上,Batch Normalization具有一定的正则化效果,因为它在每个小批次上对数据进行标准化,类似于 Dropout 的正则化效果。

Batch Normalization广泛应用于深度学习的各个领域,包括图像分类、目标检测、语音识别等任务。它通常被插入到神经网络的隐藏层之后,但在激活函数之前。

除了上述的基本信息,以下是关于 Batch Normalization 的一些建议和补充信息:

  1. 训练和测试时的批归一化: 在训练过程中,Batch Normalization使用当前小批次的均值和标准差进行标准化。在测试阶段,通常使用整个训练数据集的均值和标准差进行标准化,而不是当前测试批次的统计信息。这是因为在测试时,模型通常是对整个输入进行推断。

  2. 批归一化对网络深度的影响: Batch Normalization使得更深层次的网络更容易训练,因为它减轻了梯度消失和梯度爆炸的问题。这也为设计更深层次的神经网络提供了可能性。

  3. 批归一化和正则化: Batch Normalization具有一定的正则化效果,但不应该替代传统的正则化方法(如 L2 正则化)。可以将批归一化与其他正则化技术一起使用以提高模型的泛化能力。

  4. 不同应用场景的变体: 针对不同的应用场景,有一些 Batch Normalization 的变体,如 Layer Normalization(层归一化)和 Group Normalization(组归一化)。这些变体适用于不同的网络结构和任务,可以根据具体情况选择使用。

  5. Batch Normalization的缺点: 尽管 Batch Normalization在很多情况下都表现出色,但它也有一些缺点,包括对小批次数据的敏感性、在循环神经网络(RNN)中的应用限制以及对计算图的影响。

总体而言,Batch Normalization是深度学习中一个重要的技术,它改善了神经网络的训练效果。

四、Dropout

Dropout是一种用于正则化深度神经网络的技术。它通过在训练期间随机地丢弃(将权重设为零)神经网络中的一些单元,来减少过拟合的风险。这个过程可以理解为在每次训练迭代中"丢弃"(忽略)一些神经元,从而迫使网络在训练时不过于依赖于特定的神经元,从而提高泛化能力。

具体来说,Dropout的工作方式如下:

  1. 在每次训练迭代中,以概率 �p(通常是0.5)随机选择一些神经元,并将它们的权重设为零。
  2. 训练过程中,使用了被选择的神经元的子集来进行前向传播和反向传播。
  3. 在测试阶段,不进行丢弃操作,而是使用所有的神经元。

Dropout的主要优势包括:

  • 正则化效果: Dropout具有一定的正则化效果,有助于减少过拟合,使得模型更能够泛化到未见过的数据。

  • 减少对特定神经元的依赖: 通过随机丢弃神经元,强制网络不依赖于特定的神经元,从而提高网络的稳健性。

  • 模型集成: 可以看作对许多不同的子模型进行训练和测试的一种方式,从而提高模型的性能。

使用Dropout时,需要小心一些事项:

  • 影响收敛速度: 由于Dropout导致了模型的随机性,可能会增加训练的迭代次数。

  • 不适用于所有层: Dropout通常不适用于输出层,因为输出层的每个单元对应于网络的一个类别或回归目标,过多的随机丢弃可能会导致性能下降。

  • 适当的概率选择: Dropout概率 �p 的选择通常是一个超参数,需要进行调优。

总的来说,Dropout是一种强大的正则化工具,广泛用于深度学习中,特别是在大型网络和高维数据集上。

五、relu

ReLU(Rectified Linear Unit)是深度学习中常用的激活函数之一。它是一种简单而有效的非线性激活函数,通常用于神经网络的隐藏层。

简而言之,对于正数输入,ReLU返回相同的值;对于负数输入,ReLU返回零。

ReLU的优势和特点包括:

  1. 非线性: ReLU是一个非线性激活函数,使得神经网络能够学习和表示复杂的非线性关系。

  2. 计算简单: 相比于一些其他复杂的激活函数,ReLU的计算非常简单,只需比较输入是否大于零。

  3. 缓解梯度消失问题: 相比于一些传统的激活函数(如Sigmoid和Tanh),ReLU有助于缓解梯度消失问题,因为它在正数范围内没有饱和性。

  4. 稀疏激活性: ReLU的输出在正数范围内是稀疏的,即对于小于零的输入,输出为零。这有助于提高网络的表示能力。

尽管ReLU有很多优势,但也存在一些问题,例如:

  • 死亡 ReLU 问题: 对于一些负数的输入,ReLU的输出始终是零。在训练期间,这些神经元可能会停止学习,导致所谓的“死亡 ReLU”问题。为了缓解这个问题,有一些ReLU的变种被提出,如 Leaky ReLU 和 Parametric ReLU。

  • 不适用于所有情况: 对于某些应用,ReLU可能不是最佳选择,特别是在处理包含负数输入的数据时。在这种情况下,可以考虑使用其他激活函数,如 Sigmoid 或 Tanh。

由于ReLU的简单性和有效性,它仍然是深度学习中最常用的激活函数之一。

补充一些关于ReLU的信息:

  1. Leaky ReLU: 为了解决死亡 ReLU 问题,提出了Leaky ReLU。Leaky ReLU允许小于零的输入有一个小的正数斜率,而不是将输出直接设为零。其定义为:

    �(�)={�,if �>0��,otherwisef(x)={x,αx,​if x>0otherwise​

    其中 �α 是一个小的正数。

  2. Parametric ReLU(PReLU): PReLU是Leaky ReLU的一种扩展,其中斜率是可学习的参数。这使得神经网络能够自动学习激活函数的最佳参数。

  3. Exponential Linear Unit(ELU): ELU是一种对ReLU的改进,它在负数范围内具有指数增长,有助于缓解死亡 ReLU 问题。

  4. Sigmoid 和 Tanh: 在某些场景中,尤其是在输出层用于二分类或多分类问题时,Sigmoid和Tanh激活函数仍然是常见的选择。它们将输入范围映射到(0,1)或(-1,1)之间,适用于产生概率值或标准化输出。

  5. 参数初始化: 对于使用ReLU的神经网络,合适的参数初始化非常重要。一些初始化方法,如 He初始化,被设计用于更好地适应ReLU的特性。

在实践中,选择激活函数通常依赖于具体的任务和数据。通常,ReLU及其变种是默认的选择,但在某些情况下,其他激活函数可能更合适。

六、ResNet

ResNet(Residual Networks)是由Microsoft Research的研究员提出的一种深度神经网络结构,旨在解决深度神经网络难以训练的问题。这一问题通常被称为梯度消失或梯度爆炸,它随着网络层数的增加而变得更加严重,导致网络性能停滞或下降。

ResNet引入了残差学习的概念,通过引入跳跃连接(skip connections)和残差块(residual blocks),允许网络学习残差函数,从而更容易地传播梯度。

ResNet中的基本残差块包含两个分支:一个主分支(identity mapping)和一个残差分支。这两个分支的输出相加,然后通过激活函数(通常是ReLU)进行激活。残差块的公式可以表示为:

output=activation(input+residual(input))output=activation(input+residual(input))

其中,residual(input)residual(input) 表示残差分支的输出,可以是一个或多个卷积层。

ResNet的核心思想是,通过引入残差块,网络可以轻松地学习恒等映射(identity mapping),从而能够更轻松地学习更深层次的特征。这种结构有效地解决了梯度消失和梯度爆炸的问题,使得可以训练非常深的神经网络。

ResNet的架构不仅在图像分类任务上取得了巨大成功,还被广泛用于其他计算机视觉任务,如目标检测和语义分割。ResNet的不同变种,如ResNet-18、ResNet-34、ResNet-50等,具有不同的深度和性能,可根据任务和计算资源的要求进行选择。

ResNet的引入在深度学习领域产生了深远的影响,成为训练深度神经网络的一个重要里程碑。

当谈到 ResNet 时,还有一些值得注意的补充:

  1. Bottleneck 架构: ResNet 中的深层网络通常使用 Bottleneck 架构,即在每个残差块内包含一个较小的 1x1 卷积层,以减少计算负担。这个结构常被用于 ResNet-50 及以上的变体。

  2. 全局平均池化: ResNet 通常使用全局平均池化来代替全连接层,将最后一个卷积层的特征图转化为一个向量,减少参数数量。这有助于减轻过拟合问题。

  3. 预训练和微调: ResNet 模型通常通过在大规模图像分类数据集(如ImageNet)上进行预训练,然后通过微调适应特定任务。这种迁移学习的方法有助于在相对较小的数据集上获得更好的性能。

  4. Skip Connection 的作用: Skip Connection 允许梯度更直接地反向传播到较早的层,减轻了梯度消失的问题。这使得训练非常深的网络变得可行。

  5. 网络深度的影响: ResNet 提出了非常深的网络结构,如 ResNet-152。这种深度对于图像分类等任务非常有效,但在一些特定任务或资源受限的情况下,也可以选择较浅的 ResNet 变体。

  6. ResNeXt: ResNeXt 是 ResNet 的一种变体,引入了基于分组卷积(grouped convolutions)的结构,以提高网络的表示能力。

  7. 注意力机制: 为了增强模型的注意力和感知能力,一些研究工作将注意力机制引入 ResNet 中,形成了一种被称为 "Residual Attention Network"(ResAttNet)的结构。

总体而言,ResNet架构的创新极大地推动了深度学习的发展,为解决深层神经网络训练中的问题提供了有效的方法。在实践中,可以根据具体的任务和数据情况来选择适当深度的 ResNet 变体。

七、attentioon

注意力机制(Attention Mechanism)是一种用于增强神经网络对输入的关注程度的技术。它最初是为自然语言处理(NLP)任务设计的,但后来被成功应用于计算机视觉、语音处理等领域。

注意力机制的主要思想是,在处理序列或集合数据时,网络应该对输入的不同部分分配不同的注意力权重。这允许网络更灵活地关注对当前任务更重要的信息。

在注意力机制中,有两个主要组件:查询(query)、键(key)和值(value)。

  1. 查询(Query): 用于描述正在关注的位置或特征,通常是通过前一层的输出计算得到。

  2. 键(Key): 用于描述输入的位置或特征,与查询进行比较以确定关注的重点。

  3. 值(Value): 是输入的实际信息。

通过计算查询和键之间的关联度(通常使用点积、缩放点积等方法),可以获得每个位置或特征的注意力权重。最终,这些权重与对应位置或特征的值相乘,并求和,形成加权和,作为输出的一部分。

在自然语言处理中,注意力机制的应用包括 Seq2Seq 模型、Transformer 模型等。在计算机视觉中,它被用于图像分类、目标检测等任务。在语音处理中,注意力机制可以用于语音识别等应用。

一种特殊的注意力机制是自注意力机制(Self-Attention),它允许模型在序列内部不同位置之间建立依赖关系,而不仅仅是依赖于输入的其他序列。

总体而言,注意力机制提供了一种处理序列和集合数据的灵活方式,允许模型根据输入的不同部分进行动态调整,从而提高了模型的表现力和泛化能力。

  • 24
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值