找回密码
 立即注册
查看: 244|回复: 0

几个关于算法方面问题的思考

[复制链接]
发表于 2023-1-20 10:12 | 显示全部楼层 |阅读模式
算法(英语:algorithm),在数学(算学)和电脑科学之中,指一个被定义好的、计算机可施行其指示的有限步骤或次序,常用于计算、数据处理(英语:Data processing)和自动推理。算法是有效方法(英语:Effective method),包含一系列定义清晰的指令,并可于有限的时间及空间内清楚的表述出来。
算法中的指令描述的是一个计算,它执行(英语:Execution (computing))时从一个初始状态和初始输入(可能为空)开始,经过一系列有限而清晰定义的状态最终产生输出并停止于一个终态。一个状态到另一个状态的转移不一定是确定的。包括随机化算法在内的一些算法,都包含了一些随机输入。
早在尝试解决希尔伯特提出的判定问题时,算法的不完整概念已经初步定型;在其后的正式化阶段中人们尝试去定义“有效可计算性(英语:Effective calculability)”或者“有效方法(英语:Effective method) ”。这些尝试包括库尔特·哥德尔、雅克·埃尔布朗和斯蒂芬·科尔·克莱尼分别于1930年、1934年和1935年提出的递归函数,阿隆佐·邱奇于1936年提出的λ演算,1936年埃米尔·莱昂·珀斯特(英语:Emil Leon Post)的Formulation 1和艾伦·图灵1937年提出的图灵机。即使在当下,依然常有符合直觉的想法难以定义为形式化算法的情况。



在硬件中实现机器学习算法有什么好处?有没有更适合硬件实现的具体算法?
好处是速度。硬件实现的运行速度是计算机解释机器语言的 10 倍,在某些算法上甚至是 100 倍。这就像向量运算:如果可以并行计算 16 个,为什么要一次乘一个?对于包含深度学习的人工神经网络而言,单层可能需要数百万次乘法和求和;这可以并行完成;如果您可以在一个周期内将这些向量扩展到数千或数百万次乘法,那就太棒了!GPU 做了类似的事情,但专用硬件甚至可以比这更快。它与遗传算法类似,我们有可能有数千名成员的整个群体,我们需要单独评估每个成员以对其进行评分。这可能是一种大规模并行方法,如果我们能在这方面获得硬件支持,越多越好。但是遗传算法通常需要特定问题的代码来解释遗传元素,因此 GPU 可能是这些算法的更好选择。
在多种形式的人工神经网络中的任何一种中,优势都是速度。一些神经网络和遗传算法训练数百万个样本。Alpha Go Zero 训练了 4000万场围棋比赛以达到其大师级水平。你越快浏览这些例子,你就能越快迭代,你就越快找到解决方案,或者至少知道你有一个失败并且需要修复某些东西或重新思考一些东西。如此更快的试错,作为 AI 社区的总体发展战略,这仍然是相当占主导地位的。我不确定,但深度高斯过程可能不太适合硬件实现。我自己还没有实现它,但它是一种强大的统计技术,但主要在我们没有太多训练数据时使用,这会使时间节省变得微不足道,不值得投资定制硬件。
机器学习算法有哪些常见问题?
机器学习算法的一个常见问题是它们容易受到边缘情况的影响。例如,如果数据集不能代表总体,则机器学习算法的性能可能不如使用更多样化的数据集。机器学习算法的另一个常见问题是它们可能会对某些人群产生偏见。例如,如果用于训练算法的数据带有种族歧视或性别歧视,就会出现这种偏见。因此,该算法可能会为某些人群的成员产生不准确的结果。机器学习算法也可能难以训练。对于深度学习算法尤其如此,它需要大量数据和时间来学习如何准确预测结果。因此,在训练这些类型的算法时使用适当的硬件和软件非常重要。最后,在进行预测时,机器学习算法有时不如人类专家准确。这是因为人类通常更擅长识别模式
你怎么能骗过一个物体识别算法?
谈到人工智能,其中一个关键组成部分是对象识别。这是算法识别和分类图像中对象的能力。然而,有一些方法可以愚弄这些算法。以下是一些您可以做到的方法:
1. 使用低分辨率图像。分辨率越低,算法识别特征和模式的难度就越大。这可能导致错误分类。
2.在图像中使用大量噪声。这也会使算法难以正确识别特征和模式,从而导致错误分类。
3. 使用高度程式化的图像。这可能会影响对象识别算法,因为它们不希望看到这种风格化的图像并且可能无法正确处理它们。

