Keras 简明教程
Keras - Overview of Deep learning
深度学习是机器学习的一个不断发展中的子领域。深度学习涉及对输入进行逐层分析,每一层逐渐提取关于输入的高级信息。
让我们分析一张图像,以作为一种简单的情景。让我们假设你的输入图像被分成一个矩形的像素网格。现在,第一层对像素进行抽象。第二层理解图像中的边缘。下一层从边缘构建节点。然后,下一层将从节点中找到分支。最后,输出层将检测整个对象。在这里,特征提取过程从一层输出进入下一层输入。
通过使用这种方法,我们可以处理大量的特征,这使得深度学习成为一个非常强大的工具。深度学习算法也适用于非结构化数据分析。让我们在本章中学习深度学习的基础知识。
Artificial Neural Networks
深度学习最流行和最主要的方法是使用“人工神经网络”(ANN)。它们受到人类大脑模型的启发,而大脑是我们身体最复杂的器官。人脑由超过 900 亿个称为“神经元”的微小细胞组成。神经元通过称为“轴突”和“树突”的神经纤维相互连接。轴突的主要作用是将信息从一个神经元传送到另一个神经元,也就是与它相连的神经元。
类似地,树突的主要作用是接收与之相连的另一个神经元的轴突所传输的信息。每个神经元处理少量信息,然后将结果传递给另一个神经元,这个过程不断进行。这就是我们人类大脑处理大量信息(如语言、视觉等)并从中提取有用信息的基本方法。
基于这个模型,第一个人工神经网络(ANN)是由心理学家 Frank Rosenblatt 于 1958 年发明的。ANN 由多个节点组成,类似于神经元。节点紧密相连,并组织成不同的隐藏层。输入层接收输入数据,数据依次经过一个或多个隐藏层,最后输出层预测一些关于输入数据的有用信息。例如,输入可能是一幅图像,而输出可能是图像中识别的物体,比如“猫”。
一个单神经元(在 ANN 中被称为感知器)可以表示为以下形式:
在此,
-
多个输入连同权重一起代表树突。
-
输入总和和激活函数表示神经元。 Sum 实际上表示所有输入和激活函数的计算值,表示将 Sum 值修改为 0、1 或 0 到 1 的函数。
-
实际输出表示轴突,输出将由下一层中的神经元接收。
让我们在此部分了解不同类型的人工神经网络。
Multi-Layer Perceptron
多层感知器是 ANN 最简单的形式。它由一个输入层、一个或多个隐藏层以及最终一个输出层组成。一层由感知器的集合组成。输入层基本上是输入数据的一个或多个特征。每个隐藏层都包含一个或多个神经元,处理特征的某些方面并将其处理后的信息发送到下一个隐藏层。输出层处理从最后一个隐藏层接收数据并最终输出结果。
Convolutional Neural Network (CNN)
卷积神经网络是其中一项最流行的 ANN。它广泛应用于图像和视频识别领域。它基于卷积的概念,这是一个数学概念。它几乎与多层感知器相似,只不过在完全连接的隐藏神经元层之前包含一系列卷积层和池化层。它有三个重要层数 −
-
Convolution layer − 它是主要的构建模块,基于卷积功能执行计算任务。
-
Pooling layer − 它布置在卷积层旁边,用于通过去除不需要的信息来减小输入的尺寸,从而可以更快地执行计算。
-
Fully connected layer − 它布置在卷积和池化层系列的旁边,将输入分门别类。
一个简单的 CNN 可以表示如下 −
在此,
-
使用了 2 系列卷积和池化层,它接收和处理输入(例如图像)。
-
使用了一个完全连接层,它用于输出数据(例如图像分类)。
Recurrent Neural Network (RNN)
循环神经网络 (RNN) 对于解决其他 ANN 模型中的缺陷很有用。好,大多数 ANN 不会记住以前情况的步骤,而是学习根据训练中的上下文做出决策。与此同时,RNN 存储过去的信息,其所有决策都是基于从过去学到的内容做出的。
此方法主要用于图像分类。有时,我们可能需要展望未来才能解决过去。在这种情况下,双向 RNN 有助于从过去学习并预测未来。例如,我们有来自多个输入的手写样本。假设我们对一个输入感到困惑,那么我们需要再次检查其他输入,以识别出从过去做出决定的正确上下文。
Workflow of ANN
让我们先了解深度学习的不同阶段,然后了解 Keras 如何帮助深度学习过程。
Choose an algorithm (model)
选择最适合学习过程类型(例如图像分类、文本处理等)和可用输入数据的算法。算法由 Keras 中的 Model 表示。算法包括一个或多个图层。ANN 中的每一层都可以在 Keras 中由 Keras Layer 表示。
-
Prepare data − 只处理、过滤和选择来自数据所需的信息。
-
Split data − 将数据拆分为训练集和测试数据集。测试数据将用于评估算法/模型的预测(一旦机器学习)并交叉检查学习过程的效率。
-
Compile the model - 编译算法/模型,以便进一步用于训练学习,并最终用于预测。此步骤要求我们选择损失函数和优化器。损失函数和优化器用于学习阶段,以找到错误(与实际输出的偏差)并进行优化,以便将错误最小化。
-
Fit the model - 将使用训练数据集在此阶段完成实际学习过程。
-
Predict result for unknown value - 预测未知输入数据(除现有的训练和测试数据外)的输出
-
Evaluate model - 通过预测测试数据的输出,交叉比较预测值与测试数据的实际结果,来评估模型。
-
Freeze, Modify or choose new algorithm - 检查模型评估是否成功。如果是,则保存算法以用于未来的预测。如果不是,则修改或选择新的算法/模型,最后,再次训练、预测和评估模型。重复该过程,直至找到最佳算法(模型)。
上面的步骤可以使用以下流程图表示 -