0_Leanring and Resource

1. 入门介绍

本资料介绍机器学习领域学习的基本路线,从统计学习一直到强化学习,但是不一定需要全部学完,例如如果重点放在数据分析上,只需要学习到统计学习部分即可。强化学习在当今机器学习研究中占比没有那么大,主要是因为其学习成本高,并且现实落地比较少,目前比较有名的强化学习应用有 Alpha Go,击败人类围棋世界冠军柯洁,还有 Alpha Star,这是应用在星际争霸中的游戏 AI。但也正是因为强化学习的研究相对较少,代价是要学习更多东西。

本文档提供从入门学习路线开始详细介绍各个预备知识的学习方法、路线和资料,最后会提供强化学习的学习资料,但并不详细介绍每一种强化学习算法,该内容可以在其他小节阅读。

2. 基础编程

2.1. 格式规范

一定要保证良好的编程习惯,包括代码的规范,如双目运算符号前后都要有空格,列表、元组中逗号后面要加空格,写注释之前要空两格等,通常称为 pep8 规范,其官方文档 PEP 8 给出了详细说明,但刚开始无需关注太多,只需要从最基本的开始注意即可,这些规范在各种 python 教学中也都是遵守的,可以留意观察和模仿。也可以关注那些写的比较好的代码的格式和涉及思路,学习其编程的风格和习惯,比如 OpenAI 的代码风格。

Python 非常重视代码规范问题,力求写规范代码,保证代码易读和优雅。

2.2. 查阅文档解决问题

在编程中可能遇到很多报错,要尝试理解报错提示,看看能不能自己直接解决,也可以在网络上搜索该报错,看看别人是不是已经遇到过了,并且是怎么解决的。实际上大部分报错都已经有人遇到过了;但是,推荐先查阅官方文档,例如 pytorch 的官方文档是 PyTorch documentation,也有 PyTorch 中文文档 但时效性较差。比如想知道 Pytorch 包中 torch.nn.Dropout() 的用法时,可以在官方文档中搜索其说明,但也可以在百度或者谷歌中搜索从而找到第三方资料,很多学习者会通过在线博客的形式对该函数作解释说明。

网络上有很多技术交流讨论群,切忌不作任何说明就把报错信息以文本或者截图甚至照片的形式发到群里,学会提问很重要。

2.3. 面向对象编程的思路

python 代码是可以写单行脚本去运行的,但一定要在学习基础时重视学习函数编程,在后面还会遇到甚至经常涉及类封装编程,面向对象的设计思路在简单的学习任务中没有太大必要,但是在实际应用中很重要。

2.4. 解释器

对于学习路线是数据科学方向,或者说与开发无关的,推荐先使用 Python 自带的 idle 学习最基本的编程,或者也可以先安装 anaconda 集成环境,使用其中的 jupyter notebook,然后可以尝试类似但功能更多的 jupyter lab;此外,anaconda 中还有 spyder,可以体验一下;如果已经对 python 编程比较熟悉,并且对 jupyter 等工具也比较熟悉,可以使用 VSCode 作为最终工具,支持几乎所有编程语言。此处提到的解释器都是免费开源使用。对于有经验并且动手能力比较强的学习者来说,可以直接上手 VSCode。

PyCharm 适合学习路线为开发的学习者使用,否则一概不推荐。PyCharm 有免费版和付费版,区别很大。

2.5. 撰写笔记

推荐使用 obsidian 或者 Typora 等软件整理学习笔记,采用 Markdown 语法编写文档,可以方便地控制标题级别、编写代码片段、插入图片、编写公式等,写起来更方便并且适合在线阅读。目前几乎所有 IT 领域在线资料都是用 Markdown 格式编写,包括本文档。

一旦有一些自己的理解或者想法,建议多做记录。

2.6. 学习资料

仅推荐中国大学 MOOC 中北理工嵩天视频课程,B 站也有相关相同课程。

2.7. 开源学习

Python 大部分资料都是开源的,这意味着不仅是免费的,而且公开该项目的全部信息,包括代码实现等,尤其在人工智能领域,非常注重技术开源。因此我们可以在网上轻松免费获得大部分资料,足够支撑一个普通学习者走到技术前沿,这样的开源环境依赖所有学习者的贡献精神,因此也建议学习者将自己比较好的经验和学习资料在有条件的情况下进行开源,方便后来者学习。

3. 传统机器学习(统计学习)

如果找工作要找数据分析相关的,重点学好统计学习就行了。

4. 深度学习

研究人工智能就必须要研究深度学习。

4.1. 深度学习前沿论文解读

5. 强化学习资料