启发式被定义为一种解决问题或决策的技术,它使用最少的相关信息、过去的结果和经验,在合理的时间内为问题产生可行和实用的解决方案。本文解释了启发式算法的核心原理、其工作原理以及当今计算世界中的一些关键示例。

目录

  • 什么是启发式?

  • 启发式是如何工作的?

  • 启发式的例子

01

什么是启发式?

启发式是一种解决问题或决策的技术,它使用最少的相关信息、过去的结果和经验,在合理的时间内为问题产生可行且实用的解决方案。这些策略侧重于提供具有可接受精度范围的快速结果,而不是提供近乎完美的解决方案。

启发式包括机器学习 (ML) 和人工智能 (AI) 学科的重要组成部分。当通过逐步算法得出问题的解决方案非常不切实际时,这是一种首选方法。此外,由于启发式策略旨在提供快速的解决方案而不是准确的解决方案,因此它们通常与优化算法相结合以改进结果。

从技术上讲,所有迭代都是相互依赖的,这意味着深度神经网络的每个级别对于根据它们与期望结果的接近程度来决定选择哪个解决方案路径和丢弃哪个解决方案路径至关重要。因此,术语“启发式”与“捷径”同义,因为它不使用资源来探索不会产生可接受结果的解决方案路径。

AI 中的启发式方法基于围绕“人类如何思考”的认知科学原理。此外,AI 中的启发式算法使系统能够生成近似解而不是精确解。启发式不一定提供更便宜的解决方案。相反,那些不高估实现结果成本的方法被称为“可接受的启发式”。这是启发式算法的一个重要特征,可确保解决方案的最优性。在基本层面上,可接受的启发式方法通过减少约束来简化原始问题。

尽管启发式过程倾向于找到经常有效或正确的解决方案或结果,但它们可能只是有时是正确的、可证明的、最佳的或准确的。然而,基于启发式的决策通常足以解决小规模问题,并在无法获得完整信息的不确定情况下提供解决方案。

启发式依靠捷径来提供即时、高效和短期的解决方案,以促进企业及时做出决策。各行各业的分析师都使用特定的经验法则,使公司能够快速有效地解决问题并做出决策和判断。这些包括试错、排除、智能猜测、过去的结果或公式,甚至是历史数据分析的过程。然而,在计算世界中,启发式模型作为经验法在没有足够时间仔细考虑问题的所有方面的情况下加速和简化决策过程。

启发式的优点

启发式有助于实时监控事件,同时使用更少的资源并最大限度地减少系统负载。它允许系统处理大数据并确保更快地为复杂问题做出决策。启发式规则对于计算、网络安全和风险预防策略至关重要。

此外,该方法在检测过去问题的新变化、结合更大的数据集以最终识别数据点之间的联系方面起着至关重要的作用。它允许系统根据配置得出明确的结论,并帮助选择没有风险的安全行动方案。

与传统算法和决策方法相比,启发式算法需要权衡取舍。它优先考虑速度而不是解决方案的精度、准确性或完整性。此外,它涉及智能猜测,甚至偷工减料以返回错误更多的解决方案。启发式模型依赖于容易产生偏差结果的最小计算。然而,结果的速度掩盖了潜在的缺点。例如,基于启发式的系统可以根据列入黑名单的数据点(如客户 ID、联系电话、电子邮件、浏览器哈希等)立即阻止金融交易(在线)。

尽管启发式方法没有提供设计解决方案的理想机制,但可以在配置规则和设置流程时考虑该方法的一般缺点,这样就可以选择可以应用启发式方法的场景,不仅可以加快任务速度,还可以释放资源。

02

启发式是如何工作的?

启发式通常是指有根据的猜测,在处理计算行业的问题解决因素时,这些猜测似乎比传统方法更快做出决策。启发式模型通常执行以下任务以加快决策速度:

  1. 分析历史数据

  2. 经常监控实时数据(即 24×7)

  3. 比较新旧数据中的数据模式

  4. 做出适当的假设以填补数据中的未知空白

  5. 在达到进一步处理的预设阈值时触发操作

启发式适用于机器学习(即白盒和黑盒模型)、机器推理和其他处理多样化、大和不完整数据的相关模型。基于启发式的技术广泛应用于贸易和金融、网络安全以及欺诈检测和预防领域。此外,它们正越来越多地被企业采用,以提升其技术以提高企业生产力和效率。

