人工智能的学习算法

  1956年,几个计算机科学家相聚在达特茅斯会议,提出了 “人工智能” 的概念,梦想着用当时刚刚出现的计算机来构造复杂的、拥有与人类智慧同样本质特性的机器。其后,人工智能就一直萦绕于人们的脑海之中,并在科研实验室中慢慢孵化。之后的几十年,人工智能一直在两极反转,或被称作人类文明耀眼未来的预言,或被当成技术疯子的狂想扔到垃圾堆里。直到 2012 年之前,这两种声音还在同时存在。
  2012 年以后,得益于数据量的上涨、运算力的提升和深度学习的出现,人工智能开始大爆发,研究领域也在不断扩大,下图展示了人工智能研究的各个分支,包括计划调度、专家系统、多智能体系统、进化计算、模糊逻辑、机器学习、知识表示、计算机视觉、自然语言处理、推荐系统、机器感知等等1
在这里插入图片描述

  人工智能根据形态可以分为弱人工智能和强人工智能:弱人工智能通过训练让机器具备观察和感知的能力,可以做到一定程度的理解和推理;而强人工智能通过训练让机器获得自适应能力,解决一些之前没有遇到过的问题。例如科幻电影里的人工智能多半都是在描绘强人工智能,而这部分在目前的现实世界里难以真正实现;目前的科研工作主要集中在弱人工智能这部分,并且已经取得了一系列的重大突破。

  人工智能领域涉及到许多学习算法,我们经常也会看到机器学习、深度学习、迁移学习、强化学习等概念,这些算法用于使计算机系统能够从数据中学习并做出决策。本文将介绍一些常见的人工智能学习算法。
在这里插入图片描述

目录

  • 一. 传统机器学习
    • 1. 监督学习
    • 2. 无监督学习
    • 3. 半监督学习
  • 二. 深度学习
  • 三. 强化学习
  • 四. 迁移学习
  • 五. 集成学习

一. 传统机器学习

弱人工智能是如何实现的,“智能” 又从何而来呢?这主要归功于一种实现人工智能的方法 —— 机器学习。机器学习的提出可以追溯到 Arthur Samuel 在 1959 年的定义:“机器学习:让计算机无需显式编程也能学习的研究领域”。Samuel 的定义很好,但可能有点太模糊。1998 年,另一位著名的机器学习研究者 Tom Mitchell 提出了一个更精确的定义:“正确提出的学习问题:如果计算机程序对于任务 T 的性能度量 P 通过经验 E 得到了提高,则认为此程序对经验 E 进行了学习”。通俗来说,机器学习就是让计算机从训练数据中学习,以便对新的、未见过的数据做出尽可能好的预测。

传统机器学习算法根据任务可以分为 分类回归聚类、降维、异常检测、推荐系统等。根据算法可以分为 监督学习半监督学习无监督学习 等,其区别在于训练数据的标签情况。

1. 监督学习

监督学习(Supervised Learning)是一种通过从 标记好的训练数据 中学习来进行预测或分类的方法,包括线性回归、逻辑回归、决策树、支持向量机、K - 最近邻算法等算法:

  • 线性回归(Linear Regression)是一种解决回归问题的常见算法,用于预测连续数值输出。线性回归通过拟合一条最佳拟合直线来最小化预测值与实际值之间的误差,从而建立了输入特征与输出之间的线性关系。
  • 逻辑回归(Logistic Regression)是一种解决分类问题的常见算法,用于预测样本的类别。逻辑回归通过将输入特征与 Sigmoid函数结合,将输入映射到 0 和 1 之间的概率,然后根据阈值进行分类。
  • 决策树(Decision Trees)既可以解决分类问题,又可以解决回归问题。决策树根据输入特征逐步分裂数据,每次选择一个最能有效分割数据的特征,以创建一个树状结构的决策规则,从而将数据分成不同的类别或值。
  • 支持向量机(Support Vector Machines, SVM)既可以解决分类问题,又可以解决回归问题。支持向量机试图找到能够最大化类别之间边界的超平面,这样的最佳超平面能够将不同类别或值分隔开,从而最小化分类错误。
  • K - 最近邻算法(K-Nearest Neighbors, KNN)既可以解决分类问题,又可以解决回归问题。K - 最近邻算法根据数据点之间的距离来确定最近的 K 个邻居,并采用多数投票(对于分类问题)或平均值(对于回归问题)来决定待预测数据点的类别或值。

