离开学校一段时间后,我有很多时间反思某些课程对我在人工智能和机器学习领域的职业生涯做了多好的准备。我最终决定把我的想法放在页面上,为一个4年制的人工智能本科学位设计一套完整的课程。
这些课程旨在为人工智能和计算机科学领域的新手提供广度和深度。这门课程在很大程度上受到了我所学课程的启发,反映了我认为在今天的人工智能职业生涯中取得成功所必需的技能。
虽然您可能能够通过一门Coursera课程获得一些人工智能知识,但我在这里强调的是发展对这些概念的深入概念理解和实际应用。彻底理解一个领域确实需要时间。捷径不起作用,这就是为什么这份清单是为那些想要有条不紊地从基础做起的人准备的。
在你攻读人工智能学位的第一年,你应该专注于学习计算机科学和现代机器学习的核心概念。在这里,我假设完全没有以前的计算机科学经验,所以一年中的很大一部分时间应该花在学习你整个学位和职业生涯中需要的所有软件和算法基础知识上。您应该重点学习的课程包括:
编程基础:介绍面向对象的编程以及数据结构(集合、图形等)。人工智能从业者需要具备扎实的软件工程技能。相关课程:CS106B。
计算机系统入门:讲授如何从低级的角度设计和构建计算机科学系统。这里的重点是学习软件编译过程,当您执行计算机程序时会发生什么,以及程序在内存中是如何组织的等等。相关课程:CS107。
算法:介绍广泛使用的计算机科学算法(如广度优先搜索和动态编程)背后的数学和理论,以及如何分析这些算法的内存和运行时特征。相关课程:CS161。
概率论:概率和统计构成了许多机器学习算法的核心,学习如何解释和分析数据对任何机器学习或数据科学事业都将是至关重要的。相关课程:CS109。
线性代数:介绍如何处理矩阵和向量、解线性方程和应用最小二乘法。这些数学基础被广泛用于机器学习。相关课程:EE 103。
多维微积分:你应该适应函数的梯度,因为这是像反向传播这样的技术的核心,而反向传播是现代深度学习的主要工具。相关课程:面向工程师的矢量微积分。
你在人工智能本科二年级的重点应该是让自己接触人工智能的一般原理,已经解决了哪些问题,以及如何处理这些问题。此外,您应该继续了解与模型构建相关的计算机系统,并练习软件工程和设计原则。为此,推荐使用以下课程:
人工智能导论:涵盖不同人工智能领域的广泛调查,如搜索、游戏、逻辑、图形模型和机器学习以及这些算法的应用。这样的课程应该为思想从符号逻辑等方法到统计技术的演变提供历史背景。相关课程:CS221。
编译器:介绍编译器背后的设计和理论,理想情况下重点是从头开始构建一个功能齐全的编译器。编译器是你编写的每个程序的核心,即使对人工智能从业者来说,了解它们是如何工作的也很重要,这样你才能成为称职的工程师。这样的课程将让您很好地了解如何构建复杂的软件系统,重点放在经过记录和测试的模块化、架构良好的组件上。除此之外,如果您对将人工智能应用于语言理解感兴趣,编译器的设计与传统的自然语言处理堆栈之间的相似之处是不可思议的。相关课程:CS143。
数据库简介:介绍数据库管理系统背后的原则,重点介绍关系数据模型、索引、模式和事务等主题。任何现代数据科学家或机器学习工程师都必须在一定程度上与数据库交互,因此了解它们是如何组织的是至关重要的。相关课程:CS145。
并行计算:并行计算平台构成了当今众多平台和技术的核心,从Apache Spark到GPU等硬件。并行计算的课程应该介绍这些系统背后的思想,这样您就可以更熟练地有效地使用它们。相关课程:CS149。
操作系统:如果你想真正擅长系统编程,并成为一名更熟练的工程师,那就选修一门操作系统课程,在这门课程中,你必须从头开始构建操作系统。您不仅将学习操作系统是如何设计的,而且还将学习如何成为一名有效的调试器和代码辩护者。这些基础技能在任何未来的人工智能职业生涯中都将是无价的,因为你必须每天编写代码。相关课程:CS140。
在你的第三年,你应该专注于增加机器学习的深度,以及统计原理的特定领域应用,包括自然语言处理、大数据分析和计算机视觉。以下是几门推荐的课程:
机器学习:涵盖机器学习的原则,包括监督和非监督学习,以及模型训练概念,如偏差-方差权衡、正则化和模型选择。一定要学习这些想法,并学好它们,因为人工智能从业者每天都在使用它们。相关课程:CS229。
凸优化:介绍解决凸优化问题背后的思想,并将其应用于统计、机器学习、信号处理和其他领域。虽然现在许多模型都使用非凸目标,但理解易处理的优化问题背后的形式主义是很有帮助的。相关课程:EE364A。
概率图形模型:涵盖图形模型范例,该范例允许以概率方式对大量随机变量集合进行建模。计算机视觉和自然语言处理等各种应用中的许多问题都可以用图形模型来表示,因此了解这些思想是很有帮助的。相关课程:CS228。
数据挖掘:介绍如何处理大型数据集的技术和方法,特别关注推荐系统、集群和大规模有监督的机器学习等应用程序。考虑到每天产生的新数据量,人工智能从业者必须习惯于大规模操作和分析数据,特别是通过使用像Spark这样的现代工具包。相关课程:CS246。
自然语言处理:介绍让机器理解文本数据背后的理论和实践。这样的课程应该概述传统自然语言处理中的任务,如解析和命名实体识别,并教授如何使用深度学习等技术处理这些任务。相关课程:CS224N。
用于计算机视觉的卷积神经网络:涵盖现代深度学习体系结构背后的理论,特别是与构建计算机视觉模型相关的理论。拥有坚实的神经网络基础是在当今人工智能领域取得成功的关键。相关课程:CS231N。
你四年级的游戏名称应该是练习,练习,练习!到你读完头三年的课程时,你将对低级计算机科学和软件工程原理以及人工智能概念及其应用背后的理论有了扎实的理解。在这一点上,你想花时间弄脏你的手。
找到您感兴趣的问题空间,获取现有数据集(或开发您自己的数据集),然后开始构建模型。了解数据操作、假设测试和错误分析的细微差别。了解如何对模型进行故障排除。
成为一名有效的人工智能专家需要将你学到的所有原则付诸实践。以下是如何尽可能多地练习的几个选择:
以项目课程为例:有些大学提供课程,你可以在整个课程期间严格地解决问题空间中的单个项目。这些课程很不错,因为您有时间真正深入了解项目的所有复杂性。我脑海中浮现出这样一个课程的例子就是CS 341。
参与研究:做研究是亲身体验人工智能工作所有错综复杂的实践经验的一种非凡方式。主动提出帮助研究生做你感兴趣的项目,或者请教师导师赞助你自己的项目!通过这样做,您将很好地接触到从事人工智能项目时的日常情况。
做一次行业实习:如果你的日程安排允许,可以考虑从学校抽出一些时间去一家以人工智能为导向的公司实习。许多公司提供为期3-6个月的实习机会,让你接触到你学到的原则在现实世界中的应用。如果你计划放学后立即进入行业,那么没有比这更好的方式来体验数据科学家或机器学习工程师的工作了。
有了这些,您已经完成了一个全面的4年课程,旨在为您在机器学习或数据科学职业生涯中取得成功做好准备!值得一提的是,不一定要经过以上所有课程。
另一种方法是通读上面的列表,然后参加课程来填补你自己的概念/技能差距。虽然有很多东西需要学习,但现在是参与人工智能的令人兴奋的时刻,有无数的机会和有前途的问题空间。祝好运!