Lec1.2 Course info and logistics
Course Instructor

好的,既然说了那么多,接下来让我稍微介绍一下这门课程的一些更为枯燥的信息,以及这门课程的后勤安排。
首先,让我来介绍一下我和我的联合教师天奇。我是卡内基梅隆大学的教职成员,自2012年以来一直在那里工作。除了在工业界或卡内基梅隆大学工作外,我还在工业界做了相当多的工作。我曾在一家叫做C3 AI的公司工作过。现在我是Bosch的首席AI研究科学家,在Bosch AI中心工作。我的学术研究重点是深度学习中的很多新算法和新方法。因此,我在对抗攻击的鲁棒性方面做了很多工作,尤其是针对对抗攻击的认证和可证明的防御措施。我也在所谓的隐含层方面做了很多工作,这些层不仅仅是通过一些传统操作的堆叠形成的,而是通过解决更复杂的运算符,如优化问题或不动点方程,来形成这些层,并且可以通过解析方式进行微分。事实上,按照当前的课程安排,如果有时间的话,我们将在这门课程的最后一节课上讲解隐含层的内容,当然,我们将使用我们自己的框架来实现。
我也是PyTorch的早期使用者之一,我引以为傲的一个方面是,我们是最早发布针对PyTorch的第三方库的团队之一。其中一个我的骄傲是,作为我们发布优化层的努力的一部分,这是一种在深度网络中解决优化问题的层,例如二次规划等,我写了一个CUDA核心作为PyTorch的一部分,它可以批处理并行求解多个线性系统,作为我们优化求解器的一个步骤。真正引以为傲的是,在这个过程中,我似乎犯了一个错误,没有按照PyTorch假设的矩阵跨度进行标准化,我在PyTorch的线性求解器中引入了一个错误,我认为这个错误持续了一年,每个人都感到很困惑,不知道为什么这个线性求解器有时候会随机崩溃。所以,这就是我的成名之作,我想,很遗憾。

另一个教师有些不同。陈天奇也是卡内基梅隆大学的教职成员。除此之外,他还在工业界有所涉足,是OctoML公司的联合创始人,该公司现在为TVM库提供了很多支持和开发。但他真正引以为傲的是以下事情。所以我在这里给他做个介绍,以适当地让他有些尴尬。在深度学习系统或整个机器学习系统中,真正有三个大的领导者。当然,有Google发布的TensorFlow、JAX和许多其他库;Facebook的PyTorch,还有像时间序列库Prophet等;然后就是田奇了。田奇是XGBoost的原始开发者之一,这是最常用的梯度提升库之一,仍然是最广泛使用的表格数据库之一。他还是MXNet库的首席开发人员,这是另一个像PyTorch和TensorFlow一样的深度学习框架。最近,他还是Apache TVM库的创始开发人员和核心开发人员之一。所以他在整个机器学习系统中做了很多令人惊讶的事情,我非常高兴能够和他一起教授这门课程。

因此,在我进入本课程的详细内容和讲座之前,我想先做一个免责声明,我认为有必要在这里说一下。
我所说的是,我们第一次在线上提供这门课程。我们以前从未这样做过,而且课程中的很多材料,特别是作业,这是这门课程中最复杂的部分,正在进行重新设计。这实际上正在进行中,即使是对于CMU版本,也正在进行重新设计,然后在测试版本之后不久,你们就会收到作业。
但是,像往常一样,会有漏洞存在于内容、作业,或者只是我们运营事务的逻辑中。这是我们第一次在线上开设这门课程,肯定会出现问题,可能会有一些波折,希望大家谅解。
有句话说,“一分钱一分货”,对吧?这门课程是免费的,我们希望人们能够参加,并且希望这些材料能够公开。但是,我们是自己制作的,我们自己在组织这门课程,因此其中会有漏洞。
因此,在此提前向大家致歉,请谅解我们。我们将尽最大努力解决这些问题,并在需要时延长截止日期以考虑这些漏洞,但它们将存在,我们感谢大家作为这门课程的测试者,帮助我们创建它。
因此,参加在线课程的乐趣之一就是,你成为了这个课程的测试者。

