1. 监督学习和无监督学习

监督学习 ( Supervised Learning ) 和无监督学习 ( Unsupervised Learning ) 是在机器学习中经常被提及的两个重要的学习方法。

假如有一堆由苹果和梨混在一起组成的水果,需要设计一个机器对这堆水果按苹果和梨分类,但是这个机器现在并不知道苹果和梨是什么样的,所以我们首先要拿一堆苹果和梨的照片,告诉机器苹果和梨分别长什么样;经过多轮训练后,机器已经能够准确地对照片中的水果类别做出判断,并且对苹果和梨的特征形成自己的定义;之后我们让机器对这堆水果进行分类,看到这堆水果被准确地按类别分开。这就是一个监督学习的过程。

如果我们没有拿苹果和梨的照片对机器进行系统训练,机器也不知道苹果和梨长什么样,而是直接让机器对这一堆水果进行分类,则机器能够根据自己的“直觉”将这一堆水果准确地分成两类。这就是一个无监督学习的过程,说明机器自己总结出了苹果和梨的特征,该过程看起来更贴近我们所设想的人工智能技术。

1.1 监督学习

监督学习定义:

提供一组输入数据和其对应的标签数据,然后搭建一个模型,让模型在通过训练后准确地找到输入数据和标签数据之间的最优映射关系,在输入新的数据后,模型能够通过之前学到的最优映射关系,快速地预测出这组新数据的标签。

