博舍

人工智能 (AI) 体系结构 人工智能的开发框架包括什么

人工智能 (AI) 体系结构

你当前正在访问MicrosoftAzureGlobalEdition技术文档网站。如果需要访问由世纪互联运营的MicrosoftAzure中国技术文档网站,请访问https://docs.azure.cn。

人工智能(AI)体系结构设计项目06/25/2023

人工智能(AI)是计算机模拟人类智能行为的功能。通过AI,计算机可以分析图像、理解语音、以自然方式交互,以及使用数据进行预测。

AI概念算法

算法是用于解决问题或分析一组数据的一系列计算和规则。它就像一个流程图,其中包含提出问题的分步说明,只不过是以数学和编程代码形式进行编写。算法可以描述如何确定宠物是猫、狗、鱼、鸟还是蜥蜴。另一种更复杂的算法可以描述如何识别书面或口头语言、分析其字词、将其翻译为其他语言,然后检查翻译的准确性。

机器学习

机器学习(ML)是一种AI技术,可使用数学算法来创建预测模型。该技术使用特定算法分析数据字段,并通过使用在数据中发现的模式来“学习”该数据以生成模型。然后,使用那些模型做出与新数据有关的明智预测或决策。

预测模型将根据已知数据进行验证,通过为特定业务方案选择的性能指标进行衡量,然后根据需要进行调整。此学习和验证过程被称为“训练”。通过定期重新训练,ML模型会随着时间的推移而改进。

规模化机器学习

Microsoft的机器学习产品有哪些?

深度学习

深度学习是一种ML,可以自行确定其预测是否准确。该技术也使用算法分析数据,但其操作规模比ML大。

深度学习使用的人工神经网络由多个算法层组成。每层均可查看传入数据,执行自己的专用分析,并生成其他层可以理解的输出。然后,系统会将此输出传递至下一层,在其中以不同的算法执行其自己的分析,依此类推。

每个神经网络都有许多层,而且有时使用多个神经网络,因此计算机可以通过自己的数据处理来学习。与ML相比,此技术需要更多的数据,更高的计算能力。

深度学习与机器学习

Azure上深度学习模型的分布式训练

Azure上深度学习模型的批量评分

Azure上PythonScikit-Learn和深度学习模型的训练

Azure上PythonScikit-Learn和深度学习模型的实时评分

机器人

机器人是一种可执行特定任务的自动化软件程序。你可将其视为没有身体的机器人。早期机器人相对简单,使用相对简单的算法逻辑处理重复性任务和大型任务。例如,搜索引擎使用Web爬网程序自动浏览和编录Web内容。

机器人现已变得更加复杂,不仅可使用AI和其他技术来模拟人类活动和决策,通常还可通过文本消息甚至语音直接与人类交互。例如,可以预订餐位的机器人、帮助客户服务交互的聊天机器人(或对话AI)以及将突发新闻或科学数据发布到社交媒体网站的社交机器人。

Microsoft提供了Azure机器人服务,这是专为企业级机器人开发构建的托管服务。

关于Azure机器人服务

负责任的机器人的十个准则

Azure参考体系结构:企业级对话机器人

工作负载示例:Azure上提供的用于酒店预订的对话式聊天机器人

自治系统

自治系统是不断发展的新类的一部分,突破了基本自动化的局限。自治系统不是像机器人一样,几乎没有变化或毫无变化地重复执行特定任务,而是赋予计算机智能功能,使其适应不断变化的环境,以实现预期目标。

智能建筑已采用自治系统自动控制照明、通风、空调及安全等操作。更复杂的示例是自导向机器人,可用于探测坍塌的矿井,以全面反映其内部情况,确定结构稳固的部分,分析透气性,并在没有远程端实时人工监视的情况下需要救援时检测被困矿工的生命体征。

MicrosoftAI中的自治系统和解决方案有关MicrosoftAI的常规信息

详细了解MicrosoftAI,并随时了解相关新闻:

MicrosoftAI学校

AzureAI平台页

MicrosoftAI平台页

MicrosoftAI博客

GitHub上的MicrosoftAI:示例、参考体系结构和最佳做法

Azure体系结构中心

高级体系结构类型预生成AI

预生成AI就是可供使用的现成AI模型、服务和API。这些工具可帮助你向应用、网站和流添加智能功能,而不必收集数据,然后生成、训练和发布自己的模型。

例如,预生成AI可能是预训练模型,可以按原样合并,也可以用于为进一步自定义训练提供基准。再比如基于云的API服务,你可以随意调用该服务以所需方式处理自然语言。

Azure认知服务

认知服务为开发者提供了使用预生成API和集成工具包创建应用程序的机会,这些应用程序可以听、说、看、理解,甚至可以开始推理。认知服务中的服务目录可分为五大支柱类别:视觉、语音、语言、Web搜索和决策/建议。

Azure认知服务文档

免费试用Azure认知服务

选择Azure认知服务技术

在Azure中选择自然语言处理技术

AIBuilder中的预生成AI模型

AIBuilder是MicrosoftPowerPlatform中的一项新功能,可提供点击式接口,即使用户没有编码或数据科学技能,也可以向应用添加AI。(AIBuilder中的一些功能尚未正式发布,仍处于预览状态。有关详细信息,请参阅按区域划分的功能可用性页。)

你可以生成和训练自己的模型,但AIBuilder还可提供立即可用的精选预生成AI模型。例如,你可基于预生成模型在MicrosoftPowerApps中添加一个组件,以识别名片中的联系信息。

Azure上的PowerApps

AIBuilder文档

AIBuilder中的AI模型类型

AIBuilder中的预生成AI模型概述

自定义AI

尽管预生成AI很有用(而且越来越灵活),但从AI中获取所需内容的最佳方式或许是自己构建系统。显然,这是一个深奥复杂的主题,除了刚介绍的内容以外,我们先看一些基本概念。

代码语言

AI的核心概念是使用算法来分析数据和生成模型,以采用有效方式进行描述(或评分)。算法是由开发者和数据科学家(有时由其他算法)使用编程代码编写的。目前,最常用于AI开发的两种编程语言是Python和R。

