学 AI 该学哪些斯坦福 CS 课程,这个清单安排得明明白白

共 4694字,需浏览 10分钟

 ·

2020-08-20 08:17


By 超神经


内容概要:斯坦福大学的计算机本硕毕业生 Mihail Eric,梳理了人工智能专业所需要的基础课程和专业课程,并将其整理成四年的学习清单分享出来。


关键词:网课分享 斯坦福AI课程



自 2011 年,MIT 和斯坦福大学首次将课程发布至线上,至今已经有数百所学校的上千门课程,免费对全球公众开放。


其中斯坦福大学计算机类的课程以优质、全面、前沿受到全球终生学习者的认可。


近期一位本科与研究生均毕业于斯坦福大学计算机专业的小哥哥 Mihail Eric,梳理了一份课程清单。清晰分配了这些课程在四年学习中的顺序,介绍了基本内容。完成这些课程,相当于完成了人工智能本科学位所需要的课程。


 曾任斯坦福助教,热爱知识分享


Mihail Eric 在 2012 年进入斯坦福大学就读计算机专业本科,2016 年继续就读计算机硕士,期间加入了斯坦福大学著名的 NLP 小组,还担任过自然语言处理课程(CS 224N)和概率与统计学入门(CS 109)的助教


Mihail Eric 也会在 Twitter 上分享学习经验

https://twitter.com/mihail_eric


现在 Mihail 就职于亚马逊的 Alexa AI 部门,担任数据科学家。


Mihail 表示这个课程清单,主要受到他在斯坦福本硕期间所学习的课程印象和体会,以及他工作中对于人工智能学科学习的理解。所以这份课程清单,会更适用于想从基础理论开始系统学习的人。


 自学第一年:夯实计算机基础知识


在完成人工智能学位的第一年,应该聚焦于计算机科学和现代机器学习基础的核心概念。针对没有计算机学科基础或基础不扎实的同学。


这一年的主要精力应该花在学习软件和算法基础上,这些知识将贯穿这四年的学习和整个职业生涯,课程安排:


程序设计基础 

课程代码:CS 106B


CS 106 是斯坦福计算机课程中的经典课程,内容包括面向对象程序设计、数据结构(集合、图等)知识,这些都是人工智能从业者需要的基础软件工程技能。


课程地址:http://web.stanford.edu/class/cs106b/


计算机系统导论 

CS 107


从底层角度来思考计算机科学系统是如何设计和构成的。其中,课程重点在于学习软件编译过程,当你运行程序时会发生什么,在内存中程序是如何组织的等。


课程地址:http://web.stanford.edu/class/cs107/


算法设计与分析 

CS 161


该课程涵盖广泛使用的算法背后的数学和理论,比如广度优先遍历、动态规划,以及如何分析那些算法的内存和运行时特点。


课程地址:http://web.stanford.edu/class/cs161/


概率论 

CS 109


概率统计是许多机器学习算法的核心,学习如何解释和分析数据,对于任何机器学习或大数据科学的领域来说 ,都是至关重要的。


课程地址:http://web.stanford.edu/class/cs109/


线性代数 

EE 103


涵盖如何运用矩阵和向量,解线性方程,应用最小二乘法。这些数学基础知识在机器学习领域都被广泛使用。


课程地址:http://web.stanford.edu/class/ee103/


多维微积分 

math 51


这门课可以帮助你轻松地解开函数梯度,因为这是反向传播等深度学习主力算法的核心技术


课程地址:http://web.stanford.edu/class/math51/cgi-bin/51.php

(超神经备注:2020 学期开设的相关课程有调整,推荐包含线性代数内容的 math51)


 自学第二年:深入开发系统知识 


人工智能本科二年级学生的重点应该是让自己了解人工智能的一般原理,和解决的问题是什么,以及是如何解决的。


此外,应该继续理解与模型构建相关的计算机系统知识,并实践软件工程和设计原则。为此,建议学习以下课程:


人工智能导论 

CS 221


涵盖了不同的人工智能领域的广泛概述,如搜索、游戏、逻辑、图形模型、机器学习和这些算法的应用。这样的课程为从符号逻辑,到统计技术等方法的思想演变提供历史背景。


课程地址:https://stanford-cs221.github.io/spring2020/


编译器

CS 143


这门课的课程名称言简意赅:Compilers!


涵盖编译器背后的设计和理论,实践从零构建一个完整的编译器。


编译器是编写的每一个程序的核心,即使对人工智能从业者来说,理解它们的工作原理也是很重要的,这样你才能成为能力更全面的工程师。


这样的课程将让你了解如何构建一个复杂的软件系统,着重于模块化的、经过文档化和测试的、架构良好的组件。除此之外,如果你对自然语言理解的人工智能感兴趣,编译器的设计和传统自然语言处理堆栈之间的共通特性是很有趣的。


课程地址:http://web.stanford.edu/class/cs143/


数据库导论

CS 145


内容包括:数据库管理系统背后的原理,重点诸如关系数据模型、索引、模式和事务等部分。任何现代数据科学家或机器学习工程师,都必须在某种程度上与数据库交互,因此了解它们的组织架构方式至关重要。


课程地址:https://cs145-fa19.github.io/


并行计算 

CS 149


并行计算平台构成了当今许多平台和技术的核心,从 Apache Spark 到 GPU 等硬件。并行计算的课程介绍系统背后的思想,以便你更熟练地有效地使用它们。


课程地址:http://cs149.stanford.edu/fall19/


操作系统 

CS 140


如果你想真正擅长系统编程,成为一个更熟练的工程师,那就去上一门操作系统课程,在这门课程中,你必须从头开始构建一个操作系统。不仅将学习如何设计操作系统,还将学习如何成为一名精通 Debug 代码的程序员。在未来的人工智能职业中,这些基本技能将是非常有意义的。


课程地址:http://web.stanford.edu/~ouster/cgi-bin/cs140-spring20/index.php


 自学第三年:深入探索进阶课程


在第三年,应该专注于深入学习机器学习以及统计原理的特定领域应用,包括自然语言处理、大数据分析和计算机视觉。以下是一些推荐的课程:


机器学习 

CS 229


涵盖机器学习的基础理论,包括监督和非监督学习和模型训练概念,如偏方差权衡、正则化和模型选择。一定要学习这些理论并把它们学好,因为人工智能从业者每天都在使用它们。


课程地址:http://cs229.stanford.edu/


凸优化 

EE 364A


Convex Optimization,这门课涵盖解决凸优化问题背后的思想与应用到统计、机器学习、信号处理和其他领域。虽然现在许多模型使用非凸目标,但这有助于理解可处理优化问题背后的形式。


课程地址:http://web.stanford.edu/class/ee364a/


概率图模型 

CS 228


课程内容包括介绍图模型范式,它允许对随机变量的大量集合进行概率建模。计算机视觉和自然语言处理等各种应用中的许多问题,都可以用概率图模型来表达,因此了解这些知识是有帮助的。


课程地址:https://cs.stanford.edu/~ermon/cs228/index.html


数据挖掘 

CS 246


课程包括如何处理大数据集的技术和方法,尤其侧重于推荐系统、聚类和大规模监督机器学习等应用领域。


鉴于每天都会产生大量新数据,人工智能从业者必须适应大规模操作和分析数据,特别是通过使用 Spark 这样的现代工具包。


课程地址:http://web.stanford.edu/class/cs246/


自然语言处理 

CS 224N


介绍如何让机器理解文本数据背后的理论和实践。这样的课程介绍诸如解析、命名实体识别之类的传统自然语言处理中的任务,并讲授如何使用诸如深度学习之类的技术来解决这些任务。


课程地址:http://web.stanford.edu/class/cs106b/


面向视觉识别的 CNN

CS 231N


《Convolutional Neural Networks for Visual Recognition》这门课,包含了现代深度学习体系结构背后的理论,尤其是与构建计算机视觉模型有关的理论。在当今的人工智能领域中,想要获得成功,拥有扎实的神经网络基础至关重要。


课程地址:http://cs231n.stanford.edu/


 自学第四年:实践!实践!实践!


第四年的课程就是实践、实践、再实践!


重要的事情说三遍,在你完成你的头三年课程的时候,你对初级计算机科学和软件工程原理,以及人工智能概念及其应用理论有了深入了解。所以,你需要多花时间动动手。


找到感兴趣的研究领域,获取现有数据集(数据集下载站推荐 https://hyper.ai 或开发自己的数据集),然后开始构建模型。学习数据处理、假设检验和错误分析的细微差别。学习如何对模型进行故障排除。


想要成为一名人工智能领域的专家,那需要将你所学到的所有原则付诸实践。下面是一些如何尽可能多实践的方法:


参加校内项目 

作者举例:CS 341


一些大学会开设一些实践课程,在这些课程中,你可以在整个课程期间深入地处理一类问题中的单个项目。真正深入研究项目的所有复杂性,我想到的一个课程是 CS 341。


课程地址:http://web.stanford.edu/class/cs341/

超神经备注作者推荐的 CS 341 课程,与大三推荐课程 CS246 数据挖掘内容相关,可互为辅修。


投身科研项目 

线下组织或技术社区


参与研究是获得人工智能工作中,所有错综复杂的实践经验的一种十分有效的方式。主动帮助研究生完成你感兴趣的课题,或者请求老师资助你自己的课题!通过这样做,你会很好地了解从事人工智能课题时的日常工作情况。 



进入行业实习 

内推或海投简历


如果你的时间安排允许,可以考虑从学校请假到一家人工智能公司实习。许多公司都提供 3-6 个月的实习机会,让你接触到所学原理的实际应用。如果你打算毕业后马上就进入工业界,那么没有更好的方式来体验数据科学家或机器学习工程师的工作。



至此,已经完成了一个完整的四年课程的规划,为未来成功的机器学习或数据科学的职业生涯准做好了准备!不过,上述所有课程并非必须学习。


比如,结合自身情况比对列表,并选修有关课程来填补自己的知识或技能空白。虽然有很多东西要学习,但现在正是参与进 AI 大潮的重要时刻,研究领域广阔,机会无限,未来大有可为。


1. 人人都能看懂的 6 种限流实现方案!

2. 一个空格引发的“惨案“

3大型网站架构演化发展历程

4Java语言“坑爹”排行榜TOP 10

5. 我是一个Java类(附带精彩吐槽)

6. 看完这篇Redis缓存三大问题,保你能和面试官互扯

7. 程序员必知的 89 个操作系统核心概念

8. 深入理解 MySQL:快速学会分析SQL执行效率

9. API 接口设计规范

10. Spring Boot 面试,一个问题就干趴下了!



扫码二维码关注我


·end·

—如果本文有帮助,请分享到朋友圈吧—

我们一起愉快的玩耍!



你点的每个赞,我都认真当成了喜欢

浏览 77
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报