【统计学习方法系列】- 01.统计学习方法概述

文章目录

  • 统计学习方法
  • 监督学习、非监督学习、半监督学习和强化学习区别
  • 分类与回归之间的区别是什么?

统计学习方法

三要素:模型、策略和算法
模型选择:正则化、交叉验证和泛化能力
监督学习方法:分类问题、标注问题和回归问题

  • 分类问题:
    ** 监督学习从数据中学习一个分类模型或分类决策函数,称为分类器
    ** 分类器对新的输入的进行输出的预测,称为分类
    ** 二分类问题的评价指标:精确率、召回率和F1值
      ** TP:正类–>预测为–>正类
      ** FN:正类–>预测为–>负类
      ** FP:负类–>预测为–>正类
      ** TN:负类–>预测为–>负类
  • 分类算法:
    K近邻、感知机、朴素贝叶斯、决策树、决策列表、逻辑回归、支持向量机、提升方法、贝叶斯网络、神经网络
  • 回归问题:
    ** 表示从输入变量到输出变量之间映射的函数,等价于函数拟合
    ** 回归问题按照输入变量的个数可以分为一元回归和多元回归;
    ** 回归问题按照输入变量和输出变量之间的关系分为线性回归和非线性回归;
    ** 最常用的损失函数是平方损失函数,使用最小二乘法求解

监督学习、非监督学习、半监督学习和强化学习区别

监督学习:Supervised Learning的数据是有特征(feature)和标签(label)的。机器可以寻找到标签和特征之间的联系,当面对只有特征而没有标签的数据时,可以判断出标签。

非监督学习:Unsupervised Learning的数据只有特征(feature),没有标签(label)。

半监督学习:Semi-Supervised Learning中使用的数据,有一部分是标记过的,而大部分是没有标记的。因此和监督学习相比,半监督学习的成本较低,但是又能达到较高的准确度。

强化学习:强化学习也是使用未标记的数据,但是可以通过某种方法知道你是离正确答案越来越近还是越来越远(即奖惩函数)。可以把奖惩函数想象成正确答案的一个延迟的、稀疏的形式。在监督学习中,能直接得到每个输入的对应的输出。强化学习中,训练一段时间后,你才能得到一个延迟的反馈,并且只有一点提示说明你是离答案越来越远还是越来越近。

什么是强化学习?基于环境而行动,以取得最大化预期利益

监督学习(Supervised Learning)
监督学习是使用已知正确答案的示例来训练网络的。想象一下,我们可以训练一个网络,让其从照片库中(其中包含你父母的照片)识别出你父母的照片。以下就是我们在这个假设场景中所要采取的步骤。

步骤1:数据集的创建和分类
首先,我们要浏览你的照片(数据集),确定所有有你父母的照片,并对其进行标注,从而开始此过程。然后我们将把整堆照片分成两堆。我们将使用第一堆来训练网络(训练数据),而通过第二堆来查看模型在选择我们父母照片操作上的准确程度(验证数据)。

等到数据集准备就绪后,我们就会将照片提供给模型。在数学上,我们的目标就是在深度网络中找到一个函数,这个函数的输入是一张照片,而当你的父母不在照片中时,其输出为0,否则输出为1。

此步骤通常称为分类任务。在这种情况下,我们进行的通常是一个结果为yes or no的训练,但事实是,监督学习也可以用于输出一组值,而不仅仅是0或1。例如,我们可以训练一个网络,用它来输出一个人偿还信用卡贷款的概率,那么在这种情况下,输出值就是0到100之间的任意值。这些任务我们称之为回归。

步骤2:训练
为了继续该过程,模型可通过以下规则(激活函数)对每张照片进行预测,从而决定是否点亮工作中的特定节点。这个模型每次从左到右在一个层上操作——现在我们将更复杂的网络忽略掉。当网络为网络中的每个节点计算好这一点后,我们将到达亮起(或未亮起)的最右边的节点(输出节点)。

既然我们已经知道有你父母的照片是哪些图片,那么我们就可以告诉模型它的预测是对还是错。然后我们会将这些信息反馈(feed back)给网络。

该算法使用的这种反馈,就是一个量化“真实答案与模型预测有多少偏差”的函数的结果。这个函数被称为成本函数(cost function),也称为目标函数(objective function),效用函数(utility function)或适应度函数(fitness function)。然后,该函数的结果用于修改一个称为反向传播(backpropagation)过程中节点之间的连接强度和偏差,因为信息从结果节点“向后”传播。

我们会为每个图片都重复一遍此操作,而在每种情况下,算法都在尽量最小化成本函数。

其实,我们有多种数学技术可以用来验证这个模型是正确还是错误的,但我们常用的是一个非常常见的方法,我们称之为梯度下降(gradient descent)。Algobeans上有一个 “门外汉”理论可以很好地解释它是如何工作的。迈克尔•尼尔森(Michael Nielsen)用数学知识完善了这个方法,其中包括微积分和线性代数。
http://neuralnetworksanddeeplearning.com/chap2.html

