【深度学习基础(2)】深度学习之前:机器学习简史

文章目录

  • 一. 深度学习的起源
    • 1. 概率建模--机器学习分类器
    • 2. 早期神经网络--反向传播算法的转折
    • 3. 核方法 -- 忽略神经网络
    • 4. 决策树、随机森林和梯度提升机
    • 5. 神经网络替代svm与决策树
  • 二. 深度学习与机器学习有何不同

可以这样说,当前工业界所使用的大部分机器学习算法不是深度学习算法。深度学习不一定总是解决问题的正确工具:有时没有足够的数据,深度学习不适用;有时用其他算法可以更好地解决问题。

如果第一次接触的机器学习就是深度学习,那么你可能会发现手中只有一把深度学习“锤子”,而所有机器学习问题看起来都像是“钉子”。为了避免陷入这个误区,唯一的方法就是熟悉其他机器学习方法并在适当的时候进行实践。

这里我们将简要回顾这些方法,并了解这些方法发展的历史背景。这样一来,我们便可以将深度学习放入机器学习的大背景中,更好地理解深度学习的起源和重要性。

 

一. 深度学习的起源

1. 概率建模–机器学习分类器

概率建模(probabilistic modeling)是统计学原理在数据分析中的应用。它是最早的机器学习形式之一,至今仍在广泛使用。在概率建模中,最著名的算法之一就是朴素贝叶斯算法。

朴素贝叶斯是一类机器学习分类器,基于对贝叶斯定理的应用。它假设输入数据的特征都是独立的(这是一个很强的假设,或者说是“朴素”的假设,其名称正来源于此)。贝叶斯定理和统计学基础可以追溯到18世纪,只要学会这两点,就可以开始使用朴素贝叶斯分类器了。

另一个密切相关的模型是logistic回归(logistic regression,简称logreg),它有时被认为是现代机器学习的“Hello World”。不要被它的名称所误导——logreg是一种分类算法,而不是回归算法。与朴素贝叶斯类似,logreg的出现也比计算机早很长时间,但由于它既简单又通用,因此至今仍然很有用。面对一项分类任务,数据科学家通常首先会在数据集上尝试使用这种算法,以便初步熟悉该分类任务。

 

2. 早期神经网络–反向传播算法的转折

虽然人们早在20世纪50年代就开始研究神经网络及其核心思想,但这一方法在数十年后才被人们所使用。在很长一段时间里,一直没有训练大型神经网络的有效方法。这种情况在20世纪80年代中期发生了变化,当时有多人独立地重新发现了反向传播算法——一种利用梯度下降优化来训练一系列参数化运算链的方法,并开始将其应用于神经网络。

神经网络的第一个成功的实际应用来自于1989年的贝尔实验室,当时YannLeCun将卷积神经网络的早期思想与反向传播算法相结合,并将其应用于手写数字分类问题。由此得名的LeNet,在20世纪90年代被美国邮政署采用,用于自动读取信封上的邮政编码。

 

3. 核方法 – 忽略神经网络

神经网络取得了第一次成功,并从20世纪90年代开始在研究人员中受到一定重视,但一种新的机器学习方法在这时声名鹊起,很快就使人们将神经网络抛诸脑后。这种方法就是核方法。核方法(kernel method)是一组分类算法,其中最有名的就是支持向量机(support vector machine,SVM)。

SVM是一种分类算法,其原理是寻找划分两个类别的“决策边界”,如下图所示。

SVM通过以下两步来寻找决策边界。

  • (1)将数据映射到新的高维表示,此时决策边界可以用一个超平面来表示(如果数据像图那样是二维的,那么超平面就是一条直线)。
  • (2)尽量让超平面与每个类别最近的数据点之间的距离最大化,从而计算出良好的决策边界(分离超平面)。这一步叫作间隔最大化(maximizing themargin)。这样一来,决策边界便可以很好地推广到训练数据集之外的新样本。
    在这里插入图片描述

将数据映射到高维表示从而使分类问题简化,这一方法可能听起来很不错,但实际上计算起来很棘手。这时就需要用到核技巧(kernel trick,核方法正是因这一核心思想而得名)。

