什么是算法,为什么它们会让人们感到不舒服?

“算法”这个词时常被人们提起。但当我们谈论诸如 YouTube 或 Facebook 等平台的算法时,我们究竟在讨论什么? 算法到底是什么?为什么人们对它们如此不满?

算法:解决问题的指令

我们身处一个计算机技术高度普及的时代,尽管我们对计算机的了解可能并不深入。然而,在计算机科学领域,有些基础知识是任何人都可以理解的。 编程便是其中之一。

编程工作也许并不光鲜亮丽,但它是所有计算机软件的基础,从办公软件到机器人呼叫器,无不依赖于它。即使您对编程的了解仅仅来源于 90 年代的电影和一些另类新闻报道,您也大概能理解程序员的工作。 程序员编写代码,计算机则根据这些代码的指令执行任务或解决问题。

在计算机科学的世界里,“算法”不过是代码的另一种说法,更专业的说法。 任何指导计算机如何解决问题的指令集都可以被视为一种算法,即使这个任务非常简单。 比如,当你打开电脑时,电脑会按照一套 “如何开机” 的指令来操作。 这就是一个算法在发挥作用。 当 NASA 的计算机使用原始无线电波数据来渲染太空照片时,也是算法在执行工作。

“算法”这个词可以用来描述任何指令集,甚至不仅仅局限于计算领域。 比如,您整理抽屉里的银器的方式,或是使用洗手间后洗手的方式,都可以被看作是一种算法。

然而,如今 “算法” 一词往往被用于一些非常具体的技术讨论。 您不会听到有人谈论 “基础数学” 算法,或者 “MS Paint 涂鸦工具” 的算法。 相反,您会听到 Instagram 用户抱怨他们的 “好友推荐算法”,或者隐私保护组织批评 Facebook 的数据收集算法。

如果 “算法” 是计算指令的统称,那么为什么我们几乎只用它来描述数字世界中那些令人困惑、神秘莫测,甚至让人反感的方面呢?

“算法”与“机器学习”的混用

过去,程序员和大众文化通常将大部分计算指令称为 “代码”。 如今,在大多数情况下,仍然是这样。 但在机器学习这一庞大且复杂的计算领域,我们更倾向于使用 “算法” 而不是 “代码” 一词。 这也导致了人们对 “算法” 一词的困惑和不安。

机器学习的概念存在已久,但在过去 15 年左右的时间里,它才成为数字世界中不可或缺的一部分。 虽然机器学习听起来像是复杂的概念,但实际上它很容易理解。 因为程序员不可能针对每一种情况都编写和测试特定的代码,所以他们编写了可以自己编写代码的程序。

您可以将其视为一种更实用的人工智能形式。 比如,当您将足够多的来自老板的邮件标记为垃圾邮件时,您的电子邮件客户端就会开始自动将您老板发送的所有邮件都放入垃圾邮件文件夹。 同样,谷歌使用机器学习来保证 YouTube 的搜索结果具有相关性,而亚马逊则利用机器学习来推荐您可能想购买的商品。

当然,机器学习也并非完美无缺。“机器学习” 这个名字本身听起来就让人感到不安,而且它的一些流行应用在道德上存在争议。比如,Facebook 用来挖掘用户数据或网络行为的算法,就是机器学习一个不太受欢迎的例子。

在媒体报道中,您会听到 “谷歌的算法” 用于对搜索结果进行排名,“YouTube 的算法” 用于推荐视频,以及 “Facebook 的算法” 用于决定您在时间轴上看到的内容。 这些都成为人们争论的焦点。

为什么算法会引发争议

长除法是一种常见的除法算法(还有许多其他算法)。 只不过它是学生而非计算机在执行。 您的 Intel CPU 在执行除法时使用完全不同的算法,但最终结果是相同的。

语音转文本功能通常采用机器学习技术,但很少有人会讨论语音转文本的 “算法”,因为每个人都能立刻辨别出客观上正确的答案。 没有人关心计算机是 “如何” 计算出你所说的话,或者它是否是机器学习的结果。 我们只关心机器是否给出了正确的答案。

但是机器学习的其他应用并没有 “正确” 答案的优势。 这也是为什么算法成为媒体经常讨论的热点话题。

按字母顺序排列一个列表的算法,只是完成一个既定任务的一种方法。 然而,像谷歌的 “对搜索结果中最佳的网站进行排名” 或者 YouTube 的 “推荐最佳视频” 这样的算法,则具有更大的模糊性,而且没有完成既定的任务。 人们可能会对该算法是否产生了它应该产生的结果持有不同意见。 但是,在字母顺序排列的例子中,所有人都会认同最终列表是按字母顺序排列的。 这一点没有争议。

我们应该如何理解“算法”这个词?

算法是所有软件的基础。 如果没有算法,您将不会拥有手机或计算机,而且您可能只能在一张纸上阅读这篇文章(事实上,您可能根本无法阅读这篇文章)。

然而,普通大众并没有将 “算法” 一词用作计算机代码的统称。 实际上,大多数人认为计算机代码和算法之间存在差异,但事实并非如此。 由于 “算法” 一词与机器学习紧密相关,它的含义变得模糊,但其用法却变得更加具体。

您应该开始用 “算法” 来描述最琐碎的计算机代码吗? 可能不会,因为并非所有人都会理解您的意思。 语言总是在变化,而且总是有充分的理由发生变化。 人们需要一个词来描述机器学习这个令人困惑、不透明,有时甚至令人怀疑的世界,而 “算法” 正在逐渐成为这个词。至少目前如此。

话虽如此,请记住,算法(和机器学习)的核心都是为解决特定任务而编写的代码。 它并非魔法; 它只是我们所熟悉的软件的更复杂的形式。

资料来源:Slate, 维基百科, GeeksforGeeks