前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >AI探索(一)基础知识储备

AI探索(一)基础知识储备

作者头像
周希
发布2019-10-15 02:16:40
4550
发布2019-10-15 02:16:40
举报
文章被收录于专栏:APP自动化测试APP自动化测试

AI的定义

凡是通过机器学习,实现机器替代人力的技术,就是AI。机器学习是什么呢?机器学习是由AI科学家研发的算法模型,通过数据灌输,学习数据中的规律并总结,即模型内自动生成能表达(输入、输出)数据之间映射关系的特定算法。这整个过程就是机器学习。

AI的根基从数学理论开始

机器学习理论(包括:监督学习、无监督学习、强化学习、迁移学习、深度学习)

基础技术(包括:机器学习ML、深度学习DL、语音识别ASR、语音合成TTS、计算机视觉CV、机器视觉MV、自然语言理解NLU、自然语言处理NLP、专家系统)

模型算法的结果导向理解:

1、对数据进行分类,

2、找到输入数据与输出数据之间的规律。

机器学习的抽象流程是:

训练机器阶段,

让模型对输入数据进行分类,且找到规律;

测试阶段,

数据进入模型时,模型对数据进行分类,每一个测试数据都归类到训练数据类别中对应的一个类别,然后根据训练找到的规律计算出输出值(即答案);

欠拟合或者过拟合的情况下,要清洗训练数据、调整参数以及重复训练;达到最佳拟合后,机器学习完成。

监督学习

准备样本(样本通常准备两组:训练数据和测试数据),

先将训练数据(即标记样本)给到机器,同时提供标准答案(有答案的样本数据属于“标记样本”),机器尽量从训练数据中找到因变量和自变量之间的关系,让自己推测的答案尽量跟标准答案靠近。

训练过程中机器尝试生成我们需要的算法,这个算法就是我们要机器学习出来的结果。

然后我们给机器测试样本(测试数据),不提供标准答案,看机器推理出答案的准确率怎么样,如果准确率太低(欠拟合),那我们就要调整模型的参数,并且再训练机器,接着又用测试数据测试,直到机器达到了我们期望的准确率。

监督学习的算法分类

1)KNN临近算法 (找输入数据跟训练数据最近的点)

2)决策树ID3算法 (根据数据特征进行分支)

3)logistic逻辑回归算法 (特征和结果不满足线性时, 使用逻辑回归算法)

4)支持向量机SVM (能判断分类是否正确, 通过计算一条线或者面把数据正确的区分开来)

5)朴素贝叶斯分类算法 (计算数据被分到每一个类别的概率, 概率最大的为该输入数的类别)

无监督学习

机器学习是否有监督,就看训练时输入的数据是否有标签(标签即标注输入数据对应的答案)。无监督学习即训练时输入数据无标签,无监督学习利用聚类算法。

1)K-聚类(聚类算法) 【将数据分成K个子集, 每个子集计算一个均值, 输入数据最接近那个均值就属于哪个类】

2)主成分分析法

半监督学习

狭义上【半监督学习】要分为transductive SVM、inductive SVM、Co-training、label propagation

我们可以尝试用另外一种方法分类【半监督学习】,即“分类半监督”、“聚类半监督”

分类半监督—

举例说明就是先用标签数据进行训练,然后加入无标签数据训练,无标签数据输入时,会根据数据特征及特征值,看该数据与有标签数据分类中哪一类更接近(支持向量机SVM的方法就可以帮助找到最接近哪一类),就视为该类数据;或者是,看该数据与有标签数据哪一个最接近(KNN的方法就可以找到最接近的那个数据),则把该无标签数据替换为该标签数据。

聚类半监督—

通常是在有标签数据的“标签不确定”的情况下利用(比如这个输入数据的答案可能是xxx),“聚类半监督”就是重点先完成数据的分类,然后尝试根据标签数据训练提供的标签预测结果。

强化学习

强化学习理论一: 马尔科夫决策