步骤3:验证
一旦我们处理了第一个堆栈中的所有照片,我们就应该准备去测试该模型。我们应充分利用好第二堆照片,并使用它们来验证训练有素的模型是否可以准确地挑选出含有你父母在内的照片。

我们通常会通过调整和模型相关的各种事物(超参数)来重复步骤2和3,诸如里面有多少个节点,有多少层,哪些数学函数用于决定节点是否亮起,如何在反向传播阶段积极有效地训练权值,等等。而你可以通过浏览Quora上的相关介绍来理解这一点,它会给你一个很好的解释。

步骤4:使用
最后,一旦你有了一个准确的模型,你就可以将该模型部署到你的应用程序中。你可以将模型定义为API调用,例如ParentsInPicture(photo),并且你可以从软件中调用该方法,从而导致模型进行推理并给出相应的结果。

稍后我们将详细介绍一下这个确切的过程,编写一个识别名片的iPhone应用程序。

得到一个标注好的数据集可能会很难(也就是很昂贵),所以你需要确保预测的价值能够证明获得标记数据的成本是值得的,并且我们首先要对模型进行训练。例如,获得可能患有癌症的人的标签X射线是非常昂贵的,但是获得产生少量假阳性和少量假阴性的准确模型的值,这种可能性显然是非常高的。

无监督学习(Unsupervised Learning)

无监督学习适用于你具有数据集但无标签的情况。无监督学习采用输入集,并尝试查找数据中的模式。比如,将其组织成群(聚类)或查找异常值(异常检测)。例如:

•想像一下,如果你是一个T恤制造商,拥有一堆人的身体测量值。那么你可能就会想要有一个聚类算法,以便将这些测量组合成一组集群,从而决定你生产的XS,S,M,L和XL号衬衫该有多大。

你将在文献中阅读到的一些无监督的学习技术包括:

•自编码(Autoencoding)
http://ufldl.stanford.edu/tutorial/unsupervised/Autoencoders/

•主成分分析(Principal components analysis)
https://www.quora.com/What-is-an-intuitive-explanation-for-PCA

•随机森林(Random forests)
https://en.wikipedia.org/wiki/Random_forest

•K均值聚类(K-means clustering)
https://www.youtube.com/watch?v=RD0nNK51Fp8

无监督学习中最有前景的最新发展之一是Ian Goodfellow(当时在Yoshua Bengio的实验室工作时提出)的一个想法,称为“生成对抗网络(generative adversarial networks)”,其中我们将两个神经网络相互联系:一个网络,我们称之为生成器,负责生成旨在尝试欺骗另一个网络的数据,而这个网络,我们称为鉴别器。这种方法实现了一些令人惊奇的结果,例如可以从文本字符串或手绘草图生成如照片版逼真图片的AI技术。

半监督学习(Semi-supervised Learning)

半监督学习在训练阶段结合了大量未标记的数据和少量标签数据。与使用所有标签数据的模型相比,使用训练集的训练模型在训练时可以更为准确,而且训练成本更低。

为什么使用未标记数据有时可以帮助模型更准确,关于这一点的体会就是:即使你不知道答案,但你也可以通过学习来知晓,有关可能的值是多少以及特定值出现的频率。

数学爱好者的福利:如果你对半监督学习很感兴趣的话,可以来阅读这个朱小津教授的幻灯片教程和2008年回顾的文献随笔文章。(我们会把这两个共享在平台的共享文件专栏)

强化学习(Reinforcement Learning)

强化学习是针对你再次没有标注数据集的情况而言的,但你还是有办法来区分是否越来越接近目标(回报函数(reward function))。经典的儿童游戏——“hotter or colder”。(Huckle Buckle Beanstalk的一个变体)是这个概念的一个很好的例证。你的任务是找到一个隐藏的目标物件,然后你的朋友会喊出你是否越来越hotter(更接近)或colder(远离)目标物件。“Hotter/colder”就是回报函数,而算法的目标就是最大化回报函数。你可以把回报函数当做是一种延迟和稀疏的标签数据形式:而不是在每个数据点中获得特定的“right/wrong”答案,你会得到一个延迟的反应,而它只会提示你是否在朝着目标方向前进。

•DeepMind在Nature上发表了一篇文章,描述了一个将强化学习与深度学习结合起来的系统,该系统学会该如何去玩一套Atari视频游戏,一些取得了巨大成功(如Breakout),而另一些就没那么幸运了(如Montezuma’s Revenge(蒙特祖玛的复仇))。

•Nervana团队(现在在英特尔)发表了一个很好的解惑性博客文章,对这些技术进行了详细介绍,大家有兴趣可以阅读一番。
https://www.nervanasys.com/demystifying-deep-reinforcement-learning/