2. 无监督学习

无监督学习(Unsupervised Learning)是一种从 未标记的数据 中学习模式和结构的方法,主要用于解决聚类和降维等任务,包括 K 均值、层次聚类、高斯混合模型、主成分分析、自组织映射等算法:

  • K 均值(K-Means)是一种解决聚类问题的常见算法,用于将数据点分成 K 个不同的簇,每个簇包含具有相似特征的数据点。K 均值算法的工作方式是随机选择 K 个初始聚类中心,然后迭代地将数据点分配到最近的中心,然后重新计算每个簇的中心,直到收敛为止。
  • 层次聚类(Hierarchical Clustering)是自底向上或自顶向下构建聚类层次结构的方法。自底向上方法从每个数据点作为单独的簇开始,然后逐渐将相似的簇合并在一起,形成更大的簇;自顶向下方法从所有数据点作为一个簇开始,然后逐渐将其分成更小的簇,形成聚类层次结构。
  • 高斯混合模型(Gaussian Mixture Models, GMM)既可以进行聚类,又可以建模生成新的数据点。高斯混合模型假设数据由多个高斯分布组成,每个高斯分布表示一个簇,使用最大似然估计来估计每个高斯分布的参数,并通过这些参数对数据进行建模。
  • 主成分分析(Principal Component Analysis, PCA)是一种降维技术,用于减少数据的维度,同时保留尽可能多的信息。主成分分析通过找到数据中的主成分(这些主成分是数据中方差最大的方向,是特征的线性组合),来实现降维。
  • 自组织映射(Self-Organizing Maps, SOM)是一种降维技术,用于将高维数据映射到低维空间,并保持数据之间的拓扑结构。自组织映射构建一个由神经元组成的网格,然后通过训练来调整神经元之间的连接权重,以最佳方式表示输入数据。

3. 半监督学习

半监督学习(Semi-Supervised Learning)结合了监督学习和无监督学习,使用 少量标记数据和大量未标记数据 进行训练,包括自训练、标签传播、半监督聚类、生成对抗网络、半监督支持向量机等算法。半监督学习利用未标记数据的信息来提高模型性能,尤其在标记数据稀缺或昂贵的情况下特别有用。

  • 自训练(Self-Training)是一种简单的半监督学习方法,它使用已训练的监督模型为未标记数据分配伪标签,然后将这些伪标签数据与标记数据一起用于重新训练模型。
  • 标签传播(Label Propagation)是一种图算法,它使用已知标签的数据点来传播标签信息到未知标签的数据点,从而扩展标签信息。该算法通常构建一个图,其中节点表示数据点,边表示相似性或关系,然后通过迭代传播标签。
  • 半监督聚类(Semi-Supervised Clustering)将未标记数据与标记数据一起聚类,以便更好地捕捉数据分布的结构。其中一种常见的方法是 “Constrained Clustering”,它利用人工提供的约束信息(如数据点属于同一类别或不属于同一类别)来指导聚类过程。
  • 生成对抗网络(Generative Adversarial Networks, GANs)是一种用于生成和改进数据的生成式算法。生成对抗网络可以使用未标记数据来改进生成器的性能,使其生成更真实的数据。
  • 半监督支持向量机(Semi-Supervised Support Vector Machines)扩展了传统的 SVM,允许在模型训练中使用未标记数据。它尝试将未标记数据放置在决策边界附近,以提高分类性能。

二. 深度学习

深度学习(Deep Learning, DL)是机器学习中一种基于神经网络模型的算法,其核心思想是通过模拟人脑神经网络的结构和工作原理来训练计算机模型,以实现对数据的高级抽象和特征学习。深度学习模型通常由 多层神经网络 组成,这些网络层之间的参数通过大量数据进行自动学习和调整,以执行各种任务。深度学习的好处是可以使用非监督式或半监督式的特征学习和分层特征提取高效算法来替代手工获取特征。

深度学习的模型有很多,目前开发者最常用的深度学习模型与架构包括卷积神经网络、深度置信网络、受限玻尔兹曼机、递归神经网络、递归张量神经网络、自动编码器、生成对抗网络等等,更多的模型可以参考下图:
在这里插入图片描述

