Fork me on GitHub

AI导论

1. 自然语言处理应用

自然语言处理(Natural Language Processing, NLP),通过理解人类语言来解决实际问题的一门学科。

自然语言处理不仅是学术界的研究热点,在工业界也有许多成果,如谷歌的文本搜索引擎、苹果的Siri、微软小冰等。

对自然语言处理问题的研究可以追溯到二十世纪三十年代,早期的处理方法往往是人工设计的规则;从二十世纪八十年代开始,利用概率与统计理论并使用数据驱动的方法才逐渐兴盛起来。近几年,随着计算机

算力的提升与深度学习技术的发展,自然语言处理相关问题也迎来许多重大的创新与突破。

自然语言处理可以分为核心任务和应用两部分:

  • 核心任务代表在自然语言各个应用方向上需要解决的共同问题,包括语言模型、语言形态学、语法分析、语义分析等,
  • 应用部分则更关注自然语言处理中的具体任务,如机器翻译、信息检索、问答系统、对话系统等。如下介绍机器翻译、问答系统与对话系统三个应用。

机器翻译MT

随着双语平行语料(即同时包含源语言和与其互为译文的目标语言文本的语料)的增多,通过对语料的统计学习来进行自动翻译的统计机器翻译(Statistical Machine Translation,SMT)成为主流,但翻译的

准确性和流畅性仍然和人工翻译有巨大的差距。

直到深度学习兴起,神经网络翻译(Neural Machine Translation,NMT)的诞生为机器翻译领域带来了新的机遇,翻译质量也有了质的飞跃。目前Google、百度等公司都已经将线上机器翻译系统升级到神经

网络翻译模型,每天为数亿用户提供服务。神经网络翻译模型始于Google在2014年提出的基于LSTM的编码器-解码器架构。相比于主流的统计机器翻译模型,神经网络翻译模型则采用端到端的学习形式,这样

可以将翻译的质量直接作为模型优化的最终目标,以对模型进行整体优化。

神经网络模型同样需要使用平行语料库作为训练数据,但和统计机器翻译模型将任务拆解成多个模块不同,神经网络模型通常是一个整体的序列到序列模型。以常见的循环神经网络为例,神经网络对翻译过程

进行建模,如下图所示。通常会先使用一个循环神经网络作为编码器,将输入序列(源语言句子的词序列)编码成一个向量表示,然后再使用一个循环神经网络作为编码器,从编码器得到的向量表示里解码得

到输出序列(目标语言句子的词序列)。

          

 

 

双语语料是机器翻译模型训练时最重要的监督信息,然而在现实应用中由于某些语言是小语种或者特定领域的语料稀缺等,经常出现双语语料不足的情况,在训练神经网络翻译模型的时候如何应对这种情况

呢?这里列举几种常见的解决方案。

第一类非常直接的解决方案就是通过爬虫自动挖掘和产生更多的双语语料。

第二类比较直观的解决方案是构造伪双语平行语料。常见的构造方式有两种:一是利用目标语言端的单语语料反向翻译源语言,由于这样构造的平行语料中目标语言端为真实语料,因此有利于解码器网络的学习,提升模型的效果;二是利用数据增强的方式对原始语料进行改造。

问答系统QA

问答系统(Question Answering System,QA)通常是指可以根据用户的问题(question),从一个知识库或者非结构化的自然语言文档集合中查询并返回答案(answer)的计算机软件系统。与搜索引擎系统不

同,问答系统不仅能用自然语言句子提问,还能为用户直接返回所需的答案,而不是相关的网页。显然,问答系统能更好的表达用户的信息需求,同时也能更有效地满足用户的信息需求。目前已经有一些公司

将问答系统的技术应用到了自己的产品之中,Google、Bing等搜索引擎就提供了根据用户的查询直接从网页结果中抽取相关答案的功能。

目前为止,问答系统没有一个明确的定义,但是一般认为问答系统的输入应该是自然语言形式的问题,输出应该是一个简洁的答案或者可能的答案列表,而不是一堆相关的文档。例如用户向问答系统提交一个

问题,“电话是什么时候发明的?”,系统应该返回一个精简的答案–“1876”。

