前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >AI 路上,第一步这么走下去...

AI 路上,第一步这么走下去...

作者头像
double
发布2018-07-25 18:16:00
4510
发布2018-07-25 18:16:00
举报
文章被收录于专栏:算法channel算法channel

算法是描述解决一个问题的步骤,外界给它所指定的数据,然后经过一系列步骤输出一个结果。为了更快更轻量级地解决问题,我们会选择高效精简的结构去实现,这种结构称为数据结构。因此,算法和数据结构是不同的概念,但有相互依赖关系。

这是一条通往 AI 的路......说道入门 AI, 研究基础算法可能不错,具体怎么实践呢?没错,动手是第一步,有了它脑洞会大开。推荐 Leetcode 平台训练基础算法,它囊括了常用的基本算法思想,如贪心,深度、广度优先搜索,分治,递归,动态规划。Leetcode给出了题目的标签,大家可按照标签去训练,把level等于easy的100多道搞定再总结下。

Leetcode 给我们上的第一堂课:corner case. 各种情况都要考虑周全,没错,这正是考量算法健壮性的一个指标,无论怎么输入,算法都能正确应对,更不会crash. 光有意识还不行,还得想明白怎么做到全盘考虑。一般需要思考以下问题:准确区分出函数体内的常量和变量;如果是变量,那么它的取值范围又是怎样的;基于此的算法逻辑需要切分变量的值域吗。

其二,常用的数据结构,数组(线性表),链表,队列,栈,两个指针,树,图,字符串,对它们你已经不再陌生。并且,知道在什么场景下该使用什么样的数据结构,高效实现一个算法。比如,在需要频繁插入的场景下,要选择链表,而不是呆萌地选择数组,并知道为什么要这样做;面试官问你,二分查找的基本实现思路,你很快就能联想到两个指针;提到树,在你的脑海里就出现了递归二字;想到图,广度和深度优先遍历也出来了。这就叫数据结构和算法不分家,就像旅店,如果没有客人入住了,它就没有存在的必要一样。

再有,思想开始萌芽,意外之喜。上道后,在学到决策树做回归或分类时,突然看到贪心二字时,woo,原来它也是贪心思想启发下发明的啊。相信理解决策树已不是问题,有了在 Leetcode 中的贪心实战。再后来,学到语言模型中的 continuous bag of words 和 skip-gram 时,看到对它们效率低的解释时,也感到轻车熟路,因为 Leetcode 中的字符串 tag 多次涉及字符串模式匹配问题。

也会你还是不相信,学习 AI 为什么要去研究基础算法,直接 pip 安装一个sklearn, pandas, 调调 API 不就能实现文本分类,图像识别了吗。或许这是一条捷径,也恰巧解决了老板安排的问题。可是,好久不长,一天业务方突然给你打电话,说是某种输入下,怎么浏览器崩溃了。然后你连夜寻觅问题出在哪,最终锁定在一个API上,你很欣喜,但是后来很绝望,因为它来自第三方包的调用。你完全不知道它的内部实现细节,抓狂了! 彻夜研究后发现,此包的这个接口不能满足自己的需求,因为它的约束必须是线性的,而业务方的输入约束有可能是非线性的。你更抓狂了!

这就是调用第三方包的结果,有时很好,有时很糟。现在基本避免不了调用第三方包,但最好要全面了解所使用的模块,同时尽可能地明白算法实现原理。这些算法相对复杂,理解起来,相对有难度,为什么不从基础算法开始呢?夯实地基,一样重要。

那么,过了基础算法这关,下一步,该怎么更快的上路呢。AI 最重要的理论之一,可能就是概率论了。 这部分,放在下一次推送。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-05-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员郭震zhenguo 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档