机器学习方向的职业规划

猫

从本科到研究生

虽然高中是在小城镇上的,除了偶尔拨号上网和新建文件并没有接受过任何计算机方面的教育,但是怀着对计算机的一腔热情选择了软件开发专业。本科在北交大的时候基本上就是学习各种编程基础,从前端到后端,从 C 到 Java,从程序基础到架构设计,感觉基础是打下了不少但有点杂而不精。因为大四就要求进互联网公司实习,所以在保研很悬也不决定准备考研有可能直接工作的情况下,需要慎重考虑自己的职业规划了。因为当时手头有一台 MacBook,也被 Apple 简洁优雅的理念所吸引,就入了 iOS 开发这个坑。当时留给我的时间也不多,自学了斯坦福公开课的 iOS 开发课程做了几个小 demo 就去实习了小半年。所幸在实习期间得到了保研成功的消息,也以吊车尾的好运气被北大录取。

从小城镇来到北京开阔了我的视野,而从北交大到北大则让我见识到了更高层次的世界。在经过一个多学期接近两个学期的学习之后,在与本科同学们和研究生同学们的反复探讨之后,在自己的反复思考和衡量之后,我决定放弃之前已有经验的 iOS 开发,转向更有挑战性的数据挖掘和机器学习方向。主要是基于以下考量:一是 iOS 开发还是比较偏向工程的方向,相比较带有研究性质的数据挖掘和机器学习门槛较低而且市场也更饱和;二是在北大软院这么好的平台上,不尝试一下更有挑战性同时也更有前景的机会实在是可惜;三是技术方向的同学们很多都投身该领域,能够和同学们沟通并借鉴经验对于自己的成长也是大有裨益。虽然从零开始很难,想要追上同学们的步伐也很吃力,但是目前还不想轻言放弃。

机器学习方向

首先还是要理清这两年火起来的相关概念,按照个人发展过程来看最初接触到的相关概念其实是数据挖掘,然后突然一下就进入了所谓的大数据时代,而且我的专业全名也就是大数据技术专业,最后就是现在各大互联网公司都在追捧的机器学习。首先说一下大数据,其实这是一个从量变到质变的过程,只不过是硬件设备的发展速度没有跟上数据的指数式爆炸增长,然后对于数据的分布式存储和处理成为了一个需要研究和优化的问题,这才有了所谓的大数据。而数据挖掘和机器学习也都不是什么新鲜的东西,早期的数据挖掘需要处理的数据还不大所以处理方法不需要太复杂,而早期的机器学习受制于硬件限制也并没有表现出相对于规则学习的明显优势。时至今日,数据挖掘已经有很大一部分分析方法采用的是机器学习方法,而在机器学习也已逐渐应用包括数据挖掘的许多领域并取得了优异的表现。

对于机器学习有一个经典英文定义:A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E。机器学习是人工智能的一个分支。人工智能的研究是从以“推理”为重点到以“知识”为重点,再到以“学习”为重点,而机器学习是实现人工智能的一个途径,即以机器学习为手段解决人工智能中的问题。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。机器学习算法是一类从数据中自动分析获得规律,并利用规律对未知数据进行预测的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。机器学习已广泛应用于数据挖掘、计算机视觉、自然语言处理、生物特征识别、搜索引擎、医学诊断、检测信用卡欺诈、证券市场分析、DNA序列测序、语音和手写识别、战略游戏和机器人等领域。

而传统的机器学习方法已经日趋完善,现在人们又把目光投向了深度学习。深度学习是机器学习领域的一个发展分支,其概念源于对人工神经网络的研究,意在通过建立模拟人类大脑的神经连接结构来对文本、声音和图像等复杂信号进行分层抽象处理,进而给出数据的分层特征表示。与之对应的是传统的隐马尔可夫模型、最大熵模型和支持向量机等等的浅层机器学习方法,浅层学习多依靠人工抽取经验进行特征抽取,再使用对应的模型学习获得没有层次结构的特征函数。而深度学习通过对原始信号进行逐层特征变换,将样本在原空间的特征表示变换到新的特征空间,自动地学习得到层次化的特征表示,从而更有利于分类或特征的可视化。至今已有数种深度学习框架,如深度神经网络、卷积神经网络和深度置信网络和递归神经网络已被应用计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