机器需要理解环境、分析环境,并且要推测出完成一个动作得到奖励的概率。该理论完全满足马尔科夫决策。马尔可夫的核心:在一个状 态下,可以采取一些动作,每一个动作都有一个“转化状态”且可以得出对应“转化状态”的概率(或该“转化状态”能获取奖励的概率)。而强化学习的目标就是学习怎样让每一次行动都是为了达到最有价值的“转化状态”上。

1) model based(算法:Qleaning, Sarsa, Policy Gradients)

理解真实环境,建立一个模拟环境的模型,有想象能力,根据想象预判结果,最后选择想象中结果最好的那一种作为参考进行下一步。

2)policy based(算法:Policy Gradients, Actor-critic)

通过感官分析环境,推测出下一步要进行的各种动作的概率,取概率最大的作为实际行动的参考。

3)value based(算法:Qleaning, Sarsa)

推测出所有动作的价值,根据价值最高的作为实际动作的参考。

4)On policy(算法:Sarsa, Sarsa lambda)

必须亲自参与

5)Off policy(算法:Qleaning, Deep-Q-Network)

可亲自参与;也可以不亲自参与,通过观看其他人或机器,对其他人或机器进行模仿。

强化学习理论二:

agent不需要理解环境、分析环境时,做出决策,该决策正确时奖励,错误时不奖励或惩罚。agent不会在动作时去计算是否得到奖励的概率。

agent能够执行多种action,但它每次只能选择一个action来执行,agent任意执一个action来改变当前状态,一个action被执行后,environment会通过观测得出一个observation,这个observation会被agent接收,同时会出现一个reward也会被agent接收(这个reward也来自于environment,environment可以通过推测或直接判断action结束时达到的效果是否是AI工程师想要的效果来决定这个reward是正值还是负值,当然负值相当于是“惩罚”了)。agent在执行action时并不会知道结果会怎样,当agent接收到environment的observation时,agent仍然是一无所知的(因为agent不理解environment),但由于environment同时反馈reward,agent才知道执行的action好还是不好。agent会记住这次reward是正值还是负值,以后的action都会参考这次记忆。强化学习理论二对比一的区别就是:二并非在每一步都计算一个概率(所以二并非完全符合马尔科夫决策)。

1)model free(算法:Qleaning, Sarsa, Policy Gradients)

不理解环境,等待环境反馈,根据反馈进行下一步。

2)Monte-carlo update(算法:Policy Gradients, Monte-carlo leaning)

等待所有过程结束,事后总结所有转折点

3)Temporal difference update(算法:Qleaning, Sarsa)

过程中每一步都总结一下

4)On policy(算法:Sarsa, Sarsa lambda)

必须亲自参与

5)Off policy(算法:Qleaning, Deep-Q-Network)

可亲自参与;也可以不亲自参与,通过观看其他人或机器,对其他人或机器进行模仿。

强化学习不纠结于找出一条规律/算法,它只关心结果输出时能否得到奖励。之前提到的机器学习都是解决分类问题,而强化学习是解决“决策”问题。

迁移学习

将一个已经开发过的任务模型(源域)重复利用,作为第二个任务模型(目标域)的起点。深度学习中会经常用到迁移学习,迁移时(复用时),可以全部使用或部分使用第一个模型(源任务模型),当然这取决于第一个模型的建模逻辑是否允许。迁移学习是特别好的降低(获取样本数据、打标签)成本的方法。

1)样本迁移法

看看目标域的样本数据跟源域中训练数据哪部分相似,把目标域中这部分样本数据的特征值照着相似的源域中的样本数据的特征值调整,尽量调到一样,然后再把调过的数据权重值提高。这个方法是最简单的迁移学习方法,不过人工去调,如果经验不足,容易造成极大误差。

2)特征迁移法

找到源域同目标域的数据中的共同特征,将这些共同特征的数据都放到同一个坐标空间里,形成一个数据分布。这样就可以得到一个数据量更大且更优质的模型空间。

3)模型迁移法

源域的整个模型都迁移到目标域。最完整的迁移,但是可能会因为源域模型的特有的那些对目标域来说没有的数据、特征、特征值等,在目标域中反而会有干扰效果(类似与“过拟合”)。

