普通程序员如何入门AI
毫无疑问,人工智能是目前整个互联网领域最火的行业,随着AlphaGo战胜世界围棋冠军,以及各种无人驾驶、智能家居项目的布道,人们已经意识到了AI就是下一个风口。当然,程序员是我见过对于新技术最敏感的一个人群,举一个例子:当TensorFlow刚刚面世的时候,几乎所有搞大数据的同学一见面就开始交流这方面的内容,仿佛所有人一夜之间成了“TFboys”(tensorflow_boys)。我觉得之所以程序员对于新技术很敏感有两个原因,其一是技术这碗饭会逼着你不停地去学习,不然很快会被淘汰;其二是程序员大多是理工男,对于新事物是充满好奇的。借着出版《机器学习实践应用》的机会
,又是到了这样一个档口,就是很多程序员面临转型,需要去学习AI技术,在这一文我就简单谈谈我对学习AI的一些看法,我自己的肤浅想法,轻喷哈。
(先声明下我不是算法大神,我是阿里机器学习产品经理,不过我身边都是各种各样的算法大牛)首先讲下我个人的学习经历,我最先接触编程是在刚上大学的时候,2010年左右。最早的时候大家都信奉PHP是最牛的语言,当时觉得能做网站的人都是大仙。过了不到3年,移动互联网的浪潮来了,几乎所有人全部转去学Android开发、iOS开发,而且最初的时候做移动端开发是非常吃香的(这股浪潮很像现在的AI浪潮,我确信不到三年时间市面上的算法工程师会成指数性增长)。我自己当时是在做android开发,也是在一家大的手机公司实习,我当时觉得开发手机软件挺酷的,直到有一个契机让我见识到了AI。当时是有一次机会调用了某个以色列公司开发的眼球识别SDK,13年那时候看到眼球识别这总高端技术是觉得非常神奇的,后来我偷偷Google了下后端的技术,这才第一次认识到了世界上居然有机器学习算法这种东西。于是理工男的那种对新技术的好奇心就促使我去学习机器学习算法,刚一开始先认识了一些基础的算法,比如LR、KNN、RF这些,当时在国内没有这么多的视频课程可以学习,买了一本《机器学习实战》的书,是外国翻译过来的,把里面的很多代码都自己推敲了一遍,成长很大。但是学习机器学习,光知道算法是远远不够的,还需要数据和场景去操练。正好当时阿里举办第一届天池大赛,奖金记得有100万,于是就和几个小伙伴结队参赛,比赛比了两个月,当时真正的在TB级别的数据下实践了特征工程、调参、交叉验证、计算F1分等等。而且第一次体会了分布式集群的威力。当时比赛用的是阿里云的xlab,也就是机器学习PAI的前身。比赛的时候我就深深的爱上了这款云端的机器学习工具,导致后来我义无反顾的投身阿里云,做了PAI的产品经理,开启了我的机器学习业务实践之路。
讲了这么多我自己的经历,希望对大家有一些启发。总结归纳一下程序员如何转型成为AI工程师。首先,需要确立自己的职责,是算法开发还是算法应用,这两个差别很大。如果工作的性质是通过算法去解决一些实际的业务问题,偏算法应用,那我觉得需要更专注于了解业务以及算法的使用场景。如果工作性质是去开发算法,提升效率,那么需要更多的关注数学推导能力以及编程技巧。机器学习算法对数学的能力要求是非常高的,这就是为什么BAT很多算法开发工程师都是数学专业毕业的原因。
当明确了自己的定位,还需要一个环境去实践,需要有大量的数据在特定的场景下去不断磨练自己对数据的认知,对数据认知的过程就是将业务抽象成数学公式,将数据转化为特征的过程,我觉得这个能力会比推导算法更重要。在这里给大家一些推荐:
1.首先学习算法可以去看一些书《机器学习实战》(强烈推荐)、《统计学习方法》(偏底层数学推导)、《机器学习实践应用》(偏业务)。也可以去看看吴恩达老师的关于机器学习的斯坦福公开课。
2.关于实践场景,可以去参加Kaggle的比赛或者天池大赛,在这里强烈推荐天池大赛,因为天池不光会提供真实的数据和比赛环境,最关键的是你可以获得许多与高手切磋交流的机会,这些交流会让人快速成长。
3.多多实践,其实市面上有很多现成的开源工具可以使用,有R、Spark-MLib、Sklearn等等,也有很多地方可以下载到开源数据集,推荐UCI数据集。下载好数据,选定一个场景,自己用代码去跑跑效果,比看100篇鸡汤都管用。
最后希望大家都能掌握算法技巧,即使不能从事AI工作,对于数据的认知能力也一定是未来最核心的竞争力。
我自己的一些小看法,仅代表个人哈。
作者微信公众号: