0
点赞
收藏
分享

微信扫一扫

在线JSON工具

深度学习知识点

深度学习

对深度学习模型相关的知识点进行总结。

深度学习是一种机器学习模型,是一种基于神经网络的学习方法。
它的核心基础是通过构建多层神经网络来学习数据的表示和特征,这些神经网络由多个神经元组成,每个神经元都可以对输入数据进行非线性变换。
通过将这些神经元连接在一起,深度学习模型可以学习到数据的复杂结构和特征。从而实现对数据的分类、预测和生成等任务。
深度学习的优点是可以自动学习数据的特征和表示,不需要人工设计特征提取器,因此可以处理大规模的数据和复杂的任务。同时,深度学习模型具有很强的泛化能力,可以在不同的数据集上进行迁移学习。
深度学习的核心技术包括神经网络、反向传播算法、激活函数、优化算法等。

  • 其中,神经网络是深度学习的基础,它由多个神经元组成,可以对输入数据进行非线性变换。
  • 反向传播算法是深度学习的核心算法,它用于更新神经网络的权重,从而实现对数据的学习。
  • 激活函数用于对神经元的输出进行非线性变换,从而增加模型的表达能力。
  • 优化算法用于优化模型的参数,从而提高模型的性能。

1. 激活函数有哪些

  • 一一一一一一一一一一一一一一一一一一一一一一一
    1. sigmoid函数:
  • 应用场景:多分类问题
  • 作为激活函数将词向量映射成标签的概率值
  • 它将多个神经元的输出,映射到(0,1)区间内,可以看成概率来理解,从而来进行多分类!(0,1)的值,而这些值的累和为1(满足概率的性质),那么我们就可以将它理解成概率,在最后选取输出结点的时候,我们就可以选取概率最大(也就是值对应最大的)结点,作为我们的预测目标
    2. ReLu函数:
  • 如果输入值为负,如果输入值为正,则返回输入值为本身,结构简单,提高神经网络整体效率,缓解梯度消失,
  • 缺点:输入小于0时,ReLu函数恒为0,神经元无法学习,Leaky ReLu函数可以觉得这个问题,当输入值小于0时,函数输出0.01倍的输入值,神经元仍然有微小的梯度

2. 激活函数有什么作用

一个神经元是否应该被激活取决于激活函数。激活函数计算加权和,并进一步加上偏差以得出结果。神经网络基于感知器,因此,如果我们想了解神经网络的工作原理,则必须学习感知器的工作原理。

它的作用是将神经元的输入转换为输出,从而使神经元能够对输入数据进行分类或预测。

为了确定神经网络的输出,我们使用激活函数。它的主要任务是对结果值在0到1或-1到1等之间进行映射。激活函数基本上分为两种类型:

线性激活功能
非线性激活函数

在选择激活函数时,需要考虑以下几个问题和模型的特点:

  1. 数据分布:不同的数据分布可能需要不同的激活函数。例如,当数据分布呈现出双峰分布时,Sigmoid 函数可能是一个更好的选择,因为它可以将输入值映射到 0 到 1 之间,从而更好地表示二分类问题的输出。
  2. 模型复杂度:不同的激活函数可能会对模型的复杂度产生影响。例如,ReLU 函数具有计算简单、速度快、不容易出现梯度消失等优点,因此在深度学习模型中经常使用。
  3. 梯度消失问题:在深度学习模型中,梯度消失问题是一个常见的问题。一些激活函数,如 Sigmoid 函数,在负半轴上的梯度消失速度较快,可能会导致模型训练困难。因此,在选择激活函数时,需要考虑梯度消失问题。
  4. 模型的表达能力:不同的激活函数可能会对模型的表达能力产生影响。例如,ReLU 函数可以使模型具有更强的表达能力,从而更好地处理复杂的问题。

总之,在选择激活函数时,需要考虑数据分布、模型复杂度、梯度消失问题和模型的表达能力等因素。同时,需要根据具体问题和模型的特点来选择合适的激活函数,以获得更好的模型性能。

3.几种常见的激活函数,以及什么场景下用什么激活函数