三. 强化学习

强化学习(Reinforcement Learning, RL)是一种机器学习方法,旨在让智能体通过与环境的互动学习如何在特定任务中做出决策,以最大化累积的奖励或目标。在强化学习中,智能体是一个决策制定者,它通过观察环境的状态,采取行动,获得奖励,并在不断的试验中优化它的行为策略。
在这里插入图片描述

强化学习涵盖了多种不同的方法和算法,常见的方法包括 Q - 学习、深度 Q 网络、策略梯度方法、Actor - Critic 方法、模仿学习等:

  • Q - 学习(Q-learning)是一种基于值函数的强化学习算法2,用于 离散 状态和动作空间的问题。它通过建立一个 Q 值表格,其中每个条目表示在特定状态下采取特定动作的预期回报,然后通过不断更新 Q 值来学习最佳策略。
  • 深度 Q 网络(Deep Q-Networks, DQN)是 Q-learning 的深度学习扩展,适用于具有 连续 状态和动作空间的问题。它使用深度神经网络来估计 Q 值函数,并使用经验回放和目标网络来稳定训练过程。
  • 策略梯度方法通过直接学习策略函数,而不是估计值函数,来解决强化学习问题。常见的策略梯度算法包括 REINFORCE、TRPO(Trust Region Policy Optimization)、PPO(Proximal Policy Optimization)等。
  • Actor - Critic 方法结合了值函数估计(Critic)和策略改进(Actor)两个部分:Critic 负责估计状态值或 Q 值,Actor 则根据这些估计来改进策略。A3C(Asynchronous Advantage Actor-Critic)和 A2C(Advantage Actor-Critic)是常见的 Actor-Critic 算法。
  • 模仿学习是一种通过观察专家示范来学习策略的方法,而不是通过奖励信号来训练3。常见的模仿学习算法包括行为克隆和逆强化学习。

四. 迁移学习

迁移学习(Transfer Learning)是一种机器学习方法,它利用在一个任务上学到的知识来改善在另一个相关任务上的性能。传统的机器学习方法通常要求训练数据和测试数据的分布相似,但在现实世界中,这种情况并不经常发生。迁移学习的目标是通过利用一个任务上积累的经验知识来提高另一个任务的性能,尤其是在目标任务的数据相对较少或难以获得时非常有用,这样可以避免大多数网络那样需要从零学习(Starting From Scratch)。

“在迁移学习中,我们首先在基础数据集和任务上训练一个基础网络,然后将学习到的特征重新调整或者迁移到另一个目标网络上,用来训练目标任务的数据集。如果这些特征是容易泛化的,且同时适用于基本任务和目标任务,而不只是特定于基本任务,那迁移学习就能有效进行。” 因此,迁移学习的核心思想是将从源任务学到的知识传输到目标任务中,可以通过共享模型的权重、特征表示或其他中间层来实现。在深度学习中,通常采用预训练模型(如 BERT、ResNet 等)来进行知识传输4
在这里插入图片描述

举个例子,使用图像数据作为输入的预测模型问题中进行迁移学习是很常见的。 对于这些类型的问题,通常会使用预先训练好的深度学习模型来处理大型的和具有挑战性的图像分类任务。例如使用谷歌的 Inception 模型作为预训练的元模型,然后再使用少量目标任务的样本进行微调实现 ImageNet 1000 级照片分类。

五. 集成学习

集成学习(Ensemble Learning)是一种机器学习方法,通过将多个基本模型(也称为 弱学习器基学习器)组合在一起,以提高整体性能和泛化能力。集成学习的核心思想是将多个弱学习器的预测结果进行组合,从而产生一个更强大的模型,以降低过拟合风险并提高预测的准确性。
在这里插入图片描述

