人工智能知识体系梳理

本文将从以下几个角度阐述AI的知识体系:基础算法&模型,NLP,机器学习(深度学习),大数据(人工智能)平台核心架构,开发语言选择,主流第三方库(框架)。

简单来说,我们要开始人工智能的工作,基础设施有三个重要部分,1. 开发语言(python及其主流的类库和工具包);2. 数据计算引擎(spark及其基本算法类库,es,以及大数据存储);3. 机器学习(深度学习)框架的熟练运用Scikit-learn,TensorFlow。

更新记录

*2021年12月1日 对大数据(人工智能)整体架构图做了更新,请查阅“大数据(人工智能)平台核心架构”章节

更新原因:大型的互联网平台,大数据平台目前的趋势都是需要一个成熟和稳定基础设施层,目前的趋势是以容器化技术进行构建,以达到云原生的能力,并在上层依次搭建算法模型、技术和业务的基础设施,以及大数据主流分析计算框架,再辅以针对业务服务的规则引擎,报表引擎。以此形成数据中台,技术中台和业务中台,为大型企业构建自己的大数据产品平台打下坚实的基础。


基础算法

首先说说涉及到的基础知识,包括高等数学,线性代数,概率论以及统计学。基础算法有线性回归,逻辑回归,决策树,贝叶斯,神经网络等等。常用算法如下图:

注意算法与模型的关系:算法是指一系列解决问题的清晰指令,它代表着用系统的方法解决问题的策略机制。模型是一种相对抽象的概念,在机器学习领域特指通过各种算法对数据训练后得到的中间件,当有新的数据后会有相应的结果输出,这个中间件就是模型。模型会因算法和训练数据的不同而产生变化。

两个最常用的模型:逻辑回归和决策树。逻辑回归解决分类问题,对看似没有规律,聚合在一起的数据,进行二分化,找到最准确的分类线条是他的主要工作。逻辑回归可以理解为拟合,用一条直线对一些数据点进行拟合(该线称为最佳拟合直线),而拟合过程称作回归。通常都会每个特征上都乘以一个回归系数,而逻辑回归的主要工作就是求这个最佳的回归系数

逻辑回归参考:逻辑回归算法  逻辑回归原理及其python和sklearn实现

决策树参考:决策树算法原理

NLP(自然语言处理)

该领域分为以下三个部分:

1.语音识别:将口语翻译成文本。

2.自然语言理解:计算机理解人类的能力。

3.自然语言生成:计算机生成自然语言。

其中,声学模型,语言模型,语意分析,句法分析非常重要。

具体的搭建方式,参考基于深度学习的中文语音识别系统框架

机器学习与深度学习

1. 首先看看他们的关系与区别:机器学习就是机器通过一系列「任务」从「经验」(数据)中学习,并且评估「效果」如何,是人工智能传统且重要的应用方式,可替换大量人工重复的劳动。但是如果无法从数据中「学习到」更好的特征表达,也是徒劳。同样的数据,使用不同的表达方法,可能会极大影响问题的难度。一旦解决了数据表达和特征提取问题,很多人工智能任务也就迎刃而解。但是对机器学习来说,特征提取并不简单。特征工程往往需要人工投入大量时间去研究和调整,就好像原本应该机器解决的问题,却需要人一直在旁边搀扶。深度学习便是解决特征提取问题的一个机器学习分支。它可以自动学习特征和任务之间的关联,还能从简单特征中提取复杂的特征。简言之,深度学习是发现内在规律,总结重大特征的机器学习方式。让机器能够像人脑进行演变和进化。

参考机器学习与深度学习的区别

2. 机器学习(深度学习)算法与框架推荐:Scikit-Learn和Tensorflow, Keras(Keras 更适合作为接口来使用。它提供了更高级别,更直观的抽象集合,使得无论后端科学计算库如何,都可以轻松配置神经网络)

3. 深度学习框架选择要素