核技巧的基本思想是:要在新的表示空间中找到良好的决策超平面,不需要直接计算点在新空间中的坐标,只需要计算在新空间中点与点之间的距离,而利用核函数可以高效地完成这种计算。核函数(kernel function)是一个在计算上容易实现的运算,它将初始空间中的任意两点映射为这两点在目标表示空间中的距离,从而完全避免了直接计算新的表示。

SVM刚刚出现时,在简单的分类问题上表现出非常好的性能。当时只有少数机器学习方法得到大量的理论支持,并且经得起严谨的数学分析,因此非常易于理解和解释,SVM就是其中之一。由于SVM具有这些有用的性质,因此它在很长一段时间里非常流行。

但事实证明,SVM很难扩展到大型数据集,并且在图像分类等感知问题上的效果也不好。SVM是一种浅层方法,因此要将其应用于感知问题,首先需要手动提取出有用的表示(这一步骤叫作特征工程)。这一步骤很难,而且不稳定。如果想用SVM来进行手写数字分类,那么你不能从原始像素开始,而应该首先手动找到有用的表示(比如前面提到的像素直方图),使问题变得更易于处理。

 

4. 决策树、随机森林和梯度提升机

决策树(decision tree)是类似于流程图的结构,可以对输入数据进行分类或根据输入预测输出值,如下图所示。决策树的可视化和解释都很简单。

在21世纪前10年,从数据中进行学习的决策树开始引起研究人员的浓厚兴趣。到了2010年,决策树往往比核方法更受欢迎

在这里插入图片描述

  • 决策树:需要学习的参数是关于数据的问题。举个例子,问题可能是:“数据中第2个系数是否大于3.5?”

  • 随机森林(random forest)算法引入了一种稳健且实用的决策树学习方法,即首先构建许多专门的决策树,然后将它们的输出集成在一起。

  • 与随机森林类似,梯度提升机也是将弱预测模型(通常是决策树)进行集成的机器学习技术。它使用了梯度提升(gradient boosting)方法,这种方法通过迭代地训练新模型来专门弥补原有模型的弱点,从而可以提升任何机器学习模型的效果。将梯度提升技术应用于决策树时,得到的模型与随机森林具有相似的性质,但在绝大多数情况下效果更好。它可能是目前处理非感知数据最好的算法之一(如果非要加“之一”的话)。

 

5. 神经网络替代svm与决策树

自2012年以来,深度卷积神经网络(convnet)已成为所有计算机视觉任务的首选算法。更一般地说,它适用于所有感知任务。在2015年之后的主要计算机视觉会议上,绝大多数演讲或多或少与convnet有关。与此同时,深度学习也在许多其他类型的问题上得到应用,比如自然语言处理。它已经在大量应用中完全取代了SVM与决策树。

举个例子,欧洲核子研究中心(CERN)多年来一直使用基于决策树的方法来分析来自大型强子对撞机(LHC)ATLAS探测器的粒子数据,但CERN最终转向基于Keras的深度神经网络,因为后者的性能更好,而且在大型数据集上易于训练。

 

二. 深度学习与机器学习有何不同

主要不同

  • 深度学习让解决问题变得更加简单,因为它将特征工程完全自动化,而这曾经是机器学习工作流程中最关键的一步。
  • 先前的机器学习技术(浅层学习)仅涉及将输入数据变换到一两个连续的表示空间,通常使用简单的变换,比如高维非线性投影(SVM)或决策树。但这些技术通常无法得到复杂问题所需要的精确表示。因此,人们不得不竭尽所能让初始输入数据更适合于用这些方法处理,不得不手动为数据设计良好的表示层。这一步叫作特征工程(feature engineering)。
  • 与此相对,深度学习将这一步完全自动化:利用深度学习,可以一次性学习所有特征,而无须自己手动设计。这极大地简化了机器学习工作流程,通常用一个简单、端到端的深度学习模型取代复杂的多级流程。

<连续应用浅层学习方法的问题>

  • 你可能会问,如果问题的关键在于有多个连续表示层,那么能否重复应用浅层方法,以实现与深度学习类似的效果呢?在实践中,如果连续应用浅层学习方法,那么其收益会随着层数增加而迅速降低,因为三层模型中最优的第一表示层并不是单层模型或双层模型中最优的第一表示层。
  • 深度学习的变革之处在于,模型可以在同一时间共同学习所有表示层,而不是依次连续学习(这被称为贪婪学习)。通过共同的特征学习,每当模型修改某个内部特征时,所有依赖于该特征的其他特征都会相应地自动调节适应,无须人为干预。一切都由单一反馈信号来监督:模型中的每一处变化都是为最终目标服务。这种方法比贪婪地叠加浅层模型更强大,因为它可以通过将复杂、抽象的表示拆解为多个中间空间(层)来学习这些表示,每个中间空间仅仅是前一个空间的简单变换。