人工智能中是否存在人工意识算法?
不,我们没有人工意识的算法,部分原因是我们仍然不确定意识是什么或它从何而来。像 Daniel Dennett 这样的人断言它不存在,那是一种幻觉。有些人会(坦率地说是愚蠢的)声称如果我们不知道它是什么,我们可能已经拥有它。这就像 1900 年的某个人说,“也许我们已经有了月球火箭!”在最基本的层面上,计算机是我们用来做数学的石头。现代计算机比算盘复杂,但算盘不能做的事它也做不了。算盘有意识吗?
为什么我们需要在机器学习算法中定义损失函数?
对于训练模型时的监督学习,将迭代输出与标记数据(训练数据)进行比较,然后微调模型的参数。损失函数衡量微调与已知期望结果相比的差异。有了这些知识,算法将再次推动减少损失函数输出。经过多次迭代并满足一些标准后,人们希望模型具有使损失函数的输出最小化的参数。
此外,然后将模型的有用性与更多标记数据(验证数据)进行比较,但这次是为了揭示模型对未标记数据(且适用于模型)的工作效果如何。这是泛化的目标,这意味着该模型在现实世界中对尚未用于训练或验证的数据很有用。我已经超级简化了这个描述。还有许多其他问题需要考虑,但问题具体是关于损失函数的。
如果上面的描述不清楚,那就试着想象自己正在学习打台球。你可能会尝试并错过,调整你的技术并再次尝试等等,直到你擅长它。从这个意义上说,损失函数是你看到球与口袋相比有多远。损失函数会影响您的下一次尝试,目标是更接近目标。

自学习人工智能和机器学习算法有什么区别?
通常这意味着机器学习的区别被准确告知它需要学习什么,所需的数字或分类类型输出。通常,要求和实际输出之间的差异用于形成误差函数,用于指导学习走向正确。而自学意味着系统学习它喜欢的东西,没有正确答案。它优化了一些更模糊的东西,有点像人类的情感,它可能会比学习之前学会更多,或者知道更多或更有效率。
我不认为这是严格定义的,所以让我们敢于走得更远。自我学习和机器学习听起来是一样的,除了自我不仅仅是一台简单机器的概念。所以我们可以说自我学习是由学习者指导的,即系统选择学习什么,它主动学习。在机器学习中,人(或团队)通常以多维数组的形式提供数据,并通常通过训练算法强制它直到满足某些标准,例如最大误差条件。在这种 ML 情况下,所有可能的情况都必须包含在数据中,并且所有数据都被平等地使用,以供学习。
自我学习的系统可以指导自己的学习。一个简单的例子是国际象棋引擎可能会定位它经常失败的情况,并研究和学习如何在这些特定情况下变得更好。一个更复杂的例子是机器通过浏览互联网来学习,选择要使用的页面。系统主动搜索它需要的数据。

所以这里的“自我”变成了“知道它需要知道什么”的部分,然后从必要的数据中找到并学习。我们看到自我学习有很大的范围,从基本的机器学习,通过没有已知输出的学习,然后主动学习,一直到人类水平,了解自己的知识集(自我)并选择改进它的策略. 理想情况下,了解它的所有能力、优势和劣势,并利用它来优化对模糊情绪(如目标)的学习。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-16 04:43 , Processed in 0.092199 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表