机器学习与深度学习

article/2025/8/25 1:15:36

一、机器学习

机器学习的定义:

“A computer program is said to learn from experience E with respect to some class of tasksT and performance measureP if its performance at tasks inT, as measured by P, improves with experience E ”

翻译过来就是:“一个电脑程序要完成任务(T),如果电脑获取的关于T的经验(E)越多就表现(P)得越好,那么我们就可以说这个程序“学习”了关于T的经验。”

简单来说,就是解释什么叫“机器的学习”,输入的经验越多表现的越好,这就叫“学习”。

这里有几个例子:

1.根据身高预测体重:

在这里插入图片描述

给你一堆点,你做出一条直线尽可能去拟合样本点,那这个直线就是你“学习”出来的,然后就可以用这个直线去预测未知点了。

2.风暴预测系统:

在这里插入图片描述

我们首先浏览所有的历史风暴数据,从这些大量的数据中学习出某些“模式”,这些“模式”包含了具体的哪些条件可以导致风暴。

比如我们也许可以通过学习历史数据发现:温度超过40度,湿度在80-100之间,就容易发生风暴。种种类似的模式。

这里注意了!“温度”、“湿度”等等指标,就是机器学习中的“特征”,而这些特征都是人工设置好的!就是说,我们在做这样一个预测系统的时候,首先由专家通过分析哪些“特征”是重要的,然后机器就通过分析历史数据中的这些特征的数据,来找到相应的模式,也就是怎样的特征的组合会导致怎样的结果。

理解上面这一点很重要,因为这是和深度学习的重要区别。

二、深度学习

深度学习的定义:

“Deep learning is a particular kind of machine learning that achieves great power and flexibility by learning to represent the world as nested hierarchy of concepts, with each concept defined in relation to simpler concepts, and more abstract representations computed in terms of less abstract ones.”

翻译一下:深度学习是一种特殊的机器学习,它通过学习将世界表示为嵌套的概念层次结构来实现强大的功能和灵活性,每个概念都是相对于更简单的概念来定义的,而更抽象的表示是根据更不抽象的概念来计算的

还是先通过例子说明,大家就慢慢理解了:

1.形状识别:

我们从一个简单的例子来看看我们认知层面上是如何区分物体的。比如我们要区分下面的形状,那个是圆的那个是方的:

方形和圆形

我们的眼睛第一件要做的事情,就是看看这个形状有没有4条边。如果有的话,就进一步检查,这4条边是不是连在一起,是不是等长的,是不是相连的互相垂直。如果满足上面这些条件,那么我们可以判断,是一个正方形。

从上面的过程可以看出,我们把一个复杂的抽象的问题(形状),分解成简单的、不那么抽象的任务(边、角、长度…)。深度学习从很大程度上就是做这个工作,把复杂任务层层分解成一个个小任务。

2.识别狗和猫:

如果是传统机器学习的方法,我们会首先定义一些特征,如有没有胡须,耳朵、鼻子、嘴巴的模样等等。总之,我们首先要确定相应的“面部特征”作为我们的机器学习的特征,以此来对我们的对象进行分类识别。

而现在,深度学习的方法则更进一步。深度学习自动地找出这个分类问题所需要的重要特征!而传统机器学习则需要我们人工地给出特征!

我觉得这是两者最重要的区别。那么,深度学习是如何做到这一点的

以这个猫狗识别的例子来说,按照以下步骤:

  • 首先确定出有哪些边和角跟识别出猫狗关系最大;
  • 然后根据上一步找出的很多小元素(边、角等)构建层级网络,找出它们之间的各种组合;
  • 在构建层级网络之后,就可以确定哪些组合可以识别出猫和狗。

在这里插入图片描述

  • 首先可以看到4层,输入的是Raw Data,就是原始数据,这个机器没法理解。
  • 深度学习首先尽可能找到与这个头像相关的各种边,这些边就是底层的特征(Low-level features),这就是上面写的第一步;
  • 下一步,对这些底层特征进行组合,就可以看到有鼻子、眼睛、耳朵等等,它们就是中间层特征(Mid-level features),这就是上面写的第二步;
  • 最后,我们队鼻子眼睛耳朵等进行组合,就可以组成各种各样的头像了,也就是高层特征(High-level features)这个时候就可以识别出或者分类出各种人的头像了。

三、对比机器学习和深度学习

上面我们大概了解了机器学习和深度学习的工作原理,下面我们从几个重要的方面来对比两种技术。

1.数据依赖

随着数据量的增加,二者的表现有很大区别:

在这里插入图片描述

数据量对不同方法表现的影响,可以发现,深度学习适合处理大数据,而数据量比较小的时候,用传统机器学习方法也许更合适。

2.硬件依赖

深度学习十分地依赖于高端的硬件设施,因为计算量实在太大了!

深度学习中涉及很多的矩阵运算,因此很多深度学习都要求有GPU参与运算,因为GPU就是专门为矩阵运算而设计的。相反,普通的机器学习给一台电脑就可以跑。

3.特征工程

