作战计划

废柴大作战之作战计划篇

想完成一个为期六个月的目标,没有一个清晰详尽且切实可行的计划肯定不行。计划是来用服务终极目标的,也就是”用六个月时间拿到BAT公司的语音识别算法工程师的offer”。计划不同于战略规划,战略是大方向,给行动定一个整体的基调;计划是执行层面上的,需要提供详细的行动方案,甚至要详细到每天干什么。既然战略是大方向,那么行动计划要依照战略来制定。开篇已经制定了战略规划,下面就是围绕战略规划开始指定详细的作战计划。

语音识别专业素养

这里说的语音识别专业素养,是一切让你区别于其他机器学习算法工程师的特质。虽然目前深度学习技术大有一统天下的趋势,但从目前来看,想要找到一个语音识别算法工程师的工作,光是有机器学习的背景是不行的,还是需要语音相关的专业知识。结合我以前的学习和目前的状况,我觉得我需要在以下几个方面提升自己的语音识别专业素养。

学习内容汇总

针对以上三个方面,我在这儿列出相应的学习材料,也就是需要我在六个月内学习并掌握的知识技能。

面试所需的数据结构和算法

数据结构和算法是计算机专业的基本功,我是半路出家,在这方面根本没受过严格训练,只能靠自己恶补了。之所以觉得重要,抛开别的不说,单从公司招聘来说,笔试面试时数据结构和算法都是重头戏。之前以为是对应届生有这个要求,来了现在的公司工作一段时间后发现,社招的时候基本也就是从数据结构和算法上考察一个人的计算机编程素养,顶多再加上系统设计的东西。因此,这部分是需要花大量时间补充并且强化的。

学习内容汇总

针对数据结构和算法的准备,基本思路参考Quora上的一个回答。我准备一开始快速通过Python和C++的基本语法和内置数据结构,然后开始

编程语言

编程语言作为程序员驰骋沙场的兵器,重要性自然不必多说。我打算提升两门编程语言的编程功底,一个是Python,一个是C++。Python语法简洁,适合非计算机专业的快速入门;功能强大,目前很多机器学习库都支持Python,学习性价比非常之高。只所以要学习C++,是因为目前我接触到的所有语音识别工具箱,不管是开源的还是公司产品级别的,都是用C++写的。作为一个语音识别从业人员,C++不过关实在是无法立足。

学习内容汇总

机器学习算法

对于机器学习算法这块儿,我打算快速入门,强化实践,熟悉某个机器学习工具包的使用。至于理论部分,捡着感兴趣或者特别经典且重要的算法,再找专门的书去读。这部分的最终目标是熟悉掌握Python做Machine Learning的整个work flow,也就是当给你一个数据集之后,从数据净化,到最终得到模型或者结论的整个环节。

学习内容汇总

实力包装展示

这一部分主要是线上线下,多方位立体化展示自己。

  • 创建并完善各大求职平台的个人资料
  • 持续更新自己的开源项目voiceplay并宣传
  • 努力给Kaldi提交pull request
  • 制作一份好的简历
  • 在问答网站回答领域相关问题

展示平台(持续更新)

整体安排

整体思路: 按语言来分,两条主线:一条是Python,一条是C++。Python这条主线,首先是搞定Python语言上的特性,包括常用的Python语言使用技巧,库函数的使用,尤其是面向对象设计,希望面向对象的概念能在Python这里打个基础,然后学习C++的时候能省些力气。这个搞定之后,接下来的任务就是Think DSP、Think Stats、Think Bayes、Machine Learning in Action这些书了,至于数字信号处理和机器学习的先后顺序,这可以等搞定Python语言之后,看看衔接哪个比较合适; C++这条线, 开始引入数据结构和算法的学习,先是理论部分,算法导论这本书,捡着重点部分快速掌握核心概念,理解着数据结构和算法的同时,开始学习C++,用最快的时间熟悉C++语言特性,弄清楚STL和Standard Library两者的关系,分别包含哪些内容,面向对象程序设计。同时学习数据结构算法和C++,时间可能会很紧,这时候Python这条线的学习可以暂时停掉。以C++这边的学习内容为重。初步估算,数据结构和算法加C++语法,要一个月的时间。这部分结束之后,就开始用C++刷算法题了, 以Elements of Programming Interviews这本书为主。开始刷题之后,应该会一直持续到最后找工作,所以,坚持每天固定时间刷几道,这时候就可以开始之前中断的Python那条线上的学习了。等Python这条线完成Stats和Bayes这两个主题的学习,C++这条线完成Dynamic Programming这部分的理论学习和刷题之后,可以开始把哥大的ASR课程的作业从头做一遍,C++代码深入读进去,理解算法和语音识别系统设计,WFST的知识也是在这个阶段开始学习并强化。理想情况是开始这部分的学习的时候距离找工作还能有1个月的时间。

每月的时间和任务分配

因为这个计划是六个月时间,我不可能预估这么长的跨度。所以,目前按照每个月月初制定当月的任务和时间安排,月末总结计划的执行情况,根据上个月的执行情况,制定好下一个月的计划。所以先安排4月份的学习任务,因为考虑到四月份还要准备英语考试,所以,整个月的学习任务不能定得太多。下面是四月份的任务:

  • Think Python 要求: 读完全书每个章节,重要的代码要敲一遍,课后习题不需要全做,捡着重要的做几道,OOP的部分要重点学习。
  • A Byte of Python 要求: 快速通读整本书,捡重点的章节学习,作为Think Python的补充

结语

以上是我的整体方案,把握大方向不变的前提下,时刻根据情况做出调整。