Python是一种通用的高级编程语言。其语法简单易学,强调可读性。没有编译步骤。Python具有大型标准库,但它也支持模块和包添加功能。这有助于模块化,也有助于根据需要扩展功能。Python的AI和ML库生态系统较大,并且不断增长,其中包括Azure中随时可用的许多库。

Azure产品主页上的Python

面向Python开发人员的Azure

适用于Python的Azure机器学习SDK

有关机器学习与Python和AzureNotebooks结合使用的简介

Scikit-learn。用于Python的开源ML库

PyTorch。具有丰富生态系统的开源Python库,可用于深度学习、计算机视觉、自然语言处理等

TensorFlow。开源符号数学库还用于ML应用程序和神经网络

教程:在AzureFunctions中使用Python和TensorFlow应用机器学习模型

R是一种语言和环境,适用于统计计算和图形。从在线映射广泛的社交趋势和市场营销趋势到开发财务和气候模型,均可使用此语言。

Microsoft已完全采用R编程语言,并为R开发者提供了许多不同的选项,以便他们在Azure中运行自己的代码。

在Azure机器学习中以交互方式使用R。

教程:通过Azure机器学习在R中创建逻辑回归模型

培训

训练是机器学习的核心。这是“教”算法创建模型的迭代过程,用于分析数据,然后根据结果做出准确预测。此过程实际上有三个常规阶段:训练、验证和测试。

在训练阶段,会对一组已知的优质数据进行标记,以便可以识别单个字段。将标记的数据提供给为做出特定预测配置的算法。完成操作后,该算法会输出一个模型,以一组参数的形式描述发现的模式。在验证过程中,会对新数据进行标记并将其用于测试模型。算法会根据需要进行调整,并可能会经历更多训练。最后,测试阶段使用没有任何标记或预选目标的实际数据。如果模型的结果是准确的,则将其视为准备就绪,可以进行部署。

使用Azure机器学习训练模型超参数优化

超参数是控制训练过程本身的数据变量。这些变量是控制算法运作方式的配置变量。因此,超参数通常是在模型训练开始之前进行设置,并且在训练过程中不是按参数方式进行修改。超参数优化涉及运行训练任务中的试用版,评估作业完成程度,然后根据需要进行调整。此过程会生成多个模型,每个模型都会使用不同的超参数系列进行训练。

使用Azure机器学习优化模型的超参数模型选择

训练和超参数优化过程会生成大量候选模型。这些模型具有许多不同的差异,包括准备数据所需的工作量、模型的灵活性、处理时间量,当然还包括其结果的准确性。根据需求和约束条件选择最佳训练模型被称为“模型选择”,但这更像是训练前的预规划,毕竟是选择最佳训练模型。

自动化机器学习(AutoML)

自动化机器学习(也称为AutoML)是机器学习模型开发中耗时的迭代性任务实现自动化的过程。此过程可以显著减少获取生产就绪ML模型所需的时间。自动化ML可帮助执行模型选择、超参数优化、模型训练和其他任务,不需要用户具有广博的编程知识或域知识。

什么是自动化机器学习?计分

评分(也称为“预测”)是在给定一些新输入数据后根据训练机器学习模型生成值的过程。创建的值(或分数)可以表示对未来值的预测,但也可能表示可能的类别或结果。评分过程可生成多种不同类型的值:

推荐项和相似性分数的列表

有关时序模型和回归模型的数值

概率值,指示新输入属于某个现有类别的可能性

与新项最相似的类别或群集的名称

分类模型的预测类或结果

批量评分是指在某个固定时间段内收集数据,然后分批进行处理时的评分。此过程可能包括生成业务报表或分析客户忠诚度。

实时评分就是正在执行且尽可能快地执行的评分。经典示例是信用卡欺诈行为检测,但在语音识别、医学诊断、市场分析以及许多其他应用中也可以使用实时评分。

有关Azure上自定义AI的常规信息

GitHub上的MicrosoftAI:示例、参考体系结构和最佳做法

AzureGitHub存储库上的自定义AI。即一系列脚本和教程,可帮助开发者在其AI工作负载中有效使用Azure

适用于Python的Azure机器学习SDK

Azure机器学习服务示例笔记本(Python)。即有关示例笔记本的GitHub存储库,用于演示Azure机器学习PythonSDK

适用于R的Azure机器学习SDK

AzureAI平台产品/服务

下面是可用于根据需求开发AI解决方案的Azure技术、平台和服务的细分。

Azure机器学习

此服务是企业级机器学习服务,可更快地构建和部署模型。Azure机器学习提供了Web界面和SDK,以便你可以大规模快速训练并部署机器学习模型和管道。请将这些功能与开放源代码Python框架(如PyTorch、TensorFlow和scikit-learn)配合使用。

Microsoft的机器学习产品有哪些?

Azure机器学习产品主页

Azure机器学习数据体系结构指南概述

Azure机器学习文档概述

什么是Azure机器学习?总体定位,其中包含指向多个学习资源、SDK、文档等内容的链接

Azure机器学习参考体系结构

Azure上PythonScikit-Learn和深度学习模型的训练

Azure上深度学习模型的分布式训练

Azure上Python机器学习模型的批量评分

Azure上深度学习模型的批量评分

Azure上PythonScikit-Learn和深度学习模型的实时评分

使用Azure机器学习的Python模型的机器学习操作化(MLOps)

Azure上R机器学习模型的批量评分

Azure上R机器学习模型的实时评分

AzureDatabricks上Spark机器学习模型的批量评分

企业级聊天机器人

在Azure上生成实时建议API

Azure自动化机器学习

Azure为自动化ML提供广泛支持。开发者可以使用无代码UI或通过代码优先的笔记本体验来构建模型。

Azure自动化机器学习产品主页

Azure自动化ML信息图(PDF)

教程:使用Azure机器学习中的自动化ML创建分类模型

教程:使用自动化机器学习预测出租车费

使用Python配置自动化ML试验

将CLI扩展用于Azure机器学习

使用Azure机器学习CLI自动执行机器学习活动

Azure认知服务

这是一系列全面的AI服务和认知API,可帮助你构建智能应用。这些特定于域的预训练AI模型可以使用你的数据进行自定义。

认知服务产品主页

Azure认知服务文档

Azure认知搜索

这是AI支持的云搜索服务,可用于移动应用和Web应用开发。此服务可搜索专用异类内容,带有用于AI扩充的选项(如果内容为非结构化内容或内容在采用其原始格式时无法搜索)。