让我们通过一个简单的欺诈检测示例来了解启发式方法的工作原理。

在欺诈检测中,启发式模型倾向于通过考虑标记的数据(例如客户 ID、cookie、联系方式,甚至在某些情况下的特定操作序列)来终止或阻止交易。让我们分解一个简单的用例。

  1. 假设骗子或欺诈者注册了一个在线赌博游戏应用程序,希望操纵和滥用游戏系统提供的“奖励包”。

  2. 欺诈者已经尝试过这种伎俩,尽管使用的是不同的设备和联系方式,例如联系方式。或用户 ID。

  3. 在第二次欺诈尝试中,尽管一些用户凭据不同,但欺诈者仍然使用相同的 IP 地址,因为他提供了相同的电子邮件和家庭地址。此外,此人在他第一次尝试使用的赌博平台上遵循相同的步骤。

  4. 在这里,启发式方法走到了最前沿。系统使用启发式模型来评估从第二次尝试中获取的新输入数据点,并将它们与与第一次尝试关联的共享数据点相匹配。该模型填补了空白并连接了新旧数据点以得出结论。

  5. 由于估计倾向于揭示第一次和第二次欺诈尝试之间的相似性,因此达到了风险承受能力阈值。因此,系统会阻止欺诈者访问或使用它。

在此示例中,第二次欺诈尝试中使用的 IP 地址与较早的欺诈事件中使用的 IP 地址相匹配。此外,欺诈者使用类似的步骤来利用该系统。基于这些参数,系统假设同一个人正在尝试进行另一次欺诈。

在这里,风险分析的结果有可能只是误报。然而,风险分析师已经考虑了几个约束和变量,例如“风险与回报”,决定最好继续进行误报而不是面对误报的后果。这意味着分析师可以阻止合法用户,而不是错过阻止真正欺诈者的机会。因此,风险分析团队针对特定公司或场景调整风险承受阈值。

在某些情况下,欺诈者还可以输入用户凭据,例如与合法用户地址相匹配的家庭地址。一些诈骗者倾向于通过合法用户使用的共享互联网访问点进行操作。这些是欺诈者用来安全玩游戏的技术。但是,通过机器和浏览器指纹识别,可以识别这些数据点。从这里开始,启发式模型开始寻找联系并做出对得出结论必不可少的假设。

03

启发式的例子

启发式是人工智能不可避免和不可分割的一部分。简单地说,它是对人类思维过程的计算机模拟,用于已知算法无法达到的情况。因此,启发式方法通常与优化算法结合使用,以提高所需结果的整体效率。

以下是一些经常使用启发式方法的关键示例:

1.旅行商问题(TSP)

旅行商问题是指给定城市列表和每对城市之间的距离的优化问题。任务是确定访问每个城市一次并最终返回起点城市的最短路径。由于遍历多个城市,解决方案还必须检查成本(即距离)和时间复杂度。

TSP 问题通常被认为是一个 NP-hard 问题(非确定性多项式时间困难),因为即使对于小型或中型数据集,生成最优解也是一项具有挑战性的任务。作为替代方案,在这种情况下可以使用贪婪算法以在相当短的时间内产生近似解。这意味着结果接近最佳答案,这是对问题足够好的解决方案。该算法在某种意义上是一种启发式算法,表明该解决方案足够接近所需结果。尽管理论上可以实现解决方案,但考虑到时间限制,近似值是最好的选择。

TSP 是一个组合优化问题,在我们的日常生活中有多种应用。这包括车辆路线、物流(计划和调度)、货物交付、海运业、机场网络、一线城市的公共交通网络等。TSP 是启发法发挥重要作用的一个很好的例子。

2.搜索优化问题

众所周知,在处理特定的“搜索优化问题”时,启发式算法可以使算法更快。在步骤 1 中,启发式规则倾向于在每个阶段尝试所有可能性,这意味着执行全空间搜索算法。但是,如果系统识别出当前解决方案比已经确定的最佳解决方案差,则系统可以随时中止此搜索。因此,启发式方法通过最初尝试好的选择或解决方案同时尽早消除错误路径来帮助优化此类搜索问题。

特定的最佳优先搜索算法(例如“A* 搜索”)使用启发式来提高算法的收敛性,同时只要启发式是可接受的,就可以跟踪解决方案的正确性;例如,搜索引擎优化。搜索引擎帮助个人从数百万数据源中找到相关信息。然而,由于 Internet 上的信息量如此之大,因此很难找到有用的内容。为了使这个过程尽可能快,搜索引擎使用启发式方法来加快搜索过程并确保个人在最短的时间内找到相关信息。

3.启发式搜索假设

Allen Newell 和 Herbert A. Simon 提出了启发式搜索假设。在这个假设中,复杂问题的解决方案被揭示为符号结构。然后符号系统使用智能通过搜索来解决问题。该过程反复生成、修改和重组符号,直到创建的结构与解决方案结构相匹配。

因此,每一步总是依赖于前一步。因此,启发式模型通过验证当前步骤与所需解决方案的接近程度来了解要追求的路径以及要消除的路径。因此,这个过程节省了时间和资源,因为一些可能的解决方案可能不会基于其测量的完成解决方案的可能性而生成。

在这种情况下,启发式模型通过利用搜索树来完成其任务。该模型不会在初始阶段生成所有可能的解决方案分支,而是选择比其他不太可能产生结果的分支更有可能产生结果的分支。在每个决策点,启发式选择在每个决策点产生可接受解决方案的分支。

4.杀毒软件

防病毒软件依靠启发式规则来识别、检测和隔离不同形式的恶意软件。它扫描正在考虑的软件,并根据针对不同病毒类型的规则查找病毒的代码模式甚至行为模式。在此过程中,将识别文件或执行策略是否揭示了特定的代码模式或活动模式。因此,可以推断该文件已被感染。

此外,与其他简单的扫描方法不同,使用基于行为的启发式扫描方法,即使是自我修改的多态病毒也是可追踪的。基于启发式的扫描可以检测变异病毒,而无需事先检测。它可以实时查看可疑的新文件代码或行为模式,而无需被注意、分析和标记为“xyz”病毒。因此,未来的病毒可以通过遵循启发式方法来解决。

5.背包问题(KP)

背包问题由一组物品组成,每个物品都有重量和价值。任务是确定组合中包含的事物总数,使物品的总重量小于或等于特定重量,并且整个物品价值尽可能高。

可以采用贪婪算法形式的启发式模型来解决该问题。该算法按每个重量的价值降序排列物品,然后将它们放入麻袋中。该技术允许最有价值和最重的东西首先进入背包。

这种启发式发挥重要作用的 KP 问题在机器调度、空间分配、资产优化、家庭能源管理、软件资源管理、优化电子设备的功率分配、移动节点的网络选择等各个领域都有应用。

带走

计算机科学中的启发式指的是算法用来确定复杂问题的近似解决方案的“经验法则”。由于在有限的时间内得出结论之前系统需要扫描的信息太多,因此启发式模型优先考虑速度而不是解决方案的正确性。但是,重要的是要考虑到启发式规则特定于您打算解决的问题,并且它们的具体情况可能因情况而异。

例如,假设您打算将启发式应用于您的算法,该算法旨在确定主教在 8×8 棋盘上遍历棋盘上的每个方格时可以走的步数。在这种情况下,您可以创建试探法,使主教能够选择具有最多可用对角线移动的路径。当您制定特定路径时,生成允许主教选择具有最少可用对角线移动的路径的启发式规则会更好。由于可用的决策空间有限,解决方案也很窄,因此很快就能找到。

因此,对于每个明确的问题,您都可以设计自己的启发式规则以在更短的时间内完成任务。这是一种方便的方法,因为一些计算复杂的问题可能需要多年的计算才能找到确切的答案;但是,您几乎可以立即使用启发式方法得出近似结果。

原文章链接:https://www.spiceworks.com/tech/artificial-intelligence/articles/what-is-heuristics/

