强化学习的入门方法

强化学习是人工智能领域一个非常重要的分支,在游戏 AI 领域的应用是无处不在的,包括大家耳熟能详的 AlphaGo 和王者荣耀,其背后都使用了大量的强化学习方法。随着人工智能技术在互联网公司的日渐普及,人们对人工智能的期待也越来越高,也期待着人工智能未来能够做更多的事情。除了各种门禁系统,人脸识别系统在各个公司的应用之外,在游戏领域,强化学习也扮演着举足轻重的作用。

当前的强化学习技术除了使用在游戏 AI 领域之外,也在机器人控制,推荐系统等领域有着很多应用,也取得了不少商业价值。但强化学习的学习还是存在一定的门槛,除了一些在线的 tutorial 和零零散散的资料之外,其实还是需要一本相对完整和优秀的教材来辅助高校的老师和学生,只有这样,强化学习才能够成为一门课进入高校课堂。

上海交大的强化学习团队教师张伟楠,沈键,俞勇合力撰写了一本关于强化学习的,理论与实践相结合的书籍《动手学强化学习》。本书的每个章节除了必要的理论介绍,公式推导之外,还包含了相关的 Python Notebook。Notebook 中包含了算法过程和可运行代码,方便读者阅读相关内容并立刻进行实践。

《动手学强化学习》

《动手学强化学习》是一本相对完整的书籍,读者并不需要知道太多的预备知识就可以直接上手这门课。本书包括三个部分:

  • 第一部分:强化学习基础;
  • 第二部分:强化学习进阶;
  • 第三部分:强化学习前沿。

在第一部分,作者们介绍了强化学习的基本原理,多臂老虎机,马尔可夫决策过程,动态规划算法等内容;在第二部分,作者介绍了 DQN 算法及其改进算法,策略梯度算法,Actor-Critic 算法等诸多算法,让作者能够在第一部分的基础上更进一步的理解强化学习;在第三部分,作者们撰写了前沿的强化学习算法,包括离线强化学习,多智能体强化学习等内容,让读者在之前的基础上迅速进入到强化学习的前沿领域。

本书的另外一个亮点就是 Python Notebook 的代码丰富完善,读者可以一边阅读强化学习的基础知识,一边进行代码的开发工作。基于理论和实战相结合的办法,读者可以尽快掌握强化学习的实战方法。学习这本书需要读者有一定的 Python 开发基础,并且这本书有相应的强化学习视频,方便读者尽快掌握这本书。

随笔(十五)— 谈一谈校招简历的那些事

校园招聘是应届生从学校走向职场的重要一环,对于大多数应届生而言,能够找到一份理想的岗位,对未来的职业发展和个人成长都有很大的帮助。最近无意之中翻到了当年自己校招的简历,从现在的角度来看,基本上属于一轮游的简历,可能连初筛都不一定能够通过。如果想要在校园招聘中找到一份不错的工作,一定要在本科和硕士期间进行必要的积累,毕竟只有日积月累的获取经验,才有可能在校招的竞争中脱颖而出。

由于自己是从数学系转行到机器学习领域,所以下面谈的简历基本上还是以互联网的机器学习和人工智能的方向为主,至于产品,市场等其他岗位,可以关注其他博主的资料。不同方向的岗位,在撰写简历方面其实相差还是比较大的。

如果要写简历的话,通常会选择使用一些招聘网站的在线撰写简历的功能,或者直接使用 word 的模板来进行编写,甚至使用 LaTex 中的 ModernCV 模板。下面就是 LaTex 中的 ModernCV 模板所生成的简历。

ModernCV

一般情况下,对于应届生的校园招聘而言,简历会包括以下几个常见的内容:

  1. 个人简介:姓名,性别,年龄,联系方式等;
  2. 教育经历:本科/硕士/博士学位,博士后(工作经历);
  3. 实习经历:大中小公司的实习经历;
  4. 科研经历:本科/硕士/博士所在实验室的项目;
  5. 比赛成绩:ACM,Kaggle,数学建模,大学生数学竞赛等比赛成绩;
  6. 其他条件:编程技能,Office,英语成绩(四六级,托福,雅思等);

基本上所有的招聘都是候选人之间的横向比较,因此想要拿到不错的 offer 就一定要在候选人之间脱颖而出才行。下面基于以上六点分别来分别介绍一下。

个人简介

个人简介这一块对绝大多数而言都没有问题,只要是想找工作的人都会认真写这一块,只看这一块其实大家都不会有太大的差异性。

教育经历