Azure认知搜索产品主页

AI扩充入门

Azure认知搜索文档概述

在Azure中选择自然语言处理技术

快速入门:在Azure门户中创建Azure认知搜索认知技能集

Azure机器人服务

这是一个专门设计的机器人开发环境,具有快速入门的现成模板。

Azure机器人服务产品主页

Azure机器人服务文档概述

Azure参考体系结构:企业级对话机器人

工作负载示例:Azure上提供的用于酒店预订的对话式聊天机器人

MicrosoftBot框架

GitHubBotBuilder存储库

Azure上的ApacheSpark

ApacheSpark是并行处理框架,支持使用内存中处理来提升大数据分析应用程序的性能。Spark提供了用于内存中群集计算的基元。Spark作业可在内存中加载和缓存数据,并可重复查询,查询速度比基于磁盘的应用程序(如Hadoop)快得多。

AzureHDInsight中的ApacheSpark是Microsoft的ApacheSpark在云中的实现。HDInsight中的Spark群集可与Azure存储和AzureDataLakeStorage兼容,因此你可以使用HDInsightSpark群集处理Azure中存储的数据。

适用于ApacheSpark的Microsoft机器学习库,即MMLSpark(MicrosoftMLforApacheSpark)。它是一个开源库,在Spark生态系统中添加了许多深度学习和数据科学工具、网络功能和生产级性能。详细了解MMLSpark功能。

AzureHDInsight概述。有关功能、群集体系结构和用例的基本信息,以及指向快速入门和教程的指针。

教程:在AzureHDInsight中生成ApacheSpark机器学习应用程序

HDInsight上的ApacheSpark最佳做法

配置HDInsightApacheSpark群集设置

HDInsight中的机器学习

MMLSpark的GitHub存储库:适用于ApacheSpark的Microsoft机器学习库

在HDInsight上创建ApacheSpark机器学习管道

用于机器学习的AzureDatabricksRuntime

AzureDatabricks是一个基于ApacheSpark的分析平台,具有一键设置、简化的工作流以及一个供数据科学家、工程师和商业分析师相互协作的交互工作区。

用于机器学习的DatabricksRuntime(DatabricksRuntimeML)可用于启动具有分布式训练所需全部库的Databricks群集。此工具可为机器学习和数据科学提供随时可用的环境。而且,其中包含多个常用库,包括TensorFlow、PyTorch、Keras和XGBoost。它还支持使用Horovod进行分布式训练。

AzureDatabricks产品主页

AzureDatabricks文档

AzureDatabricks中的机器学习功能

操作指南:用于机器学习的DatabricksRuntime

AzureDatabricks上Spark机器学习模型的批量评分

AzureDatabricks上的深度学习概述

客户案例

各个行业都在以令人鼓舞的创新方式应用AI。下面是大量客户案例研究和成功案例:

ASOS:在线零售商使用Azure机器学习服务解决难题

KPMG使用Azure认知服务帮助金融机构节省数百万美元的合规成本

Volkswagen:机器翻译用40种语言表达Volkswagen

Buncee:NYC学校使用AzureAI为各个年龄各种层次的读者提供支持

InterSystems:数据平台公司以史无前例的速度生成重要信息,改善了IT健康状况

Zencity:数据驱动型初创公司提供资金帮助本地政府改善居民的生活质量

Bosch依靠IoT创新,帮助驱动程序防止严重事故,提高流量安全性

AutomationAnywhere:机器人进程自动化平台开发者使用Azure认知服务扩充其软件

Wix使用Azure认知搜索在1.5亿个网站上部署可缩放的智能搜索

AsklepiosKlinikAltona:使用MicrosoftHoloLens2和3D可视化效果提高手术精准度

AXAGlobalP&C:全球保险公司使用基于云的HPC对复杂的自然灾害建模

浏览更多AI客户案例

后续步骤

若要了解Microsoft提供的人工智能开发产品,请参阅MicrosoftAI平台页。

有关如何开发AI解决方案的训练,请参阅MicrosoftAI学校。

GitHub上的MicrosoftAI:示例、参考体系结构和最佳做法安排了基于Microsoft开源AI的存储库,并提供教程和学习材料。

人工智能领域常用的开源框架和库(含机器学习/深度学习/强化学习/知识图谱/图神经网络)

【说在前面】本人博客新手一枚,象牙塔的老白,职业场的小白。以下内容仅为个人见解,欢迎批评指正,不喜勿喷![认真看图][认真看图]

【补充说明】本文主要讨论人工智能领域中常用的支持Python编程语言的开源框架和库,因此全面性肯定有限!

一、机器学习常用的开源框架和库1.Scikit-learn

作为专门面向机器学习的Python开源框架,Scikit-learn内部实现了多种机器学习算法,容易安装和使用,样例丰富。

2. Mahout

在大数据分布式框架Hadoop下使用,包含了机器学习中常用的算法(含推荐算法)。

3.MLlib/spark.ml

在大数据分布式框架Spark下使用,同样包含了机器学习中常用的算法,可采用Java/Sacala/Python/R语言作为编程语言。

4.其他

例如针对计算机视觉的SimpleCV、针对自然语言处理的NLTK等,这里不再拓展。

二、深度学习常用的开源框架和库1.TensorFlow

由GoogleBrain团队开发,能够实现各种深度神经网络的搭建。为初学者和专家提供了各种API,以便对桌面、移动终端、Web和云进行开发。但是,计算图必须构建为静态图,这让很多计算变得难以实现,尤其是序列预测中经常使用的beamsearch。

2.Keras

由Python编写的高级神经网络API,相当于Tensorflow、Theano、CNTK的上层接口。强调极简主义,降低了编程和阅读别人代码时的理解开销, 目前封装有全连接网络、CNN、RNN和LSTM等算法。但是,封装得太高级,细节很难修改,无法直接使用多GPU。

3.PyTorch

由Facebook团队基于Torch开发的深度学习框架。与TensorFlow不同的是,PyTorch是基于动态图的,目前也非常火热。

4.Caffe