深度学习从数据中进行学习时有两个基本特征:

  1. 通过逐层渐进的方式形成越来越复杂的表示;
  2. 对中间这些渐进的表示共同进行学习,每一层的修改都需要同时考虑上下两层。

这两个特征叠加在一起,使得深度学习比先前的机器学习方法更成功。

 

参考:
《Python深度学习(第二版)》–弗朗索瓦·肖莱

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/318290.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【树 图论 阶乘 组合 深度优先搜索】1916. 统计为蚁群构筑房间的不同顺序

本文设计知识点 树 图论 阶乘 组合 深度优先搜索 图论知识汇总 LeetCoce1916. 统计为蚁群构筑房间的不同顺序 你是一只蚂蚁&#xff0c;负责为蚁群构筑 n 间编号从 0 到 n-1 的新房间。给你一个 下标从 0 开始 且长度为 n 的整数数组 prevRoom 作为扩建计划。其中&#xff0…

区块链 | IPFS:CID

&#x1f98a;原文&#xff1a;Anatomy of a CID &#x1f98a;写在前面&#xff1a;本文属于搬运博客&#xff0c;自己留存学习。 1 CID 在分布式网络中与其他节点交换数据时&#xff0c;我们依赖于内容寻址&#xff08;而不是中心化网络的位置寻址&#xff09;来安全地定位…

第8章 软件工程

一、软件工程概述 &#xff08;一&#xff09;软件危机 1、含义&#xff1a;落后的软件生产方式无法满足迅速增长的计算机软件需求&#xff0c;从而导致软件开发与维护过程中出现一系列严重问题的现象。 2、解决方案&#xff1a;引入软件工程的思想。 &#xff08;二&#x…

【MySQL | 第十篇】重新认识MySQL索引匹配过程

文章目录 10.重新认识MySQL索引匹配过程10.1匹配规则10.2举例&#xff1a;联合索引遇到范围查询&#xff08;>、<、between、like&#xff09;10.2.1例子一&#xff1a;>10.2.2例子二&#xff1a;>10.2.3例子三&#xff1a;between10.2.4例子四&#xff1a;like 10…

一对一WebRTC视频通话系列(一)—— 创建页面并显示摄像头画面

本系列博客主要记录WebRtc实现过程中的一些重点&#xff0c;代码全部进行了注释&#xff0c;便于理解WebRTC整体实现。 一、创建html页面 简单添加input、button、video控件的布局。 <html><head><title>WebRTC demo</title></head><h1>…

机器学习之基于Tensorflow(LSTM)进行多变量时间序列预测股价

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 项目简介&#xff1a;机器学习之基于TensorFlow&#xff08;LSTM&#xff09;进行多变量时间序列预测股价 一、项目…

HTML5本地存储账号密码

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>HTML5本地存储账号密码</title> </head…

ROS快速实现helloworld

ROS中涉及的编程语言以C和Python为主&#xff0c;ROS中的大多数程序两者都可以实现&#xff0c;在本系列教程中&#xff0c;每一个案例也都会分别使用C和Python两种方案演示&#xff0c;大家可以根据自身情况选择合适的实现方案。 ROS中的程序即便使用不同的编程语言&#xff…

leetcode51.N皇后(困难)-回溯法

思路 都知道n皇后问题是回溯算法解决的经典问题&#xff0c;但是用回溯解决多了组合、切割、子集、排列问题之后&#xff0c;遇到这种二维矩阵还会有点不知所措。 首先来看一下皇后们的约束条件&#xff1a; 不能同行不能同列不能同斜线 确定完约束条件&#xff0c;来看看究…

Uniapp好看登录注册页面

个人介绍 hello hello~ &#xff0c;这里是 code袁~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f981;作者简介&#xff1a;一名喜欢分享和记录学习的…

Kafka(十二)Streams

