Skip to content

Keras - Overview of Deep learning

深度学习(Deep learning)是机器学习(machine learning)的一个专门子领域,它利用具有多个层(因此称为“深度”)的人工神经网络从数据中学习复杂的模式和表示。它尤其擅长处理图像、文本和声音等非结构化数据。

想象一下分析图像。深度学习模型不是手动定义特征(如边缘、角),而是分层学习这些特征。最初的层可能检测简单的模式,如边缘或纹理。随后的层将这些更简单的特征组合起来,识别更复杂的结构,如形状或物体部分(例如,眼睛、轮子)。最后,更深的层整合这些结构来识别整体物体(例如,一张脸、一辆车)。

这种逐层特征提取使得深度学习模型能够处理大量信息并发现复杂的模式,从而使其非常强大。它们对于分析手动特征工程困难或不可能的非结构化数据特别有效。

深度学习背后的基础概念是人工神经网络(Artificial Neural Network,简称 ANN),其灵感来源于人脑的结构和功能。大脑由数十亿个相互连接的神经元组成,它们传递和处理信息。

类似地,一个 ANN 由称为“神经元”或“节点”的相互连接的处理单元组成,通常组织成层:输入层、一个或多个隐藏层以及输出层。

可以将单个人工神经元(在较简单的模型中常称为感知器,perceptron)概念性地理解如下:

  • 输入: 接收多个输入值(特征),每个都关联着一个表示其重要性的“权重”(weight)。
  • 处理: 计算输入的加权和。可以添加一个可选的“偏置”(bias)项。
  • 激活函数: 对加权和应用一个非线性函数(如 ReLU、sigmoid、tanh)。这种非线性对于学习复杂模式至关重要。
  • 输出: 产生一个输出值,该值随后可以作为输入传递给下一层的神经元。

可以将其想象成一个生物神经元:输入(树突)经过加权,在细胞体中处理,如果达到阈值(激活),就会发送一个输出信号(轴突)。

MLP 是一种基本的 前馈 ANN。它由一个输入层、一个或多个由神经元组成的隐藏层以及一个输出层构成。一层中的每个神经元通常都与下一层中的每个神经元相连(全连接层或密集层)。数据流严格遵循一个方向——从输入到输出。

描述:想象层垂直堆叠。输入特征从底部(输入层)进入。层之间的每个连接都有一个权重。隐藏层中的神经元使用加权和和激活函数处理信息。最终层(输出层)产生预测结果(例如,类别概率)。

CNN 特别适用于网格状数据,尤其是图像和视频。它们采用称为“卷积”的数学运算来自动学习特征的空间层次结构。

典型 CNN 中的关键层:

  • 卷积层(Convolutional Layer): 在输入体积(例如,图像)上应用可学习的滤波器(核,kernels)来检测特定特征(边缘、纹理、模式)。产生特征图(feature maps)。
  • 池化层(Pooling Layer,例如 MaxPooling): 减少特征图的空间维度(宽度、高度),使表示对物体位置的变化更具鲁棒性,并降低计算成本。
  • 全连接层(Fully Connected (Dense) Layer): 类似于 MLP 层,通常放在 CNN 的末尾,用于基于卷积层和池化层提取的高级特征执行分类任务。

描述:输入(例如,图像)-> 卷积层(特征检测)-> 池化层(下采样)-> [重复卷积/池化] -> 展平层(将 2D/3D 特征转换为 1D 向量)-> 密集层(分类/回归)-> 输出。

RNN 设计用于处理序列数据,例如文本、时间序列或语音。与前馈网络(MLP、CNN)不同,RNN 具有循环连接,允许序列中先前步骤的信息保留并影响当前步骤的处理。这赋予了它们一种“记忆”能力。

像 长短期记忆网络 (LSTM) 和 门控循环单元 (GRU) 这样的变体使用门控机制来更好地控制信息流,并缓解诸如 梯度消失 问题,使其能够学习序列中的长距离依赖关系。

用例:自然语言处理(翻译、情感分析)、语音识别、时间序列预测。

开发一个深度学习模型通常包含以下步骤:

  1. 1. 定义问题并收集数据: 明确目标(例如,分类图像、翻译文本),并收集大量相关的 数据集(dataset)。数据质量和数量至关重要。
  2. 2. 准备和预处理数据: 清理数据,处理缺失值,将其转换为合适的数值格式(例如,张量,tensors),对特征进行归一化/缩放,并可能执行 数据增强(data augmentation)(创建修改后的数据副本以增加数据集大小和鲁棒性)。将数据分割为 训练集、验证集 和 测试集。
  3. 3. 选择模型架构: 根据问题和数据选择合适的网络类型(MLP、CNN、RNN 等)。定义层、它们的顺序和 超参数(hyperparameters)(神经元数量、滤波器大小等)。这里使用 Keras 层(Keras Layers)。
  4. 4. 编译模型: 通过选择以下项来配置学习过程:
    • 优化器(Optimizer): 根据 梯度(gradients)更新模型权重的算法(例如,Adam、SGD、RMSprop)。这里使用 Keras 优化器(Keras Optimizers)。
    • 损失函数(Loss Function): 衡量模型在训练数据上的表现;优化器旨在最小化它(例如,分类任务使用 交叉熵(Cross-entropy),回归任务使用 均方误差(Mean Squared Error))。这里使用 Keras 损失函数(Keras Losses)。
    • 指标(Metrics): 用于评估模型在训练和测试期间的性能(例如,准确率、精确率、召回率、平均绝对误差 MAE)。这里使用 Keras 指标(Keras Metrics)。
  5. 5. 训练模型(Fit): 将训练数据送入模型。模型进行预测,计算损失,优化器在多次遍历数据(轮次/epochs)中迭代调整权重。监控验证集上的性能以检查 是否过拟合(overfitting)。
  6. 6. 评估模型: 使用选定的指标评估训练好的模型在 未见过的 测试集上的性能。这提供了模型在新数据上表现的无偏估计。
  7. 7. 调优超参数: 根据验证集/测试集性能调整模型架构、优化器设置(如学习率)、批次大小、轮次数量等。重复训练和评估,直到达到满意的结果。
  8. 8. 预测与部署: 使用最终的模型对新的真实世界数据进行预测。将模型部署到应用程序或系统中。

Keras 提供了工具和抽象,简化了许多这些步骤,特别是模型的构建、编译、训练和评估。