深度学习框架是一种界面、库或工具,它使我们在无需深入了解底层算法的细节的情况下,能够更容易、更快速地构建深度学习模型。深度学习框架利用预先构建和优化好的组件集合定义模型,为模型的实现提供了一种清晰而简洁的方法。
利用恰当的框架来快速构建模型,而无需编写数百行代码,一个良好的深度学习框架具备以下关键特征:

  • 优化的性能
  • 易于理解和编码
  • 良好的社区支持
  • 并行化的进程,以减少计算
  • 自动计算梯度

4. 深度学习高级开发框架Keras 与 TensorFlow的比较
Keras用Python编写,可以在TensorFlow(以及CNTK和Theano)之上运行。TensorFlow的接口具备挑战性,因为它是一个低级库,新用户可能会很难理解某些实现。而Keras是一个高层的API,它为快速实验而开发。因此,如果希望获得快速结果,Keras会自动处理核心任务并生成输出。Keras支持卷积神经网络和递归神经网络,可以在CPU和GPU上无缝运行。
 
可以将Keras中的模型大致分为两类:
 
4.1. 序列化
模型的层是按顺序定义的。这意味着当我们训练深度学习模型时,这些层次是按顺序实现的
4.2. Keras 函数API
用于定义复杂模型,例如多输出模型或具有共享层的模型。

大数据(人工智能)平台核心架构-数据挖掘(大数据处理)

人工智能离不开背后的数据平台,需要实时运算,实时处理的引擎。这里会涉及到大数据平台架构,如何做出更好的人工智能产品,搭建一个高效的数据平台至关重要。

如上图所示,我们可以看到Spark Storm,ES等大数据技术栈在其中所处的关键位置。除了能提供分布式高性能的流式处理以外,如Spark,已有强大的SparkMLlib机器学习库,旨在简化机器学习的工程实践工作,并方便扩展到更大规模。MLlib由一些通用的学习算法和工具组成,包括分类、回归、聚类、协同过滤、降维等,同时还包括底层的优化原语和高层的管道API。那么在数据处理平台(框架)中直接部署&应用需要的机器学习算法,变得非常高效和方便。

*上图中的模型盒子是数据平台锻造算法模型的关键流程,容器部署算法盒子,用数据锻造真实模型,通过模型挑战者等方式选出最优模型。

参考机器学习-数据处理技术栈

开发语言选择

了解了算法,基本概念,机器学习,数据处理之后。让我们回到日常工作中最使用频率最高的话题:开发语言的选择。开发语言的选择要从一下几个角度考虑:团队技术栈的掌握范围和集中度,主流第三方类库的丰富程度和稳定性。

目前的选择是Python和Java,主要的考虑是目前数据团队以Python为主要开发语言,而核心系统,大数据平台团队使用Java

Python作为开发语言的优势:

Python 中可用库的数量是其他语言所无法企及的。NumPy 已经变得如此普遍,以至于几乎成为了张量运算的标准 API,Pandas 将 R 的强大而灵活的数据帧带入 Python。对于自然语言处理(NLP),您可以使用久负盛名的 NLTK 和快如闪电的 SpaCy。对于机器学习,有经过实战检验的 Scikit-learn。当谈到深度学习时,当前所有的库(TensorFlow,PyTorch,Chainer,Apache MXNet,Theano 等)都是在 Python 上首先实现的项目。

推荐一个非常棒的在线开发手册
 

Java的优势:

Java的优势在于团队对他天然的亲近^_^,Anyway, JVM 系列语言(Java,Scala,Kotlin,Clojure 等)对 AI 应用开发的来说,也是非常棒的选择。自然语言处理(CoreNLP)、张量运算(ND4J)还是完整的 GPU 加速深度学习堆栈(DL4J),都可以使用大量的库来管理流水线的各个部分。最重要的是,Java体系里面的大数据技术栈,可以让人工智能平台轻松与Spark和Hadoop等大数据平台进行构建和整合。

参考:最适合的人工智能开发语言

总结:目前人工智能的框架已经非常成熟了,不要重复造轮子,我们是要重新定义一些计算模型和算法实现,来创新网络结构和训练方法,能够在众多普通的移动设备端进行分布式机器学习,甚至不需要多余的硬件支持或抑制内存开销,这样的深度学习算法会更加有效。

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值