特征工程就是前面的案例里面讲过的,我们在训练一个模型的时候,需要首先确定有哪些特征。

在机器学习方法中,几乎所有的特征都需要通过行业专家在确定,然后手工就特征进行编码。

然而深度学习算法试图自己从数据中学习特征。这也是深度学习十分引人注目的一点,毕竟特征工程是一项十分繁琐、耗费很多人力物力的工作,深度学习的出现大大减少了发现特征的成本。

4.解决问题的方式

在解决问题时,传统机器学习算法通常先把问题分成几块,一个个地解决好之后,再重新组合起来。但是深度学习则是一次性地、端到端地解决。如下面这个物体识别的例子:

物体识别

如果任务是要识别出图片上有哪些物体,找出它们的位置。那么传统机器学习的做法是把问题分为两步:发现物体和识别物体。首先,我们有几个物体边缘的盒型检测算法,把所有可能的物体都框出来。然后,再使用物体识别算法,例如SVM在识别这些物体中分别是什么。

但是深度学习不同,给它一张图,它直接给出把对应的物体识别出来,同时还能标明对应物体的名字。这样就可以做到实时的物体识别。例如YOLO net就可以在视频中实时识别:

实时检测

5.运行时间

深度学习需要花大量的时间来训练,因为有太多的参数需要去学习。顶级的深度学习算法ResNet需要花两周的时间训练。但是机器学习一般几秒钟最多几小时就可以训练好。

但是深度学习花费这么大力气训练处模型肯定不会白费力气的,优势就在于它模型一旦训练好,在预测任务上面就运行很快。这才能做到我们上面看到的视频中实时物体检测。

6.可理解性

深度学习最难的一个点,其实也说不上是缺点吧,那就是深度学习很多时候我们难以理解。一个深层的神经网络,每一层都代表一个特征,而层数多了,我们也许根本就不知道他们代表的啥特征,我们就没法把训练出来的模型用于对预测任务进行解释。例如,我们用深度学习方法来批改论文,也许我们训练出来的模型对论文评分都十分的准确,但是我们无法理解模型到底是啥规则,这样的话,那些拿了低分的同学找你质问“凭啥我的分这么低啊?!”,你也哑口无言····因为深度学习模型太复杂,内部的规则很难理解。

但是机器学习不一样,比如决策树算法,就可以明确地把规则给你列出来,每一个规则,每一个特征,你都可以理解。

但是这不是深度学习的错,只能说它太厉害、太复杂了,我们还不够聪明,暂时理解不了深度学习的内部的特征。


http://chatgpt.dhexx.cn/article/roEya9m8.shtml

相关文章

我是如何入门机器学习的呢

https://mp.weixin.qq.com/s/eFXb2swj07Ywld9pDop3hQ 机器学习在很多眼里就是香饽饽,因为机器学习相关的岗位在当前市场待遇不错,但同时机器学习在很多人面前又是一座大山,因为发现它太难学了。在这里我分享下我个人入门机器学习的经历&#…

机器学习之SVM

文章目录 一、SVM基本介绍二、SVM工作原理1. 线性支持向量机(数据可分)2. 软边距支持向量机(数据不可分) 三、sklearn实现SVM注:SVM涉及距离,需要先数据标准化处理1. 线性SVMLinearSVC() 构造函数的参数及默…

如何将照片或者视频中的背景图抠掉,机器学习开源项目使用 | 机器学习

目录 前言 开源项目介绍 项目结构 模型下载 测试数据下载 训练数据下载 依赖下载 测试图片的抠图效果 测试视频的抠图效果 总结 前言 本文主要介绍一个神奇有意思的开源项目: BackgroundMattingV2 该项目可以将照片或者视频中人的背景扣掉,变成带alpha通…

机器学习进阶路上不可错过的 28 个视频

想自学机器学习和深度学习?不妨边看专家讲解视频边自学。不仅能感受世界各地专家的熏陶,也能快速获取知识,一举两得。这篇文章整理了一个 YouTube 视频列表,供希望在该领域学习的朋友使用。 视频观看建议 我将视频分为三类:机器学…

机器学习--降维

降维(Dimensionality Reduction) 视频参考:【机器学习】【白板推导系列】【合集 1~33】_哔哩哔哩_bilibili 笔记参考:降维 语雀 (yuque.com) PCA原理详解:主成分分析(PCA)原理详…

机器学习简介

本文借鉴了数学建模清风老师的课件与思路,可以点击查看链接查看清风老师视频讲解:清风数学建模:https://www.bilibili.com/video/BV1DW411s7wi 注: 因为要用到机器学习工具箱,所以至少需要安装MATLAB2017a的版本&…

python机器学习视频教程百度网盘下载(2023完整版)

文末扫码领资料全套学习路线图和 视频及配套资料 在Python中有很多机器学习的模块,比如Sklearn、Tensorflow、Caffe等,可以很方便地调用一些机器学习的算法。如果你对Python机器学习感兴趣,python机器学习教程哪个好?这份python机…

