当我第一次试着编程时,我就爱上了这门艺术(是的,我相信编程既是科学又是艺术), 那一年,我九岁。 我很快就迷上了如何通过设置逻辑规则和条件来控制程序的流程,if… else语句,switch,循环等等。
在接下来的几年里,我学会了通过创建模块和将代码段抽象成函数和类的手段来保持代码整洁。 我通过面向对象的分析和设计(OOA / D)增强了我的软件开发技能。 我学习了代码的重复使用和设计模式。 我学会了用UML图形和示意图来解释我的程序。 我学会了将这些原则应用于近十几种不同的编程语言之中。
但是编程的经验法则保持不变:定义规则和逻辑。 其余的只是帮助实施和维护这些规则的技巧。
几十年来,基于规则的代码主导了我们创建软件的方式。 我们分析一个或一组问题,指定边界,实例,进程,关系,并将它们转换为确定软件工作方式的规则。
虽然这种方法对我们来说很好,但却导致了“笨”软件,除非人类以某种方式更新其逻辑,否则该程序永远不会改变其行为。 另外,它也不适用于规则不明确的情况,例如识别图像中的对象,在网络流量中发现恶意活动,或是在不平坦的地面上对机器人进行导航。
机器学习是现代人工智能的基石,它颠覆了传统编程模式。 机器学习有助于创建修正和改善其性能的软件,而无需人类向其解释如何完成任务。 这就是我们今天直接使用的, 以及许多即将发生的,创新背后的技术,包括你从网站,数字助理,无人驾驶汽车,分析软件等处看到的令人惊讶的建议。
什么是机器学习?
机器学习是从示例中学习的软件。 你不需要编写机器学习的算法,而是通过提供大量的相关数据,来训练它们。 例如,不要试图对机器算法解释一只猫看起来是什么样的,你需要通过提供数百万张猫的图片来培训它。 该算法在这些图像中找到重复的模式,并为自己确定如何定义猫的外观。在此之后,当你向该程序显示新照片时,它可以区分照片中是否含有猫的成分。
许多人将机器学习等同于人工智能。 然而,AI是一个松散的概念,它可以应用于从复杂的、基于规则的软件到尚未发明的,人类智能之间的任何事情。 实际上,机器学习是AI的一个特别分支,它基于数据而并非规则来创建程序。
什么是监督,无监督和强化学习?
机器学习有几种不同风格的算法。 其中最流行的是“监督学习”,进一步说,就是你使用带有标签数据的训练算法,将一组输入对象(通常为矢量)映射到一组期望的输出值中(也称为监督信号)。 上面所讲的猫的示例就是监督学习的一个例子。 另一个例子是语音识别,你可以通过提供声音波形来对应其中的书面字体。
你提供给监督学习的算法样本越多,其分析新数据的能力就越精确。 而这也是监督学习的主要挑战。 创建带有标记样本的大数据非常耗时,同时也需要大量的人力。 一些平台,如亚马逊的Mechanical Turk提供数据标签服务。
在“无监督学习”中,机器学习的另一个分支,则没有参考数据,一切都没有标签。 换句话说,你提供输入,但不提供输出。 该算法对未标记的数据进行整理,提取推论并找出模式。 无人监督学习对于人类无法定义的,隐藏模式的情况尤其有用。
例如,你允许机器学习算法监视你的网络活动。 然后,它将根据其找到的模式设置正常网络活动的基准。根据这个标准,它将检测并且记录异常网络活动。
与监督学习相比,无监督的学习更接近于机器自我学习的过程。 然而,无监督学习的问题是其结果往往是不可预测的。 这就是为什么它通常需要结合人的直觉来引导其保持正确方向,因为它一切都是自学的。 例如,上述网络安全的例子,网络活动中有许多原因会使其偏离规范,然而这并不是恶意制造的。 但机器学习的算法并不知道。在开始的时候,人类分析人员必须纠正其决定,直到它学会判断异常并作出更好的决策。
另一个不太知名的机器学习领域是“强化学习”。在强化学习中,程序员定义了状态,期望目标,允许的行动以及约束。 该算法通过尝试将各种不同的允许行动进行组合来了解如何实现目标。 当你知道目标是什么,但无法定义达到目标的路径时,此方法特别有效。
强化学习在许多设置中被使用。 在更著名的案例中,Google DeepMind的AlphaGo,掌握了复杂的棋盘游戏Go的机器学习程序。 该公司正在采用同样的方法来提高英国电网的效率。 Uber也在使用相同的技术来教AI代理玩侠盗猎车手车(或更准确地说,让它们自己学习)。
什么是深度学习?
虽然机器学习是人工智能的一个分支,但深度学习是机器学习的专门分支。 深度学习使用神经网络,一个具有人类大脑结构和功能的复制品。
深入学习解决了上一代学习算法中存在的一个主要问题。先前, 随着数据的增长,算法平台的效率和性能趋于停滞。 现在,深度学习算法在获得更多数据的同时,其性能也在不断改进。深度学习算法并不是直接通过将输入映射到输出的方式,而是依赖于几层处理单元。 每个层将其输出传递到下一个层,进行处理,然后再传递到下一层。 在某些模型中,计算可能会在处理层之间来回流动多次。现已证明深度学习在各种任务中非常有效,包括图像字幕,语音识别和语言翻译。
机器学习的挑战是什么?
虽然机器学习对未来应用的发展至关重要,但并不是没有自己的挑战。
一方面,机器学习算法的开发和部署在很大程度上依赖于大量的计算和存储资源来执行其任务。 这种依赖关系使得它们在执行时受限于云服务和大数据。 因此,在执行边缘计算机集成解决方案时(edge intelligence)它们更具挑战性。
机器学习的另一个问题 - 特别是深度学习 - 是它的不透明度性。 随着算法变得越来越复杂,人类越来越难以解释它们是基于什么,做出决定的。 在许多情况下,这可能不是问题。 但是,当你想要对算法做出关键决定时,使它们具有透明性并且让人一目了然是非常重要的。
此外还存在一些偏见问题。 机器学习往往会吸收嵌入到它们在接受培训时,数据中包含的一些的习惯和倾向。 在某些情况下,寻找和消除偏见很容易,而在其他情况下,它的嵌入度极深,人类往往难以察觉。
然而,这些挑战都不可能阻止AI和机器学习成为我们这个时代的通用技术(这个术语曾经被用于蒸汽机和电力这样的发明)。 不管我们往哪个方向发展,机器学习都将会对我们产生深刻影响。