在TensorFlow出现之前,一直是深度学习领域Githubstar最多的项目。Caffe的优势在于容易上手(网络结构都是以配置文件形式定义,不需要用代码设计网络)、训练速度快(组件模块化,可以方便的拓展到新的模型和学习任务上)。但是,Caffe不好安装,且最开始设计时的目标只针对于图像,因此对CNN的支持非常好(例如AlexNet、VGG、Inception等),但是对RNN、LSTM等的支持不是特别充分。

5.其他

例如百度提出的深度学习框架PaddlePaddle、华为最新开源的深度学习框架MindSpore、阿里的X-DeepLearning等,这里不再拓展。

三、强化学习常用的开源框架和库1. OpenAIGym

提供了非常多的虚拟环境,具体强化学习算法的代码需要自己来写,可以很好验证强化学习算法,众多强化学习环境都为其提供接口。

2.OpenAIBaseline

基于Tensorflow和OpenAIGym开发的,封装了许多强化学习算法(例如DQN/PPO/TRPO/DDPG等)。但是,代码规范性不好。

3.RLlib

支持TensorFlow和PyTorch,可通过简单的PythonAPI使用,目前附带了许多流行的RL算法。

4.Horizon

Facebook基于PyTorch、Caffe和Spark构建的强化学习框架,是首个使用应用强化学习在大规模生产环境中优化系统的端到端开源平台。

5.天授:最近了解的,应该比较新吧

清华大学人工智能研究院自研的深度强化学习算法平台,支持TensorFlow和PyTorch。可以完整支持PG、DQN、DDQN、A2C、DDPG、PPO、TD3、SAC等主流强化学习算法。对比既有主流强化学习平台,大佬给出了天授的性能对比图:

未来大佬团队将从三个维度拓展“天授”平台,算法层面将更加全面支持地支持主流强化学习算法(包括model-basedRL,imitationlearning等),任务层面将进一步支持包括Atari、VizDoom等复杂任务,性能层面将进一步提升平台在模型性能、训练速度、鲁棒性等方面的核心指标,更好的为学术界服务。

6.其他

例如知乎有人提到的tf-agents(与工业紧密连接)、tensorlayer、百度PaddlePaddle发布的PARL等,这里不再拓展。

四、图神经网络常用的开源框架和库1.四大图神经网络框架deepgraphlibrary(DGL):支持pytorch、tensorflowpytorchgeometric(PyG):基于pytorchantgraphmachinelearningsystem:蚂蚁金服团队推出的大规模图机器学习系统tf_geometric:借鉴pytorchgeometric,创建了tensorflow版本2.CogDL :最近了解的,应该比较新吧

清华大学知识工程研究室推出了一个大规模图表示学习工具包CogDL,可以让研究者和开发者更加方便地训练和对比用于节点分类、链路预测以及其他图任务的基准或定制模型。该工具包采用PyTorch实现,集成了Deepwalk、LINE、node2vec、GraRep、NetMF、NetSMF、ProNE等非图神经网络和GCN、GAT、GraphSage、DrGCN、NSGCN、GraphSGAN等图神经网络模型基准模型的实现。

与其他图表示学习工具包相比,CogDL具有以下特点:

稀疏性:在具有数千万节点的大规模网络上实现快速网络嵌入。任意性:能够处理属性化、多路和异构等不同图结构的网络。并行处理:在多个GPU上实现不同种子和模型的并行训练并自动输出结果表格。可扩展性:轻松添加新的数据集、模型和任务并在所有现有的模型/数据集上测试。3.Graph-Learn(原AliGraph):一个工业级的图神经网络平台阿里巴巴提出的AliGraph涵盖了从原始图数据到GNN应用的整体链路。根据阿里巴巴的介绍:

系统层面:

数据种类:支持同构图、异构图、属性图,有向图、无向图,可方便与任意分布式文件系统对接。数据规模:支持千亿级边、十亿级顶点的超大规模图(原始存储TB级)。算子种类:支持几十种可与深度学习相结合的图查询、采样算子,支持向量检索,支持算子按需自定义。性能指标:支持分钟级超大规模图构建,毫秒级多跳异构图采样,毫秒级大规模向量检索。用户接口:纯Python接口,与TensorFlow构成一体化IDE,开发成本相比一般TF模型无异。

算法层面:

已支持业界主流的GraphEmbedding算法,包括:DeepWalk、Node2Vec、GraphSAGE、GATNE等。4.其他

图神经网络研究者和工业界在Github上开源了很多算法的具体实现及其框架,包括GCN、GAT、GraphNets框架等,这里不再拓展。

五、知识图谱常用的开源框架和库1.开源的知识库 

主要包括WikiData、DBPedia、WordNet、YAGO、ConceptGraph、BabelNet、CN-DBPeidia、OpenKG等,这里不再拓展。

2.开源的构建工具

斯坦福大学医学院生物信息研究中心提出的Protege是基于Java语言开发的本体编辑和知识获取软件。Protege提供本体概念类、关系、属性和实例的构建,不基于具体的本体描述语言,因此用户可以在概念层次上构建领域本体模型。除了Protege,还有其他应用于知识图谱构建的开源软件,而且完整的知识图谱构建还包括知识的存储、知识融合等。我想后续单独写一个专题来介绍知识图谱的构建问题,这里不再拓展。

3.DGL-KE:亚马逊提出的知识图谱嵌入表示框架亚马逊AI团队继DGL之后,又开源了一款专门针对大规模知识图谱嵌入表示的新训练框架DGL-KE,旨在能让研究人员和工业界用户方便、快速地在大规模知识图谱数据集上进行机器学习训练任务。相比于已有的开源框架,DGL-KE的亮点如下:

支持各种主流知识图谱表示学习算法,包括TransE、ComplEx、DistMult、TransR、RESCAL、RotatE等。已有开源框架中唯一支持多核CPU,多卡GPU,CPU-GPU混合训练,以及分布式训练的知识图谱嵌入表示框架。简单易用,用户无需编写代码,直接将知识图谱数据作为输入即可。高性能且可扩展。4.其他

知识图谱研究者和工业界在Github上应该开源了很多方法的具体实现及其框架,博主有看到再分享,这里不再拓展。

六、智能推荐常用的开源框架和库1.DeepMatch:用于广告和推荐的深度召回匹配算法库

提供了若干主流的深度召回匹配算法的实现,并支持快速导出用户和物品向量进行ANN检索。非常适合同学们进行快速实验和学习。