激活函数是神经网络中非常重要的组成部分,它的作用是对神经元的输出进行非线性变换,从而增强神经网络的表达能力。常见的激活函数包括:
1. Sigmoid 函数:常用于二分类问题,因为它可以将输入值映射到 0 到 1 之间,从而可以表示二分类问题的输出。
2. Tanh 函数:常用于回归问题,因为它可以将输入值映射到-1 到 1 之间,从而可以表示回归问题的输出。
3. ReLU 函数:常用于深度学习模型,因为它具有计算简单、速度快、不容易出现梯度消失等优点。
4. Leaky ReLU 函数:常用于深度学习模型,因为它可以解决 ReLU 函数在负半轴上的梯度消失问题。
5. Softmax 函数:常用于多分类问题,用于将一个数值向量转换为表示各个类别概率的向量。它的输出是一个数值向量,其中每个元素都表示输入向量属于某个类别的概率。 因为它可以将输入向量转换为表示各个类别的概率分布,从而方便后续的分类决策。

4. 损失函数有哪些

  • 一一一一一一一一一一一一一一一一一一一一一一一
    1. loss
  • 应用场景:回归问题
  • 只要预测值和标签值不相等或者差距大于阈值,loss+=1
  • 直接对应分类判断错误的个数,属于非凸函数
    2. abs loss(绝对值损失):
  • 计算预测值与目标值的差的绝对值。
    3. Mean Absolute Error(MAE)L1范数:
  • 应用场景:一般用于回归问题
  • 在绝对值损失的基础上算平均值。
    4. square loss(平方损失):
  • 应用场景:分类问题和回归问题都可以,经常应用于回归问题
  • 预测和标签对应,然后求差的平方,累加起来就是平方损失
    5. Mean Squared Error(MSE,均方差损失):
  • 应用场景:一般用于回归问题
  • 预测和标签一一对应。在平方损失的基础上算了个平均值。
    6. hinge loss(合页损失函数):
  • 应用场景:N分类问题
  • loss输入:模型输入一个N维向量为分类结果,针对这个向量计算loss.(这个N维向量一般是一个全连接层(线性层)的输出,是模型对于每个类别的打分。)不仅要分类正确,而且确信度要足够高。
  • 向量的每个分量和正确分类的分量比较,如果差的不多甚至超过(说明有混淆),则在loss中反映出来。在下面的公式中, i 是正确的类别, t是阈值(一般为1,或是某个计算出来的平均值)。
    7. softmax loss
  • 应用场景:N分类问题
  • 模型输出一个N维向量,为模型预测的分类概率。
    8. cross entropy loss(交叉熵损失函数):
  • 使用sigmoid作为激活函数的时候,应该用交叉熵损失函数,而不能用均方误差损失函数 多分类
    9. cross entropy loss(交叉熵损失函数):
  • 应用场景:NLP中很常用
  • 多分类中如下,(应该在前面再求个平均)

4. 损失函数有什么作用

损失函数(Loss Function)是机器学习和深度学习中的一个重要概念,用于衡量模型预测结果与真实值之间的差异。损失函数的作用主要有以下几个方面:

  1. 评估模型性能:损失函数可以用来评估模型的性能,通过计算模型预测结果与真实值之间的差异,可以衡量模型的预测准确率。
  2. 指导模型训练:损失函数可以作为模型训练的指导目标,通过最小化损失函数的值,可以指导模型朝着更好的预测结果方向进行训练。
  3. 优化模型参数:损失函数可以作为优化算法的目标函数,通过最小化损失函数的值,可以优化模型的参数,从而提高模型的性能。
  4. 正则化模型:损失函数可以作为正则化项,通过在损失函数中添加正则化项,可以限制模型的复杂度,从而提高模型的泛化能力。

损失函数可以用来评估模型性能、指导模型训练、优化模型参数和正则化模型。

5. 深度学习中常用的优化器有哪些?

