对于想要入坑人工智能和机器学习领域的本科生而言,应该如何规划自己的四年大学生活,为你将来的职业做好准备呢?本文给出了一个四年制人工智能本科学位设计完整的课程规划,需要的朋友可以仔细看看。
这些课程旨在为人工智能和计算机科学领域的新手,提供广度和深度的知识储备。该课程的灵感主要来自于自己所修的课程,基于个人经验,认为目前想要从事人工智能相关工作,需具备的必不可少的技能。
虽然读者可以通过单个Coursera课程获得一些AI知识,但本文的重点是期望读者对这些概念的实际应用具备深刻理解。毕竟,想要透彻了解一个偏应用的知识点确实是需要时间的。我们从基础开始入手,按照大学四年事时间拆分。
接下来,让我们开始吧。
第一年:建立基础
在获得人工智能学位的第一年,读者应该专注于学习构成计算机科学和现代机器学习基础的核心概念。在这里,假设读者绝对没有计算机科学方面的经验,因此一年中的大部分时间应该花在学习整个学位和职业生涯中需要的所有软件和算法基础知识上。读者应该关注的课程包括:
§ 编程基础知识:介绍面向对象的编程以及数据结构(集合,图形等)。人工智能从业人员需要具有扎实的软件工程技能。相关课程:CS 106B(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/)。
§ 多维微积分:读者应该对函数的梯度有所适应,因为这是反向传播等技术的核心,而反向传播是现代深度学习的主要动力。相关课程:Vector Calculus For Engineers(https://www.coursera.org/learn/vector-calculus-engineers)。
第二年:探索领域,发展系统知识
在人工智能大学本科学习的第二年重点应该放在让自己了解人工智能的一般原理,解决了哪些问题以及如何解决这些问题。此外,读者应该继续加深对与模型构建相关的计算机系统的理解,并练习软件工程和设计原则。为此,建议学习以下课程:
§ 人工智能介绍:涵盖了对不同人工智能领域的广泛调查,例如搜索,游戏,逻辑,图模型,机器学习以及这些算法的应用。这样的课程应该为思想从符号逻辑的方法到统计技术的演变提供历史背景。相关课程:CS 221(https://stanford-cs221.github.io/spring2020/)。
§ 编译原理:涵盖了编译器背后的设计和理论,理想情况下着重于从头开始构建完整的编译器。编译器是读者编写的每个程序的核心,对于人工智能从业者来说,了解它们的工作原理也很重要,这样读者才能成为有能力的工程师。这样的课程将使读者充分了解如何构建复杂的软件系统,重点关注已记录和测试的模块化,结构良好的组件。除此之外,如果读者有兴趣追求将人工智能应用于语言理解,那么编译器的设计与传统自然语言处理堆栈之间的相似之处是不可思议的。相关课程:CS 143(http://web.stanford.edu/class/cs143/)。
§ 数据库简介:涵盖数据库管理系统背后的原理,重点是诸如关系数据模型,索引,架构和事务之类的主题。任何现代数据科学家或机器学习工程师都必须以某种方式与数据库进行交互,因此了解数据库的组织方式至关重要。相关课程:CS 145(https://cs145-fa19.github.io/)。
§ 并行计算:并行计算平台构成了当今众多平台和技术的核心,从Apache Spark到硬件(例如GPU)。一门并行计算课应该介绍这些系统背后的思想,以便读者更加熟练地有效使用它们。相关课程:CS 149(http://cs149.stanford.edu/fall19/)。
§ 操作系统:如果读者想真正地擅长于系统编程并成为一名更熟练的工程师,请参加一个操作系统课程,在该课程中,读者必须从头开始构建操作系统。读者不仅将学习如何设计操作系统,还将学习如何成为有效的调试器和代码争用者。这些基础技能对于读者以后每天必须编写代码的任何未来的人工智能事业来说都是无价的。相关课程:CS 140(http://web.stanford.edu/~ouster/cgi-bin/cs140-spring20/index.php)。
第三年:深入学习高级课程
在本科的第三年,读者应该专注于在机器学习以及统计原理的特定领域应用(包括自然语言处理,大数据分析和计算机视觉)方面进行深入研究。以下是一些推荐的课程:
§ 机器学习:涵盖机器学习的原理,包括有监督和无监督的学习以及模型训练的概念,例如偏差方差折衷,正则化和模型选择。一定要学习这些思想并很好地学习它们,因为人工智能从业者每天都在使用它们。相关课程:CS 229(http://cs229.stanford.edu/)。
§ 凸优化:涵盖解决凸优化问题的思想,并将其应用于统计,机器学习,信号处理和其他领域。尽管当今许多模型使用非凸目标,但了解可处理的优化问题背后的形式主义是有帮助的。相关课程:EE 364A(http://web.stanford.edu/class/ee364a/)。
§ 概率图形模型:涵盖了图形模型范式,该模型范式允许概率性地对大量随机变量集合进行建模。可以使用图形模型来表达诸如计算机视觉和自然语言处理之类的各种应用程序中的许多问题,因此了解这些想法会有所帮助。相关课程:CS 228(https://cs.stanford.edu/~ermon/cs228/index.html)。
§ 数据挖掘:涵盖有关如何处理大型数据集的技术和方法,尤其侧重于推荐系统,集群和大规模监督式机器学习等应用。考虑到每天都会产生大量新数据,对于AI从业者来说,必须能够轻松地大规模地处理和分析数据,尤其是通过使用Spark这样的现代工具包。相关课程:CS 246(http://web.stanford.edu/class/cs246/)。
§ 自然语言处理:介绍使机器理解文本数据的理论和实践。这样的课程应该概述诸如解析和命名实体识别之类的传统自然语言处理中的任务,并讲授如何使用诸如深度学习之类的技术来解决这些任务。相关课程:CS 224N(http://web.stanford.edu/class/cs224n/)。
§ 用于计算机视觉的卷积神经网络:涵盖了现代深度学习体系结构背后的理论,特别是与构建计算机视觉模型有关的理论。在当今的人工智能领域中,神经网络具有扎实的基础对于成功至关重要。相关课程:CS 231N(http://cs231n.stanford.edu/)。
第四年:实战经验至关重要
本科第四年唯一重点应该全是练习,练习,练习!到开始的头三年,读者将对低级计算机科学和软件工程原理以及人工智能概念及其应用背后的理论有深入的了解。在这一点上,想花点时间试试手了。
找到读者感兴趣的问题,获取现有数据集(或开发自己的数据集),然后开始构建模型。了解数据处理,假设检验和错误分析的细微差别。了解如何对模型进行故障排除。
成为专业的人工智能专家需要将读者学到的所有原理付诸实践。以下是一些如何尽可能多地练习的选项:
§ 参加项目课程:一些大学提供课程,读者在课程的整个过程中严格解决问题空间中的单个项目。这些课程非常好,因为读者有时间真正深入研究项目的所有复杂性。我想到的此类课程的一个示例是CS 341(http://web.stanford.edu/class/cs341/)。
§ 参与研究:进行研究是一种获得人工智能所有复杂工作经验的惊人方式。提供帮助研究生完成读者感兴趣的项目,或请教职指导者赞助读者自己的项目!通过这样做,读者将可以很好地了解从事人工智能项目时的日常情况。
§ 进行企业实习:如果读者的日程允许,请考虑放学一段时间在一家面向人工智能的公司实习。许多公司提供3到6个月的实习机会,在这些实习中,读者可以接触到所学原理的实际应用。如果读者打算在毕业后马上进入行业,那么没有更好的方法来体验数据科学家或机器学习工程师的工作。
至此,读者已经完成了为期4年的本科课程,旨在为读者在机器学习或数据科学领域的成功做好准备!值得一提的是,上述所有课程并非严格必要。
另一种方法是遍历以上课程规划,并选修课程来填补读者自己的概念/技能空白。尽管有很多东西要学习,但现在是一个激动人心的时刻,需要无数机会和有希望的问题空间参与人工智能。祝好运!