在实际应用中有两类问题使用监督学习的频次较高,这两类问题分别是回归问题和分类问题:

  • 回归问题 (Regression

回归问题就是使用监督学习的方法,让我们搭建的模型在通过训练后建立起一个连续的线性映射关系,主要有以下两点:

  1. 通过提供数据训练模型,让模型得到映射关系并能对新的输入数据进行预测;
  2. 我们得到的映射模型是线性连续的对应关系;

应用的机器学习方法为线性回归。

  • 分类问题(Classfication

分类问题就是让我们搭建的模型在通过监督学习之后建立起一个离散的映射关系。分类模型和回归问题在本质上有很大的不同,它依然需要使用提供的数据训练模型让模型得到映射关系,并能够对新的输入数据进行预测,不过最终得到的映射模型是一种离散的对应关系。

应用的机器学习方法为逻辑回归。

逻辑回归(Logistic Regression)是机器学习一个最基本也是最常用的算法模型。与线性回归不同的是,逻辑回归主要用于对样本进行分类

因此,逻辑回归的输出是离散值。对于二分类问题,通常我们令正类输出为 1,负类输出为 0。例如一个心脏病预测的问题:根据患者的年龄、血压、体重等信息,来预测患者是否会有心脏病,这就是典型的逻辑回归问题。

1.2 无监督学习

无监督学习定义:

提供一组没有任何标签的输入数据,将其在我们搭建好的模型中进行训练,对整个训练过程不做任何干涉,最后得到一个能够发现数据之间隐藏特征的映射模型,使用这个映射模型能够实现对新数据的分类,这就是一个无监督学习的过程。无监督学习主要依靠模型自己寻找数据中隐藏的规律和特征,人工参与的成分远远少于监督学习的过程。

使用无监督学习实现分类的算法又叫作聚类。这里需要特别注意和有监督学习里的分类的区别:

  • 分类问题是我们已经知道了有哪几种类别;
  • 而聚类问题,是我们在分析数据之前其实是不知道有哪些类别的。

即分类问题是在己知答案里选择一个,而聚类问题的答案是未知的,需要利用算法从数据里挖掘出数据的特点和结构。

1.3 半监督学习

半监督学习( Semi-Supervised Learning,SSL)是模式识别和机器学习领域研究的重点问题,是监督学习与无监督学习相结合的一种学习方法。半监督学习使用大量的未标记数据,以及同时使用标记数据,来进行模式识别工作。当使用半监督学习时,将会要求尽量少的人员来从事工作,同时,又能够带来比较高的准确性,因此,半监督学习目前正越来越受到人们的重视。

在此学习方式下,输入数据部分被标识,部分没有被标识,这种学习模型可以用来进行预测,但是模型首先需要学习数据的内在结构以便合理的组织数据来进行预测。

1.4 强化学习

又称再励学习、评价学习,是一种重要的机器学习方法,在这种学习模式下,输入数据作为对模型的反馈,不像监督模型那样,输入数据仅仅是作为一个检查模型对错的方式,在强化学习下,输入数据直接反馈到模型,模型必须对此立刻作出调整。常见的应用场景包括动态系统以及机器人控制等。常见算法包括 Q-Learning 以及时间差学习(Temporal difference learning)。

2. 欠拟合和过拟合

可以将搭建的模型是否发生欠拟合或者过拟合作为评价模型的拟合程度好坏的指标。

欠拟合和过拟合的模型预测新数据的准确性都不理想,其最显著的区别

  • 拥有欠拟合特性的模型对已有数据的匹配性很差,不过对数据中的噪声不敏感;
  • 而拥有过拟合特性的模型对数据的匹配性太好,所以对数据中的噪声非常敏感。

2.1 欠拟合

在解决欠拟合问题时,主要从以下三方面着手:

  1. 增加特征项:

    在大多数情况下出现欠拟合是因为我们没有准确地把握数据的主要特征,所以我们可以尝试在模型中加入更多的和原数据有重要相关性的特征来训练搭建的模型,这样得到的模型可能会有更好的泛化能力。

  2. 构造复杂的多项式:

    这种方法很容易理解,我们知道一次项函数就是一条直线,二次项函数是一条抛物线,一次项和二次项函数的特性决定了它们的泛化能力是有局限性的,如果数据不在直线或者抛物线附近,那么必然出现欠拟合的情形,所以我们可以通过增加函数中的次项来增强模型的变化能力,从而提升其泛化能力。

  3. 减少正则化参数:

    正则化参数出现的目的其实是防止过拟合情形的出现,但是如果我们的模型已经出现了欠拟合的情形,就可以通过减少正则化参数来消除欠拟合。

2.2 过拟合

解决的过拟合问题,则主要从以下三方面着手:

  1. 增大训练的数据量:

    在大多数情况下发生过拟合是因为我们用于模型训练的数据量太小,搭建的模型过度捕获了数据的有限特征,这时就会出现过拟合,在增加参与模型训练的数据量后,模型自然就能捕获数据的更多特征,模型就不会过于依赖数据的个别特征。

  2. 采用正则化方法:

    正则化一般指在目标函数之后加上范数,用来防止模型过拟合的发生,在实践中最常用到的正则化方法有 L0 正则、L1 正则和 L2 正则。

  3. Dropout方法:

    Dropout 方法在神经网络模型中使用的频率较高,简单来说就是在神经网络模型进行前向传播的过程中,随机选取和丢弃指定层次之间的部分神经连接,因为整个过程是随机的,所以能有效防止过拟合的发生。

3. 后向传播

深度学习中的后向传播主要用于对我们搭建的模型中的参数进行微调,在通过多次后向传播后,就可以得到模型的最优参数组合。

深度神经网络中的参数进行后向传播的过程其实就是一个复合函数求导的过程。

复合函数对各个变量求导的值就作为后向传播的微调值。

4. 损失和优化

深度神经网络中的损失用来度量我们的模型得到的预测值和数据真实值之间的差距,也是一个用来衡量我们训练出来的模型泛化能力好坏的重要指标。

模型预测值和真实值的差距越大,损失值就会越高,这时我们就需要通过不断地对模型中的参数进行优化来减少损失;同理,预测值和真实值的差距越小,则说明我们训练的模型预测越准确,具有更好的泛化能力。

二分类问题的解决过程中计算模型的真实值和预测值之间损失值的方法有很多,而进行损失值计算的函数叫作损失函数;

同样,对模型参数进行优化的函数也有很多,这些函数叫作优化函数。

4.1 损失函数

列举三种在深度学习实践中经常用到的损失函数,分别是均方误差函数、均方根误差函数和平方绝对误差函数。

  1. 均方误差函数

均方误差(Mean Square Error,简称 MSE)函数计算的是预测值与真实值之差的平方的期望值,可用于评价数据的变化程度,其得到的值越小,则说明模型的预测值具有越好的精确度。均方误差函数的计算如下:

M S E=\frac{1}{N} \sum_{i=1}^{N}\left(y_{\mathrm{true}}^{i}-y_{\mathrm{pred}}^{i}\right)^{2}


其中,ypred 表示模型的预测值,ytrue 表示真实值,它们的上标 i 用于指明是哪个真实值和预测值在进行损失计算。

  1. 均方根误差函数

均方根误差(Root Mean Square Error,简称 RMSE)在均方误差函数的基础上进行了改良,计算的是均方误差的算术平方根值,其得到的值越小,则说明模型的预测值具有越好的精确度。均方根误差函数的计算如下:

R M S E=\sqrt{\frac{1}{N} \sum_{i=1}^{N}\left(y_{\text { true }}^{i}-y_{\text { pred }}^{i}\right)^{2}}


3. 平均绝对误差函数

平均绝对误差(Mean Absolute ErrorMAE)计算的是绝对误差的平均值,绝对误差即模型预测值和真实值之间的差的绝对值,能更好地反映预测值误差的实际情况,其得到的值越小,则说明模型的预测值具有越好的精确度。平均绝对误差函数如下:

M A E=\frac{1}{N} \sum_{i=1}^{N}\left|\left(y_{\text { true }}^{i}-y_{\text { pred }}^{i}\right)\right|

4.2 优化函数

在实践操作中最常用到的是一阶优化函数,一阶优化函数在优化过程中求解的是参数的一阶导数,这些一阶导数的值就是模型中参数的微调值

梯度其实就是将多元函数的各个参数求得的偏导数以向量的形式展现出来,也叫作多元函数的梯度

例如,三元函数 f(x,y,z) 的梯度为:

\left(\frac{\partial f}{\partial x}, \frac{\partial f}{\partial y}, \frac{\partial f}{\partial z}\right)

5. 计算图

每次迭代训练,神经网络模型主要分成两个步骤:正向传播( Forward Propagation )和反向传播(Back Propagation )。

正向传播就是计算损失函数过程,反向传播就是计算参数梯度过程

庞大的神经网络,如何有效地进行正向传播和反向传播,如何计算参数梯度?我将通过介绍计算图( Computation graph )的概念,来帮大家轻松理解整个过程。

举个简单的例子,输入参数有三个,分别是 a、b、c,损失函数可表示成 J(a,b,c)=(2a+b)c。令 a = 3,b = 4,c = 5,对应的 J = (2x3+4)x5=50。

5.1 正向传播

正向传播过程,我们将 J 的表达式进行拆分,例如使用 u = 2a,v = u + b,J = vc。拆分后的每个单运算都构成一个 “ 节点 ”,如下图中的矩形方框所示。下面的这张图就是计算图。该计算图中包含了三个节点,分别对应 u = 2a,v = u + b,J = vc。这样,我们就把正向传播过程进行了拆分,每个节点对应一个运算。

5.1 反向传播

反向传播过程,这部分是最重要也是最难的部分。J 如何对参数 a、b、c 求导?方法是利用偏导数的思想,分别依次对各个节点 J、v、uJ、v、u 求导,然后再顺序对各参数求导。整个过程如下图红色箭头所示,与黑色箭头方向(正向传播)正好相反。



以上就是利用计算图对各参数求导的整个过程。

这个例子非常简单,参数很少,损失函数也不复杂。可能我们没有明显看到计算图在正向传播和反向传播的优势。但是,深度学习模型中,网络结构很深,光是参数就可能有数十万、百万的,损失函数也非常复杂。

这时候,利用计算图中的节点技巧,可以大大提高网络的训练速度。值得一提的是现在很多的深度学习框架,例如 PyTorchTensorFlow 都是利用计算图对参数进行求导的。

参考资料:
https://gitbook.cn/gitchat/column/5b447b698b5d4b11e880d287/topic/5b447e688b5d4b11e880d42f

机器学习概念 — 监督学习、无监督学习、半监督学习、强化学习、欠拟合、过拟合、后向传播、损失和优化函数、计算图、正向传播、反向传播相关推荐

  1. 《强化学习周刊》第25期:DeepMind提出无模型风险敏感强化学习、谷歌发布 RLDS数据集生态系统...

    No.25 智源社区 强化学习组 强 化 学  习 研究 观点 资源 活动 关于周刊 强化学习作为人工智能领域研究热点之一,其研究进展与成果也引发了众多关注.为帮助研究与工程人员了解该领域的相关进展和 ...

  2. 西瓜书+实战+吴恩达机器学习(十六)半监督学习(半监督SVM、半监督k-means、协同训练算法)

    文章目录 0. 前言 1. 半监督SVM 2. 半监督k-means 2.1. 约束k-means 2.2. 约束种子k-means 3. 协同训练算法 如果这篇文章对你有一点小小的帮助,请给个关注, ...

  3. 监督学习和无监督学习_让半监督学习再次伟大!谷歌最新无监督数据增强研究,全面超越现有半监督学习方法...

      新智元报道   来源:GoogleAI 编辑:元子 [新智元导读]Google AI最新研究用无监督数据增强推进半监督学习,取得令人瞩目的成果.该方法超越了所有现有的半监督学习方法,并实现了仅使用 ...

  4. 《百面机器学习》读书笔记(十一)-强化学习

    全部笔记的汇总贴:<百面机器学习>-读书笔记汇总 强化学习近年来在机器学习领域越来越火,也受到了越来越多人的关注.强化学习是一个20世纪80年代兴起的,受行为心理学启发而来的一个机器学习领 ...

  5. 《Scikit-Learn与TensorFlow机器学习实用指南》第16章 强化学习

    第16章 强化学习 来源:ApacheCN<Sklearn 与 TensorFlow 机器学习实用指南>翻译项目 译者:@friedhelm739 校对:@飞龙 强化学习(RL)如今是机器 ...

  6. 基本概念篇(一),强化学习基本要素

    其实本来不想写这篇的,相信愿意往下看的童鞋,对强化学习本身应该有一定了解.但其实你看的多了就会发现,现有很多文章在细节方面还是有不少差异的.因此,这篇文章也是为了统一本博客的话语体系,为后面内容打基础 ...

  7. 人工智能-强化学习(2)

    一.简介 在本章中,我们将学习将深度神经网络与强化学习相结合的效果.如果你关注AI新闻,那么你可能会听说一些没有任何特定编程就AI无法完成的工作: 1)了解如何从原始图像像素播放atari 2)了解如 ...

  8. 机器学习_监督学习、非监督学习、半监督学习以及强化学习概念介绍

    机器学习中通常根据数据是否有标签可以分为监督学习(supervised learning).非监督学习(unsupervised learning) 和半监督学习(semi-supervised le ...

  9. 监督学习、无监督学习、半监督学习和强化学习

    https://www.toutiao.com/a6673066493946626574/ AI 想必大家都知道,在机器学习训练一个模型的过程中需要大量的数据进行喂养.根据训练的模型不同,一般有如下的 ...

  10. AI之强化学习、无监督学习、半监督学习和对抗学习

    1.强化学习 文章目录 1.强化学习 1.1 强化学习原理 1.2 强化学习与监督学习 2.无监督学习 3.半监督学习 4.对抗学习 强化学习(英语:Reinforcement Learning,简称 ...

最新文章

  1. MIna框架I/O Service层设计
  2. c语言编译器bug,关于c语言的一个小bug详解
  3. Java基本语法——(用于日后复习)
  4. Keil MDK-ARM下载 安装与和谐教程
  5. UVA - 10118 Free Candies 记忆化搜索经典
  6. linux gnome 桌面,GNOME Linux桌面
  7. sun jdk 与jdk_Sun过去的世界中的JDK 11和代理
  8. 每日算法系列【LeetCode 556】下一个更大元素 III
  9. matlab2016限制内存,matlab
  10. css选择器总结(内附实例及截图)
  11. php 省份的缩写,34个省级行政区记忆口诀、省份简称和省会城市表
  12. 运算符之前加加后加加的运算规则
  13. Android VLC 加载ass字幕乱码问题
  14. 【C语言】if、if else、else、switch的用法
  15. 微信小程序项目图片如何保存到本地的方法
  16. 一起学习R语言吧——R语言+RStudio
  17. 终于弄懂 CRC 循环冗余校验 辽
  18. ElementUI-table切页保存已勾选和被取消勾选(附默认选中)
  19. Python发送邮件(demo)
  20. asar文件用什么打开_AppData可以删除吗?AppData文件夹是什么用的?

热门文章

  1. 2022-2028年中国抗菌不锈钢行业研究及前瞻分析报告
  2. Sentinel 高可用流量管理框架
  3. Go 知识点(02)— channel 使用不当导致的 deadlock
  4. Python 标准库之 datetime
  5. 深度学习学习指南-工具篇
  6. Dokcer启动2个mysql容器
  7. WSL 或者ubantu安装 apt-get install npm 失败解决方法
  8. LeetCode简单题之拆炸弹
  9. LeetCode中等题之无重复字符的最长字串
  10. TVM性能评估分析(四)