吴恩达机器学习课程资源(笔记、中英文字幕视频、课后作业,提供百度云镜像!)

强烈感谢黄海广博士给的文章思路 本文中提及的作者便是黄海广博士本人 吴恩达老师的机器学习课程,可以说是机器学习入门的第一课和最热门课程,作者在github开源了吴恩达机器学习个人笔记,用python复现了课程作业,成为热门项目&am…

机器学习视频教程

1. Hadoop—Spark企业应用实战(推荐版) 链接:http://pan.baidu.com/s/1eSJsUTc 密码:q5lt 2. 西安交大应用统计分析SPSS1-48讲 链接:http://pan.baidu.com/s/1slSzYHJ 密码:8twg 3. Python科学计算 链接:http://pa…

机器学习必看的28个视频

想自学机器学习和深度学习?不妨边看专家讲解视频边自学。不仅能感受世界各地专家的熏陶,也能快速获取知识,一举两得。这篇文章整理了一个 YouTube 视频列表,供希望在该领域学习的朋友使用。 转自: http://easygeek.com.cn/articl…

struct timespec 和 struct timeval

转自&#xff1a;http://www.cnblogs.com/book-gary/p/3716790.html time()提供了秒级的精确度 . 1、头文件 <time.h> 2、函数原型 time_t time(time_t * timer) 函数返回从TC1970-1-1 0:0:0开始到现在的秒数 用time()函数结合其他函数&#xff08;如&#xff1a;lo…

time.Timer

文章目录 前言一、代码二、DB三、效果 前言 今天观摩前辈的代码,看到time.Timer的使用,发现对于定时任务可以这样做达到js的setInterval()效果 一、代码 package mainimport ("fmt""gorm.io/driver/postgres""gorm.io/gorm""gorm.io/gorm…

软件测试之性能测试面试题合集(含答案分析细节)

前言 最近这一年&#xff0c;对性能测试有了更多的认知。 压力、强度测试&#xff1a;在一定软硬件环境下&#xff0c;通过高负载的手段来使服务器资源&#xff08;强调服务器资源&#xff0c;硬件资源&#xff09;处于极限状态&#xff0c;测试系统在极限状态下长时间运行是…

2023最新软件测试面试题(带答案)

1. 请自我介绍一下(需简单清楚的表述自已的基本情况&#xff0c;在这过程中要展现出自信&#xff0c;对工作有激情&#xff0c;上进&#xff0c;好学) 面试官您好&#xff0c;我叫###&#xff0c;今年26岁&#xff0c;来自江西九江&#xff0c;就读专业是电子商务&#xff0c;毕…

软件测试面试必杀篇:【2023软件测试面试八股文宝典】

800道软件测试面试真题&#xff0c;高清打印版打包带走&#xff0c;横扫软件测试面试高频问题&#xff0c;涵盖测试理论、Linux、MySQL、Web测试、接口测试、App测试、Python、Selenium、性能测试、LordRunner、计算机网络、数据结构与算法、逻辑思维、人力资源等模块面试题&am…

【面经】2023年软件测试面试题大全(持续更新)附答案

整理了一些软件测试方面的资料、面试资料&#xff08;接口自动化、web自动化、app自动化、性能安全、测试开发等&#xff09;&#xff0c;有需要的小伙伴可以文末关注我的VX公众号&#xff0c;无套路自行领取~ 前阵子一位读者告诉我&#xff0c;某位大厂HR给他发了我之前做的面…

软件测试常考面试题-软件测试面试宝典(一篇足矣)

软件测试常考面试题-软件测试面试宝典_MJ813的专栏-CSDN博客&#xff0c;对原文进行整理 扫码关注每日思悟&#xff1a; 介绍解决锻炼思维问题的思路和方法&#xff0c;从不同角度分析问题&#xff0c;让思维变强大&#xff0c;变宽广的同时在测试方面进行学习和方法的拓展&a…

2022最新整理软件测试常见面试题附答案

包含的模块&#xff1a; 本文分为十九个模块&#xff0c;分别是&#xff1a;软件测试 基础、liunx、MySQL、web测试、接口测试、APP测试 、管理工具、Python、性能测试、selenium、lordrunner、计算机网络、组成原理、数据结构与算法、逻辑题、人力资源需要的可以找我获取&…

软件测试的常用的面试题【带答案】

1. 请自我介绍一下(需简单清楚的表述自已的基本情况&#xff0c;在这过程中要展现出自信&#xff0c;对工作有激情&#xff0c;上进&#xff0c;好学) 面试官您好&#xff0c;我叫XXX&#xff0c;今年24岁&#xff0c;来自XX&#xff0c;就读专业是电子商务&#xff0c;毕业后就…

十道必问的软件测试面试题(含答案解析)

前言 &#xff08;第一个就刷掉一大批人&#xff09; 有很多“会自动化”的同学来咨询技术问题&#xff0c;他总会问到我一些元素定位的问题。元素定位其实都不算自动化面试的问题。 一般我都会问&#xff1a;你是定位不到吗&#xff1f;通常结果都是说确实定位不到。 做自…