Keras 深度学习概述
深度学习是机器学习的一个不断发展的子领域。深度学习设计逐层分析输入,其中每一层逐步提取有关输入的更高级别的信息。
让我们以分析图像的简单场景为例。首先假设,你输入的图像被分成一个矩形像素网格。现在:
- 第一层抽象像素;
- 第二层理解图像中的边缘;
- 下一层从边缘构造节点,然后,下一个会从节点找到分支;
- 最后,输出层将检测到完整的对象。
在这里,特征提取过程从一层的输出到下一层的输入。
通过使用这种方法,我们可以处理大量的特征,这使得深度学习成为一个非常强大的工具。深度学习算法也可用于分析非结构化数据。下面,我们通过本章内容来了解深度学习的基础知识。
人工神经网络
深度学习最流行和主要方法是使用 "人工神经网络(ANN)"。它们的灵感来自人脑模型,这是我们身体中最复杂的器官。人脑由超过 900 亿个称为 “神经元” 的微小细胞组成。神经元通过称为 “轴突” 和 “树突” 的神经纤维相互连接。轴突的主要作用是将信息从一个神经元传递到与其相连的另一个神经元。
同样,树突的主要作用是接收由它所连接的另一个神经元的轴突传递的信息。每个神经元处理一个小信息,然后将结果传递给另一个神经元,这个过程继续 。这是我们人脑用来处理大量信息(如语音、视觉等),并从中提取有用信息的基本方法。
1958年,心理学家弗兰克·罗森布拉特(Frank Rosenblatt)在此模型的基础上发明了第一个人工神经网络(ANN)。人工神经网络由多个节点组成,类似于神经元。节点紧密互连并组织成不同的隐藏层。输入层接受输入数据,数据依次通过一个或多个隐藏层,最后输出层预测输入数据的有用信息。
单个神经元(在 ANN 中称为感知器),可以表示如下:
这里:
- 多个输入连同权重代表树突。
- 输入和激活函数的总和代表神经元。求和实际上是指所有输入的计算值,激活函数代表一个函数,将求和值修改为0、1或0到1。
- 实际输出代表轴突,输出将被下一层神经元接收。
多层感知器
多层感知器是 ANN 的最简单形式。它由单个输入层、一个或多个隐藏层和最后一个输出层组成。一个层由一组感知器组成。输入层基本上是输入数据的一个或多个特征。每个隐藏层由一个或多个神经元组成,处理特征的某些方面,并将处理后的信息发送到下一个隐藏层。输出层过程接受来自最后一个隐藏层的数据并最终输出结果。
卷积神经网络(CNN)
卷积神经网络是最流行的人工神经网络之一。广泛应用于图像和视频识别领域。它基于卷积的概念,一个数学概念。除了在全连接隐藏神经元层之前包含一系列卷积层和池化层之外,它几乎类似于多层感知器。它具有三个重要的层:
- 卷积层 它是主要的构建块,并基于卷积函数执行计算任务。
- 池化层 它被安排在卷积层旁边,用于通过删除不必要的信息来减少输入的大小,从而可以更快地执行计算。
- 全连接层 它被安排在一系列卷积和池化层旁边,并将输入分类为各种类别。
一个简单的 CNN 可以表示如下:
这里:
- 使用了2个系列的卷积层和池化层,用来接收和处理输入(例如图像)。
- 使用单个全连接层,用于输出数据(例如图像分类)
循环神经网络(RNN)
循环神经网络 (RNN) 可用于解决其他 ANN 模型中的缺陷。嗯,大部分 ANN 不记得之前情况的步骤,并学会了根据训练中的上下文做出决策。同时,RNN 存储过去的信息,它的所有决定都是根据它从过去学到的东西做出的。 这种方法主要用于图像分类。有时,我们可能需要展望未来以修复过去。在这种情况下,双向 RNN 有助于从过去学习并预测未来。例如,我们在多个输入中有手写样本。假设我们在一个输入中有混淆,那么我们需要再次检查其他输入以识别从过去做出决定的正确上下文。
人工神经网络的工作流程
让我们首先了解深度学习的不同阶段,然后了解 Keras 如何在深度学习过程中提供帮助。
收集所需数据
深度学习需要大量输入数据才能成功学习和预测结果。因此,首先要收集尽可能多的数据。
分析数据
分析数据并获得对数据的良好理解。需要更好地理解数据才能选择正确的 ANN 算法。
选择算法(模型)
选择最适合学习过程类型(例如图像分类、文本处理等)和可用输入数据的算法。算法在 Keras中用Model表示。算法包括一层或多层。ANN 中的每一层都可以用Keras 中的 Keras 层表示。
- 准备数据 - 处理、过滤和仅从数据中选择所需的信息。
- 拆分数据 - 将数据拆分为训练和测试数据集。测试数据将用于评估算法/模型的预测(一旦机器学习)并交叉检查学习过程的效率。
- 编译模型 - 编译算法/模型,以便通过训练进一步学习并最终进行预测。这一步需要我们选择损失函数和优化器。在学习阶段使用损失函数和优化器来发现错误(与实际输出的偏差)并进行优化,以使错误最小化。
- 拟合模型 - 实际学习过程将在此阶段使用训练数据集完成。
- 预测未知值的结果 - 预测未知输入数据的输出(现有训练和测试数据除外)
- 评估模型 - 通过预测测试数据的输出并将预测与测试数据的实际结果进行交叉比较来评估模型。
- 冻结、修改或选择新算法 - 检查模型评估是否成功。如果是,请保存算法以备将来预测之用。如果不是,则修改或选择新的算法/模型,最后再次训练、预测和评估模型。重复该过程,直到找到最佳算法(模型)。
更多建议: