二、AI知识(神经网络)
1.常用算法
-
FNN
-
CNN
-
RNN
-
LSTM
-
DNN
-
GRU
2.深度学习中概念及算法
1. 感知机
- 感知机(Perceptron)是一种最早的人工神经网络模型之一,通常用来解决二分类问题。它由弗兰克·罗森布拉特(Frank Rosenblatt)于1958年提出,是单层的线性分类模型,也是深度学习和神经网络发展的起点之一。
2. 激活函数(如Sigmoid、ReLU、Softmax)
一、Sigmoid
- Sigmoid函数(也叫逻辑斯蒂函数或S型函数)是一种常用的数学函数,它的输出值总是介于0和1之间。
二、ReLU
- ReLU(Rectified Linear Unit)函数是一种常用的激活函数,尤其在深度学习神经网络中应用广泛。它将输入值小于0的部分“修剪”掉,并且对输入值大于或等于0的部分保持不变。
三、Softmax
- Softmax 函数(也称为归一化指数函数)是一个常用于分类任务,尤其是多类别分类问题中的激活函数。它的作用是将一个向量转换为一个概率分布,每个输出值介于 0 和 1 之间,且所有输出值的和为 1。
3. 损失函数(如回归损失:MSE、MAE;分类损失:交叉熵损失Cross Entropy Loss、二元交叉熵BCE、Dice Loss)
一、MSE
- MSE损失函数(Mean Squared Error Loss Function)是一种常用的回归问题中的损失函数,用于衡量模型预测值与真实值之间的误差。它计算预测值与实际值之间差异的平方的平均值,因此常用于衡量模型预测的准确性。
二、MAE
- MAE损失函数(Mean Absolute Error Loss Function,平均绝对误差)是回归问题中另一种常见的损失函数,用于衡量模型预测值与真实值之间的差异。与MSE(均方误差)不同,MAE计算的是误差的绝对值的平均值,因此它对异常值的敏感度较低。
三、交叉熵损失Cross Entropy Loss
- 交叉熵损失(Cross Entropy Loss) 是一种广泛用于分类问题,尤其是多分类 和二分类闵比方法的损失函数。它衡量的是模型输出的概率分布与实际标签之间的差异,尤其是在分类问题中经常使用。
四、二元交叉熵BCE
- 二元交叉熵(Binary Cross-Entropy, BCE),又称二分类交叉熵损失函数,是用于二分类问题的常见损失函数。它用于衡量模型预测的概率与实际标签之间的差异,尤其是在目标是二分类(0或1)问题时。二元交叉熵损失非常适合用于输出为概率值的模型(如使用 Sigmoid 激活函数的模型)。
五、Dice Loss
- Dice Loss 是一种常用于 图像分割(特别是医学图像分割)任务中的损失函数。它基于 Dice 相似系数(Dice Similarity Coefficient, DSC),一种衡量两个样本相似度的指标,常用来评估两个集合的重叠程度。Dice Loss 主要用于处理 类别不平衡 或 小目标检测 的问题,因为它能够对小区域的预测更加敏感。
4. 前向传播/反向传播(深度学习框架,如TensorFlow、PyTorch)
一、TensorFlow
- 原理
- TensorFlow 是一个开源的机器学习框架,最初由 Google Brain 团队开发,并于2015年发布。它广泛用于深度学习模型的构建、训练和部署,支持从小型实验到大规模生产环境的各类机器学习任务。TensorFlow 提供了丰富的 API,支持各种机器学习任务,尤其在深度学习、神经网络和深度强化学习方面表现突出。它支持多种计算平台,包括 CPU、GPU 和 TPU(Google 的专用硬件加速器),并可以运行在多个操作系统和设备上,如 Linux、Windows、macOS、Android 和 iOS。
- 优点
- 强大的功能:TensorFlow 提供了丰富的功能,支持从研究到生产的全流程。
- 支持多种平台:支持 CPU、GPU、TPU 的加速,并且支持不同平台(如移动端、嵌入式设备、Web 等)。
- 良好的社区支持:拥有一个活跃的开发者社区,丰富的文档和教程资源。
- 灵活性和可扩展性:适用于小规模的实验,也能支持大规模的分布式计算任务。
- 缺点
- 学习曲线较陡:TensorFlow 的学习曲线较陡,尤其是对初学者来说,理解计算图和低级 API 可能较为困难。
- 调试不方便:相比于 PyTorch 等框架,TensorFlow 的动态图调试相对较为复杂。
- 开发速度较慢:TensorFlow 2.0 虽然改进了易用性,但相比其他一些框架(如 PyTorch),开发速度可能略显缓慢。
二、PyTorch
1.原理
- PyTorch 是一个广泛使用的开源深度学习框架,由 Facebook 的人工智能研究实验室(FAIR)开发。它提供了灵活的接口来构建和训练深度学习模型,特别适用于神经网络和大规模数据处理任务。PyTorch 的设计原则强调易用性、动态计算图和强大的 GPU 支持。
2.优点
- 易于学习和使用:PyTorch 提供了非常直观和简洁的 API,适合初学者和研究人员。尤其对于 Python 程序员来说,PyTorch 是“更 Pythonic”的,语法和结构更符合 Python 编程习惯。
- 动态计算图:动态计算图的设计允许在运行时定义模型结构,这对复杂、动态变化的模型(如循环神经网络 RNN)尤其有用。在调试时,你可以像调试普通 Python 程序一样调试模型,灵活性极高。
- 强大的自动微分功能:PyTorch 的 autograd 使得反向传播计算变得非常简单,只需要在模型中定义 forward() 方法,自动微分将处理其他所有操作。
- 深度学习社区和生态系统:PyTorch 在学术界的应用广泛,许多前沿研究和论文都采用了 PyTorch。PyTorch 也有强大的生态系统,包括 torchvision、torchtext、torchaudio 等模块,可以快速构建计算机视觉、自然语言处理等任务的模型。
- 灵活性:由于其动态计算图和灵活的接口,PyTorch 能够更容易地处理那些需要动态计算图的任务(如变长序列处理、条件计算等)。
- 良好的 GPU 加速支持:PyTorch 可以轻松利用 GPU 进行加速计算,且支持多 GPU 训练(如通过 torch.nn.DataParallel 或 torch.nn.parallel.DistributedDataParallel)。
3.缺点
- 生产环境部署不如 TensorFlow:相比 TensorFlow,PyTorch 在生产环境中的部署和优化工具相对较弱。TensorFlow 提供了强大的生产部署工具,如 TensorFlow Serving、TensorFlow Lite 和 TensorFlow.js,而 PyTorch 在这方面的支持相对较少,尽管通过 TorchServe 和 ONNX,这一差距逐步在缩小。
- 不如 TensorFlow 对跨平台的支持全面:TensorFlow 提供了更多的跨平台支持,例如 TensorFlow.js(用于在浏览器中运行深度学习模型)、TensorFlow Lite(用于移动设备)等。而 PyTorch 在这一领域的工具相对较少。
- 学习曲线相对较高(在某些方面):尽管 PyTorch 在很多情况下很易于使用,但当你开始进行更复杂的分布式训练、大规模数据处理等操作时,可能会遇到一些挑战,尤其是涉及到多节点、多 GPU 等复杂配置时。
- 不如 TensorFlow 的文档和教程丰富:虽然 PyTorch 的文档相当好,但 TensorFlow 在社区支持、文档、教程等方面有更广泛的覆盖,特别是在企业和大规模生产系统中。
5. 梯度下降(如BGD、SGD、MBGD)
一、BGD
- 批量梯度下降(Batch Gradient Descent,简称BGD)是梯度下降算法的一种形式。在批量梯度下降中,整个训练数据集都会被用来计算损失函数的梯度,然后更新模型的参数。也就是说,BGD 在每次迭代时使用所有的训练数据来计算梯度,并根据该梯度更新参数。
二、SGD
- 随机梯度下降(Stochastic Gradient Descent,简称 SGD) 是梯度下降算法的一种变种。与批量梯度下降(BGD)不同,SGD 每次迭代只使用单个样本来计算梯度并更新参数。这个过程相比于批量梯度下降计算更高效,并且能够在更短的时间内开始优化,但也有一些波动。
三、MBGD
- MBGD(Mini-Batch Gradient Descent,迷你批量梯度下降)是梯度下降方法的一个变种。它结合了批量梯度下降(BGD)和随机梯度下降(SGD)的优点,常用于优化机器学习算法,尤其是在处理大量数据时。
6. 梯度消失、梯度爆炸(产生原因、缓解策略)
一、梯度消失
- 产生原因
- 梯度消失主要由不适合的激活函数、深度网络结构和不良的权重初始化引起。
- 缓解策略
- 为了解决这个问题,可以采用如ReLU激活函数、合适的权重初始化、批归一化、残差网络等多种策略。这些方法通过使梯度在深层网络中更稳定,从而确保网络能够有效地训练。
二、梯度爆炸
- 产生原因
- 梯度爆炸是深度学习训练中可能出现的一个问题,通常由不当的权重初始化、过大的学习率、深层网络架构等因素引起。
- 缓解策略
- 常用的缓解策略包括权重初始化方法的选择、梯度裁剪、学习率调整、优化算法选择、批归一化、网络结构优化和正则化等。这些策略可以有效地避免梯度爆炸,使得训练过程更加稳定,最终得到一个更为健壮的模型。
7. 优化器(如:梯度下降系列(批量梯度下降BGD、随机梯度下降SGD、小批量梯度下降MBGD)、动量法、NAG、Adagrad、RMSprop、Adam)
一、动量法
二、NAG
三、Adagrad
四、RMSprop
五、Adam
8. 超参数(概念、调优算法)
1.概念
2.调优算法