什么是启发式?定义、工作和示例相关推荐

  1. PP后台配置-定义工作中心标准值

    PP后台配置-定义工作中心标准值 解决: 定义标准值码 路径: SAP 用户化实施指南 > 生产 > 能力需求计划 > 主数据〉工作中心数据〉标准值〉定义标准值码〉修 改视图 标准值 ...

  2. python函数调用的一般形式_Python的函数的定义与使用示例

    Python培训分享函数的定义与使用示例,结合实例形式分析了Python函数的定义.参数.变量作用域.返回值等相关概念与使用技巧. Python定义函数使用def关键字,一般格式如下: def 函数名 ...

  3. 10 PP配置-生产主数据-工作中心相关-定义工作中心公式

    业务背景:定义工作中心公式 事务码:OP54 SPRO路径:SPRO->生产->基本信息->工作中心->成本核算->工作中心公式->定义工作中心公式 第1步,SPR ...

  4. 8 PP配置-生产主数据-工作中心相关-定义工作中心负责人

    业务背景:定义工作中心负责人 事务码:SPRO SPRO路径:SPRO->生产->基本信息->工作中心->常规数据->确定负责人 第1步,SPRO进入 第2步,通过&qu ...

  5. 7 PP配置-生产主数据-工作中心相关-定义工作中心标准值码

    业务背景:定义工作中心标准值码 事务码:OP19 SPRO路径:SPRO->生产->基本信息->工作中心->常规数据->标准值->定义标准值码 第1步,SPRO进入 ...

  6. python实现自动工作_python实现串口自动触发工作的示例

    最近在一个python工具中需要实现串口自动触发工作的功能,之前只在winform上面实现,今天使用python试试.这里简单记一下: 首先用wxpython实现一个Button,点击事件绑定函数On ...

  7. 【PP-8】定义工作中心负责人

    我觉得PP其实名词术语挺多的,但是如果你在制造型企业里待的时间不用特别长,大概都能理解,你生产一个产成品:这个产成品的编码是:320000000000000177 ,描述叫:PP测试 --成品 --- ...

  8. php 接口的定义与实现,PHP接口定义与用法示例

    使用接口(interface),你可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容.我们可以通过interface来定义一个接口,就像定义一个标准的类一样,但其中定义所有的方法都是空的. ...

  9. java 线性回归算法_线性搜索或顺序搜索算法在Java中如何工作? 示例教程

    java 线性回归算法 大家好,之前,我讨论了二进制搜索算法的工作原理,并分享了在Java中实现二进制搜索的代码. 在那篇文章中,有人问我是否还有其他搜索算法? 如果数组中的元素未排序,又该如何使用它 ...

最新文章

  1. [示例]NSDictionary-按value排序数组中的字典并输出(描述器)
  2. vlan简介,access、trunk、hybrid的区别
  3. python入门到精通需要学多久-从Python入门到精通,你只需要在马哥教育待四个月...
  4. 【Java】Java 语言的初步认识及工作应用范围
  5. python 效率_Python 运行效率为何低
  6. vjue 点击发送邮件如何处理
  7. heat 用法 示例
  8. php编译时出错make: *** [libphp5.la] Error 1
  9. spark1.6 maven java_Spark+ECLIPSE+JAVA+MAVEN windows开发环境搭建及入门实例【附详细代码】...
  10. 剑指offer面试题53 - II. 0~n-1中缺失的数字(二分查找)
  11. 腾讯九次面试C++,如今面试题了如指掌
  12. Windows中MySQL主从数据库搭建(三)
  13. 【Matlab学习笔记】图像的二值化(待续)
  14. 独立样本t检验、方差齐性检验
  15. html + css + js 实现一个打字小游戏(建议收藏)
  16. 《圆明园的毁灭》教学设计方案
  17. Mplayer SMplayer 软件配置
  18. 网络基础知识汇总学习
  19. android ui开发知乎,实现知乎app的主界面效果
  20. 写一个登录界面连接数据库,判断用户名和密码

热门文章

  1. 世界国家 的数据库sql
  2. C++中的struct
  3. 用户权限管理之权限管理
  4. 使用scikit-image feature计算图像特征与常见特征示例
  5. 企业级移动应用如何优化域名解析和业务访问?
  6. 【GAM全文翻译及代码实现】Global Attention Mechanism: Retain Information to Enhance Channel-Spatial Interactions
  7. 趣玩 Linux:盘点那些能装逼的炫酷命令(动图演示)
  8. 你听播客吗?聊聊最近大火的声音经济
  9. linux怎么强制解挂,linux下强制卸载挂接点——umount+Fuser命令详解
  10. RISCV--汇编指令