精华内容
下载资源
问答
  • 学习算法
    千次阅读
    2022-03-02 16:37:58

    **

    深度学习算法简介**

    1、 深度学习主流算法包括:

    1.1 CNN (卷积神经网络)
    卷积神经网络(CNN)是最常见的深度学习方法之 一。自20 世纪80 年代后期以来,CNN 已应用于视觉识别与分类任务,特别是LeCun 等在1998 年提出了LeNet-5,基于CNN 的相关研究随即成为研究热点,伴随图形处理(Graphical Processing Unit,GPU)计算能力的发展和大量标记数据集的出现,CNN 在算法和架构上不断改进,在各个应用场景取得了突破。
    图像分类是计算机视觉中的基本问题,通常使用特征提取和分类器判别的技术架构来解决图像的分类问题。传统图像分类方法的准确性在很大程度上取决于所提取的特征,往往存在特征设计困难、面向复杂任务具有局限性、特征间的层次关系设计困难进而导致算法的泛化性能较弱等弊端。近年来的研究表明,随着数据获取方式的简化和大数据集的出现,在GPU 等芯片技术的快速发展,深度学习可以有效解决上述瓶颈问题。2012年,Krizhevsky 等使用扩展了深度的CNN 架构在ImageNet大规模视觉识别挑战竞赛中取得了最佳的分类效果,随即CNN 受到研究者们的重视,一系列网络模型的提出进一步推动了CNN 的深入研究与广泛应用。目前,CNN 已经成为大多数图像识别、分类和检测任务的领先架构,越来越多的网络架构也相继问世,包括AlexNet、Clarifai、SPP、VGG、GoogleNet、FCN、U-Net等。同时,梯度下降、参数优化策略、权重共享以及近年来神经网络架构优化(Neural ArchitectureOptimization,NAO)和元学习(meta-learning)等理论的迅速发展,使得CNN 在复杂应用场景中的优势更加明显。新型的CNN 神经网络架构表现出以多个网络或多种网络级联组合应用的新态势,神经网络形态的快速进化为纷繁复杂的科研领域提供了智能高效的数据分析手段。

    1.2 RBM (受限玻尔兹曼机)
    受限玻尔兹曼机(RBM)是由Hinton 和Sejnowski[16]在1986 年提出的神经网络模型,具备两层结构、层间全连接和层内无连接的特点,适用于有效地提取数据特征以及预训练传统的前馈神经网络,可明显提高网络的判别能力。其可见层所描述的是观察数据一个方面或一个特征,约束条件是可见单元和隐藏单元必须构成二分图。这种机制可用于组建更加有效的训练算法,特别是基于梯度的对比发散算法。用RBM 可以组成以下深层模型:深度置信网络(Deep Belief Network,DBN)、深度玻尔兹曼机(Deep Boltzmann Machines,DBM)和深能模型(Deep Energy Models,DEM),适用于特征提取、数据编码、构建用于监督学习的分类或回归学习模型,以及初始化神经网络等场景。

    1.3 AE (自动编码器)
    自动编码器是一种特殊类型的人工神经网络,用于从数据中学习有效的特征。最初也是由Hinton在2006年提出。自动编码器的几个重要变体包括:稀疏自动编码器(Sparse Auto Encoder,SAE)、去噪自动编码器(Denoising Auto Encoder,DAE)和收缩自动编码器(Contractive Auto Encoder,CAE)。在图像处理领域,原始图像像素值作为初级特征表达通常维度很高,且大多情况下存在数据冗余,因此需要采用合适的方法对图像数据进行降维或特征提取等预处理,进而得到更加简洁而有效的特征表达,以提高数据分析效率和精度,自动编码器多用于高维数据的降维处理和特征提取。

    1.4 SC (稀疏编码)
    稀疏编码(Sparse Coding,SC)最早由Olshausen 和Field 于1996 年提出,用于解释大脑中的初期视觉处理(比如边缘检测)。稀疏编码通过训练和学习来构建对输入数据的描述函数,通过训练来找到一组“超完备基向量(an over-complete set of basis vectors)”来表示输入数据的算法,超完备基向量能更有效地找出隐含在输入数据内部的结构与模式来重构原数据。稀疏编码的优点主要体现在:
    1)可以使用高维特征,对不同类别的特
    征更加易于分类;
    2)稀疏性可以捕获图像的显著特性;
    3)具备与生物视觉系统类似的认知方式。稀疏编码算法被广泛应用于语音信号分离、视觉图像处理、生物DNA(DeoxyriboNucleic Acid)微阵列数据分类和模式识别等领域。

    1.5 RNN (循环神经网络)
    循环神经网络(Recurrent Neural Network,RNN)是一类用于处理序列数据的神经网络,与“人的认知是基于过往的经验和记忆”类似,通过使用特定形式的存储器来模拟基于时间的动态变化,RNN 不仅能考虑当前的输入,而且赋予了网络对前序内容的一种“记忆”功能。这种网络结构能够直接地反映系统动态变化过程中的高度非线性和不确定性,因此适用于对时序数据规律的学
    习与未来变化趋势的预测,但该方法存在梯度消失与梯度爆炸问题[。1997 年,Hochreiter 和Schmidhuber提出了长短期记忆(Long Short-Term Memory,LSTM)网络,成功解决了这一问题。LSTM 可以保持前序信息的长期存储,在语音识别、信息检索、文本分类等应用中被广泛使用,现已成为实际应用中最有效的序列模型。

    2 不同算法的特点
    5 种常见的深度学习算法均具备一定的泛化能力,CNN 和SC 支持数据增强,可通过对训练数据进行旋转等处理来减少一定数据采集和标记的工作量。在无监督学习、特征学习和支持生物学解释方面,各算法表现各异。不同类型的深度学习算法表现出各自不同的特点,在实际应用场景中,研究人员需要根据特定科学问题及应用场景,选择合适的算法来构建相关模型。
    在这里插入图片描述
    理论上,深度学习算法是通过海量数据来解决复杂问题的机器学习方法,通常在海量数据的支持下,深度学习方法的潜力才被充分释放和发挥出来,在数据量相对较小情况下,普通的机器学习方法即可满足数据建模与预测的应用需求,因而在具体应用中通常需要根据特定研究目标的数据量与应用需求来选取合适的算法。

    内容来源:[1]岑海燕,朱月明,孙大伟,翟莉,万亮,麻志宏,刘子毅,何勇.深度学习在植物表型研究中的应用现状与展望[J].农业工程学报,2020,36(09):1-16.

    更多相关内容
  • 十大机器学习算法

    万次阅读 多人点赞 2022-03-08 22:55:09
    初学者应该知道的十大机器学习算法 来源:https://builtin.com/data-science/tour-top-10-algorithms-machine-learning-newbies 机器学习算法被描述为学习一个目标函数 (f),它最好地将输入变量 (X) 映射到输出...

    初学者应该知道的十大机器学习算法

    来源:https://builtin.com/data-science/tour-top-10-algorithms-machine-learning-newbies

    机器学习算法被描述为学习一个目标函数 (f),它最好地将输入变量 (X) 映射到输出变量 (Y):Y = f(X)

    最常见的机器学习类型是学习映射 Y = f(X) 以针对新 X 预测 Y。这称为预测建模或预测分析,目标就是要做出最准确的预测。

    线性回归

    线性回归是统计和机器算法中最容易理解的算法之一。

    线性回归的表示是一个方程,它通过找到称为系数 (B) 的输入变量的特定权重来描述最适合输入变量 (x) 和输出变量 (y) 之间关系的直线。
    在这里插入图片描述
    例如:y = B0 + B1 * x
    我们将在给定输入 x 的情况下预测 y,线性回归学习算法的目标是找到系数 B0 和 B1 的值。

    可以使用不同的技术从数据中学习线性回归模型,例如普通最小二乘的线性代数解决方案和梯度下降优化。

    逻辑回归

    逻辑回归是机器学习从统计学领域借用的另一种技术。它是二进制分类问题(具有两个类值的问题)的首选方法。

    逻辑回归类似于线性回归,其目标是找到加权每个输入变量的系数值与线性回归不同,输出的预测是使用称为逻辑函数的非线性函数转换的。

    逻辑函数看起来像一个大 S,会将任何值转换为 0 到 1 的范围。这很有用,因为我们可以将规则应用于逻辑函数的输出以将值捕捉到 0 和 1(例如,如果小于 0.5 则输出 1) 并预测一个类值。
    逻辑回归:逻辑回归曲线图,显示通过考试的概率与学习时间的关系
    由于模型的学习方式,逻辑回归所做的预测也可以用作给定数据实例属于 0 类或 1 类的概率。这对于需要给出更多理由的问题是很有用一个预测。

    与线性回归一样,当您删除与输出变量无关的属性以及彼此非常相似(相关)的属性时,逻辑回归的效果会更好。这是一个快速学习的模型,并且对二元分类问题有效。

    线性判别分析

    逻辑回归是一种传统上仅限于两类分类问题的分类算法。如果您有两个以上的类别,则线性判别分析算法是首选的线性分类技术。

    LDA 的表示非常简单。它由您的数据的统计属性组成,为每个类计算。对于单个输入变量,这包括:

    1. 每个类别的平均值。
    2. 跨所有类计算的方差。

    在这里插入图片描述
    通过计算每个类别的判别值并针对具有最大值的类别进行预测。假设数据具有高斯分布(钟形曲线),因此最好事先从数据中删除异常值。它是分类预测建模问题的一种简单而强大的方法。

    分类和回归树

    决策树是预测建模机器学习的一种重要算法。

    决策树模型的表示是二叉树。这是来自算法和数据结构的二叉树,没什么花哨的。每个节点代表一个输入变量 (x) 和该变量上的一个分割点(假设变量是数字)。
    在这里插入图片描述
    树的叶节点包含一个输出变量 (y),用于进行预测。通过遍历树的分裂直到到达叶节点并在该叶节点处输出类值来进行预测。

    树的预测速度也很快。它们通常对于广泛的问题也很准确,并且不需要对数据进行任何特殊准备。

    朴素贝叶斯

    朴素贝叶斯是一种简单但功能强大的预测建模算法。

    该模型由两种类型的概率组成,可以直接从您的训练数据中计算出来:
    1)每个类别的概率;
    2)给定每个 x 值的每个类的条件概率。
    计算后,概率模型可用于使用贝叶斯定理对新数据进行预测。当数据是实值时,通常假设高斯分布(钟形曲线),以便可以轻松估计这些概率。
    在这里插入图片描述
    朴素贝叶斯被称为朴素,因为它假设每个输入变量都是独立的。这是一个强有力的假设,对于真实数据来说是不现实的,然而,该技术在处理大量复杂问题时非常有效。

    K-最近邻 (KNN)

    KNN算法非常简单,非常有效。KNN 的模型表示是整个训练数据集。

    通过在整个训练集中搜索 K 个最相似的实例(邻居)并汇总这些 K 个实例的输出变量,对新数据点进行预测。

    对于回归问题,这可能是平均输出变量,对于分类问题,这可能是模式(或最常见的)类值。

    诀窍在于如何确定数据实例之间的相似性。在这里插入图片描述
    KNN 可能需要大量内存或空间来存储所有数据,但仅在需要预测时才及时执行计算(或学习)。这个期间你可以随着时间的推移更新和管理训练实例,以保持预测的准确性。

    学习向量量化 (LVQ)

    K-Nearest Neighbors 的一个缺点是需要保留整个训练数据集。

    学习向量量化算法(或简称 LVQ)是一种人工神经网络算法,它允许选择要挂起的训练实例数量并准确了解这些实例的外观。

    在这里插入图片描述
    LVQ 的表示是码本向量的集合。这些是在开始时随机选择的,并适合在学习算法的多次迭代中最好地总结训练数据集。学习后,码本向量可以像 K-Nearest Neighbors 一样用于进行预测。通过计算每个码本向量与新数据实例之间的距离,找到最相似的邻居(最佳匹配码本向量)。然后返回最佳匹配单元的类值或(回归情况下的实际值)作为预测。
    如果重新调整数据以具有相同的范围,例如在 0 和 1 之间,则可以获得最佳结果。

    如果发现 KNN 在你的数据集上提供了良好的结果,可以尝试使用 LVQ 来减少存储整个训练数据集的内存需求。

    支持向量机 (SVM)

    支持向量机可能是最受欢迎和谈论最多的机器学习算法之一。

    超平面是分割输入变量空间的线。

    在 SVM 中,选择一个超平面来最好地将输入变量空间中的点按它们的类(类 0 或类 1)分开。在二维中,你可以将其可视化为一条线,假设我们所有的输入点都可以被这条线完全隔开。SVM 学习算法通过超平面找到导致类的最佳分离的系数。
    在这里插入图片描述
    超平面和最近数据点之间的距离称为边距。
    可以分离这两个类的最佳或最优超平面是具有最大边距的线。

    只有这些点与定义超平面和构建分类器有关。这些点称为支持向量。它们支持或定义超平面。在实践中,使用优化算法来找到最大化边际的系数值。

    Bagging 和随机森林

    随机森林是最流行和最强大的机器学习算法之一。它是一种集成机器学习算法。称为 Bootstrap Aggregation 或 bagging。

    Bootstrap是一种强大的统计方法,用于从数据样本中估计数量。

    在 bagging 中,使用相同的方法,但用于估计整个统计模型,最常见的是决策树。

    获取训练数据的多个样本,然后为每个数据样本构建模型。当你需要对新数据进行预测时,每个模型都会进行预测,并对预测进行平均以更好地估计真实输出值。

    在这里插入图片描述
    随机森林是对这种方法的一种调整,其中创建了决策树,因此不是选择最佳分割点,而是通过引入随机性来进行次优分割。

    因此,为每个数据样本创建的模型与其他模型相比更加不同,但仍然以其独特和不同的方式准确。结合他们的预测可以更好地估计真实的潜在输出值。

    Boosting 和 AdaBoost

    Boosting 是一种集成技术,它试图从多个弱分类器中创建一个强分类器。

    这是通过从训练数据构建模型,然后创建第二个模型来尝试纠正第一个模型中的错误来完成的。添加模型直到训练集被完美预测或添加最大数量的模型。

    AdaBoost 是为二进制分类开发的第一个真正成功的提升算法。这是理解 boosting 的最佳起点。

    AdaBoost 与短决策树一起使用。
    在创建第一棵树后,树在每个训练实例上的性能用于衡量下一棵创建的树应该对每个训练实例的关注程度。难以预测的训练数据被赋予更高的权重,而易于预测的实例被赋予更少的权重。

    模型一个接一个地按顺序创建,每个模型都会更新训练实例上的权重,这些权重会影响序列中下一棵树执行的学习。

    在构建完所有树之后,将对新数据进行预测,并且每棵树的性能取决于它在训练数据上的准确程度。

    由于算法非常重视纠正错误,因此拥有干净的数据并删除异常值非常重要。

    展开全文
  • 【联邦学习】联邦学习算法分类总结

    万次阅读 多人点赞 2021-11-29 20:52:09
    联邦学习算法总结,从不同的角度对联邦学习方法进行分类。


    联邦学习作为目前研究的热点,各种算法层出不穷,不管是纵向横向,还是什么FedAvg、FedProx,总之就是分类很乱,今天来系统总结一下联邦学习的分类方式以及对应的内容介绍。

    横向联邦学习、纵向联邦学习和联邦迁移学习

    我们都听过联邦学习分类方法中有:纵向横向和迁移,这是杨强大佬的分类方法,是根据样本重合程度来划分的。

    横向联邦学习

    机器学习中,特征、标签和样本是最基本的概念,下图展示了特征样本标签之间的关系
    特征、样本和标签
    横向联邦学习,就是指两个样本集合中样本的特征重合较高,但是样本来源不一样。就比如图中,两个样本集合分别是两家银行的客户。一般银行管理的数据特征都是相似的,但是客户是不同的,这样我们就可以采用横向联邦学习的方式训练模型。

    纵向联邦学习

    纵向联邦学习是指两个数据集id重合较高(比如上图的姓名,都是一样的人),但是特征不一样,比如一座城市只有一家银行和一家医院,那么银行和医院的样本大概率人员重合度很高,但是特征不一样,银行数据集属性可能是存款、贷款等信息,医院可能是生理指标等。此时如果使用银行和医院的数据集训练模型,我们称之为纵向联邦学习。

    联邦迁移学习

    如果id和特征重合程度都很少怎么办?此时只能采用联邦迁移学习的办法。联邦迁移学习重点在“迁移学习”。迁移学习,是指利用数据、任务、或模型之间的相似性,将在源领域学习过的模型,应用于目标领域的一种学习过程。这里对迁移学习不做展开。

    基于机器学习算法的联邦学习分类

    常见的机器学习算法诸如回归、随机森林、支持向量机等,这些算法都可以用在联邦学习中。目前在联邦学习中已经研究的传统机器学习算法有以下几种

    联邦线性算法

    Yang K等人提出了一种中心联邦学习框架下的纵向联邦逻辑回归实现方法,这种方法实现了纵向联邦学习中的逻辑回归,其目标函数是:
    联邦先行算法损失函数
    论文传送门:https://arxiv.org/abs/1812.11750

    联邦树模型

    Liu Y等人提出了一种基于中心纵向联邦学习框架的随机森林实现方法——联邦森林。在建模过程中,每棵树都实行联合建模。
    论文传送门:https://arxiv.org/abs/1905.10053

    联邦支持向量机

    Hartmann V等人提出了一种将支持向量机(support vector machine,SVM安全部署在联邦学习中的方法,主要通过特征哈希、更新分块等方式对数据隐私性进行保障。其目标函数如下:
    联邦支持向量机损失函数
    论文传送门:https://arxiv.org/abs/1907.03373v1

    联邦深度学习

    深度学习诸如CNN、LSTM等也可以用联邦学习的方式来实现
    联邦学习算法对比

    基于优化方法进行分类

    我们都知道,联邦学习的主要问题集中在一下三个方面

    ● 联邦学习的通信是比较慢速且不稳定的;
    ● 联邦学习的参与方设备异构,不同设备有不同的运算能力;
    ● 联邦学习更关注隐私和安全,目前大部分的研究假设参与方和服务器方是可信的,然而在现实生活中,其可能是不可信的。

    通俗的讲就三点:通信、数据和设备异质以及加密保护。

    那么,我们可以根据这三点来提出不同的联邦学习算法,以解决对应的问题,比如某种算法侧重于解决通信瓶颈问题,而另一种方法则侧重于解决加密问题。

    最经典的联邦学习算法当属FedAvg(https://arxiv.org/pdf/1602.05629.pdf),该算法在Non-iid数据上的收敛性也得到了数学上的证明(https://arxiv.org/abs/1907.02189v3)。

    从通信成本角度优化的联邦学习算法

    模型通常很大,如果频繁的通信势必会对通信造成压力,因此我们必须想办法减小通信压力,常用的方法有增加客户端训练轮数、模型压缩等。

    增加客户端训练压力

    在联邦学习体系中,有时终端节点只会在有Wi-Fi时参与联邦学习训练,或者有时网络状况不佳,在这些情况下,更多的计算可以在本地进行,从而减少通信的次数。很多算法是从这个角度来优化通信成本的。比如Konečný J考虑了优化FedAvg算法,增加每一轮迭代在每个客户端的本地更新参数的计算次数。
    论文传送门:https://arxiv.org/abs/1707.01155

    Sahu A K等人提出了一种更通用的FedProx算法,这种算法在数据为non-IID时优化效果更明显。FedProx算法可以动态地更新不同客户端每一轮需要本地计算的次数,使得算法更适合非独立同分布的联合建模场景。
    论文传送门:https://openreview.net/pdf?id=SkgwE5Ss3N

    模型压缩

    有的优化算法目的是减少每一轮通信的参数量,例如通过模型压缩的技术(比如量化、二次抽样的方式)来减少每一次参数更新要传递的参数总量。Konečný J等人提出了一种结构化的模型更新方式来更新服务器参数,在每一轮的参数通信过程中,减小参与方传递给服务器的模型更新参数的大小,从而减少通信。
    论文传送门:https://arxiv.org/abs/1610.05492v2

    Caldas S等人考虑的是从服务器到参 与 方的模型参 数传 递优化,通 过有损压缩以及联邦参数筛选(federated dropout)的方式来减少从服务器到客户端需要传递的参数数量,降低通信成本的代价是在一定程度上降低模型的准确率。
    论文传送门:https://arxiv.org/abs/1812.07210

    从客户端选择入手的联邦学习算法

    不同的客户端的网络速度、运算能力等不同,每个客户端拥有的数据分布也是不平衡的,如果让所有的客户端都参与联邦学习的训练过程,将会有迭代落后的参与方出现,某些客户端长时间没有响应可能会导致整个系统无法完成联合训练。因此,需要考虑如何选择参与训练的客户端。
    最经典的FedAvg算法中客户端的选择是随机的。随机选择嘛emmmm很显然不是很合理,毕竟设备跟设备之间差异太大。
    Nishio T等人提出了一种FedCS算法,设计了一种贪心算法的协议机制,以达到在联合训练的每一次更新中都选择模型迭代效率最高的客户端进行聚合更新的目的,从而优化整个联邦学习算法的收敛效率。
    论文传送门:https://arxiv.org/abs/1804.08333

    Yoshida N等人[59]提出了一种HybridFL的协议算法,该协议可以处理数据集为non-IID的客户端数据,解决基于non-IID数据在FedAvg算法上性能不好的问题。Hybrid-FL协议使得服务器通过资源请求
    的步骤来选择部分客户端,从而在本地建立一种近似独立同分布的数据集用于联邦学习的训练和迭
    代。
    论文传送门:https://arxiv.org/abs/1905.07210

    从异步聚合角度优化的联邦学习算法

    我们都知道,在FedAvg的算法中,聚合是与模型的更新保持同步的。每一次更新,服务器都同步聚合模型参数,然后将聚合参数发送给每一个客户端。在同步聚合中,服务器需要在接收到所有参与训练的客户端的参数之后才可以开始聚合,但是有的客户端运算传输快,有的客户端运算传输慢,为了避免出现通信迟滞现象,有研究者考虑用异步的方式进行聚合,从而优化联邦学习算法。
    优化角度的联邦学习算法分类
    论文传送门:Asynchronous Federated Optimization

    展开全文
  • 本文覆盖机器学习常见知识要点,包括机器学习流程、算法分类(监督学习、无监督学习、强化学习)、依托的问题场景(分类、回归、聚类、降维)、机器学习模型评估与选择等。

    ShowMeAI研究中心


    1. 机器学习概述

    1)什么是机器学习

    人工智能(Artificial intelligence)是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。它是一个笼统而宽泛的概念,人工智能的最终目标是使计算机能够模拟人的思维方式和行为。大概在上世纪50年代开始兴起,但是受限于数据和硬件设备等限制,当时发展缓慢。

    机器学习(Machine learning)是人工智能的子集,是实现人工智能的一种途径,但并不是唯一的途径。它是一门专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能的学科。大概在上世纪80年代开始蓬勃发展,诞生了一大批数学统计相关的机器学习模型。

    深度学习(Deep learning)是机器学习的子集,灵感来自人脑,由人工神经网络(ANN)组成,它模仿人脑中存在的相似结构。在深度学习中,学习是通过相互关联的「神经元」的一个深层的、多层的「网络」来进行的。「深度」一词通常指的是神经网络中隐藏层的数量。大概在2012年以后爆炸式增长,广泛应用在很多的场景中。

    让我们看看国外知名学者对机器学习的定义:

    机器学习研究的是计算机怎样模拟人类的学习行为,以获取新的知识或技能,并重新组织已有的知识结构,使之不断改善自身。从实践的意义上来说,机器学习是在大数据的支撑下,通过各种算法让机器对数据进行深层次的统计分析以进行「自学」,使得人工智能系统获得了归纳推理和决策能力

    通过经典的「垃圾邮件过滤」应用,我们再来理解下机器学习的原理,以及定义中的T、E、P分别指代什么。

    2)机器学习三要素

    机器学习三要素包括数据模型算法。这三要素之间的关系,可以用下面这幅图来表示:

    (1)数据

    数据驱动:数据驱动指的是我们基于客观的量化数据,通过主动数据的采集分析以支持决策。与之相对的是经验驱动,比如我们常说的「拍脑袋」。

    (2)模型&算法

    模型:在AI数据驱动的范畴内,模型指的是基于数据X做决策Y的假设函数,可以有不同的形态,计算型和规则型等。

    算法:指学习模型的具体计算方法。统计学习基于训练数据集,根据学习策略,从假设空间中选择最优模型,最后需要考虑用什么样的计算方法求解最优模型。通常是一个最优化的问题。

    3)机器学习发展历程

    人工智能一词最早出现于1956年,用于探索一些问题的有效解决方案。1960年,美国国防部借助「神经网络」这一概念,训练计算机模仿人类的推理过程。

    2010年之前,谷歌、微软等科技巨头改进了机器学习算法,将查询的准确度提升到了新的高度。而后,随着数据量的增加、先进的算法、计算和存储容量的提高,机器学习得到了更进一步的发展。

    4)机器学习核心技术

    • 分类:应用以分类数据进行模型训练,根据模型对新样本进行精准分类与预测。

    • 聚类:从海量数据中识别数据的相似性与差异性,并按照最大共同点聚合为多个类别。

    • 异常检测:对数据点的分布规律进行分析,识别与正常数据及差异较大的离群点。

    • 回归:根据对已知属性值数据的训练,为模型寻找最佳拟合参数,基于模型预测新样本的输出值。

    5)机器学习基本流程

    机器学习工作流(WorkFlow)包含数据预处理(Processing)、模型学习(Learning)、模型评估(Evaluation)、新样本预测(Prediction)几个步骤。

    • 数据预处理:输入(未处理的数据 + 标签)→处理过程(特征处理+幅度缩放、特征选择、维度约减、采样)→输出(测试集 + 训练集)。

    • 模型学习:模型选择、交叉验证、结果评估、超参选择。

    • 模型评估:了解模型对于数据集测试的得分。

    • 新样本预测:预测测试集。

    6)机器学习应用场景

    作为一套数据驱动的方法,机器学习已广泛应用于数据挖掘、计算机视觉、自然语言处理、生物特征识别、搜索引擎、医学诊断、检测信用卡欺诈、证券市场分析、DNA序列测序、语音和手写识别和机器人等领域。

    • 智能医疗:智能假肢、外骨骼、医疗保健机器人、手术机器人、智能健康管理等。

    • 人脸识别:门禁系统、考勤系统、人脸识别防盗门、电子护照及身份证,还可以利用人脸识别系统和网络,在全国范围内搜捕逃犯。

    • 机器人的控制领域:工业机器人、机械臂、多足机器人、扫地机器人、无人机等。

    2.机器学习基本名词

    • 监督学习Supervised Learning):训练集有标记信息,学习方式有分类和回归。

    • 无监督学习Unsupervised Learning):训练集没有标记信息,学习方式有聚类和降维。

    • 强化学习Reinforcement Learning):有延迟和稀疏的反馈标签的学习方式。

    • 示例/样本:上面一条数据集中的一条数据。

    • 属性/特征:「色泽」「根蒂」等。

    • 属性空间/样本空间/输入空间X:由全部属性张成的空间。

    • 特征向量:空间中每个点对应的一个坐标向量。

    • 标记:关于示例结果的信息,如((色泽=青绿,根蒂=蜷缩,敲声=浊响),好瓜),其中「好瓜」称为标记。

    • 分类:若要预测的是离散值,如「好瓜」,「坏瓜」,此类学习任务称为分类。

    • 假设:学得模型对应了关于数据的某种潜在规律。

    • 真相:潜在规律自身。

    • 学习过程:是为了找出或逼近真相。

    • 泛化能力:学得模型适用于新样本的能力。一般来说,训练样本越大,越有可能通过学习来获得具有强泛化能力的模型。

    3.机器学习算法分类

    1)机器学习算法依托的问题场景

    机器学习在近30多年已发展为一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动「学习」的算法。

    机器学习算法从数据中自动分析获得规律,并利用规律对未知数据进行预测。机器学习理论关注可以实现的、行之有效的学习算法。很多推论问题属于无程序可循难度,所以部分的机器学习研究是开发容易处理的近似算法。

    机器学习最主要的类别有:监督学习、无监督学习和强化学习。

    监督学习:从给定的训练数据集中学习出一个函数,当新的数据到来时,可以根据这个函数预测结果。监督学习的训练集要求是包括输入和输出,也可以说是特征和目标。训练集中的目标是由人标注的。常见的监督学习算法包括回归分析和统计分类。

    无监督学习:与监督学习相比,训练集没有人为标注的结果。常见的无监督学习算法有生成对抗网络(GAN)、聚类。

    强化学习:通过观察来学习做成如何的动作。每个动作都会对环境有所影响,学习对象根据观察到的周围环境的反馈来做出判断。

    2)分类问题

    分类问题是机器学习非常重要的一个组成部分。它的目标是根据已知样本的某些特征,判断一个新的样本属于哪种已知的样本类。分类问题可以细分如下:

    • 二分类问题:表示分类任务中有两个类别新的样本属于哪种已知的样本类。

    • 多类分类(Multiclass classification)问题:表示分类任务中有多类别。

    • 多标签分类(Multilabel classification)问题:给每个样本一系列的目标标签。

    了解更多机器学习分类算法:KNN算法逻辑回归算法朴素贝叶斯算法决策树模型随机森林分类模型GBDT模型XGBoost模型支持向量机模型等。

    3)回归问题

    了解更多机器学习回归算法:决策树模型随机森林分类模型GBDT模型回归树模型支持向量机模型等。

    4)聚类问题

    了解更多机器学习聚类算法:聚类算法

    5)降维问题

    了解更多机器学习降维算法:PCA降维算法

    4.机器学习模型评估与选择

    1)机器学习与数据拟合

    机器学习最典型的监督学习为分类与回归问题。分类问题中,我们学习出来一条「决策边界」完成数据区分;在回归问题中,我们学习出拟合样本分布的曲线。

    2)训练集与数据集

    我们以房价预估为例,讲述一下涉及的概念。

    • 训练集(Training Set):帮助训练模型,简单的说就是通过训练集的数据让确定拟合曲线的参数。

    • 测试集(Test Set):为了测试已经训练好的模型的精确度。

    当然,test set这并不能保证模型的正确性,只是说相似的数据用此模型会得出相似的结果。因为在训练模型的时候,参数全是根据现有训练集里的数据进行修正、拟合,有可能会出现过拟合的情况,即这个参数仅对训练集里的数据拟合比较准确,这个时候再有一个数据需要利用模型预测结果,准确率可能就会很差。

    3)经验误差

    在训练集的数据上进行学习。模型在训练集上的误差称为「经验误差」(Empirical Error)。但是经验误差并不是越小越好,因为我们希望在新的没有见过的数据上,也能有好的预估结果。

    4)过拟合

    过拟合,指的是模型在训练集上表现的很好,但是在交叉验证集合测试集上表现一般,也就是说模型对未知样本的预测表现一般,泛化(Generalization)能力较差。

    如何防止过拟合呢?一般的方法有Early Stopping、数据集扩增(Data Augmentation)、正则化、Dropout等。

    • 正则化:指的是在目标函数后面添加一个正则化项,一般有L1正则化与L2正则化。L1正则是基于L1范数,即在目标函数后面加上参数的L1范数和项,即参数绝对值和与参数的积项。

    • 数据集扩增:即需要得到更多的符合要求的数据,即和已有的数据是独立同分布的,或者近似独立同分布的。一般方法有:从数据源头采集更多数据、复制原有数据并加上随机噪声、重采样、根据当前数据集估计数据分布参数,使用该分布产生更多数据等。

    • DropOut:通过修改神经网络本身结构来实现的。

    5)偏差

    偏差Bias),它通常指的是模型拟合的偏差程度。给定无数套训练集而期望拟合出来的模型就是平均模型。偏差就是真实模型和平均模型的差异。

    简单模型是一组直线,平均之后得到的平均模型是一条直的虚线,与真实模型曲线的差别较大(灰色阴影部分较大)。因此,简单模型通常高偏差

    复杂模型是一组起伏很大波浪线,平均之后最大值和最小组都会相互抵消,和真实模型的曲线差别较小,因此复杂模型通常低偏差(见黄色曲线和绿色虚线几乎重合)。

    6)方差

    方差(Variance),它通常指的是模型的平稳程度(简单程度)。简单模型的对应的函数如出一辙,都是水平直线,而且平均模型的函数也是一条水平直线,因此简单模型的方差很小,并且对数据的变动不敏感。

    复杂模型的对应的函数千奇百怪,毫无任何规则,但平均模型的函数也是一条平滑的曲线,因此复杂模型的方差很大,并且对数据的变动很敏感。

    7)偏差与方差的平衡

    8)性能度量指标

    性能度量是衡量模型泛化能力的数值评价标准,反映了当前问题(任务需求)。使用不同的性能度量可能会导致不同的评判结果。更详细的内容可见 模型评估方法与准则

    (1)回归问题

    关于模型「好坏」的判断,不仅取决于算法和数据,还取决于当前任务需求。回归问题常用的性能度量指标有:平均绝对误差、均方误差、均方根误差、R平方等

    • 平均绝对误差Mean Absolute Error,MAE),又叫平均绝对离差,是所有标签值与回归模型预测值的偏差的绝对值的平均。

    • 平均绝对百分误差Mean Absolute Percentage Error,MAPE)是对MAE的一种改进,考虑了绝对误差相对真实值的比例。

    • 均方误差Mean Square Error,MSE)相对于平均绝对误差而言,均方误差求的是所有标签值与回归模型预测值的偏差的平方的平均。

    • 均方根误差Root-Mean-Square Error,RMSE),也称标准误差,是在均方误差的基础上进行开方运算。RMSE会被用来衡量观测值同真值之间的偏差。

    • R平方,决定系数,反映因变量的全部变异能通过目前的回归模型被模型中的自变量解释的比例。比例越接近于1,表示当前的回归模型对数据的解释越好,越能精确描述数据的真实分布。

    (2)分类问题

    分类问题常用的性能度量指标包括错误率(Error Rate)、精确率(Accuracy)、查准率(Precision)、查全率(Recall)、F1、ROC曲线、AUC曲线和R平方等。更详细的内容可见 模型评估方法与准则

    • 错误率:分类错误的样本数占样本总数的比例。

    • 精确率:分类正确的样本数占样本总数的比例。

    • 查准率(也称准确率),即在检索后返回的结果中,真正正确的个数占你认为是正确的结果的比例。

    • 查全率(也称召回率),即在检索结果中真正正确的个数,占整个数据集(检索到的和未检索到的)中真正正确个数的比例。

    • F1是一个综合考虑查准率与查全率的度量,其基于查准率与查全率的调和平均定义:即:F1度量的一般形式-Fβ,能让我们表达出对查准率、查全率的不同偏好。

    ROC曲线(Receiver Operating Characteristic Curve)全称是「受试者工作特性曲线」。综合考虑了概率预测排序的质量,体现了学习器在不同任务下的「期望泛化性能」的好坏。ROC曲线的纵轴是「真正例率」(TPR),横轴是「假正例率」(FPR)。

    AUC(Area Under ROC Curve)是ROC曲线下面积,代表了样本预测的排序质量

    从一个比较高的角度来认识AUC:仍然以异常用户的识别为例,高的AUC值意味着,模型在能够尽可能多地识别异常用户的情况下,仍然对正常用户有着一个较低的误判率(不会因为为了识别异常用户,而将大量的正常用户给误判为异常。

    9)评估方法

    我们手上没有未知的样本,如何可靠地评估?关键是要获得可靠的「测试集数据」(Test Set),即测试集(用于评估)应该与训练集(用于模型学习)「互斥」。

    常见的评估方法有:留出法(Hold-out)、交叉验证法( Cross Validation)、自助法(Bootstrap)。更详细的内容可见 模型评估方法与准则

    留出法(Hold-out)是机器学习中最常见的评估方法之一,它会从训练数据中保留出验证样本集,这部分数据不用于训练,而用于模型评估。

    机器学习中,另外一种比较常见的评估方法是交叉验证法Cross Validation)。k 折交叉验证对 k 个不同分组训练的结果进行平均来减少方差,因此模型的性能对数据的划分就不那么敏感,对数据的使用也会更充分,模型评估结果更加稳定。

    自助法(Bootstrap)是一种用小样本估计总体值的一种非参数方法,在进化和生态学研究中应用十分广泛

    Bootstrap通过有放回抽样生成大量的伪样本,通过对伪样本进行计算,获得统计量的分布,从而估计数据的整体分布。

    10)模型调优与选择准则

    我们希望找到对当前问题表达能力好,且模型复杂度较低的模型:

    • 表达力好的模型,可以较好地对训练数据中的规律和模式进行学习;

    • 复杂度低的模型,方差较小,不容易过拟合,有较好的泛化表达。

    11)如何选择最优的模型

    (1)验证集评估选择

    • 切分数据为训练集和验证集。

    • 对于准备好的候选超参数,在训练集上进行模型,在验证集上评估。

    (2)网格搜索/随机搜索交叉验证

    • 通过网格搜索/随机搜索产出候选的超参数组。

    • 对参数组的每一组超参数,使用交叉验证评估效果。

    • 选出效果最好的超参数。

    (3)贝叶斯优化

    • 基于贝叶斯优化的超参数调优。

    视频教程

    可以点击 B站 查看视频的【双语字幕】版本

    【双语字幕+资料下载】斯坦福CS229 | 机器学习-吴恩达主讲(2018·完整版)

    【双语字幕+资料下载】斯坦福CS229 | 机器学习-吴恩达主讲(2018·完整版)

    https://www.bilibili.com/video/BV1TT4y127Nf

    ShowMeAI图解机器学习算法系列(完整版)

    ShowMeAI系列教程精选推荐

    展开全文
  • 9种深度学习算法

    千次阅读 2021-03-11 16:31:42
    深度学习算法和经典神经网络之间有什么区别呢?最明显的区别是:深度学习中使用的神经网络具有更多隐藏层。这些层位于神经元的第一层(即输入层)和最后一层(即输出层)之间。另外,没有必要将不同层的所有神经元...
  • 联邦学习算法综述

    万次阅读 2021-01-06 17:06:00
    点击上方蓝字关注我们联邦学习算法综述王健宗1,孔令炜1,黄章成1,陈霖捷1,刘懿1,何安珣1,肖京21.平安科技(深圳)有限公司,广东 深圳 5180632.中国平安保...
  • 如何选择最佳机器学习算法

    千次阅读 2021-01-21 19:05:53
    没有任何一种机器学习算法,能够做到针对任何数据集都是最佳的。通常,拿到一个具体的数据集后,会根据一系列的考量因素进行评估。这些因素包括 :要解决的问题的性质、数据集大小、数据集特征、有无标签等。有了...
  • 机器学习算法-十大常用算法

    千次阅读 2021-07-01 11:26:05
    跟我们生活息息相关的最常见机器学习算法包括电影推荐算法、图书推荐算法。这些算法都是基于你的电影观看记录或图书购买记录来给你做推荐的。  James Le在KDnuggets上发布了一篇文章,介绍了他是如何入门机器学习...
  • 9种深度学习算法简介

    万次阅读 2021-12-09 00:09:30
    导读:从算法处理的流程来划分,基于深度学习的目标检测算法可分为两阶段(Two-Stage)算法和一阶段(One-Stage)算法,两阶段算法需要先进行候选框的筛选,然后判断候选框是否框中了...
  • 机器学习算法 无监督学习 算法

    千次阅读 2019-06-26 14:51:22
    本文介绍无监督学习算法: 聚类算法 Apriori算法 FP-growth 算法 1 聚类算法 2 Apriori算法 3 FP-growth 算法
  • 十个常用深度学习算法

    万次阅读 多人点赞 2019-06-14 15:59:54
    过去十年里,人们对...从根本上讲,机器学习是运用算法从原始数据中提取信息,并用某种类型的模型进行表示,然后使用该模型对一些尚未用模型表示的其他数据来进行推断。 神经网络就是机器学习各类模型中的其中一...
  • 机器学习算法已经被广泛应用于自动驾驶各种解决方案,电控单元中的传感器数据处理大大提高了机器学习的利用率,也有一些潜在的应用,比如利用不同外部和内部的传感器的数据融合(如激光雷达、雷达、摄像头或物联网),...
  • 强化学习算法:AC系列详解

    万次阅读 2020-03-21 17:02:14
    A3C的优点: 强化学习算法不稳定很大程度上是由于强化学习得到一连串的数据之间具有相关性,只有打破只有的相关性才能得到一个稳定的算法。前面了解到的DQN就是使用了经验池的方法来打破数据时间的相关性,通过从...
  • 机器学习/深度学习算法学习心得

    千次阅读 2018-07-29 00:00:51
    本文的写作目的一方面是总结下自己的学习心得,另一方面是给那些想学习并且想从事算法工程师一点小小的参考,欢迎大家多多交流! 基础学习心得 想要入门机器学习,至少需要提前掌握以下两种技能 必要的数学...
  • 如何学习算法

    千次阅读 多人点赞 2019-09-14 15:34:26
    今天在群里刚好看到有人在讨论算法的问题,刚好自己曾经也有一个算法大神的梦,来说说自己对算法的理解。算法怎么学?什么样程度才算把算法学透?算法学会了有什么用?算法学习是非...
  • 机器学习算法背后的数学原理

    万次阅读 多人点赞 2020-09-06 09:29:04
    不同的机器学习算法是如何从数据中学习并预测未知数据的呢? ​ 机器学习算法的设计让它们从经验中学习,当它们获取越来越多的数据时,性能也会越来越高。每种算法都有自己学习和预测数据的思路。在本文中,我们将...
  • 机器学习算法(15)之Xgboost算法

    万次阅读 多人点赞 2018-09-11 14:32:27
    这篇文章将会是对前两篇文章的深化,谈的是一个更加优化了的boostIng算法,自从2014年9月份在 Kaggle 的希格斯玻色子机器学习大赛中夺魁以来,XGBoost 与深度学习两个算法垄断了 Kaggle 大赛的大部分冠军。现在...
  • 我应该使用哪种机器学习算法

    千次阅读 2018-12-16 14:56:05
    我应该使用哪种机器学习算法? 该资源主要面向初学者到中级数据科学家或分析师,他们有兴趣识别和应用机器学习算法来解决他们感兴趣的问题。 当面对各种各样的机器学习算法时,初学者提出的一个典型问题是“我应该...
  • 在本指南中,我们将通过现代机器学习算法进行实用,简洁的介绍。虽然存在其他这样的列表,但它们并没有真正解释每种算法的实际权衡,我们希望在这里做。我们将根据我们的经验讨论每种算法的优缺点。 对机器学习算法...
  • 强化学习算法的总结

    千次阅读 2020-04-21 20:15:44
    强化学习算法依据马尔科夫的决策过程主要分为两大类,分别是基于模型的强化学习算法(动态规划法等)和无模型的强化学习算法(蒙特卡洛算法等)。这些强化学习算法的核心思想是学习者通过自身的不断学习最终使得整个...
  • 机器学习:常见的机器学习算法归纳

    万次阅读 多人点赞 2021-03-11 09:22:43
    1) .回归算法 2) .基于实例的算法 3) .决策树学习 4) .贝叶斯方法 5) .基于核的算法 6) .聚类算法 7) .降低维度算法 8) .关联规则学习 9) .集成算法 10) .人工神经网络
  • 《算法学习》 一:为什么要学习算法?时间复杂度

    千次阅读 多人点赞 2020-01-05 15:36:20
    为什么要学习算法和结构? 面试必问,面试官一上来,就让你写一个冒泡排序 ,你一脸懵逼,心想啥是冒泡排序,这就尴尬了,只能跟这家公司说good bye了,继续开始你的面试之旅。 作为一个开发人员,你想在这条...
  • 机器学习算法(一)SVM

    万次阅读 多人点赞 2019-06-02 11:31:08
    支持向量机(support vector machines,SVM)是一种二分类模型,它将实例的特征向量映射为空间中的一些点,SVM 的目的就是想要画出一条线,以 “最好地” 区分这两类点,以至如果以后有了新的点,这条线也能做出很好...
  • 各类机器学习算法的优缺点和适用场景汇总

    千次阅读 多人点赞 2019-05-29 17:24:21
    贝叶斯系列算法的优缺点 决策树的优缺点 支持向量机的优缺点 神经网络的优缺点 降维算法的优缺点 聚类算法的优缺点 kNN的优缺点 线性模型的优缺点
  • 常见的十大机器学习算法

    万次阅读 2017-07-01 12:24:23
    机器学习算法的广义分类大概有三种:监督式学习、无监督学习、强化学习。 监督学习由一个目标变量或结果变量(或因变量)组成。这些变量由已知的一系列预示变量(自变量)预测而来。利用这一系列变量,我们生成一个...
  • KNN算法(K近邻算法)是一种很朴实的机器学习方法,既可以做分类,也可以做回归。本文详细讲解KNN算法相关的知识,包括:核心思想、算法步骤、核心要素、缺点与改进等。
  • 机器学习算法之分类

    万次阅读 多人点赞 2018-05-24 19:35:32
    机器学习算法是一类能从数据中自动分析获得规律,并利用规律对未知数据进行预测的算法 [1]。机器学习(Machine Learning)是人工智能(AI)中很重要的一部分,因为在目前的实践过程中,大多数人工智能问题是由机...
  • 聚类是最常见的无监督学习算法。本文讲解聚类问题常见算法及用途,包括划分聚类的K-Means算法、K-Medoids算法,层次聚类的Single-Linkage 算法、Complete-Linkage算法,和DB-SCAN算法。
  • 8种常见机器学习算法比较

    万次阅读 多人点赞 2018-09-13 19:48:11
    机器学习算法太多了,分类、回归、聚类、推荐、图像识别领域等等,要想找到一个合适算法真的不容易,所以在实际应用中,我们一般都是采用启发式学习方式来实验。通常最开始我们都会选择大家普遍认同的算法,诸如SVM...
  • 而要成为一名合格的机器学习算法工程师(以下简称算法工程师)更是难上加难,因为在掌握工程师的通用技能以外,还需要掌握一张不算小的机器学习算法知识网络。下面我们就将成为一名合格的算法工程师所需的技能进行...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,553,812
精华内容 621,524
关键字:

学习算法