一个典型的问答系统需要完成问题分类、段落检索以及答案抽取3个任务。

  • 问题分类主要用于决定答案的类型。比如,“珠穆朗玛峰海拔有多高”这样的问题,需要根据事实给出答案;而“美国知名的互联网流媒体公司有哪些”这样的问题,则需要根据问题中的条件,返回一个符合要求的结果列表。不同的答案类型也往往意味着在系统实现上对应着不同的处理逻辑。根据期望回答方式可以将问题分类成事实型问题、列举型问题、带有假设条件的问题、询问“某某事情如何做”以及“某某东西是什么”等问题。
  • 段落检索是指根据用户的问题,在知识库以及备选段落集合中返回一个较小候选集,这是一个粗略筛选的过程。这样做的原因是知识库以及候选段落集合往往包含海量数据,以至于无法直接在这些数据上进行答案抽取,需要应用一些相对轻量级的算法筛选出一部分候选集,使得后续的答案抽取阶段可以应用一些更为复杂的算法。
  • 答案抽取是指根据用户的问题,在段落候选集的文本中抽取最终答案的过程。目前很多深度学习方法可以用来解决这个问题。

 

对话系统

对话系统(Dialogue System)是指可以通过文本、语音、图像等自然的沟通方式自动地与人类交流的计算机系统。对话系统有相对较长的发展历史,早期的对话系统可以追溯到二十世纪六十年代麻省理工学

院人工智能实验室设计的自然语言处理程序ELIZA。经过几十年的研究发展以及数据量的增加,逐渐诞生了像苹果公司的Siri、微软的小娜(Cortana)等个人助理型的对话系统产品,以及微软小冰这样的非任

务型对话系统。对话系统根据信息领域的不同(开放与闭合)以及设计目标的不同(任务型与非任务型)可以划为不同的类型:任务型对话系统需要根据用户的需求完成相应的任务,如发邮件、打电话、行程

预约等;非任务型对话系统大多是根据人类的日常聊天行为而设计,对话没有明确的任务目标,只是为了与用户更好地进行沟通,例如微软小冰的设计目标之一是培养对话系统的共情能力(Empathy),更注

重与用户建立长期的情感联系。

    

 

 

一个典型的任务型对话系统包含图所示的3个部分:对话理解、策略学习和对话生成。

  • 对于用户的输入,先通过语义理解(Natural Language Understanding,NLU)单元进行编码,通过对话状态跟踪模块生成当前对话状态编码;
  • 根据当前的对话状态,系统选择需要执行的任务(由策略学习模块决定);
  • 最后通过自然语言生成(Natural Language Generation,NLG)返回用户可以理解的表达形式(如文本、语音、图片等)。由于任务型对话系统需要完成一些特定任务,因此处理的信息领域往往是闭合的(close domain)。

对于非任务型的对话系统来说,其更注重与用户的沟通,对话的多样性以及用户的参与度比较重要,因此这类对话系统更多采用一些生成式模型(如Seq2Seq模型),或者根据当前内容从语料库中选择合适的

问答语句。这类问答系统对应的信息领域往往是开放的(open domain)。

对于对话系统来说,用户的输入往往多种多样,对于不同领域的对话内容,对话系统可以采取的行为也多种多样。普通的有监督学习方法(如深度神经网络)往往无法获得充足的训练样本进行学习,而强化学

习可在一定程度上解决这个问题。强化学习是深度学习领域比较热门的研究方向之一。强化学习尝试根据环境决策不同的行为(action),从而实现预期利益的最大化。当对话系统与用户的交互行为持续地从

客户端传输到服务端时,强化学习方法可以对模型进行及时的更新,在线训练模型。

对于任务型对话系统,系统根据对用户的理解,采取不同的行为,这个过程可以用图中的策略学习模块表示。由于用户的对话以及系统可采取行为的组合数量一般比较庞大,这个部分比较适合使用强化学习

来解决。对于非任务型对话系统,如在微软小冰的设计中,也有类似的对话管理模块。强化学习除了可以用来为策略学习模块建模之外,还可以直接为整个对话系统进行端到端的建模,从而简化对话系统的设