集成学习算法包括投票策略、Bagging、Boosting、随机森林等:

  • 投票(Voting)策略是一种简单的集成方法,它通过让多个弱学习器投票来确定最终的预测。有硬投票(Majority Voting)和软投票(Soft Voting)两种方式,软投票考虑了每个弱学习器的置信度,硬投票只考虑得票最多的结果。
  • Bagging(Bootstrap Aggregating)通过随机有放回地从训练数据集中抽取多个子样本,然后使用这些子样本来训练多个弱学习器。最后,通过对弱学习器的预测结果进行投票或平均来获得最终的预测。
  • Boosting 是一种迭代的集成方法,它通过调整样本权重来关注被前一轮弱学习器分类错误的样本,从而逐渐改善模型性能。常见的 Boosting 算法包括 AdaBoost、Gradient Boosting 和 XGBoost等。
  • 随机森林(Random Forests)是一种基于 Bagging 的集成方法,它使用多个决策树作为弱学习器。每个决策树都在不同的子样本和特征子集上训练,最后通过投票或平均来进行预测。

集成学习的优势在于它可以降低模型的方差,提高模型的鲁棒性,减少过拟合的风险,并在许多情况下提高了预测性能。不同的集成方法适用于不同的问题和数据集,选择合适的集成策略通常需要根据具体情况进行调整和实验。


  1. 机器学习、深度学习、强化学习、迁移学习和人工智能的联系和区别? ↩︎

  2. Q学习(Q-learning)简单理解 ↩︎

  3. 模仿学习(Imitation Learning)概述 ↩︎

  4. 迁移学习(Transfer) ↩︎

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

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

相关文章

数组和切⽚ - Go语言从入门到实战

