闲聊算法

1,631 阅读4分钟

什么是算法

算法是一组清晰定义的指令集合,用于解决某类问题或执行某种运算任务。算法应该在有限的空间和时间内进行表达,其运行从初始状态和初始输入开始,经过一系列有限而清晰定义的指令操作后,最终产生输出并终止于某个最终状态。

算法的作用

算法是一个包含了一系列操作的过程,算法由计算机执行以保证在有限时间内找到解决方法。算法是为了能更快更容易更好地解决问题,算法由设计者硬编码。算法的应用范围很广,常规基础算法与数据结构紧密相关,该类算法更多被用于确定性领域,比如对于链表、数组、图和堆等等的各种搜索和排序算法。另一大类算法是机器学习算法,该类算法主要用于非确定性领域,主要提供了根据某种机制或数据来学习人类某种能力的框架算法,从而实现人工智能。

各个行业每个领域都会产生不一样的问题,这些问题一般都可以转化为用算法描述,并通过计算机寻找解决方案,或者验证是否存在问题的解。

AI算法更有吸引力

常规基础算法的发展相对而言已经比较稳定完善,它更多地用于确定性问题的解决或者优化,对于用户来说存在感很低,用户对于见多的事情更多的是认为其是理所当然的事。反过来,以机器学习为代表的AI算法却吸引了更多人去关注和研究,它确实能更加吸引人,因为该领域中问题本身的不确定性和算法的黑盒使得更多人想去理解它内部的运作机制,而且不断有新思路新算法出现。

AI算法与复杂问题

AI算法一般偏向于处理复杂的问题,比如视频图像中的识别问题、声音波形中的识别问题、自然语言的理解问题等等。我们知道所有算法都要在合理的时间内找到问题的解才有实际意义,否则算法再好再牛也是枉然。AI算法更偏向于处理复杂的问题,这些问题通常都需要人类智能才能够解决。通常这些问题也是NP完全问题的一部分,NP问题是非确定性多项式问题,人类一般通过直觉和理性相结合的方式来处理。

数据更重要?

多数机器学习算法都是数据驱动的,可以说数据时AI中规则的改变者,使用机器学习去捕获数据的规律。对于某些问题,某种程度上数据比算法更加重要,当数据量达到一定大的程度时多数算法的效果都能执行地非常好。比如语言模型,单词量几百万级别和几十亿级别的效果相差很大,再好的算法也无法填补其中的差距。

没有免费午餐

目前而言,没有一种模型算法能被证明由于其他模型算法,每种算法只是解决了特定某些领域的问题,不存在某种超级牛逼的算法能在所有问题都优于其它模型算法,这就是“没有免费午餐”的定理。不过在某个具体问题上还是存在更优算法,可以从多个算法中寻找最好的算法。

传统算法编程方式

自从计算机诞生来算法编程方式就是由人工去编写算法的整个过程,算法逻辑都是清晰的,当数据输入到算法后会产生一个输出。这种方式要求我们要写清楚执行逻辑,或者指定好执行规则。也就是输入+程序逻辑=输出。

机器学习编程方式

相比于传统算法方式,机器学习方式则是一种更加自动化的方式。这种方式则是提供了一种逻辑学习框架,它会根据输入和输出来确定程序的执行逻辑。也就是输入+输出=程序逻辑。

作者简介:笔名seaboat,擅长人工智能、计算机科学、数学原理、基础算法。书籍:《Tomcat内核设计剖析》、《图解数据结构与算法》、《人工智能原理科普》《图解Java并发原理》。

推荐作者的一本书!


专注于人工智能、读书与感想、聊聊数学、计算机科学、分布式、机器学习、深度学习、自然语言处理、算法与数据结构、Java深度、Tomcat内核等。