人工智能、机器学习、深度学习的区别,终于说清楚了-程序员宅基地

技术标签: 机器学习  深度学习  人工智能  

人工智能、机器学习和深度学习是最近几年比较火热的概念,它们看起来比较相似,但是仿佛又存在某些差异。这篇文章,咱们就来科普一下三者之间的区别和联系。

为了让读者有一个整体上的认知,咱们先来看一张图。
 


可以看到,三者之间是相互包含的关系:人工智能涵盖范围最广,它包含了机器学习;而机器学习是人工智能的重要研究内容,它又包含了深度学习。

人工智能

人工智能的英文全称是 Artificial Intelligence,简称 AI。

人工智能是一门以计算机科学为基础,融合了数学、神经学、心理学、控制学等多个科目的交叉学科。

人工智能的目的是让计算机模拟人类的思维,从而解决一些不能用代码描述的问题,比如判断一只动物是不是小狗、通过 CT 照片检测一个人的病情等。

这些问题不能用传统的编程方法解决,因为没有一个确定的公式,或者说没有一个确定的算法。但是我们人类就很容易解决这些问题,因为人类大脑不是根据固定的算法来推导的,而是根据以往的认知或者经验来推理。

人工智能的目的也是如此,就是不给计算机编写固定的算法,而是让它自己形成一套模型,然后利用这套模型来帮助人们解决问题。这里的模型,就可以看做计算机的“经验”或者“认知”。

因为此时计算机的思维方式和人类非常相似,所以才称为人工智能。

机器学习

机器学习的英文全称是 Machine Learning,简称 ML。

人工智能只是一种美好的愿景,但是具体如何才能实现人工智能呢?答案就是机器学习。

计算机原本只是一张白纸,没有任何“阅历”,我们必须喂给他大量的数据,让它从数据中积累经验,逐渐形成自己的认知。这是一个让计算机不断学习的过程,所以称为机器学习。

机器学习是一件很麻烦的事情,需要先搭建一个模型,这个模型包含了很多参数,然后把准备好的数据(包括正确的结果)输入到模型中,不断调整模型的参数,直到它非常接近或者完全符合正确的结果,这个时候我们就说模型训练好了。

机器学习的模型有很多种,已经有人帮我们开发好了,也就是各种成熟的算法,包括决策树、随机森林、逻辑回归、SVM、朴素贝叶斯、随机森林、支持向量等。

实际开发中,我们根据自己的需求从中选择一个模型即可,这个不用担心。最要命的是数据,机器学习需要大量的数据才能训练好模型。人类看一两张猫的照片就认识猫了,但是机器学习需要看成千上万张照片。

如何收集大量有效的数据,是机器学习的重中之重,所以才有了爬虫,有了数据挖掘,有了数据清洗等分支。

注意,除了机器学习,传统的编程方式也可以实现部分人工智能,这已经在某些领域内做出了成果,比如文字识别、电脑下棋等。

深度学习

深度学习的英文全称是 Deep Learning,简称 DL。

机器学习的模型是一个不断发展的过程,后来人们逐渐研究出了一种更加智能和通用的模型,就是卷积神经网络(CNN)。CNN 模拟人类大脑神经突触之间的连接,通过调整参数来模拟突触连接的强弱,如下图所示。
 


图:卷积神经网络示意图(x 表示输入,y 表示输出)


CNN 包含很多层,每一层又包含多个节点。除了第一层和最后一层,中间的那些统称为隐藏层(蓝色部分)。隐藏层可以多达数百层,每一层的输入都是上一层的输出,同时每一层的输出都可以作为下一层的输入,它们交织在一起就形成了一个很深的网络,所以称为“深度学习”。

见名知意,深度学习真的很深,哈哈。

通常来说,机器学习模型的复杂度越高,它的学习能力就越强,这就好比说,使用更多的变量,你就能表达出更复杂的公式。但是一味增加网络深度是不好的,因为太深的网络不好训练。

深度学习是机器学习的一个重要分支,它是机器学习的高级玩法,更加接近真正的人工智能。

目前深度学习已经被应用在人工智能的各个领域,其中最显著的应用是计算机视觉和自然语言处理领域,我们所熟知的语音识别、机器翻译、无人驾驶、人脸识别等等,都是基于对深度学习算法的应用。

除了 CNN,深度学习还有很多其它的衍生模型(算法),比如循环神经网络(RNN)、深度置信网络(DBN)、长短期记忆模型(LSTM)、生成对抗网络(GAN)、受限玻尔兹曼机(RBM)等。

总结

人工智能是一种美好的目标,它希望用计算机来模拟人类的思维方式。

机器学习是实现人工智能的主要途径,也是人工智能的核心,它有很多模型(算法)可以选择。

深度学习是机器学习的一个重要分支,它使用了一些更加通用和智能的模型,是比较前沿的学术课题。深度学习需要更多的数据和算力作为支撑,否则难以发挥其优势。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42673574/article/details/133955239

智能推荐

c# 调用c++ lib静态库_c#调用lib-程序员宅基地

文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib

deepin/ubuntu安装苹方字体-程序员宅基地

文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang

html表单常见操作汇总_html表单的处理程序有那些-程序员宅基地

文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些

PHP设置谷歌验证器(Google Authenticator)实现操作二步验证_php otp 验证器-程序员宅基地

文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器

【Python】matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距-程序员宅基地

文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距

docker — 容器存储_docker 保存容器-程序员宅基地

文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器

随便推点

网络拓扑结构_网络拓扑csdn-程序员宅基地

文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn

JS重写Date函数,兼容IOS系统_date.prototype 将所有 ios-程序员宅基地

文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios

如何将EXCEL表导入plsql数据库中-程序员宅基地

文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql

Git常用命令速查手册-程序员宅基地

文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...

分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120-程序员宅基地

文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120

【C++缺省函数】 空类默认产生的6个类成员函数_空类默认产生哪些类成员函数-程序员宅基地

文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数

推荐文章

热门文章

相关标签