• 首页
        • 更多产品

          客户为中心的产品管理工具

          专业的软件研发项目管理工具

          简单易用的团队知识库管理

          可量化的研发效能度量工具

          测试用例维护与计划执行

          以团队为中心的协作沟通

          研发工作流自动化工具

          账号认证与安全管理工具

          Why PingCode
          为什么选择 PingCode ?

          6000+企业信赖之选,为研发团队降本增效

        • 行业解决方案
          先进制造(即将上线)
        • 解决方案1
        • 解决方案2
  • Jira替代方案
目录

机器学习的算法和普通《算法导论》里的算法有什么本质上的异同

算法导论里的算法本质上是对有精确解的问题,如何更有效率地求得这个解。这个效率可以是计算时间更短,也可以是计算过程所需要的空间更少。所谓算法只是如何精简步骤,更快更省事地找到解。

一、机器学习的算法和普通《算法导论》里的算法本质上异同

算法导论里的算法本质上是对有精确解的问题,如何更有效率地求得这个解。这个效率可以是计算时间更短,也可以是计算过程所需要的空间更少。

一个简单的例子是,给定一个乱序数组,如何快速的将其按从小到大的顺序重新排列,或者找到其中的中位数。这些问题都有确定且少数的答案,一般都会有一个笨方法(穷举或遍历),只要一步一步来就可以解,所谓算法只是如何精简步骤,更快更省事地找到这个解。这些算法处理的数据也都是结构简洁且干净的类型,比如数组,二叉树,图之类的数据结构。数据规模对于这些算法而言,影响的是计算所需的时间和空间,不会因为规模改变而影响算法本身的逻辑以及计算的结果。

机器学习要解决的问题一般没有精确解,也不能用穷举或遍历这种步骤明确的方法找到解,而且需要强调的是“学习”这个属性,即希望算法本身能够根据给定的数据或计算环境的改变而动态的发现新的规律,甚至改变算法程序的逻辑和行为。

举例来说,可以是把一千份文档归类到不同的几个类别里。最简单的可以是给定几个类别,比如新闻,小说,诗歌等,算法来根据文章内容自动划分到对应的类别里。这里可以看出这个问题即使让人做,也有很多模糊不能确定的地方,比如一篇法制晚报上的犯罪纪实是应该划到新闻,还是小说呢?或者说一篇长诗比如荷马史诗是应该归在小说还是诗歌呢?机器学习算法想要解决的,就是根据从文章内容里找到的规律,来自动的给出一个划分。而不同算法可以给出不同的解,这些解都可以是“正确”的,所以一般还需要人为设计一个评判标准来决定孰优孰劣。

也可以不事先给定类别,而是让算法自己去发现文章中的规律,把相似度高的文章划分到一起。这样不同的算法可能给出不同数量的类别划分,可能是三个,四个,或者五个,也都可以是“正确”的划分。甚至什么是“相似度”,不同算法也可以给出不同解释,可以是名词动词形容词的词频及比例,也可以是句子的语法结构等。

更进一步的,你可能还希望这个算法能够用来判断一份新的文档的类别。而输入的新文档越多,也会进一步扩大初始数据集的规模,规模变大以后,原来数据中不明显的规律可能就变明显了。比如说原来一千份文档中只有一篇议论文,可能大多算法都无法把它单独划出一个类别,但当你持续输入一百份议论文后,数据中议论文的比例就变成了101/1100,差不多10%,这时候算法就应该划分出单独的议论文类别。在这个意义上,数据本身也对算法有很大的影响,这也是和算法导论中的算法的一个本质区别。

技术上说,算法导论中的算法关注点在数据结构和计算复杂度,属于离散数学的一个分支,不涉及微积分等高等数学概念。机器学习的算法本身是基于概率,统计和优化(optimization)等理论和技术,从这个角度上说给人感觉更“数学”一点。

在具体的实现细节上,机器学习的算法会大量应用算法导论中的技术来改进计算效率。但需要强调这仅仅是对底层实现来说,在算法本身的逻辑上,二者没有太多联系。换句话说,算法导论中的技术可以帮助你写出更快的程序来运行机器学习算法,但是这对机器学习要解决的问题本身是没有什么帮助的。熟练使用二叉树散列表,准确估算一个图算法的复杂度,都没有任何可能帮助你猜到在女朋友过生日时送什么礼物较好(使用了机器学习算法的淘宝君却很可能知道!)。因此不要把它们看成是搭积木拼构件的关系。

最后,如果以上解释仍然让你费解,那么还有一个更通俗的解释:算法导论是教你如何数数,而机器学习基本上相当于星座算命。一个很机械,一个靠忽悠,差不多就是这样吧。

延伸阅读:

二、动态规划特点

本质是缩小优异解空间寻找优异解,所有的决策类求优异解的问题都是在状态空间内找一个可以到达的优异状态。搜索的方式是去遍历每一个点,而动态规划则是把状态空间变形,由此变成从初始到目标状态的最短路问题。

无后效性:当前问题的优异解的获得方式与之后的优异解求解无关,即目前的求解算法与之后的求解算法不形成闭环后耦合关系。

具有优异子结构:在整体问题的优异解可以由子问题的优异解求出。

相关文章