目录 Streams1 什么式是流式处理2 流式处理的相关概念2.1 拓扑2.2 时间2.2.1 输入时间2.2.2 输出时间 2.3 状态2.4 流和表2.5 时间窗口2.5.1 测试时间窗口 2.6 处理保证 3 流式处理设计模式3.1 单事件处理3.2 使用本地状态3.3 多阶段处理和重分区3.4 使用外部查找&#xff1a;流…

日本宇宙航空研究“Int-Ball2”自由飞行相机机器人采用的Epson IMU

IMU有助于飞行的稳定控制和电池充电的自动对接- 精工爱普生公司&#xff08;TSE:6724&#xff0c;“Epson”&#xff09;很高兴地宣布&#xff0c;日本宇宙航空研究开发机构&#xff08;JAXA&#xff09;选择了爱普生M-G370系列的惯性测量单元&#xff08;IMU&#xff09;&…

附录6-4 黑马优购项目-分类和购物车

目录 1 分类 1.1 接口 1.2 窗口限制 1.3 选中状态样式判断 1.4 点击左侧时右侧会到顶点 1.5 源码 2 购物车 2.1 store 2.2 tabBar徽标 2.3 滑动删除 2.4 结算 2.4.1 结算前登录 2.4.2 结算功能 2.5 触发组件事件 2.6 源码 1 分类 分类最上部是…

JAVA面试专题-微服务篇

Spring cloud Spring Cloud 5大组件有哪些 注册中心/配置中心&#xff1a;nacos 负载均衡&#xff1a;Ribbon 服务远程调用&#xff1a;Feign 服务保护&#xff1a;sentinel 服务网关&#xff1a;Gateway 微服务注册和发现 nacos和eureka的区别 负载均衡 微服务向Ribbon发送…

unity制作app(3)--gps定位

1.unity中定位Unity之GPS定位&#xff08;高德解析&#xff09;_unity gps定位-CSDN博客 代码需要稍微修改一下&#xff0c;先把脚本绑到一个button上试一试&#xff01; 2.先去高德地图认证&#xff08;app定位&#xff09; 创建应用和 Key-Web服务 API | 高德地图API (ama…

Golang | Leetcode Golang题解之第64题最小路径和

题目&#xff1a; 题解&#xff1a; func minPathSum(grid [][]int) int {if len(grid) 0 || len(grid[0]) 0 {return 0}rows, columns : len(grid), len(grid[0])dp : make([][]int, rows)for i : 0; i < len(dp); i {dp[i] make([]int, columns)}dp[0][0] grid[0][0]…

场景文本检测识别学习 day06(Vi-Transformer论文精读、MAE论文阅读)

Vi-Transformer论文精读 在NLP领域&#xff0c;基于注意力的Transformer模型使用的非常广泛&#xff0c;但是在计算机视觉领域&#xff0c;注意力更多是和CNN一起使用&#xff0c;或者是单纯将CNN的卷积替换成注意力&#xff0c;但是整体的CNN 架构没有发生改变VIT说明&#x…

【知识学习/复习】损失函数篇,包含理解应用与分类:回归、分类、排序、生成等任务

损失函数总结 一、损失函数理解二、不同任务的损失函数的应用1.图像分类2.目标检测3.语义分割4.自然语言处理&#xff08;NLP&#xff09;5.图神经网络&#xff08;GNN&#xff09;6.生成式网络 三、损失函数1. 回归任务损失函数常见损失函数IoU系列损失函数1. IoU损失函数&…

计算机网络chapter2——应用层

文章目录 第2章 应用层章节引出—— 2.1应用层协议原理2.1.1 网络应用程序体系结构&#xff08;1&#xff09;客户-服务器体系结构&#xff08;2&#xff09;对等(P2P)体系结构2.1.2 进程通信1.客户和服务器进程2.进程与计算机网络之间的接口3. 进程寻址 2.1.3 可供应用程序使用…

【Cpp】类和对象

标题&#xff1a;【Cpp】类和对象 水墨不写bug 正文开始&#xff1a; &#xff08;一&#xff09;面向过程与面向对象 面向过程和面向对象是两种不同的编程思想。 面向过程指的是将程序分解成多个步骤&#xff0c;每个步骤都是一个独立的函数&#xff0c;通过函数之间的调用实…