2.其他智能推荐研究者和工业界在Github上应该开源了很多方法的具体实现及其框架,博主有看到再分享,这里不再拓展。

 

如果你对智能推荐感兴趣,欢迎先浏览我的另几篇随笔:智能推荐算法演变及学习笔记、CTR预估模型演变及学习笔记、基于图模型的智能推荐算法学习笔记(含知识图谱/图神经网络,不止于智能推荐) 

如果您对数据挖掘感兴趣,欢迎浏览我的另几篇博客:数据挖掘比赛/项目全流程介绍、从中国农业银行“雅典娜杯”数据挖掘大赛看金融行业数据分析与建模方法

如果您对人工智能算法感兴趣,欢迎浏览我的另一篇博客:人工智能新手入门学习路线和学习资源合集(含AI综述/python/机器学习/深度学习/tensorflow)

如果你是计算机专业的应届毕业生,欢迎浏览我的另外一篇博客:如果你是一个计算机领域的应届生,你如何准备求职面试?

如果你是计算机专业的本科生,欢迎浏览我的另外一篇博客:如果你是一个计算机领域的本科生,你可以选择学习什么?

如果你是计算机专业的研究生,欢迎浏览我的另外一篇博客:如果你是一个计算机领域的研究生,你可以选择学习什么?

如果你对金融科技感兴趣,欢迎浏览我的另一篇博客:如果你想了解金融科技,不妨先了解金融科技有哪些可能?

之后博主将持续分享各大算法的学习思路和学习笔记:helloworld:我的博客写作思路

人工智能常用10大开发框架和AI库

人工智能是未来发展的一个新方向,从金融服务至医疗保健,再到运输,未来各行各业都会使用到人工智能,这是21世纪又一次的革命性创新。

人工智能的实现离不开开发框架和AI库,以下是汇总的10大高质量人工智能开发框架和AI库,以便于更深入的了解并探索人工智能的世界!

1.TensorFlow

TensorFlow是人工智能领域最常用的框架,是一个使用数据流图进行数值计算的开源软件,该框架允许在任何CPU或GPU上进行计算,无论是台式机、服务器还是移动设备都支持。该框架使用C++和Python作为编程语言,简单易学。

2.微软的CNTK

CNTK是一款开源深度学习工具包,是一个提高模块化和维护分离计算网络,提供学习算法和模型描述的库,可以同时利用多台服务器,速度比TensorFlow快,主要使用C++作为编程语言。

3.Theano

Theano是一个强大的Python库,该库使用GPU来执行数据密集型计算,操作效率很高,常被用于为大规模的计算密集型操作提供动力。

4.Caffe

Caffe是一个强大的深度学习框架,主要采用C++作为编程语言,深度学习速度非常快,借助Caffe,可以非常轻松地构建用于图像分类的卷积神经网络。

5.Keras

Keras是一个用Python编写的开源的神经网络库,与TensorFlow、CNTK和Theano不同,它是作为一个接口,提供高层次的抽象,让神经网络的配置变得简单。

6.Torch

Torch是一个用于科学和数值的开源机器学习库,主要采用C语言作为编程语言,它是基于Lua的库,通过提供大量的算法,更易于深入学习研究,提高了效率和速度。它有一个强大的n维数组,有助于切片和索引之类的操作。除此之外,还提供了线性代数程序和神经网络模型。

7.Accord.NET

Accord.NET框架是一个.NET机器学习框架,主要使用C#作为编程语言,该框架可以有效地处理数值优化、人工神经网络,甚至是可视化,除此之外,Accord.NET对计算机视觉和信号处理功能非常强大,同时也使得算法的实现变得简单。

8.SparkMLlib

ApacheSparkMLlib是一个可扩展的机器学习库,可采用Java、Scala、Python、R作为编程语言,可以轻松插入到Hadoop工作流程中,提供了机器学习算法,如分类,回归和聚类,在处理大型数据时非常快速。

9.Sci-kitLearn

Sci-kitLearn是一个非常强大的机器学习Python库,主要用于构建模型,对于统计建模技术非常有效,其特性包括监督学习算法、无监督学习算法和交叉验证。

10.MLPack

MLPack是一个用C++实现的可扩展的机器学习库,其运行速度快,轻松易学!

以上是人工智能领域值得推荐的高质量的框架和AI库,对于想从事或正在从事相关工作的人员来说,最好都可以尝试使用一下,相信必定会有所收获!

2023年人工智能领域发展七大趋势

2022年人工智能领域发展七大趋势

有望在网络安全和智能驾驶等领域“大显身手”

人工智能已成为人类有史以来最具革命性的技术之一。“人工智能是我们作为人类正在研究的最重要的技术之一。它对人类文明的影响将比火或电更深刻”。2020年1月,谷歌公司首席执行官桑达尔·皮查伊在瑞士达沃斯世界经济论坛上接受采访时如是说。

美国《福布斯》网站在近日的报道中指出,尽管目前很难想象机器自主决策所产生的影响,但可以肯定的是,当时光的车轮到达2022年时,人工智能领域新的突破和发展将继续拓宽我们的想象边界,其将在7大领域“大显身手”。

增强人类的劳动技能

人们一直担心机器或机器人将取代人工,甚至可能使某些工种变得多余。但人们也将越来越多地发现,人类可借助机器来提升自身技能。

比如,营销部门已习惯使用工具来帮助确定哪些潜在客户更值得关注;在工程领域,人工智能工具通过提供维护预测,让人们提前知道机器何时需要维修;法律等知识型行业将越来越多地使用人工智能工具,帮助人们对不断增长的可用数据中进行分类,以找到完成特定任务所需的信息。

总而言之,在几乎每个职业领域,各种智能工具和服务正在涌现,以帮助人们更有效地完成工作。2022年人工智能与人们日常生活的联系将会变得更加紧密。

更大更好的语言建模

语言建模允许机器以人类理解的语言与人类互动,甚至可将人类自然语言转化为可运行的程序及计算机代码。

2020年中,人工智能公司OpenAI发布了第三代语言预测模型GPT—3,这是科学家们迄今创建的最先进也是最大的语言模型,由大约1750亿个“参数”组成,这些“参数”是机器用来处理语言的变量和数据点。