深度学习中常用的优化器有随机梯度下降(Stochastic Gradient Descent, SGD)、Adagrad、Adadelta、RMSProp 和 Adam 等。下面对这些优化器进行简单介绍:

  1. 随机梯度下降(SGD):随机梯度下降是最基本的优化算法,它通过不断地沿着负梯度方向更新模型的参数来最小化损失函数。SGD 的优点是简单、高效,但是在训练深度神经网络时容易出现梯度消失或爆炸的问题。
  2. Adagrad:Adagrad 是一种基于梯度的优化器,它通过对每个参数的历史梯度平方进行累加来调整学习率,从而避免学习率过大或过小的问题。Adagrad 的优点是能够自动调整学习率,但是在训练深度神经网络时容易出现学习率衰减过快的问题。
  3. Adadelta:Adadelta 是一种基于梯度的优化器,它通过对每个参数的历史梯度平方的衰减平均值进行累加来调整学习率,从而避免学习率过大或过小的问题。Adadelta 的优点是能够自动调整学习率,并且在训练深度神经网络时表现更加稳定。
  4. RMSProp:RMSProp 是一种基于梯度的优化器,它通过对每个参数的历史梯度平方的移动平均值进行累加来调整学习率,从而避免学习率过大或过小的问题。RMSProp 的优点是能够自动调整学习率,并且在训练深度神经网络时表现更加稳定。
  5. Adam:Adam 是一种基于梯度的优化器,它结合了 Adagrad 和 RMSProp 的优点,同时引入了动量项来加速收敛。Adam 的优点是能够自动调整学习率,并且在训练深度神经网络时表现更加稳定。
    在选择适合自己的优化器时,需要考虑以下几个因素:
    数据集大小:如果数据集较小,则可以选择 SGD 或 Adagrad 等简单的优化器;如果数据集较大,则可以选择 Adam 等较为复杂的优化器。
    模型复杂度:如果模型较为简单,则可以选择 SGD 或 Adagrad 等简单的优化器;如果模型较为复杂,则可以选择 Adam 等较为复杂的优化器。
    收敛速度:如果需要快速收敛,则可以选择 Adam 等较为复杂的优化器;如果不需要快速收敛,则可以选择 SGD 或 Adagrad 等简单的优化器。
    稳定性:如果需要训练过程稳定,则可以选择 Adadelta 或 RMSProp 等较为复杂的优化器;如果不需要训练过程稳定,则可以选择 SGD 或 Adagrad 等简单的优化器。
    需要注意的是,不同的优化器在不同的场景下表现不同,具体选择哪种优化器需要根据具体情况进行选择。同时,也可以尝试不同的优化器来找到最适合自己的优化器。
    需要注意的是,不同的优化器适用于不同的场景,具体选择哪种优化器需要根据具体情况进行选择。
    优化器的收敛是指损失函数的值不再减小,或者说损失函数的值已经达到了一个稳定的值。在深度学习中,我们通常使用以下几种方法来判断优化器是否收敛:
  6. 观察损失函数的变化:如果损失函数的值在经过一定的迭代次数后不再减小,或者减小的速度非常缓慢,那么我们可以认为优化器已经收敛。
  7. 观察模型的预测准确率:如果模型的预测准确率在经过一定的迭代次数后不再提高,或者提高的速度非常缓慢,那么我们可以认为优化器已经收敛。
  8. 使用监控指标:我们可以使用一些监控指标来判断优化器是否收敛,例如准确率、召回率、F1 值等。如果这些指标在经过一定的迭代次数后不再提高,或者提高的速度非常缓慢,那么我们可以认为优化器已经收敛。
  9. 使用可视化工具:我们可以使用一些可视化工具来观察模型的训练过程,例如绘制损失函数的曲线、准确率的曲线等。如果这些曲线在经过一定的迭代次数后变得平坦,那么我们可以认为优化器已经收敛。

需要注意的是,不同的优化器在不同的场景下表现不同,具体选择哪种方法来判断优化器是否收敛需要根据具体情况进行选择。同时,也可以尝试不同的方法来找到最适合自己的方法。

6. L1,L2正则化的区别,岭回归是L1正则化还是L2正则化?

L1 正则化和 L2 正则化都是用于机器学习和深度学习中的正则化技术,可以解决过拟合问题。它们的主要区别在于对参数的惩罚方式不同。它们的区别如下:

  • 一一一一一一一一一一一一一一一一一一一一一一一
    1. L1 正则化: L1 正则化通过在损失函数中添加一个惩罚项来限制模型的复杂度,惩罚项的形式为 ∣ w ∣ \vert w\vert w,其中 w w w 是模型的参数。L1 正则化会使得模型的参数变得稀疏,即一些参数的值会变为 0,从而减少模型的复杂度。
  • L1 正则化通常适用于特征选择问题,因为它可以将一些不重要的特征的权重降为零。而 L2 正则化通常适用于过拟合问题,因为它可以减少模型的复杂度,从而提高模型的泛化能力。
    2. L2 正则化: L2 正则化通过在损失函数中添加一个惩罚项来限制模型的复杂度,惩罚项的形式为 w 2 w^2 w2,其中 w w w 是模型的参数。L2 正则化会使得模型的参数变得平滑,即参数的值不会变得很大或很小,从而减少模型的复杂度。
  • L1 正则化通常适用于特征选择问题,因为它可以将一些不重要的特征的权重降为零。而 L2 正则化通常适用于过拟合问题,因为它可以减少模型的复杂度,从而提高模型的泛化能力。

3. 岭回归是一种线性回归模型,它在损失函数中添加了 L2 正则化项,因此是一种 L2 正则化的回归模型。岭回归的目的是通过添加正则化项来减少模型的过拟合,提高模型的泛化能力。

L1 正则化通常适用于特征选择问题,因为它可以将一些不重要的特征的权重降为零。而 L2 正则化通常适用于过拟合问题,因为它可以减少模型的复杂度,从而提高模型的泛化能力。

7. 模型提速的方法有哪些?

  1. 数据预处理:对数据进行预处理,例如清洗、标准化、归一化等,或者对数据进行压缩、降维等,都可以减少数据的复杂度,从而提高模型的训练速度。
  2. 模型压缩:使用模型压缩技术,例如剪枝、量化等,可以减少模型的参数数量和计算量,从而提高模型的训练速度。
  3. 硬件加速:使用更快的硬件,例如 GPU、TPU 等,可以提高模型的计算速度,从而提高模型的训练速度。
  4. 分布式训练:使用分布式训练技术,例如数据并行、模型并行等,可以将数据和模型分布到多个计算节点上,从而提高模型的训练速度。
  5. 并行计算:使用并行计算技术可以提高模型的计算速度,例如使用多线程、多进程等。
  6. 优化算法:减少计算量或者使用优化算法,例如随机梯度下降(SGD)、 Adam 等,可以提高模型的训练速度。
  7. 模型选择:选择合适的模型,例如轻量级模型、高效模型等,可以提高模型的训练速度。

8. 对比学习是什么?

对比学习(Contrastive Learning)是一种机器学习技术,它通过比较不同数据点之间的差异性和相似性来学习数据的表示。使得相似的数据点在表示空间中彼此靠近,而不同的数据点在表示空间中彼此远离。

模型可以学习到一种通用的特征表示,这种特征表示可以用于分类、聚类、推荐等多种任务。

在对比学习中,通常使用一个损失函数来衡量数据点之间的相似性或差异性。损失函数的目标是最小化相似数据点之间的距离,同时最大化不同数据点之间的距离。为了实现这个目标,对比学习通常需要使用一个训练数据集,其中包含多个数据点。

在训练过程中,模型会学习如何将相似的数据点表示得更接近,同时将不同的数据点表示得更远。通过最小化损失函数的值来不断地调整模型的参数,模型可以逐渐学习到一种能够区分相似和不同数据点的表示。提高对不同样本之间的相似性和差异性的预测能力。

对比学习的优点是它可以学习到一种通用的特征表示,这种特征表示可以用于多种任务,而不需要为每个任务单独训练一个模型。此外,对比学习还可以提高模型的泛化能力,因为它可以学习到不同样本之间的相似性和差异性,从而更好地处理新的数据。

对比学习的缺点是它需要大量的训练数据,因为它需要通过比较不同样本之间的相似性和差异性来学习特征表示。此外,对比学习还需要选择合适的损失函数和超参数,以确保模型的性能。

9. 交叉熵与最大似然函数的联系和区别

区别:交叉熵函数使用来描述模型预测值和真实值的差距大小,越大代表越不相近;似然函数的本质就是衡量在某个参数下,整体的估计和真实的情况一样的概率,越大代表越相近。
联系:交叉熵函数可以由最大似然函数在伯努利分布的条件下推导出来,或者说最小化交叉熵函数的本质就是对数似然函数的最大化。
使用sigmoid作为激活函数的时候,应该用交叉熵损失函数,而不能用均方误差损失函数。

10. Tensorflow是什么?

TensorFlow由两个词Tensor和Flow组成;张量被称为多维数组的数据表示, 流意味着对张量执行的一系列操作。
TensorFlow的一些主要优点如下:

可以轻松地在CPU和GPU上对其进行培训, 以进行分布式计算。
它具有自动区分功能。
它具有平台灵活性。
它易于定制和开源。
它对线程, 异步计算和队列具有高级支持。
TensorFlow有一些限制, 如下所述:

它不提供对OpenCL(开放计算语言)的支持。
它需要高级演算和线性代数的先验知识, 以及对机器学习的充分理解。
如果在相同范围内导入, 则与Theano的GPU内存冲突。

. 张量是什么?

张量是计算机程序中使用的n维数组的矢量或矩阵的一般化。它代表数字形式的大量数据。互联网上没有其他可用的其他n维数组库, 例如Numpy, 但TensorFlow与那些库不同。它提供了创建张量函数和自动计算导数的方法。 张量在PyTorch的深度学习中起着重要作用。简单来说,我们可以说这个框架完全基于张量。张量被视为广义矩阵。它可以是1D张量(向量),2D张量(矩阵),3D张量(立方体)或4D张量(立方体向量)。
Tensor的属性是什么?
每个torch.Tensor都有一个torch.device,torch.layout和torch.dtype。 torch.dtype定义数据类型,torch.device表示在其上分配了torch.Tensor的设备,torch.layout表示torch.Tensor的内存布局。

11. TensorFlow Architecture的三个工作组件是什么?

TensorFlow架构分为三个部分:

预处理数据
建立模型
训练和估计模型

12. 使用TensorFlow进行部署的流程是什么?

通过占位符导入数据, 生成数据或设置数据管道。
通过计算图输入数据。
评估损失函数的输出。
使用反向传播来修改变量。
重复直到停止状态。

TensorFlow常用到的函数操作有哪些?

10. Pytorch是什么?

PyTorch是基于Torch库的计算机软件的一部分
PyTorch中必须包含以下要素:

PyTorch张量
PyTorch NumPy
数学运算
自动分级模块
优化模块
nn模块

Pytorch具有以下优点:

PyTorch非常易于调试。
这是一种用于图形计算的动态方法。
这是比TensorFlow更快的深度学习培训。
它提高了开发人员的生产率。
它非常容易学习,更易于编写代码。# pytorch常用到的函数操作有哪些?

10. Tensorflow和Pytorch的区别

从用户的体验的角度来评价区别:

TF比PyTorch支持更多的编码语言,比如c++、JavaScript和Swift。

PyTorch使用eager模式计算。所以我们可以在构建神经网络时逐行运行它,这使得调试更容易。而TF不能调试神经网络内部。

相对来说,PyTorch更能够在短时间内建立结果和方案更适合于计算机程序爱好者或者是小规模项目,包括研究人员。而TF则更适合在大范围内进行操作,尤其是对于跨台或者是在实现嵌入式部署的时候更具优势。
PyTorch 设计得更科学,不必像 TF 那样,还要在各种 API 之间做切换,操作便捷。代码可读性也更强。

在这里插入图片描述

什么是抽象层?

共有三个抽象级别,如下所示:

Tensor: Tensor是在GPU上运行的命令式n维数组。
变量:它是计算图中的一个节点。这将存储数据和渐变。
模块:神经网络层将存储状态,否则可学习权重。

反向传播是什么?

“反向传播”是一组算法,用于计算误差函数的梯度。该算法可以写为神经网络的函数。这些算法是一组方法,用于遵循梯度下降方法(利用链规则)有效地训练人工神经网络。

批次,随机和微型批次梯度下降之间有何区别?

随机梯度下降:在SGD中,我们仅使用一个训练示例来计算梯度和参数。
批梯度下降:在BGD中,我们计算整个数据集的梯度,并在每次迭代时执行更新。
小批量梯度下降:小批量梯度下降是随机梯度下降的一种变体。在这种梯度下降中,我们使用了小批量样本而不是单个训练示例。

举报

相关推荐

0 条评论