计。

2.  机器学习导论

 人工智能是一门学科,指由人制造出来的机器所表现出来的智能。这种智能的最理想状态是像人一样拥有学习、推理等能力。简单来说,是指可模仿人类智能来执行任务,并基于收集的信息对自身进行迭代改
进的系统和机器。

人工智能的五大主要分支

  • 计算机视觉 

计算机视觉是指机器感知环境的能力,这一技术类别中的经典任务有图像分类、目标检测、图像分割和目标追踪。其中目标检测和人脸识别是比较成功的研究领域。

  • 语音识别

语音识别是指识别语音并将其转换成对应文本的技术,文本转语音也是这一领域内一个类似的研究主题。最近几年,随着大数据和深度学习技术的发展,语音识别进展迅猛,但是仍面临声纹识别和鸡尾酒会效应等一些特殊难题。同时语音识别严重依赖云,离线效果不好。

  • 文本分类

文本分类可用于理解、组织和分类结构或非结构化文本,其涵盖的主要任务有句法分析、情绪分析和垃圾信息检测。当前阶段,文本分类的瓶颈出现在有歧义和偏差的数据上。

  • 机器翻译

机器翻译是利用机器自动将一种语言翻译成另一种语言。在当前阶段,受限于词表问题,俚语和行话等内容的翻译会比较困难,专业领域的机器翻译通常表现不好。

  • 机器人

 

机器人研究主要是机器人的设计、制造、运作和应用,以及控制它们的计算机系统、传感反馈和信息处理。工业机器人是发展最快的应用领域,在进入21世纪之后,机器人领域就已经进入了社会影响阶段,此时各种工业机器人已经主宰了装配生产线。此外,软体机器人在很多领域也有广泛的应用,比如在医疗行业协助手术。

人工智能、机器学习与深度学习三者关系

① 机器学习指计算机通过观察环境,与环境进行交互,在吸取信息中学习、更新和进步。

简单的说,大多数机器学习可以分成训练和测试两个步骤,这两个步骤可以重叠进行。训练,一般需要训练数据,就是告诉机器前人的经验,比如什么是猫,什么是狗,看到什么该停车。训练学习的结果,可

以认为是机器写的程序或者存储的数据,叫模型。总体上来说,训练包括有监督训练和无监督训练。有监督训练好比有老师告诉你答案,无监督训练仅靠观察自学,机器自己在数据里面找模式和特征。

       

 

② 深度学习是机器学习的一种方法,它基于神经网络,适用于音频、视频、语言理解等多方面。深度学习是现今非常流行的一种机器学习方法。它由多层神经网络组成,浅层神经网络识别简单内容,深层神经

网络得到高级语义信息,使用反向传播优化算法来更新权重参数,不断降低损失值,得到一个具有较好预测效果的模型。

根据上面的定义描述,不难得出结论:深度学习是机器学习的一种基于神经网络的分支,机器学习是人工智能的一种实现方法。

          

 

 

机器学习与统计学的关系

机器学习和统计学都是数据科学的一部分。机器学习中的学习一词表示算法依赖于一些数据,来优化权重参数。这包含了许多的技术,比如逻辑回归、支持向量机和集成学习。

统计学是通过搜索、整理、分析、描述数据等手段,以达到推断对象的本质,甚至预测对象未来的一门综合性科学。统计学用到了大量的数学及其它学科的专业知识,其应用范围几乎覆盖了社会科学和自然科

学的各个领域。

细说之,数据科学包括:

  • 数据集成(data integration)
  • 分布式架构(distributed architecture)
  • 自动机器学习(automating machine learning)
  • 数据可视化(data visualization)
  • 数据工程(data engineering)
  • 产品模式中的部署(deployment in production mode)
  • 自动的、数据驱动的决策(automated, data-driven decisions)

根据数据集有无标签,机器学习分为监督学习和无监督学习,那么他们之间有什么区别呢?

监督学习和无监督学习的区别

监督学习应用标记过的数据,输入规定范围内的数据,同时也规定了输出的范围。如果使用监督学习来训练人工智能,你要给它一个输入并告诉它预期的输出。有些类似大学期间学的高等数学中的函数。
如果机器输出的内容不在预期范围内,它会重新调整它的计算。这个过程是通过计算完成数据集才完成的,直到机器不再犯错。