从教育经历这一块来看,就开始有区分度了。不同的学历的面试标准和要求是存在一定差异性的,不同的学校也是存在一定的区分度的。当然学校的区分度并不是指 Top 2,C9,985,211 的学生就一定会通过面试,在面试的过程中,任何学校的候选人都存在机会。不同公司的不同部门会根据自身的实际情况招聘最合适的候选人,并且最合适的候选人并不是最强的人。

在招聘的时候,不同的部门有着完全不同的招聘需求,有的部门需要 CV 方向的人才,有的需要 NLP 方向的候选人,有的则需要机器学习和强化学习方面的博士大咖。如果将 CV 的候选人推送到一个机器学习岗位,那明显是不合适的,该岗位的面试官很有可能会直接放弃这份简历,理由就是岗位不匹配。甚至,在同一个岗位上,也会略有差异,毕竟每个候选人的经历和条件还是不太一样的。

在留学申请学校的时候,也会存在某些极其优秀的候选人拿不到一些学校 offer 的情况,此刻就有一种说法叫做“overqualified”。意思就是候选人的能力明显高出许多,就算该学校发出了 offer,这位候选人也存在极大的可能不来,所以宁可直接发出拒绝信。在招聘的时候其实也是这样的,不同的岗位有着完全不同的定位,如果面试官判断这位候选人即使拿到了 offer 也存在不会接 offer 的可能性,那么即使候选人能力再强,也有可能直接发出拒绝信。

实习经历

从实习经历来看,这一块在所有候选人中的区分度是最大的。有的候选人在大学期间就早早出来实习,个人简历上至少有三到五个实习经历,每个实习期间从 2 个月到 1 年不等,并且都是国内或者国外的大型互联网公司实习经历。实习的项目经历非常丰富,在面试期间就可以基于自己的项目侃侃而谈,相比之下,没有实习经历的候选人在这一块就会占据劣势。

从个人的发展而言,如果有条件实习,那还是请尽快实习,毕竟时间不等人,而且实习的机会也是非常有限的。在实习期间,能进大公司实习就果断去大公司实习,实在不行的话从小公司开始实习也是可以的,有一个甚至多个实习经历对未来的求职会好很多。

如果想实习的话,那么实习的工作时间最好长一点,一般建议三个月至半年甚至一年以上。毕竟两个月的实习真的学不到什么东西,还容易给正式员工挖坑。实习的第一个月,能够掌握公司的常用开发工具和平台就已经算不错了。实习的第二个月能够做简单的数据分析和算法开发工作。如果实习两个月就走了,那么对现有团队的帮助其实非常有限。从正式员工的角度来看,两个月的实习生基本上做不了任何工作,虽然为社会培养人才很重要,但是也要避免由于实习生的跑路导致项目受到重大影响。从项目开发和迭代的角度来讲,新手写的代码会很坑,迟早也要推翻重写,甚至还不如从一开始就不要写。

科研经历

科研经历这一块也有区分度,不同的导师能够给学生带来的资源完全是不一样的。有的导师跟业界联系紧密,培养出来的学生基本上可以拿到各大公司的大咖岗位。相反地,有的导师连机器学习都没搞清楚是啥就让学生搞科研了。学生在选择自己导师的时候,对于导师的背景可以先调研清楚,避免入坑了之后耽误自身前途。

如果导师所做的项目是公司实际业务与科研相结合的,那这就是最合适的导师。首先,基于导师接到的公司业务,可以拿到公司的部分数据;其次,基于这些数据,学生可以做相应的科研,甚至发表论文。不仅有实战的经验,也会有相关的论文产出。对学生未来求职相关岗位有很大的帮助,如果导师更加靠谱一点,能够在工业界大力推荐学生,那么学生求职就会顺风顺水了。

比赛成绩

不同的比赛区分度其实很大,有的比赛具有很高的含金量,但是有的比赛就非常水。对于不方便参加实习的学生,日常参加比赛也是非常有必要的,否则简历就会更加空洞了。但是,如果个人简历中只有一些 kaggle 比赛,或许这份简历在 2015 年是够用的,但是在 2022 年就大概率不够用了。因为很多的候选人都会有相关的比赛经历,很难从中脱颖而出。

其他条件

其他条件包括编程技能,Office 办公室技能,英语成绩等。这些技能对于大部分学生而言都是具备的,区分度也相对有限。

以上的这些只是个人在近些年工作的部分经验总结,不一定正确,也不一定适合所有的人。大家在撰写简历的时候还是要多加总结,然后扬长避短,欢迎大家一起讨论。最后,祝大家都能够找到满意的工作。