众所周知,OpenAI正在开发一个更强大的继任者GPT—4。尽管细节尚未得到证实,但一些人估计,它可能包含多达100万亿个参数(与人脑的突触一样多)。从理论上讲,它离创造语言以及进行人类无法区分的对话更近了一大步。而且,它在创建计算机代码方面也会变得更好。

网络安全领域的人工智能

今年1月,世界经济论坛发布《2021年全球风险格局报告》,认为网络安全风险是全世界今后将面临的一项重大风险。

随着机器越来越多地占据人们的生活,黑客和网络犯罪不可避免地成为一个更大的问题,这正是人工智能可“大展拳脚”的地方。

人工智能正在改变网络安全的游戏规则。通过分析网络流量、识别恶意应用,智能算法将在保护人类免受网络安全威胁方面发挥越来越大的作用。2022年,人工智能的最重要应用可能会出现在这一领域。人工智能或能通过从数百万份研究报告、博客和新闻报道中分析整理出威胁情报,即时洞察信息,从而大幅加快响应速度。

人工智能与元宇宙

元宇宙是一个虚拟世界,就像互联网一样,重点在于实现沉浸式体验,自从马克·扎克伯格将脸书改名为“Meta”(元宇宙的英文前缀)以来,元宇宙话题更为火热。

人工智能无疑将是元宇宙的关键。人工智能将有助于创造在线环境,让人们在元宇宙中体会宾至如归的感觉,培养他们的创作冲动。人们或许很快就会习惯与人工智能生物共享元宇宙环境,比如想要放松时,就可与人工智能打网球或玩国际象棋游戏。

低代码和无代码人工智能

2020年,低代码/无代码人工智能工具异军突起并风靡全球,从构建应用程序到面向企业的垂直人工智能解决方案等应用不一而足。这股新鲜势力有望在2022年持续发力。数据显示,低代码/无代码工具将成为科技巨头们的下一个战斗前线,这是一个总值达132亿美元的市场,预计到2025年其总值将进一步提升至455亿美元。

美国亚马逊公司2020年6月发布的Honeycode平台就是最好的证明,该平台是一种类似于电子表格界面的无代码开发环境,被称为产品经理们的“福音”。

自动驾驶交通工具

数据显示,每年有130万人死于交通事故,其中90%是人为失误造成的。人工智能将成为自动驾驶汽车、船舶和飞机的“大脑”,正在改变这些行业。

特斯拉公司表示,到2022年,其生产的汽车将拥有完全的自动驾驶能力。谷歌、苹果、通用和福特等公司也有可能在2022年宣布在自动驾驶领域的重大飞跃。

此外,由非营利的海洋研究组织ProMare及IBM共同打造的“五月花”号自动驾驶船舶(MAS)已于2020年正式起航。IBM表示,人工智能船长让MAS具备侦测、思考与决策的能力,能够扫描地平线以发觉潜在危险,并根据各种即时数据来变更路线。2022年,自动驾驶船舶技术也将更上一层楼。

创造性人工智能

在GPT—4谷歌“大脑”等新模型的加持下,人们可以期待人工智能提供更加精致、看似“自然”的创意输出。谷歌“大脑”是GoogleX实验室的一个主要研究项目,是谷歌在人工智能领域开发出的一款模拟人脑具备自我学习功能的软件。

2022年,这些创意性输出通常不是为了展示人工智能的潜力,而是为了应用于日常创作任务,如为文章和时事通讯撰写标题、设计徽标和信息图表等。创造力通常被视为一种非常人性化的技能,但人们将越来越多地看到这些能力出现在机器上。(记者刘霞)

【纠错】【责任编辑:吴咏玲】

人工智能项目的开发流程概述

人工智能作为当下最热门的行业之一,不管是高考的专业选择中,还是各行各业的工作中,基本都会听到人工智能这个词,主要原因就是社会上各行各业对人工智能的需求越来越大了。在国内,从2015年开始,人工智能技术就已经逐渐渗透到了各行各业了。那么实现人工智能的过程是怎么样的呢?我们所看到的人工智能产品到底是怎么一步步走到我们眼前的呢?接下来我们就以人工智能领域最为火热的深度学习为例,详细分析一下人工智能项目的研发流程。

1、数据处理-AI的粮食加工

人工智能项目研发的首要阶段就是数据处理,既然是数据处理,那么需要有数据才能处理。数据作为人工智能项目的首要材料之一,是不可或缺的,怎么获得良好的数据,是处理好数据的第一步,没有质量保证的数据,无论如何处理,也很难达到数据处理结果的要求。

数据的要求一般是根据项目最终的要求而定的,比如拿图像视觉方向的项目来说,模型所需要的当然就是图像数据了,那么什么样的图像数据才算是比较好的数据,有利于模型的学习呢?一般来说图像数据对于现实物体的还原度越高越好,一般可以从图像的色彩三要素和图像像素的值来判断。

数据的还原度从根本上影响了模型最终输出的效果,但是如果拿到的原始数据质量就不是很好的时候,就只能想办法对原始数据做一些处理,以期望数据的质量更好一些。但是话说回来,数据处理只是治标不治本,也就是说如果数据的质量真的不怎么好,那么无论如何处理也是很难达到使用的效果的。

所以最好的办法就是采集和使用场景匹配度最高的数据,比如让工作人员到现场实地采集数据。这个做法是非常有必要的,不要光看现在顶会论文上的哪些指标,人家是在做学术研究的,大家使用的数据集都是一样的,比如coco,voc等等,只有使用同样的数据集才能分出大家谁的模型比较好,比如最近比较火热的YOLOX也是在COCO数据集做的测试,和以前各版本的YOLO做的比较。

比如说最近的某某模型增加了Attention后,发现accuracy、flops、mAp都提升了不少,又一次SOTA了,等过了一段时间作者针对不同的任务对模型又做了一些Finetune,结果比以前还更好。但实际上这些学术界看似超越之前的研究成果在实际工程应用中却没有想象中的那么美好,因为时间工程中,不可能出现两个不同的项目使用同样的数据集的情况。

在实际工程中,在采集数据的过程中,稍微不注意的一些细节就将模型的优势抵消了。比如采集数据的时候,是从互联网上爬下来的数据,那么数据的质量可能就不会太好,如果实际工作环境是室内或室外固定的场景,那么最好是到实地去采集不同时间、日期、天气情况下的数据,如果采集到好的数据资源,那么就算使用一个一般的模型,也能得到较好的结果。反之,如果训练数据和实际应用场景的数据差异过大,那么就算使用当前的SOTA模型,也很难达到预期的效果。