4)关系迁移法

当两个域相似时,可以直接将源域的逻辑网络关系在目标域中进行应用。比如我们将人的大脑神经网络的逻辑关系迁移到AI神经网络中,因为从逻辑上这两者我们觉得是一样的。

深度学习

深度学习可以理解为是多个简单模型组合起来,实现多层神经网络,每层神经网络(也可以叫做神经元)处理一次数据,然后传递到下一层继续处理。这种多层的结构比起浅层学习的模型优势在于,可以提取出数据特征(无需人工提取)。“深度”并没有绝对的定义,语音识别的模型中4层神经网络就算深了,但在图像识别的模型中,20层也不算很深。

1)DNN深度神经网络

深度神经网络是深度学习最基础的神经网络。有很多层(每一层为一个神经元)从上往下排列,每一个层相互连接。有个缺点就是,正因为每一层之间连接起来,出现了参数数量膨胀问题(因为每一层涉及到一个算法,每一个算法都有自己的各种参数),这样的情况下容易过拟合(实现了局部最佳但整体拟合不佳)。

2)CNN卷积神经网络

卷积神经网络有“卷积核”,这个“卷积核”可以作为介质连接神经元,用“卷积核”连接神经元时就不需要每一层都连接了。

3)RNN循环神经网络

因为DNN还有一个缺点,无法对时间序列上发生的变化进行建模,如果在语音识别、自然语言处理等应用中使用AI模型时,数据的时间顺序影响很大。所以RNN就出现了,RNN能弥补DNN的缺点,可以在时间序列上发生的变化进行建模。

基础概念

拟合

拟合是用来形容训练结束后效果好坏的。1)欠拟合当训练数据少、数据质量差的时候,训练出来的模型质量就差(或者说损失函数过大),这时进行测试的时候,就会出现误差大,即“欠拟合”状况。2)过拟合在训练阶段,反复用同样的训练数据进行训练,可以让训练效果变得更好(损失函数小),但同时机器会因为要达到最好的训练效果,将训练数据中不重要的特征或只有训练数据才有的某些特征进行利用得太重或开始学习不需要的细节,也就是说机器对训练数据太过依赖,最后就会出现在训练数据上表现特别好,但在其他数据上表现不佳。这样的情况叫做“过拟合“。3)最佳拟合欠拟合、过拟合都不是我们需要的。我们要的是最佳拟合。所以我们在训练机器时要注意平衡。最佳点在哪里呢?最佳点在训练的损失函数还在减小,而测试的损失函数在减小之后突然开始增大的该点上。此时我们就达到了“最佳拟合”。4.2、泛化性训练好的模型在其他数据上的表现好坏用泛化性形容。在其他数据上表现越好,泛化性越高。4.3、损失函数用于评估“不准确”的程度,它是衡量模型估算值和真实值差距的标准。损失函数(loss)越小,则模型的估算值和真实值的差距越小,通常情况下我们要把loss降到最低。

标签

指给数据标记的答案。标记好答案的数据叫做“标签数据”。

特征值

特征(feature)的值。比如房子有特征(feature):空间、价格。它的特征值:(空间)200平方米、(价格)1500万。一般在机器学习的监督学习中,我们需要对训练数据进行特征提取的处理,即标记好每个数据有哪些特征和对应特征值。当特征值损失的情况:在实际的机器学习过程中,有时候会发生数据缺失的问题,比如一个数据有X个特征,但是由于意外发生,我们只得到部分(小于X)特征的值,在这种情况下,为了不浪费整个样本资源,且可以顺利的继续机器学习,我们需要有一些弥补措施:1)人为设置某些特征的特征值(根据经验),然后利用;2)找到相似的另一组样本,用另一组样本的特征平均值代替缺失的特征值;3)用其他的机器学习模型专门针对缺失的特征值进行学习然后利用该模型找出缺失特征值;4)使用已有特征值的均值来替代未知特征值;5)在机器学习过程中用一些方法,让机器忽略已缺失特征值的数据。

类别

物以类聚人以群分,特征相同的数据就是同一类别。机器学习中特别重要的一个步骤就是利用算法将数据分类(学习算法里边会提到多种实现数据分类的算法),机器会尽量将所有输入数据进行分类,分类的逻辑就是通过数据的“特征”,特征接近的数据会被机器认为是同一类别的数据。

分类&聚类

分类是目前最简单也是效果最好的一类算法(比如KNN、决策树ID3、logistic回归、SVM等都属于分类算法)。分类算法的前提条件是训练数据必须带有标签。聚类是目前相对分类更复杂同时效果更差的一类算法(无监督学习就是用聚类算法)。聚类算法的优势是可以训练数据不需要标签。表面上看来分类算法比聚类算法好用很多,那我们还要用聚类算法的理由是什么呢?其实,在实际情况下,训练机器时,要给数据打标签是个人工消耗极大的工作,不仅工作量大,很多时候对数据打准确的标签难度也大。

决策树

根据数据的特征值对数据进行不断分支,直到不可再分支(附 决策树形象图)。决策树的每一次对数据分支,就消耗一个特征值。当所有特征值消耗完后,决策树成形。决策树的每一个节点,即每一次对特征分支时,通常以yes/no的判断形式进行划分(所以才叫“决策树”嘛)。决策树帮助机器对数据进行分类(根据特征,决策树的分裂点即特征分别点),决策树形成后,满足一条分枝上所有分裂点条件的为同一类数据。要注意的是,有时候决策树分枝太长,会导致过拟合。因为决策树很可能把训练数据中不太有代表性的特征放在分裂点上,这样形成的决策树不适应与训练数据之外的数据了。如果出现这种情况,需要“剪枝”,枝越长,说明模型可能越依赖训练数据,在枝的长短上,要做一个平衡,平衡的原则请参考本文提到的“欠拟合”与“过拟合”的关键词解释。

知识图谱

知识图谱是模拟物理世界的实物与实物之间的关系,知识图谱呈现为无限扩散的类网状结构。它的结构组成为“实体”—“关系”--“实体”,以及“实体”--“属性”--“值”。知识图谱使得AI找到一个信息时,同时也获得了更多跟跟这个信息相关的其他信息。

基础技术

语音识别(ASR)

一句话定义就是:将人类声音转化成文字的过程。按识别范围分类为“封闭域识别”和“开放域识别”。封闭域识别:在预先指定的字/词集合内进行识别。如此可将声学模型和语音模型进行剪裁,识别引擎的计算量也变低。可以将引擎封装于嵌入式芯片或本地化SDK,脱离云端,且不会影响识别率。开放域识别:在整个语言大集合中识别。引擎计算量大,直接封装到嵌入式芯片或本地SDK中,耗能高且识别效果差,所以一般都只以云端形式提供。

计算机视觉(CV)

自然语言处理(NLP)

一句话定义:自然语言处理(NLP)是指机器理解并解释人类写作、说话方式的能力。NLP又包含NLU(自然语言理解)、NLG(自然语言生成)。自然语言处理中最重要的3个环节是分词、锁定关键词、文本相似度计算。因为目前机器的语言识别其实都是基于对词的识别,任何句子进行自然语言处理时第一步都是要分词,比如:“我是产品经理”,分词后变成“我-是-产品-经理”。分词之后,要找到“关键词”,“关键词”是提供重要信息、最多信息的词,比如在“我是产品经理”句子被分词后,机器会选择“产品”、“经理”为该句子“关键词”。文本相似度有欧氏距离、曼哈顿距离等算法

技术分层

从技术实现的效果的角度将AI技术进行分层:

1)认知,通过收集、解析信息对世界和环境进行认知。包括图片处理技术、语音识别、自然语言识别技术。

2)预测行为和结果。比如在用户行为研究的基础上根据对用户当前行为的识别,预测用户下一步想做什么,然后主动满足用户。

3)确定实现的方式和路径。比如AI代替医生给病人看病,得出病症和治病方案。

AI的常用语言及框架

市场上有的AI框架包括TensorFlow、Caffe、Torch、Theano等等,目前大部分工程师利用的是Tensorflow。AI编程可以利用多种计算机语言,目前最常用的是C++和python。

AI的价值

互联网的价值在于降低成本、提高效率;而AI 可以替代人力,让成本直接为0,其蕴含的市场价值比互联网技术的市场价值更高。

AI的边界

要理解AI的边界,就必须从AI三要素切入。三要素分别为算法、计算力、数据。我们通过对已有模型算法的理解,计算力的认知以及对可获取数据的判断,就可以推测出我们落地时可实现哪些,以及可实现到什么程度。有一个宏观判断边界的快捷法,叫做“1秒法则”:当前的AI可以实现到处理人1秒内可以想到答案的问题。而且这个问题还得满足以下特点:大规模、重复性、限定领域。

模型训练

这部分基本交由算法同事跟进,但产品可依据需求,向算法同事提出需要注意的方面;举个栗子:一个识别车辆的产品现在对大众车某系列的识别效果非常不理想,经过跟踪发现是因为该车系和另外一个品牌的车型十分相似。而本次数据标注主要针对大众车系的数据做了补充,也修改了大批以往的错误标注。(这两种为优化数据的基本方式)本次模型需要重点关注大众某车系的识别效果,至少将精确率提高5%。产品将具体的需求给到算法工程师,能避免无目的性、无针对性、无紧急程度的工作。

模型测试

测试同事(一般来说算法同事也会直接负责模型测试)将未被训练过的数据在新的模型下做测试。如果没有后台设计,测试结果只能由人工抽样计算,抽样计算繁琐且效率较低。因此可以考虑由后台计算。

一般来说模型测试至少需要关注两个指标:

1.精确率:识别为正确的样本数/识别出来的样本数

2.召回率:识别为正确的样本数/所有样本中正确的数

模型的效果需要在这两个指标之间达到一个平衡。测试同事需要关注一领域内每个类别的指标,比如针对识别人脸的表情,里面有喜怒哀乐等等分类,每一个分类对应的指标都是不一样的。测试同事需要将测试的结果完善地反馈给算法同事,算法同事才能找准模型效果欠缺的原因。同时测试同事将本次模型的指标结果反馈给产品,由产品评估是否满足上线需求。

产品评估评估

模型是否满足上线需求是产品必须关注的,一旦上线会影响到客户的使用感。因此在模型上线之前,产品需反复验证模型效果。为了用数据对比本模型和上一个模型的优劣,需要每次都记录好指标数据。假设本次模型主要是为了优化领域内其中一类的指标,在关注目的的同时,产品还需同时注意其他类别的效果,以免漏洞产生。

产品工作补充

产品的工作不止是产品评估:除了流程控制,质量评估。针对分类问题,由产品制定的边界非常重要,直接影响模型是否满足市场需求。产品制定的分类规则:例如,目的是希望模型能够识别红色,那产品需要详细描述“红色”包含的颜色,暗红色算红色吗?紫红色算红色吗?紫红色算是红色还是紫色?这些非常细节的规则都需要产品设定。若果分类细,那么针对一类的数据就会少。如果分类大,那么一些有歧义的数据就会被放进该分类,也会影响模型效果。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-12-05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • AI的定义
  • 监督学习
  • 无监督学习
  • 半监督学习
    • 分类半监督—
      • 聚类半监督—
      • 强化学习
        • 强化学习理论一: 马尔科夫决策
          • 强化学习理论二:
          • 迁移学习
          • 深度学习
          • 基础概念
            • 拟合
              • 标签
                • 特征值
                  • 类别
                    • 分类&聚类
                      • 决策树
                        • 知识图谱
                        • 基础技术
                          • 语音识别(ASR)
                            • 计算机视觉(CV)
                              • 自然语言处理(NLP)
                                • 技术分层
                                • AI的常用语言及框架
                                • AI的价值
                                • AI的边界
                                • 模型训练
                                • 模型测试
                                • 产品评估评估
                                • 产品工作补充
                                相关产品与服务
                                NLP 服务
                                NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
                                领券
                                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档