应用领域与职位分析

在了解了数据挖掘和机器学习方向的相关概念之后,我也知道了要从事该方向工作所需要的理论基础和知识储备。但是我的目标毕竟不是去做学术研究而是一份合理的职业规划,比如说以后在工作中的绝大多数情况是选择和使用某种合适机器学习算法来完成特定任务,而不会对于机器学习算法本身做过多的工作,所以需要结合目前机器学习应用领域中对应的职位分析来准备相关的业务知识和专业能力。另外还需要有侧重点,目前在不同领域中侧重的机器学习方法都不尽相同,比如说在图像领域做一些目标检测、人脸识别等工作时一般使用深度学习效果比较好,这时候就需要深入研究深度学习中的各种神经网络算法了。

  • 推荐算法:推荐算法在互联网的各个领域的业务中都是一个极其重要的组成部分,从电商到社交,从视频到音乐,从新闻到地图。在如今信息爆炸的时代,如何给用户最精准的推荐是一件极为重要的事情,在淘宝上推荐给用户最想买的商品就意味着大概率的成功交易,在网易云音乐上推将给用户最想听的音乐就意味着品牌忠诚度。经典的推荐算法有基于内容的推荐算法、协同过滤推荐算法、混合推荐算法和流行度推荐算法等。同时目前移动互联网的兴起也使得在手机上的推荐有着非常好的前景。

  • 广告算法:广告目前是互联网行业的主要收入来源,其重要性不言而喻。广告算法的主要目标是通过用户数据和广告数据将用户和广告匹配起来以达到更高的市场效率,主要的就有 CTR 的预估。但是广告算法中其实更重要的还是理解业务本质,然后再去结合算法做到更好的效果。目前互联网广告也一直在朝着个性化和精准化的方向发展。

  • NLP:在学习过程中我们接触到多是一些结构化的数据,然后在真实的环境中更多的是非结构化的数据,其中最重要之一的就是文本数据。NLP 要解决的问题就是将这些文本数据抽象成结构化数据用于应用,比如说信息抽取、机器翻译和问答系统等。NLP 的工作主要分为这几类:一是做搜索相关工作,比如说公司内部的搜索引擎之类的;二是做机器翻译和问答系统等的研发工作;三是用于做文本数据结构话的工作用于之后的数据工作。由于中文语言的天然复杂特性,NLP 在不同类型不同阶段的互联网都是不可或缺的。

  • 图像和视频:除了文本数据,互联网数据的一大部分就是图像数据了(视频数据也可以看成图像数据的集合)。相关的工作有目标检测、人脸识别、图像分割、物体跟踪、3D 重建和聚类分类等。如果说 NLP 已经逐渐成熟,那么图像处理还处在一个摸索的阶段,在许多应用场景中还没有大规模的成熟产品,比如说通过监控摄像头对同一个人或者车的持续的行为跟踪和预测。但是目前对于图像处理所使用的深度学习需要足够的硬件和 GPU 支撑,门槛还是相对较高。随着硬件和技术的突破,图像处理的相关岗位应该会呈现上升趋势。

实习准备

首先,数据挖掘和机器学习说到底还是一种算法工作,算法基础必不可少,平时要养成刷算法题的习惯以培养手感和保持敏捷思维。然后在机器学习的各种算法中,至少要理解其算法建立起来的基本概念,比如有个面试题:一片区域内有 N 棵树,现在要把这 N 棵树砍下来到 K 个仓库,假设搬运成本就是树的位移成本,那么该怎么选择这 K 个仓库使得搬运成本尽量小呢?这很明显就是 k-means 聚类的应用场景,相比于去记忆伪码或者其他东西,理解概念应该是更重要的。

当然概念更重要并不是说动手不重要,实践的过程更能加深对概念的理解,同时也是简历中重要的敲门砖。最基础的还是要有大数据平台的使用经验,毕竟现在的数据单机处理已经很吃力了,熟练搭建和使用 Spark 之类的大数据平台是必不可少的基础经验。然后是对机器学习的实践,这两年举办的各种大数据竞赛如雨后春笋,国外有名的有 Kaggle,国内现在阿里的天池平台也已经举办了很多相关竞赛,无论是看看优秀的经典比赛的解决方案还是从零开始尝试做一次比赛,都能积累很宝贵的经验。