当然,再好的数据,采集回来后还是要做处理的,最直接的就是打标签,标签的设置确定了模型最终要学习的目标是什么。如果采集的数据数量不够,那么还需要做一些相应的数据增强来扩充数据量。

2、模型设计-AI的灵魂熔炉

如果数据是材料,那么模型就是容器,好的材料配上好的丹炉,才有产出好的丹药的可能。模型的发展是深度学习技术发展中较为重要的一环,无论是早期的卷积神经网络模型LeNet,还是后来的AlexNet,以及后面陆续出现的VggNet、GoogLeNet、SqueezeNet、ResNet、DenseNet、DarkNet、MobileNet、ShuffleNet、EfficientNet,又或者是这两年异军突起的Transformer模型,以及CNN和Transformer的结合体,都有一个共同特点,那就是这些模型的发展都朝着一个共同的目标前进,这个目标就是更高的mAp值、更高的训练效率、更快的推理速度、更大的平台适应性。

可以从模型的发展历程中看出,深度学习的知识体系更新迭代非常之快,想要保持在技术知识上的前沿性,就需要不断的学习新知识。如果在企业工作,那么还需要将这些新的知识融入到工程应用当中,产生一定的实际价值。

如果单从神经网络模型的发展来看,似乎想要在行业中出头,只能依靠不断的学习新知识,但是很明显,这样的成本太高,一般的企业从业人员不可能每天都有很充裕的时间来学习的,所以工程界和学术界对于新技术的关注度还是有些差异的,毕竟一个纯粹的学术研究,一个是落地的实际应用。

在学术界,模型的轻微提升,就可以发表一篇论文,甚至可以发表在顶会期刊上面,因为学术研究的就是在固定条件下的模型性能和效率。而工程界的条件不可能像学术界那样固定,每个具体的项目要求都不一样的,而且不同项目的数据也是大相径庭,这样就会造成同样的模型,在不同条件下会出现不同的结果,由于工程界实际项目的变量太多,将学术界影响结果的不确定性条件扩大了,需要解决的问题自然也就增加了。

在学术界做研究的时候,有部分条件是人为固定的,只需要在模型的设计训练上提高效果即可,而到了工程界就变成了所有的条件都具有了不确定性,比如设备、数据、平台、外部环境等这些变量对于最终结果的影响,一点都不亚于模型对于结果的影响。所以在工程界,当影响结果的这些变量在发生变化的时候,会出现使用较弱的模型效果却超出较好模型效果的情况,其原因就是模型上提升不足以抵消其他变量带来的负面影响。

好的丹炉虽具有炼出好丹药的可能,但是如果丹炉放置的位置不好,经常刮风下雨、伴随地震海啸,那么这个丹炉的优势就不如放在一个稳定地面上的丹炉的效果了,更不用说所使用的材料出了问题了。当然学术界和工程界是互相促进发展的,学术界的技术研究为工程界实际应用做技术方向指导,而工程界反过来监督验证学术界的研究成果是否有效。

3、训练优化-AI的学习成长

模型训练是最考验算法工程师的实战经验的,比如选择什么样的主干模型,进行怎么样的微调,以及选择什么样的损失函数和优化方法,是否进行多阶段训练,或者对图像数据进行多尺度训练等。此外还包括进行多大batch的采样,如何提高训练的速度,而这些都和具体的设备类型相关。

一般来说,有经验的训练人员,在训练模型的时候,不会一开始就输入大量的数据,而是做小批量的数据的训练,目的是先通过小批量数据来检验模型的好坏,然后再根据检验情况进行下一步的操作。很少会出现直接一上来就使用大批量的数据训练模型的情况,因为这样的做法有点像豪赌,一旦模型出现了问题,那么前面辛辛苦苦花费的大量时间将会毫无成果,一切都要重新再来,这种大量的试错时间成本在真实项目开发当中是有可能造成项目延期的。

一般模型训练开始之前先使用少量的数据快速的训练出一个过拟合的结果,用来验证模型是否合适。在实际工作中过拟合往往是不好的表现,但是我们可以使用它来做一些有意义的事情,比如用过拟合来验证模型是否合理,过拟合往往意味着参数过大,或者数据过少,导致模型测试的时候泛化能力太差,但是却能够告诉我们,模型本身是没有问题的,问题就在于训练过度,或者数据集过少。既然都过拟合了,说明模型的参数是足够多的,而且也得到了正确的结果,这正是我们想要的,至于过拟合,可以通过增加更多的数据来解决。

如果模型有问题,那么想要得到一个过拟合的结果都是不可能的。如果在前期先训练一个过拟合模型,那么将能够大大的加强我们工程当中的容错率,哪怕训练出了问题,再调整模型也不会浪费太多的时间,甚至可以再来一次,训练一个新的模型,因为过拟合模型的训练本来就花不了太长时间。

如果太过自信,模型训练一开始就把全部数据加载进去,那么模型的训练有可能会是几个星期甚至更长的时间,然而一旦出现错误,那么浪费的时间就太长了,有可能会导致项目的工期延误。最好的办法就是使用少量数据训练过拟合的结果来不断测测试模型的正确性,当确定模型没有问题了,再加载大批量的数据训练。

4、评估验证-AI的监理指导

模型评估是和模型训练伴随而行的,可以说训练一开始,评估也随之开始。训练和评估如同部队上的司令员和政委,一个负责攻城掠地,一个负责监督指导。可以对比一下电视剧《亮剑》里的李云龙和赵刚,李云龙的职务是团长,负责指挥前线士兵冲锋陷阵,赵刚的职务是政委,负责后勤和监督政策的执行。在剧里李云龙和赵刚经常吵架,因为李云龙的目标是如何打胜仗,而赵刚的目标不光要打胜仗,还要负责部队整体的思想工作,监督政策的执行,防止一些冒险的做法。

对比模型训练和模型评估,两者的关系也是如此。模型训练只负责如何把模型训练好,至于要训练到什么程度才算合适,需要模型评估说了算。所以在开始一项任务的时候,模型训练和模型评估是同时进行的,正常情况下,模型训练一次,则评估一次,但是我们认为模型训练的前几次是不需要评估的,因为模型训练的前期,参数还没有学习到正确的数值。

根据经验,一般模型在训练到一定的次数之后,再启动模型验证部分,相比模型训练一开始就启动模型评估,这样的操作可以在保证模型有效评估的前提下加快模型训练速度,因为模型在训练到后期的时候,只凭经验是很难确定模型是否已经训练到合适的程度的。有了评估验证的过程,就可以根据验证的结果来判断模型是否需要继续训练了。

如果没有模型评估,那么模型训练就只能凭运气了,有时候模型训练结束后,可能模型并没有训练到位,这种情况还比较容易处理,可以接着继续训练。但是如果模型训练过度了,就不太好处理了,一般来说模型训练过度之后的副作用就是过拟合,过拟合情况相信大家都比较清楚,模型过拟合之后会导致泛化能力大大的降低,这肯定不是我们想要看到的。

模型评估一般可以通过验证集和训练集的损失或精度的差距来做判断,看模型训练是否已经到位,需要停止训练。模型训练只管训练是否有效,是否是否能够持续快速的降低模型输出与目标直接的差距。模型评估要监督模型训练何时应该停止,不需要继续训练。

5、测试调整-AI的战前试炼

模型测试是项目交付前的最后一次试验,测试的目的就是和项目方给出的指标做对比,比如精度、速度等指标。所以作为项目交付前的最后一次测试实验,一定要按照项目方提出的指标要求做测试,测试的数据最好是从项目方实际的工作场景中采集,如果条件不允许,那么测试数据一定要最大可能的接近项目方实际工作场景的数据,只有这样才有可能在项目交付后不会出现算法指标上的问题。

测试数据不仅从质量上要接近真实场景的数据,而且在数量上也要达到一定的量级,测试的结果才会更加接近真实场景下的结果。根据大数定律,在试验不变的条件下,重复试验多次,随机事件的频率近似于它的概率。偶然中包含着某种必然。所以当数据的数量达到一定的量级,也就意味着测试的结果也会越多,最终所有测试结果的期望也就越接近真实结果。

在实际场景下的大规模数据测试中,如果出现测试结果和项目方给出的指标相差太远,当然这里所说的是模型测试出来的指标比项目方给出的指标要低。那么就需要对模型或者样本数据做调整之后再训练,或者重新训练模型。

如果模型在训练和验证的时候各项指标都没有问题,但是在测试的时候,却出现了指标急速下降的情况,一般出现这种情况,大部分原因都是由于测试数据与训练数据、验证数据差距太大造成的,也就是说训练集和验证集的数据差距不大,属于相似的数据场景分布,很有可能是从互联网获得的数据,而测试集的数据很有可能来自真实场景下采集到的数据,因此测测试集与训练集、验证集之间就会有很大的差距,而数据差距则是造成测试集的结果急速下降的主要原因,解决方案就是替换训练集和验证集的数据,最好也是从真实场景中采集。

当训练集、验证集、测试集都来自于统一场景下的数据的时候,不仅测试结果能够达到满意的效果,而且往往在部署之后,也不会出现算法指标上的问题。

6、部署实施-AI的落地成型

模型部署是模型在实际项目中的落地应用,模型部署包括了各种不同的编程语言的部署,比如常见的C/C++、JAVA、Python,以及其他语言,各种语言由于其自身的特性,在部署的时候部署方法也不大一样,比如按照某些定义而言,C/C++属于编译型语言,Python属于解释型语言,总之两者的程序执行过程的差异导致它们在部署的时候要考虑跨平台性的问题。

粗略的来说,由于C/C++的编译特性,它会将原生的程序代码生成一个可执行的二进制文件,这个过程称为编译过程,这个二进制文件相当于一个中间文件,执行这个中间文件的效率要比执行原生代码的速度快的多,这也是为什么很多算法程序使用python来开发,但是在推理部署的时候却要换成C++,其主要原因之一就是C++生成的中间程序能够加快推理速度,另外在安全性上也是比python要超出不少的,因为C++的打包程序是很难被反编译的,而python在这点上就要逊色不少。

另外,C/C++在不同的系统平台下生成的中间程序,在执行的时候只能在当前的系统平台上运行,一旦放到其他系统平台上就运行不了了,比如在Windows平台上生成的中间程序,只能在Windows平台上运行,在Linux平台或者其他平台上是运行不了,如果需要在其他平台上运行,则需要在对应的平台上重新编译才行。

而python就不一样了,解释型语言的特性使它具有跨平台的方便性,在一个平台上编写的语言可以放在其他任何平台上运行。但是由于解释型语言的特点,python程序的运行速度是没有C/C++的速度快的,所以如果是实现自己的算法想法,那么python无疑是最好的选择,但是如果要部署在工程应用上C/C++则更具有优势一些。

从部署的设备上来说,大概可以分为PC端(个人电脑)、Server端(服务器)、Mobil端(移动设置:iOS,Android)、IOT端(传感器、板卡:Android),各种部署的方法也是大同小异,拿英伟达的JetSonnano系列来说,部署方法非常简单,只要你买回来按照上面的说明部署,基本都能够成功的部署上的。

这里简单说一下在pytorch框架下的部署,在pytorch框架下部署基本可以分为三种方法,第一种是使用指定的编程语言(C/C++/JAVA)调用Libtorch在对应的平台(Windows/Linux)编写程序,然后直接部署。

第二种方法是先使用python在任意平台编写模型(跨平台),然后使用torch.jit.trace()将python文件转成c++文件,最后使用save()方法打包成.pt文件,然后使用C/C++/JAVA或其他语言在其他平台上调用。

第三种将python模型转换成onnx,再转成caffe,tensorflow等其他框架的模型。

后记:目前人工智能项目的开发流程相对来说还没有形成标准,各种方法都有,以上流程只是根据当前大部分人工智能项目的开发经验而总结,难免有遗漏之处,欢迎各位大牛们前来指正,做为一名炼丹学徒,这条路才刚刚开始,希望各位行业同仁共勉!

关注微信公众号:深度人工智能学院,获取更多人工智能方面的知识!

        

        官方公众号                          官方微信号

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

上一篇

下一篇