数组和切⽚ - Go语言从入门到实战 数组的声明 package main import "fmt" func main() { var a [3]int //声明并初始化为默认零值 a[0] 1 fmt.Println("a:", a) // 输出: a: [1 0 0] b : [3]int{1, 2, 3} //声明同时初始化 fmt.Println("b:…

Airtool for Mac——高效便捷的系统菜单栏网络工具!

在我们的数字化生活中,对于网络连接的稳定性和速度有着越来越高的需求。为了满足您对网络质量的实时监测和分析的需求,我们向大家介绍一款强大的Mac系统菜单栏网络工具——Airtool! Airtool是一款专为Mac设计的网络工具,它能够提…

番外5:下载+安装+配置Linux

任务前期工作: 01. 电脑已安装好VMware Workstation软件; 02.提前下载好Rhel-8.iso映像文件(文件较大一般在9.4GB,建议采用迅雷下载),本人使用的以下版本(地址ed2k://|file|rhel-8.4-x86_64-dvd…

基于PHP+MySQL的养老院管理系统

摘要 随着21世纪互联网时代的兴起,我们见证了人们生活方式的巨大改变。这个时代不仅深刻影响了我们的生活,还改变了我们对信息科学的看法。社会的各个领域都在不断发展,人们的思维也在不断进步,与此同时,信息的需求也与…

【React】React组件生命周期以及触发顺序(部分与vue做比较)

最近在学习React,发现其中的生命周期跟Vue有一些共同点,但也有比较明显的区别,并且执行顺序也值得讨论一下,于是总结了一些资料在这里,作为学习记录。 v17.0.1后生命周期图片 初始化阶段 由ReactDOM.render()触发 —…

百度交易中台之内容分润结算系统架构浅析

作者 | 交易中台团队 导读 随着公司内容生态的蓬勃发展,内容产出方和流量提供方最关注的“收益结算”的工作,也就成为重中之重。本文基于内容分润结算业务为入口,介绍了实现过程中的重难点,比如千万级和百万级数据量下的技术选型和…

用Java打印长方形、平行四边形 、三角形、菱形、空心菱形

今天复习使用嵌套for来完成一些任务,于是想着打印一些图形来练习 思考感悟 长方形 行数 和 每行的星星数嵌套遍历即可 平行四边形 核心:每行空格数总行数-行数 行数空格数132231 三角形 核心:每行星星数2*当前行数-1 行数星星数1123…

【VIM】VIm-plug插件

如何查找需要的插件 https://github.com/mhinz/vim-startify https://github.com/vim-airline/vim-airline https://github.com/Yggdroot/indentLine github.com/w0ng/vim-hybrid github.com/altercationi/vim-colors-solarized guithub.com/morhetz/gruvbox github.com/sc…

【2023保研】双非上岸东南网安

个人情况 学校:henu 专业:信息安全 排名:1/66 英语:六级500 竞赛:蓝桥杯PB国一,ISCC国一,密码数学挑战赛国三,还有其他一些省级水奖 论文:一篇EI在投(三作通…

C++:红黑树

目录 一、关于红黑树 1、红黑树和AVL树区别 2、红黑树规则 二、红黑树 1、红黑树变色举例 2、红黑树具体情况分析 ①、情况一:只变色 ②、情况二:单旋 变色 ③、情况三:双旋 变色 三、红黑树的模拟实现 一、关于红黑树 1、红黑树…

王道考研计算机网络——传输层

一、传输层概述 复用:发送方不同的应用进程都可以使用同一个传输层的协议来传送数据 分用:接收方的传输层在去除报文段的首部之后能把数据交给正确的应用进程 熟知端口号就是知名端口号0-1023 客户端使用的端口号是动态变化的,不是唯一确定…

某房产网站登录RSA加密分析

文章目录 1. 写在前面2. 抓包分析3. 扣加密代码4. 还原加密 1. 写在前面 今天是国庆节,首先祝福看到这篇文章的每一个人节日快乐!假期会老的这些天一直在忙事情跟日常带娃,抽不出一点时间来写东西。夜深了、娃也睡了。最近湖南开始降温了&…

Unity Urp无线延申的网格效果

无线延申的网格 该项目必须是再Urp项目 shader代码实现 Shader "Unlit/infTutorial1" {Properties{_Alpha ("Alpha", Range(0, 0.5)) 0.5}SubShader{Tags{"RenderPipeline""UniversalRenderPipeline""RenderType""…

Pikachu靶场——PHP反序列化漏洞

文章目录 1. PHP反序列化1.1 反序列化代码审计1.2 漏洞防御 1. PHP反序列化 可参考我写的另一篇博客:反序列化漏洞及漏洞复现。 序列化serialize() 序列化说通俗点就是把一个对象变成可以传输的字符串,比如下面是一个对象: class S{publi…

java多线程相关介绍

1. 线程的创建和启动 在 Java 中创建线程有两种方式。一种是继承 Thread 类并重写其中的 run() 方法,另一种是实现 Runnable 接口并重写其中的 run() 方法。创建完线程对象后,调用 start() 方法可以启动线程。 2. 线程的状态 Java 的线程在不同阶段会处于…

SimpleCG动画示例--汉诺塔动画演示

前言 SimpleCG的使用方法在前面已经介绍了许多,有兴趣的同学如果有去动手,制作一些简单动画应该没多大问题的。所以这次我们来演示一下简单动画。我们刚学习C语言的递归函数时,有一个经典例子相信很多同学都写过,那就是汉诺塔。那…

buuctf-[WUSTCTF2020]CV Maker

打开环境 随便登录注册一下 进入到了profile.php 其他没有什么页面&#xff0c;只能更换头像上传文件&#xff0c;所以猜测是文件上传漏洞 上传一句话木马看看 <?php eval($_POST[a]);?>回显 搜索一下 添加文件头GIF89a。上传php文件 查看页面源代码&#xff0c;看…

【分布式云储存】Springboot微服务接入MinIO实现文件服务

文章目录 前言技术回顾准备工作申请accessKey\secretKey创建数据存储桶公共资源直接访问测试 接入springboot实现文件服务依赖引入配置文件MinIO配置MinIO工具类 OkHttpSSLSocketClient兼容ssl静态资源预览解决方案资源上传预览测试测试结果 前言 上篇博客我们介绍了分布式云存…

Unity之Hololens如何升级MRTK内置shader支持URP

一.前言 什么是Hololens? Hololens是由微软开发的一款混合现实头戴式设备,它将虚拟内容与现实世界相结合,为用户提供了沉浸式的AR体验。Hololens通过内置的传感器和摄像头,能够感知用户的环境,并在用户的视野中显示虚拟对象。这使得用户可以与虚拟内容进行互动,将数字信…

Qt Creator 预览界面 快捷键

一般来说&#xff0c;我们运行Qt程序所花费的时间是比较长的&#xff0c;那有时我们只改变了界面&#xff0c;那么此时花费如此长的时间去运行程序来观察界面改动的效果是非常浪费时间的行为。 此时我们可以选择预览界面来观察界面改动后的效果&#xff1a;