最近,一位在行业内工作了几年的斯坦福人工智能毕业的专业人士为自己的人工智能和机器学习的职业生涯,设计一个完整的 4 年制人工智能本科学位基础课程。
如今他把这个课程分享出来,希望可以为人工智能和计算机科学领域的新手提供帮助。
第一年:打好基础
在取得人工智能学位的第一年,你应该专注于学习计算机科学和现代机器学习基础的核心概念,在这部分课程里,就是专门为没有计算机科学方面的经验的人准备的。第一年的大部分时间应该花在软件和算法基础知识上,你应该关注的课程包括:
编程基础知识:介绍面向对象的编程及数据结构。人工智能从业人员需要具有扎实的软件工程技能。
相关课程:https://web.stanford.edu/class/cs106b/
计算机系统概论:从初级的角度学习计算机科学系统的设计和结构。这里的重点是学习软件编译过程,执行计算机程序时会发生什么,以及如何在内存中组织程序。
相关课程:http://web.stanford.edu/class/cs107/
算法:涵盖了广泛使用的计算机科学算法(例如广度优先搜索和动态编程)背后的数学和理论,以及如何分析这些算法的内存和运行时特性。
相关课程:https://stanford-cs161.github.io/winter2021/
概率论:概率论和统计学构成许多机器学习算法的核心,学习如何解释和分析数据对于任何机器学习或数据科学事业都是至关重要的。
相关课程:http://web.stanford.edu/class/cs109/
线性代数:介绍如何处理矩阵和向量,求解线性方程式以及应用最小二乘法,这些数学基础广泛应用于机器学习。
相关课程:https://stanford.edu/class/engr108/
多维微积分,调试函数的梯度,反向传播以及机器学习,这些都是经常用到的。
相关课程:https://www.coursera.org/learn/vector-calculus-engineers
第二年:探索阶段,发展系统知识
在人工智能大学本科学习的第二年重点应该在了解人工智能的一般原理,以及如何解决这些问题,此外,你应该继续加深对模型构建相关的计算机系统的理解,并练习软件工程和设计原则。这部分建议的课程如下:
人工智能简介:该课程涵盖了对不同人工智能领域的广泛调查,比如搜索,游戏,逻辑以及图像还有机器学习算法的应用。
相关课程:https://stanford-cs221.github.io/spring2020/
编译器:此课程涵盖了编译器背后的设计和理论,理想情况下着重于从头开始构建完整的编译器。编译器是你编写的每个程序的核心,对于人工智能从业者来说,了解它们的工作原理也很重要,这样你才能成为有能力的工程师,这样的课程将是你充分了解如何构建复杂的软件系统,重点关注编译器的模块化组件,除此之外,如果你有兴趣追求将人工智能应用于语言理解,那么编译器的设计和传统的自然语言处理堆栈之间的关系是很微妙的。
相关课程:http://web.stanford.edu/class/cs143/
数据库导论:介绍数据库管理系统背后的原理,重点介绍关系数据模型、索引、模式和事务等主题。任何现代数据科学家或机器学习工程师都必须学会如何与数据库交互,因此了解他们是至关重要的。
相关课程:https://cs145-fa19.github.io/
并行计算:从Apache Spark到gpu等硬件,并行计算平台构成了当今许多平台和技术的核心。这门课程会介绍这些系统背后的思想,这样你就能更熟练有效地使用它们。
相关课程:http://cs149.stanford.edu/fall19/
操作系统:如果你想真正掌握系统编程,成为一名熟练的工程师,那就去上一门操作系统课程,在这个课程中,你将从零开始构建一个操作系统,你不仅将学习如何设计操作系统,还将学习如何成为一名优秀的代码管理员,这些基本技能在你未来任何需要写代码的职业生涯中都是无价的。
相关课程:http://web.stanford.edu/~ouster/cgi-bin/cs140-spring20/index.php
第三年:开始高级课程学习
在第三年,你应该专注于深入学习机器学习,以及统计原理在特定领域的应用,包括自然语言处理、大数据分析和计算机视觉。以下是一些推荐的课程:
机器学习:涵盖机器学习的原理,包括监督和非监督学习和模型训练相关概念,比如偏差、方差,正则化以及模型选择,这部分一定要学习,因为它们每天都需要被人工智能从业者用到。
相关课程:http://cs229.stanford.edu/
凸优化:涵盖了统计、机器学习、信号处理和其它使用凸优化的领域,虽然现在许多模型都使用非凸优化,但是了解易于处理的优化问题背后的逻辑是有帮助的。
相关课程:http://web.stanford.edu/class/ee364a/
概率图模型:涵盖了图模型范式,它允许对大量随机变量的概率集合进行建模。在计算机视觉和自然语言处理等各种应用程序中,许多问题都可以使用图模型来表示,因此了解这些思想是有帮助的。
相关课程:https://cs.stanford.edu/~ermon/cs228/index.html
数据挖掘:涵盖如何处理大型数据集的技术和方法,重点关注推荐算法、聚类以及大规模的数据集计算与分析,考虑到每天产生的新数据量,AI从业者必须能够熟练地操作和分析数据,特别是通过使用Spark等现代工具包。
相关课程:http://web.stanford.edu/class/cs246/
自然语言处理:介绍了如何让机器懂得文本数据的理论和时间,这样的课程应该提供传统自然语言处理任务的概述,如解析等,并教你如何使用深度学习等技术处理这些任务。
相关课程:http://web.stanford.edu/class/cs224n/
基于CV的卷积神经网络:涵盖了现代深度学习体系结构背后的理论,特别是关于构建计算机视觉模型的理论。拥有扎实的神经网络基础对当下的人工智能领域相当重要。
相关课程:http://cs231n.stanford.edu/
第四年:实践经验必不可少
第四年你应该要练习、练习、再练习,通过前三年的学习,你已经对计算机系统和人工智能概念、应用有了清楚的理解,因此,接下来你应该找到自己感兴趣的问题和方向,获取现有数据集(或开发自己的数据集),并开始构建模型。学习数据操作、假设检验和错误分析的细微差别,学习如何对模型进行故障排除。
要想成为一名高效的人工智能专家,你需要把学到的所有理论付诸实践,下面是一些如何获得实践的方法:
参加项目课程:有的学校会提供这类课程,在这门课里,你需要深入研究整个项目的情况。该课程就属于这种类型。
相关课程:http://web.stanford.edu/class/cs341/
参与研究:做研究是一种十分高效的方式,可以让你在复杂的人工智能工作中获得实际经验。帮助研究生完成你感兴趣的项目,或者让导师赞助你自己的项目。通过这种方式,你将获得大量的机会了解当下人工智能从业者的日常工作是怎样的。
做一份行业内实习:如果时间允许,考虑从学校请假一段时间,到一家人工智能公司实习,可以是3-6个月,在那里你可以接触到你所学的理论知识是如何在现实世界中应用的,如果你打算一毕业就进入该行业,没有什么比这种方式更好的了。
至此,你已经学完了一个完整的思念课程设计,可以说已经为你在机器学习或数据科学职业生涯奠定了基础。通过上面的列表,参加课程来填补你自己的概念/技能空白。虽然有很多东西需要学习,但是只要你对人工智能感兴趣,相信这都不断什么。