CS230 深度学习课程摘要

第二堂课 | 主讲人:Keon Katon Fuj | 核心概念与实战案例解析

核心事实 (Fact)
专家洞见 (Insight)
课程介绍与核心理念
  • 本课程旨在连接学术理论工业界实践,讲师会引入大量行业案例,帮助学生理解AI项目中的决策过程。
  • 课程涵盖的主题包括:AI项目决策、对抗性攻击与防御、深度强化学习 (Deep Reinforcement Learning)、检索增强生成 (RAG)、AI智能体 (AI Agents) 等。
  • 学习目标是让学生不仅掌握技术,更能像业内研究员和工程师一样,具备解决实际问题的决策能力。
第一周回顾:深度学习基础
训练循环
神经元与网络
特征学习
  • 监督学习 (Supervised Learning) 的基本流程是:输入 (X, 如图像) -> 模型 -> 输出 (Y, 如标签)。模型由架构 (Architecture)参数 (Parameters) 组成。
  • 模型通过梯度下降 (Gradient Descent) 进行优化学习。首先,模型做出预测;然后,损失函数 (Loss Function) 比较预测值与真实值 (Ground Truth),计算出一个“惩罚值”;最后,通过反向传播更新模型参数,使损失最小化。
  • 设计一个好的损失函数是一门艺术。优秀的深度学习研究者在设计损失函数方面非常有创造力,例如YOLO算法就有一个非常巧妙的损失函数。
  • 单个神经元可以看作是一个逻辑回归 (Logistic Regression) 单元,它包含线性部分 (w^T * x + b) 和非线性激活函数 (Activation Function),如 Sigmoid。
  • 对于多分类问题(如识别猫、狗、长颈鹿),需要修改输出层,使用多个神经元,并采用 One-HotMulti-Hot 向量作为标签。
  • 项目中最常见的错误之一是:增加了新的数据类别,但忘记相应地调整标签格式。
  • 深度神经网络的浅层倾向于学习低级特征(如边缘、颜色块),而深层则学习组合这些特征,形成高级、复杂的特征(如眼睛、鼻子,乃至整个面部轮廓)。
  • 深度学习的核心优势在于特征学习 (Feature Learning),即模型自动从数据中学习有效特征,而无需像传统方法那样进行手动的特征工程 (Feature Engineering)
  • 嵌入 (Embedding) 是一种特殊的编码 (Encoding)。它是一种向量表示,其中向量之间的距离具有实际意义(例如,相似概念的向量在空间中更接近)。
案例一:白天/黑夜图像分类
  • 问题定义:给定一张图片,判断是白天还是黑夜。这是一个典型的二元分类问题。
  • 明确任务边界至关重要。是只针对特定地点的固定摄像头,还是适用于全球任何地方的任意图片?任务的复杂性直接决定了所需数据的多样性和数量,以及模型的容量。
  • 输入决策:图像分辨率的选择是一个权衡。分辨率太低会丢失关键信息(如时钟),太高则会增加计算成本和训练时间。
  • 一个快速确定最低可用分辨率的方法是以人为基准 (Human Proxy):将图片降采样到不同分辨率,观察人类在哪个分辨率下开始无法完成任务。对于此案例,64x64x3 (RGB) 的分辨率被认为是合适的。
  • 模型选择:对于这个相对简单的任务,一个浅层的卷积神经网络 (CNN) 就足够了。输出层的激活函数使用 Sigmoid,损失函数使用二元交叉熵损失 (Binary Cross-Entropy Loss)
案例二:触发词检测 (如 "Activate")
  • 问题定义:在一段10秒的音频中,实时检测到关键词“Activate”的出现。这是一个序列标注问题。
  • 数据收集策略:为了让模型具有鲁棒性,需要收集多样化的数据,覆盖不同的口音、年龄、性别、语速背景噪音。仅仅在大学校园里收集数据是远远不够的。
  • 数据合成与自动标注:一个高效的方法是创建三个数据库:正面词 (“Activate”)、负面词 (其他词汇) 和背景噪音。通过编写脚本,将正面和负面词随机插入到背景噪音中,可以合成海量的训练数据,并且由于插入位置是已知的,可以实现自动标注
  • 标签设计的影响:简单的二元标签(音频中有/无触发词)对模型学习的效率远低于更精细的标签(在触发词出现的时间步上标记为1,其余为0)。一个好的标签设计能让模型学习速度提高数千倍
  • 模型架构:对于序列数据,通常使用循环神经网络 (RNN) 或其变体。在每个时间步上,模型都会输出一个通过 Sigmoid 激活的概率值,并计算相应的损失。
案例三:人脸验证与识别 (Face Verification)
三元组损失
应用拓展
  • 直接进行像素级比较是不可行的,因为它对光照、角度、背景、表情、遮挡等变化非常敏感。
  • 核心思想是训练一个编码器网络 (Encoder Network),将人脸图像转换为一个固定长度的向量(嵌入),使得同一个人的不同照片向量距离近,不同人的照片向量距离远。
  • 三元组损失 (Triplet Loss) 是实现这一目标的关键。训练时使用三张图片:锚点 (Anchor)正样本 (Positive)(与锚点是同一个人)和负样本 (Negative)(与锚点是不同人)。
  • 损失函数的目标是:最小化 AnchorPositive 之间的距离,同时最大化 AnchorNegative 之间的距离,并确保两者之间有一个安全边距 (margin)
  • 人脸验证 (Verification):1对1比较。输入两张图片,判断是否为同一个人。只需计算两张图片嵌入向量的距离,看是否小于某个阈值。
  • 人脸识别 (Identification):1对N搜索。输入一张图片,在数据库中找出TA是谁。这可以通过将输入图片的嵌入与数据库中所有嵌入进行比较,使用 K-近邻 (KNN) 算法找到最相似的身份。
  • 人脸聚类 (Clustering):无监督任务。将一堆未标记的照片按人物进行分组。可以先将所有照片转换为嵌入向量,然后使用 K-Means 等聚类算法在向量空间中进行聚类。
自监督与弱监督学习
  • 标注数据是昂贵的。自监督学习 (Self-Supervised Learning) 是一种无需人工标注,让模型从数据自身结构中学习的方法。
  • 对比学习 (Contrastive Learning) 是一种自监督方法,如 SimCLR。它通过数据增强(旋转、裁剪、变色等)创建同一张图片的不同“视图”,并将它们视为正样本对,将其他图片视为负样本。模型的目标是拉近正样本对的嵌入,推远负样本。
  • 在自然语言处理中,下一词元预测 (Next Token Prediction) 是核心的自监督任务(如GPT)。模型通过预测句子中的下一个词,学会了语法、事实、推理等涌现能力 (Emergent Behaviors)
  • 涌现能力是指模型通过完成简单的训练目标(如下一词元预测),在规模足够大时,自发地学会了未被明确教导的复杂能力。
  • 弱监督学习 (Weakly Supervised Learning) 利用自然存在的、非精确的标签进行学习。例如,利用网络上图片自带的文字描述 (Caption) 来学习图像和文本之间的关联。
  • 通过弱监督学习,可以构建共享嵌入空间 (Shared Embedding Space),将不同模态(文本、图像、音频、热成像等)的数据映射到同一个向量空间,实现跨模态的理解和生成,如 Meta 的 ImageBind 模型。

原文

中文译制