•Russell Kaplan,Christopher Sauer和Alexander Sosa举办的一个非常有创意的斯坦福学生项目说明了强化学习的挑战之一,并提出了一个聪明的解决方案。正如你在DeepMind论文中看到的那样,算法未能学习如何去玩Montezuma’s Revenge。其原因是什么呢?正如斯坦福大学生所描述的那样,“在稀缺回报函数的环境中,强化学习agent仍然在努力学习”。当你没有得到足够的“hotter”或者“colder”的提示时,你是很难找到隐藏的“钥匙”的。斯坦福大学的学生基础性地教导系统去了解和回应自然语言提示,例如“climb down the ladder”或“get the key”,从而使该系统成为OpenAI gym中的最高评分算法。可以点击算法视频观看算法演示。
算法演示源地址:https://drive.google.com/file/d/0B2ZTvWzKa5PHSkJvQVlsb0FLYzQ/view

算法演示下载地址:ourbestModel_highscore3500

•观看这个关于强化学习的算法,好好学习,然后像一个大boss一样去玩超级马里奥吧。

理查德•萨顿和安德鲁•巴托写了关于强化学习的书

••强化学习课程
David Silver 《Reinforcement Learning》UCL Course on RL:
http://www0.cs.ucl.ac.uk/staff/D.Silver/web/Teaching.html

Michael Littman:
https://www.udacity.com/course/reinforcement-learning–ud600


分类与回归之间的区别是什么?

  • 回归与分类的根本区别在于输出空间是否为一个度量空间
  • 回归问题与分类问题本质上都是要建立映射关系:
    ** f(x)→y, x∈A,y∈B
  • 而两者的区别则在于:
    ** 对于回归问题,其输出空间B是一个度量空间,即所谓“定量”。也就是说,回归问题的输出空间定义了一个度量,去衡量输出值与真实值之间的“误差大小”。例如:预测一瓶700毫升的可乐的价格(真实价格为5元)为6元时,误差为1;预测其为7元时,误差为2。这两个预测结果是不一样的,是有度量定义来衡量这种“不一样”的。(于是有了均方误差这类误差函数)。
    ** 对于分类问题,其输出空间B不是度量空间,即所谓“定性”。也就是说,在分类问题中,只有分类“正确”与“错误”之分,至于错误时是将Class 5分到Class 6,还是Class 7,并没有区别,都是在error counter上+1。
  • 在实际操作中,我们确实常常将回归问题和分类问题互相转化(分类问题回归化:逻辑回归;回归问题分类化:年龄预测问题——>年龄段分类问题),但这都是为了处理实际问题时的方便之举,背后损失的是数学上的严谨性。
  • 线性回归
    ** 线性回归是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析;这种函数是一个或多个称为回归系数的模型参数的线性组合;只有一个自变量的情况称为简单回归,大于一个自变量的情况称为多元回归。
  • 逻辑回归
    ** 逻辑回归是一个非线性模型,sigmoid函数,又称逻辑回归函数,但是本质上又是一个线性回归模型;去除sigmoid映射函数关系,算法就是一个线性回归的,可以说,逻辑回归都是以线性回归为理论支持的。
    ** 逻辑回归其实是在线性回归的基础上,套用了一个逻辑函数
  • sigmoid函数
    在这里插入图片描述
    该函数具有如下的特性:当x趋近于负无穷时,y趋近于0;当x趋近于正无穷时,y趋近于1;当x= 0时,y=0.5.
    【统计学习方法系列】- 01.统计学习方法概述_第1张图片
    优点:
    1.Sigmoid函数的输出映射在(0,1)之间,单调连续,输出范围有限,优化稳定,可以用作输出层。
    2.求导容易。
    缺点:
    1.由于其软饱和性,容易产生梯度消失,导致训练出现问题。
    2.其输出并不是以0为中心的。
  • softmax函数
    本质上就是一个将K维的任意实数向量映射成另一个K维的实数向量,其中向量中的每个元素取值都介于(0,1)之间
    在这里插入图片描述
    softmax函数经常用在神经网络的最后一层,作为输出层,进行多分类。此外,softmax在增强学习领域内,softmax经常被用作将某个值转化为激活概率,这类情况下,softmax的公式如下:
    【统计学习方法系列】- 01.统计学习方法概述_第2张图片
  • logistic和softmax的关系
    logistic具体针对的是二分类问题,而softmax解决的是多分类问题,因此从这个角度也可以理解logistic函数是softmax函数的一个特例。

资料来源:
李航《统计学习方法》
监督学习、无监督学习、半监督学习和强化学习
Hackernoon community
Andreessen Horowitz’s AI Playbook
分类与回归区别是什么?
logistic函数和softmax函数
最小二乘的本质是什么?
半小时学习最小二乘法

在这里插入图片描述
欢迎关注微信公众号:数据分析科学
墨竹专栏,为CSDN博客而生,您有相关问题,欢迎进行探讨!

你可能感兴趣的:(统计学习方法)