好的,现在是学习目标,你会在这门课程中学到什么?
如果你完成整个课程,做完所有作业和最终项目,那么在课程结束时,你将了解现代深度学习库的基本功能,包括自动微分和基于梯度的优化等算法方面的概念。你将能够从头开始实现几种标准的深度学习架构,例如多层感知器、卷积神经网络、循环神经网络或长短期记忆网络、各种类型的RNN和变形金刚网络。你还将了解和实现硬件加速如何在底层工作,并能够开发自己高效的代码。
但需要强调的是,它不会像PyTorch或TensorFlow这样的库那样高效。在代码优化方面,最优化的最佳结果与你用2000行代码可以做到的仍然有很大的差距。因此我们不会打破任何速度记录,但你将能够创建在合理的中等大小数据集上工作的库,例如CIFAR,而且完全使用GPU从头开始完成,具有自动微分、优化器等特性。

课程网站是dlsyscourse.org,上面提供了所有信息并会列出课程的所有讲座。你可以查看课程主题的时间表以了解你将学习什么。需要强调的是,这里列出的时间表至少是CMU课程的时间表,比在线版本提前两周。但我们将在在线讲座可用时发布在线讲座的日期和视频,并且它将遵循与CMU课程相同的结构。实际上,只有本讲座的幻灯片稍有不同,因为在线课程和CMU课程的日程安排有所不同。但除此之外,课程时间表将遵循CMU课程和在线课程之间相同的时间表,而时间表已经在网站上了。它介绍了一些主题,例如覆盖机器学习的背景和基础知识、自动微分、不同类型的架构等。你会看到很多讲座被分为算法讲座和实现讲座,算法讲座涵盖解决某个问题或实现某个深度学习任务的方法论算法或技术,而实现讲座则会实际实现一些部分或带领你进行一些简单的实时编码,以展示实践中的具体操作。

现在,关于参加这门课程,你需要了解哪些先决条件呢?
实话说,为了最大限度地受益于这门课程,你应该具备一些合理的先决条件。
这并不是说如果你没有这些条件,就无法学习这门课程。
如果你真的对这门课程很感兴趣,想要在学习的过程中了解一些这些条件,你是可以的,只是要知道这需要更多的努力。
参加这门课程,你应该具备一些系统编程的背景,这意味着基本的C++编程知识,如何编译代码,如何编译可执行代码而不是仅仅运行Python脚本,可以将代码原生地运行在硬件上。
你应该熟悉向量和矩阵符号的线性代数知识。
所以没有数学,我在这个讲座中提到过,但是以后的讲座将需要,我将写一些矩阵和向量相乘的东西。我会做像取梯度或者求导这样的事情,你应该知道这是什么意思,或者对此有一些了解。
以及基本证明,现在我们在这门课程中不会做很多证明,这是一门系统课程,但你应该熟悉如何通过数学推导一些基本的结构,如何求导等等。
你需要一些Python和C++开发背景,一个常见的问题是,你需要多少C++背景?答案是,我认为不需要太多,我们没有使用C++的任何高级功能,我们甚至没有使用C++11或C++20等。
实际上只是C++和一些类。你应该知道如何快速编写矩阵乘法调用的模板,这个模板会接受一堆浮点指针和const浮点指针等等。这些矩阵的大小,指针指向矩阵的底层数据,在C++中可能存在索引错误,导致程序崩溃,你应该知道如何快速修复这些问题,使用调试器或printf语句进行调试。
Python,你也应该熟悉Python中的类等,因为你将在Python中实现这个库的大部分结构。
但是C++确实是底层背景。
你不需要事先了解CUDA编程,我们将覆盖课程所需的内容,但你需要理解基本的C++编程。
最后,你需要有机器学习方面的先前经验。
Last updated