本文转载自公众号“读芯术”(ID:AI_Discovery)。
深度学习的关注度正持续上升,它是机器学习的一个子领域,基于人工神经网络的概念来执行特定任务。然而在理论上,人工神经网络与人类大脑的运作方式并不相同,甚至都不相似!
它们之所以被命名为人工神经网络,是因为它们可以完成确切的任务,同时达到理想的精确度,而无需使用任何特定规则进行明确编程。
几十年前AI失败的主要原因是缺乏数据和计算能力。经过数年时间,这一情况已显著改善。基于大型科技巨头和跨国公司投资AI数据,数据的丰富程度已大大提高。而鉴于图形处理单元(GPUs)功能强大,计算能力也不再是挑战。
本文将详细讨论构建深度学习模型的五个基本步骤,以及如何使用这些步骤来处理各种深度学习项目。
1. 定义架构
深度学习是解决复杂任务的最优方法之一,例如图像分类或分割、人脸识别、目标检测、聊天机器人等。但是,对于每一个复杂的项目,深度学习模型均需进行五个固定步骤以完成当前任务。
构建深度学习模型的第一步,也是最重要的一步就是成功定义网络和架构。根据所执行任务的类型,一般倾向于使用特定类型的体系结构。
通常,对于计算机视觉任务,如图像分割、图像分类、面部识别和其他类似项目,首选卷积神经网络(CNNs)或ConvNets。而对于自然语言处理和与文本数据相关的问题,递归神经网络(RNNs)和长短期记忆(LSTMs)更为可取。
在此步骤中,还可以决定整个深度学习架构的模型构建结构类型。执行此操作的三个主要步骤是顺序模型(Sequential Models)、功能性API或用户定义的自定义架构。下文将更详细地讨论每种方法。
2. 编译模型
首选架构构建完成后,将继续进行构建模型的第二个步骤——编译模型。编译步骤通常是TensorFlow深度学习框架中的一行代码,可以采用model.compile()函数进行编译。
在深度学习中,编译的要求是配置模型,以便成功完成拟合/训练过程。正是在编译中,为评估程序定义了培训程序的一些关键组成部分。
列举一些必要参数,下一步需要分配损耗、优化器和指标。损耗的种类取决于所遇问题的类型以及亟待解决的问题。优化器通常是指用于计算的adam、RMSprop或类似优化器;指标是指用于分析的准确性度量或任何其他由用户定义的衡量标准。
3. 拟合模型
图源:unsplash
成功定义整体架构并编译模型后,第三个逻辑步骤是在训练数据集上拟合模型。拟合功能可在固定数量的周期(数据集上的迭代)内训练模型。借助拟合功能,可以确定训练周期的数量、输入和输出数据、验证数据等重要参数。拟合功能可用于计算和估算这些基本参数。
在培训过程中,必须持续评估拟合步骤。重要的是要确保所训练的模型在提高准确性和减少整体损失的同时,运行良好。
同样重要的是,要考虑到该模型没有以任何方式被过度拟合。为此,必须使用Tensorboard之类的工具进行持续评估,以分析各种图表,并了解这些模型是否有可能被过度拟合。一旦训练完成并对固定数量的周期进行分析后,就可以继续进行第四个步骤——评估并使用训练好的模型进行预测。
4. 评估和预测
评估深度学习模型是检验构建模型是否按预期工作的一个十分重要的步骤。构建的深度学习模型在现实应用程序中可能运行不佳。因此,评估深度学习模型变得至关重要。
评估深度学习模型的一个主要方法是,确保模型对预处理步骤开始时,将分割测试数据所做的预测考虑在内,以验证训练模型的有效性。除测试数据外,还必须用可变数据和随机测试对模型进行测试,以查看其在未经训练的数据上的有效性,以及其性能效率是否符合预期要求。
假设我们建立了一个简单的人脸识别模型。需考虑到该模型已使用图像训练过,并尝试在测试数据和实时视频录制中使用不同面孔评估这些图像,以确保训练的模型运行良好。
5. 部署模型
部署阶段是构建任何模型的最后一步。一旦成功完成模型构建后,如果想要保留模型或进行部署,以面向更广泛的受众,这便是一个可选的步骤。部署方法各不相同,可以将其部署为跨平台传输的应用程序,也可以使用amazon提供的AWS云平台进行部署,或者使用嵌入式系统部署。
如果想要部署监控摄像头之类的东西,则可以考虑使用类似树莓派的嵌入式设备与摄像头模块共同执行此功能。带有人工智能的嵌入式系统是部署物联网项目的常用方法。
使用flask、Django或任何其他类似框架构建深度学习模型后,也可以选择在网站上部署这些深度学习模型。另一个有效部署模型的方法是为智能手机用户开发一个android或iOS应用程序,以覆盖更广泛的用户。
图源:unsplash
构建任何深度学习模型都需遵循这些步骤,至少包含前述五个中的四个。对于新手或初级项目而言,部署步骤是可选步骤,但在相关行业和公司中,该步骤却是极其重要,不可或缺。
需要格外注意的是,在构建和使用深度学习模型前,必须考虑数据预处理、探索性数据分析以及其他强制性清理步骤。模型的构建步骤必须在完成所有数据的预处理后才可以执行。