监督学习的一个例子是天气预报AI,它通过历史数据来学习预测天气,训练数据有输入(气压,湿度,风速)和相应的输出(温度)。

无监督学习是使用没有固定结构或者范围的数据集进行机器学习。如果使用无监督学习训练机器,就是让机器对数据按照一定的逻辑进行分类。

无监督学习的一个例子是电商网站的行为预测,根据用户的行为来推荐用户可能会购买的商品。它会自己对输入数据创建分类,会告诉你哪种用户最有可能购买这款产品。

深度学习工作流程

现在,你已经具备了理解深度学习工作原理的基本知识。深度学习是一种机器学习方法,可以通过一组输入,训练AI来预测输出。

监督学习和无监督学习都能用来训练AI。简单的理解就是:机器学习包含深度学习。

建立一个假想的车票估价服务来了解深度学习是如何工作的。使用监督学习方法进行训练。 希望估价工具能够使用以下几个数据指标来预测车票价格:

  • 始发车站
  • 到达车站
  • 发车日期
  • 路线

首先,来看看人工智能的内部构造。和人类一样,深度学习也是有大脑内部的神经元的,通常用圆圈来表示。并且它们是互相连接在一起的。

这些神经元被分成三层:输入层、隐藏层和输出层。

  • 输入层来接收数据。在之前的案例中,输入层有4个神经元:始发车站、到达车站、发车日期、路线,输入层把输入传递到隐藏层的第一层。
  • 隐藏层对输入数据进行数学计算。建立神经网络的一个难题就是如何决定隐藏层的数量以及每一层的神经元个数。 深度学习中的“深”指的是神经网络有超过一层的隐藏层。
  • 输出层返回输出数据。在前文的案例中,输出就是价格预测。
                                      

 

 那么它如何计算价格预测呢?这就是深度学习最具魔力的地方。 神经元之间的每个连接都有对应不同的权重。这个权重决定了输入值的重要性。初始权重是随机设置的。

在预测车票价格时,发车日期是较重要的因素之一,因此发车日期的神经元连接权重较高。各个因素经过隐藏层,经过因素权重的调整,最终得到输出,也就是车票价格,完成车票价格的预测。

 3. 神经网络

 深度学习是基于神经网络的高级算法。

大脑神经元彼此协同工作,它们把输入信号(比如长颈鹿的图片)转换成相应的输出标签(比如“长颈鹿”)。神经网络技术的诞生正是受到人脑神经网络的启发。
神经网络是自动图像识别的基础,近年来,神经网络技术大热,主要有以下 3 个原因:

  • 数据存储和共享技术取得进步。这为训练神经网络提供海量数据,有助于改善网络的性能。
  • 计算能力越来越强大。GPU(graphics processing unit,图形处理器)的运行速度最快能达到CPU(central processing unit,中央处理器)的 150 倍。之前,GPU 主要用来在游戏中显示高品质图像。后来,人们发现它能为在大数据集上训练神经网络提供强大的支持。
  • 算法结构的改进。虽然目前神经网络在性能上还很难与人脑媲美,但是已经有一些能大幅改善其性能的技术。

 

 

图像识别是神经网络技术的有力例证,它被应用于许多领域,包括视觉监控、汽车自主导航,还出现在智能手机中,来识别手写文字。下面来看看如何训练能识别手写数字的神经网络。

神经网络示例:识别手写数字

下面示例中使用的手写数字来自于 MNIST 数据库

       

 

 

为了让计算机读取图像,黑色像素用 0 表示,白色像素用 1 表示,如下图所示。如果图像是彩色的,则可以使用三原色的色相值来表示。

     

 

   一旦图像完成像素化,就可以把得到的值交给神经网络。在本例中,神经网络总共得到 10000 个手写数字以及它们实际所表示的数字。在神经网络学过手写数字及其对应标签的联系之后,我们拿 1000 个新的手写数字(不带标签)来测试它,看看它是否能够全部识别出来。

测试发现,神经网络从 1000 个新的手写数字中正确识别出了 922 个,即正确率达到了 92.2%。下图是一张列联表,可以用它来检查神经网络的识别情况。

   

 

   上图列联表总结了神经网络的表现:第一行指出,共有 85 个“0”,神经网络正确识别出 84 个,最后一个“0”被错误地识别为“6”。最后一列是识别准确率。

从上图可以看到,“0”和“1”的手写图像几乎全部被正确识别出来了,而“5”的手写图像最难识别。接下来详细看看那些被识别错的数字。

“2”被错误识别成“7”或“8”的情况大约占8%。虽然人能够轻松识别出图中这些数字,神经网络却可能被某些特征给难住,比如“2”的小尾巴。有趣的是,神经网络对“3”和“5”也比较困惑,识别错误的情况约占10%。

尽管出现了这些错误,但是神经网络的识别速度远快于人类,并且从总体上看,神经网络的识别准确率很高。

  

 

   

 

 

神经网络的构成

为了识别手写数字,神经网络使用多层神经元来处理输入图像,以便进行预测。下图为双层神经网络示意图。

    

 

   

输入不同,但是输出相同,其中红色表示被激活的神经元。

在上图双层神经网络中,虽然输入是“6”的两幅不同形态的图像,但输出是一样的,并且该神经网络使用不同的神经元激活路径。尽管每一个神经元组合产生的预测是唯一的,但是每一个预测结果都可以由多个神经元组合实现。

神经网络通常由如下几部分组成:

  • 输入层,该层接收输入图像的每个像素。
  • 隐藏层,在像素进入神经网络之后,它们经过层层转换,不断提高和那些标签已知的图像的整体相似度。标签已知是指神经网络以前见过这些图像。虽然转换得越多,预测准确度就会越高,但是处理时间会明显增加。一般来说,几个隐藏层就足够了。
  • 输出层,该层产生最终预测结果。
  • 损失层,虽然上图并未显示损失层,但是在神经网络的训练过程中,损失层是存在的。该层通常位于最后,并提供有关输入是否识别正确的反馈;如果不正确,则给出误差量。
 

在训练神经网络的过程中,损失层至关重要。若预测正确,来自于损失层的反馈会强化产生该预测结果的激活路径;若预测错误,则错误会沿着路径逆向返回,这条路径上的神经元的激活条件就会被重新调整,以减少错误。这个过程称为反向传播。

通过不断重复这个训练过程,神经网络会学习输入信号和正确输出标签之间的联系,并且把这些联系作为激活规则编入每个神经元。因此,为了提高神经网络的预测准确度,需要调整管理激活规则的部件。

 

4. K-近邻算法 

1、K-近邻算法的基本概念、核心思想

2、K-近邻算法的三要素:k值的选取、距离的度量、分类决策规则

k近邻(k-nearest neighbor, k-NN)算法,是一种基本分类和回归方法。以下只讨论分类问题的k近邻算法。

 K近邻算法,通俗来说,就是给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的K个实例,这K个实例的多数属于某个类,就把该输入实例分类到这个类

中(类似于投票时少数服从多数的思想)。

     

如上图所示,有两类不同的样本数据,分别用蓝色的小正方形和红色的小三角形表示,而图正中间的那个绿色的圆所标示的数据则是待分类的数据。这也就是我们的目的,来了一个新

的数据点,我要得到它的类别是什么?下面我们根据k近邻的思想来给绿色圆点进行分类。

如果K=3,绿色圆点的最邻近的3个点是2个红色小三角形和1个蓝色小正方形,根据少数服从多数的思想,判定绿色的这个待分类点属于红色的三角形一类。

如果K=5,绿色圆点最邻近的5个邻居是2个红色三角形和3个蓝色的正方形,根据少数服从多数的思想,判定绿色的这个待分类点属于蓝色的正方形一类。

上面的例子形象的展示了k近邻的算法思想,可以看出k近邻的算法思想非常简单。但是在上面的例子中有几个问题:

  • 我们的K是怎么选取的,选多少合适?
  • 我们各个点之间的距离远近是如何度量的?
  • 判断输入样本属于哪一类时,少数服从多数思想背后的原因是什么?

 

k近邻算法三要素

接下来我们讨论一下k近邻算法的三个基本要素。

① k值的选取

k近邻算法的第一个核心要素:k值的选取

如果我们选取较小的k值,那么就会意味着我们的整体模型会变得复杂,容易发生过拟合!

假设我们有训练数据和待分类点如下图:

     

 

 上图中有俩类,一个是黑色的圆点,一个是蓝色的长方形,现在我们的待分类点是红色的五边形。

根据我们的k近邻算法步骤来决定待分类点应该归为哪一类。我们能够看出来五边形离黑色的圆点最近,k又等于1,因此我们最终判定待分类点是黑色的圆点。很明显我们这样分类是

错误的,因为此时距离五边形最近的黑色圆点是一个噪声,因此如果我们选择的k太小了,比如上面k等于1,我们很容易学习到数据中的噪声,也就非常容易将待分类点判定为噪声类

别,那么模型就太复杂了。在上图,如果,k大一点,k等于8,把长方形都包括进来,我们很容易得到我们正确的分类应该是蓝色的长方形!如下图:

       

 

 

经过上例,我们可以得到k太小会导致过拟合(过拟合就是在训练集上准确率非常高,而在测试集上准确率低),很容易将一些噪声(如上图距离五边形最近的黑色圆点)学习到模型

中,而忽略了数据真实的分布!

如果我们选取较大的k值,就相当于用较大邻域中的训练数据进行预测,这时与输入实例较远的(不相似)训练实例也会对预测起作用,使预测发生错误,k值的增大意味着整体模型变

得简单。为什么k值增大就意味着模型变得简单了?

我们假设,如果k=N(N为训练样本的个数),那么无论输入实例是什么,都将简单地预测它属于在训练实例中最多的类。这时,模型是不是非常简单,这相当于你压根就没有训练模

型!直接拿训练数据统计了一下各个数据的类别,找最大的而已!这好像下图所示:

    

 

 

我们统计了黑色圆形是8个,长方形个数是7个,如果k=N,那么,红色五边形是属于黑色圆形的(很明显是错误的)。

这个时候,模型过于简单,完全忽略训练数据实例中的大量有用信息,是不可取的。

所以k值既不能过大,也不能过小,在上例中,我们k值的选择,在下图红色圆边界之间这个范围是最好的,如下图:

   

 

 

(注:真实例子中不可能只有俩维特征,但是原理是一样的,就是想找到较好的k值大小)

那么我们一般怎么选取k值呢?李航老师的书上讲到(统计学习方法2),我们一般选取一个较小的数值,通常采取交叉验证法来选取最优的k值,也就是说,选取k值关键是实验调参,

从这里也能看出来机器学习是一门实践学科,所以需要多多写代码,理论与实践相结合才是最好的学习方式。

 

② 距离的度量

接下来我们讨论k近邻算法的第二个核心要素:距离的度量。

上几个例子中,经常会使用到距离待分类样本最近的k个样本,

  • 那么这最近的k个样本是如何选取出来的呢?
  • 怎么知道哪个样本距离待测样本距离最近呢?

通常情况下使用欧氏距离作为距离的度量,欧式距离度量方式的公式如下所示:

设特征空间 χ 是 n 维实数向量空间 Rn , xi , xj∈χ , xi = xi1 , xi2 , … , xin)T , xj = (xj1,xj2,…,xjn)T , xi , xj 的欧氏距离如下所示:

L2(xi,xj) = ((xi1 - xj1)2 + (xi2 - xj2)2 + … + (xin - xjn})2)1/2

在实际应用中,距离函数的选择应该根据数据的特性和分析的需要而定,一般选取p=2欧式距离表示,这不是本文的重点。

③ 分类决策规则

最后来讨论一下k近邻算法的第三个要素:分类决策规则

在几个例子中,判断待决策样本属于哪一类时,都是根据少数服从多数的思想。为什么根据这种思想做分类决策,背后的原理是什么呢?

假设分类的损失函数为0-1损失函数,分类函数为

f: Rn → {c1,c2,…,cK}

c1,c2,…,cK是我们数据集的K个类别,那么误分类的概率是:

P(Y≠f(x)) = 1 - P(Y=f(x))

其中Y是我们样本的真实类别,f(x)是我们算法预测的类别;对于给定的实例χ,其最近邻的k个训练实例点构成集合NK(x)。如果涵盖NK(x)的区域的类别是cj,那么误分类率是

1/k ΣI(yi ≠ cj) = 1 - 1/k ΣI(yi = cj)

其中,yi是我们第i个样本的所属类别,要使误分类率最小即经验风险最小,就要使ΣI(yi = cj)最大,所以多数表决规则等价于经验风险最小化。

讲到这里,k近邻算法三个核心要素就介绍完了。

 

1.我们提出了k近邻算法,算法的核心思想是,给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的K个实例,这K个实例的多数属于某个类,就把该输入实例分类到这个类中。更通俗的说一遍算法的过程,来了一个新的输入实例,我们算出该实例与每一个训练点的距离,然后找到前k个,这k个哪个类别数最多,我们就判断新的输入实例就是哪类!

2.其次我们对k近邻算法的核心三要素进行了讨论:如何选取k值(根据交叉验证,通过实验调参)、样本之间的距离如何度量(一般选取欧式距离)、分类决策的规则(多数表决规则等价于经验风险最小化)。

 

参考文献:

[1]一文搞懂k近邻(k-NN)算法,文章链接:https://zhuanlan.zhihu.com/p/25994179

[2]统计学习方法2,李航

 

 5. 人工智能的原理

 电脑上看图片,想放大看一些特别细小的地方时,会发现图像一开始还是清晰,再放大就变得模糊起来,再放大变得有“颗粒感”。

 因为图像在计算机的世界里是由像素组成,每个像素点都是用数值来表示。

在计算机的世界里,“万物皆数值”,不管是图片还是音频,在电脑中存储的都是一系列的数值,只是在不同形式的数据存储在电脑中的数值含义是不用的。

同样,人工智能处理的数据也都是数值类型,比如图像、音频等。

理解人工智能的原理,需要先理解数据数值的表现及含义。用数值表示的数据,可以从几何的角度进行理解。

“3”这样一个数值的含义:一个数值表示的的数据的含义是在一维空间中的一个点。

  

如果由2个数组成的数据在几何空间中表示二维坐标系内的一个点。

有一组由2个数值组成的数据,[[-1. -2. ],[-0.5 -0.5], [ 0. 1. ], [ 0.5 2.5], [ 1. 4. ]],它在二维空间内的图像如下:

   

 

 这5个点组成了一条直线。每种数据在几何角度的其所在的空间内(可能是很高维的空间)都可以组成形状,虽然不太可能是这种非常简单的直线,这是数据的几何意义。

数值表示的数据可以在几何角度理解为高维空间中的点,由足够多数据组成的高维空间中的图形是数据分布的一种形式。

图像和人工智能的关系

通过学习数据完成对这类问题的预测,假设通过X轴的值来预测Y轴的值

        

 

 这条直线的公式:y = 3x + 1,这条直线不仅代表了图中的5个点,输入其他的x同样可以进行预测。当我们输入x=0.75时,得到y=-1,达到了预测给定的5个数据点之外的能力。这就

是从几何的角度理解人工智能,人工智能构建一个函数,通过学习数据达到函数在几何空间内的形状和数据的几何表示非常接近,实现“代替”数据的目的,从而达到预测的能力,这个

函数就是算法模型。

算法模型在进行自我学习、自我更新的过程其实就是我们定义的函数去拟合数据(数据拟合又称曲线拟合,俗称拉曲线,是一种把现有数据透过数学方法来代入一条数式的表示方式。

科学和工程问题可以通过诸如采样、实验等方法获得若干离散的数据,根据这些数据,我们往往希望得到一个连续的函数(也就是曲线)或者更加密集的离散方程与已知数据相吻合,

这过程就叫做拟合)的过程。

 

 

 

 

 

 

 

 

 

 

 

 
posted @ 2021-05-23 15:43  kris12  阅读(374)  评论(0编辑  收藏  举报
levels of contents