[深度学习]量化研究_ML_Lesson2

一、开篇:学习背景与初衷

在完成量化资产管理基线模型搭建后,发现机器学习是并行任务、Kaggle 竞赛夺分的核心通用路径。因此跟随李沐《动手学深度学习 v2》系统学习机器学习与深度学习知识。

日常使用中遇到磁盘文件堆积问题,Windows CMD 可通过以下命令批量删除文件夹及内部所有文件,快速清理冗余数据:

cs 复制代码
rmdir /s 文件夹名

二、深度学习发展历程:两大关键时代节点

李沐老师 2021 年版《动手学深度学习》课程,恰好处于 AI 技术全面爆发的前夜,结合行业发展可划分为两个阶段,清晰看懂技术演进脉络。

图 1:AI 发展时间轴示意图

2.1 2021 年:AI 爆发前夜

  1. 技术生态 主流框架与模型以 CNN、RNN、ResNet、BERT 为主;Transformer 架构刚普及,但规模定律(Scaling Law) 尚未成为行业共识。AlphaFold、大语言模型初见雏形,但未走向大众。
  2. 行业形态 AI 主要落地于ToB 产业场景与学术研究,普通民众对 AI 认知极低;学术界仍在探讨 "大模型是否为正确发展方向"。
  3. 课程定位 课程风格严谨,兼顾理论与工程代码实现,搭建起学术界与工业界的桥梁,面向深度学习方向的学生、工程师群体,并非大众化娱乐类教程。彼时李沐任职亚马逊首席科学家,课程内容具备极强的工业落地参考价值。

2.2 2022 年底至今:AI 范式革命与全民普及

从 ChatGPT 发布开始,AI 正式迎来全民化变革,行业进入高速落地周期:

  1. 2022 年底:ChatGPT 上线,AI 从专业技术名词转变为全民热议话题。
  2. 2023 年:GPT-4 问世,多模态能力成为行业标杆;AIGC 图文、视频工具(Midjourney、Runway Gen-2)批量涌现。
  3. 2024-2026 年:进入应用落地爆发期,AI Agent、文生视频、AI 编程、端侧大模型成为主流,AI 全面融入办公、学习、创作等日常场景。

2.3 商业落地逻辑

以广告推荐场景为例: 收集用户点击行为构建数据集,训练机器学习模型实现广告内容智能展现;同时线上曝光数据会持续回流,迭代优化新模型。算法工程师通过提升模型精度、优化底层硬件性能,持续放大 AI 商业价值。

三、PyTorch 基础认知与张量核心操作

3.1 框架理解

PyTorch 本质可理解为现代化的矩阵实验室(对标 MATLAB),核心操作围绕多维数组(张量)展开,所有深度学习运算均建立在张量之上。

图 2:张量创建三要素示意图

3.2 张量创建规则

创建张量必须明确三大要素:

  1. 形状:如 3×4 二维矩阵、多维度高阶数组;
  2. 数据类型 :深度学习主流使用 32 位浮点数(float32)
  3. 元素取值:全零、全一、均匀分布、正态分布随机数等。

3.3 张量索引与切片

张量支持灵活的索引、单行 / 单列、局部子区域截取,是数据筛选、特征提取的基础操作。以二维矩阵为例:

  • 取单个元素:[行号, 列号]
  • 取整行 / 整列:[行号, :] / [:, 列号]
  • 截取子区域:通过区间切片 [起始:结束, 起始:结束] 实现。

图 3:张量索引与切片演示图

3.4 高维张量实际业务含义

深度学习中不同维度张量对应真实业务数据,常见场景如下:

  1. 二维张量:基础矩阵,通用计算场景;
  2. 三维张量 :单张 RGB 图像,维度定义:高度 × 宽度 × 通道数
  3. 四维张量 :图像批次数据,维度定义:批次大小 × 高度 × 宽度 × 通道数
  4. 五维张量 :视频批次数据,维度定义:批次大小 × 时间帧 × 高度 × 宽度 × 通道数

图 4:高维张量业务对应关系图

3.5 开发工具选择

  • Jupyter Notebook:对新手友好,交互式运行代码、即时查看结果,适合学习与实验;
  • PyCharm:专业 IDE,调试功能强大,适合工程化项目开发。 两款工具最终运行效果一致,可根据使用场景自由选择。

3.6 PyTorch 常用代码实操

  1. 全零 / 全一张量创建
python 复制代码
import torch

# 创建形状为(2,3,4)的全零张量
torch.zeros((2, 3, 4))
# 创建形状为(2,3,4)的全一张量
torch.ones((2, 3, 4))
  1. 内存地址(指针)查看

模拟 C++ 指针逻辑,观察变量内存地址变化:

python 复制代码
Before = id(Y)
Y = Y + X
# 判断地址是否发生改变
print(id(Y) == Before)
  1. 广播机制(Broadcasting)

不同形状张量自动维度补齐并逐元素运算,是 PyTorch 核心特性:

python 复制代码
A = torch.arange(3).reshape((3, 1))
B = torch.arange(2).reshape((1, 2))
# 触发广播机制完成运算
print(A + B)

图 5:PyTorch 广播机制运算原理图4. 张量形状与元素数量

python 复制代码
# 获取张量形状
X.shape
# 获取张量总元素个数
X.numel()
  1. 张量拼接(torch.cat)

支持按行、按列两个维度拼接张量,用法类似 Linux 拼接命令:

python 复制代码
X = torch.arange(12, dtype=torch.float32).reshape((3, 4))
Y = torch.tensor([[2.0, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]])

# 按第0维(纵向/行)拼接
torch.cat((X, Y), dim=0)
# 按第1维(横向/列)拼接
torch.cat((X, Y), dim=1)
  1. PyTorch 与 NumPy 互转

两类 Python 数值计算库无缝兼容,方便数据流转:

python 复制代码
# 张量转NumPy数组
A = X.numpy()
# NumPy数组转回PyTorch张量
B = torch.tensor(A)

# 查看数据类型
print(type(A), type(B))

四、数据预处理实战:缺失值处理

数据预处理是深度学习建模的前置关键步骤,本节基于 CSV 数据集演示缺失值处理,也是工业场景高频需求。

图 6:CSV 数据集与缺失值插值效果图

4.1 构建人工 CSV 数据集

创建文件夹并生成房屋数据集 house_tiny.csv,模拟真实业务样本:

python 复制代码
import os
import pandas as pd

# 创建data文件夹,已存在则不报错
os.makedirs(os.path.join('.', 'data'), exist_ok=True)
data_file = os.path.join(".", "data", "house_tiny.csv")

# 写入数据集
with open(data_file, 'w') as f:
    f.write('NumRooms,Alley,Price\n')  # 表头:房间数、街道、房价
    f.write('NA,Pave,127500\n')
    f.write('2,NA,106000\n')
    f.write('4,NA,178100\n')
    f.write('NA,NA,140000\n')

# 读取csv文件
data = pd.read_csv(data_file)

4.2 缺失值解决方案

数据中 NA 代表缺失值,主流处理方式分为删除插值填充 ,案例使用均值插值

python 复制代码
# 划分特征列与标签列
inputs, outputs = data.iloc[:, 0:2], data.iloc[:, 2]
# 使用每一列均值填充缺失值
inputs = inputs.fillna(inputs.mean())
print(inputs)

4.3 原理拓展

均值插值结合数理统计逻辑理解:将数据做标准正态化(均值为 0,方差为 1)后,缺失位置填充均值等价于填充 0,可有效降低缺失数据对模型的影响;也可通过 RMSE 指标评估插值效果。

图 7:张量拼接(cat)两种方式示意图

五、总结

  1. 行业发展:AI 从 2021 年技术沉淀期,发展到如今全民应用时代,掌握深度学习底层能力是适配行业发展的核心;
  2. 框架基础:PyTorch 以张量为核心,熟练掌握张量创建、切片、拼接、广播、库互转等操作,是编码基础;
  3. 数据处理:缺失值插值、数据归一化是数据预处理的核心手段,直接决定模型最终效果;
  4. 学习建议:理论搭配代码实操,Jupyter/PyCharm 按需选用,持续积累实战经验。
相关推荐
数智工坊1 小时前
周志华《Machine Learning》学习笔记--第十六章--强化学习
笔记·学习·机器学习
ChindongX1 小时前
笔记:解决窗口透明度不生效问题 —— QGraphicsOpacityEffect 的使用
笔记·qt
aaaameliaaa1 小时前
分支与循环
c语言·笔记
中屹指纹浏览器2 小时前
2026住宅代理IP纯度检测、链路溯源与指纹浏览器适配调优方案
经验分享·笔记
xuhaoyu_cpp_java10 小时前
项目学习(三)分页查询
java·经验分享·笔记·学习
Cloud_Shy61813 小时前
解读《Effective Python 3rd Edition》:从练气到老魔(第五章 Item 33 - 35)
开发语言·人工智能·笔记·python·学习方法
做cv的小昊13 小时前
计算机图形学:【Games101】学习笔记08——光线追踪(辐射度量学、渲染方程与全局光照、蒙特卡洛积分与路径追踪)
图像处理·笔记·学习·计算机视觉·游戏引擎·图形渲染·概率论
星恒随风13 小时前
C++ 类和对象入门(五):初始化列表、explicit 和 static 成员详解
开发语言·c++·笔记·学习·状态模式
伊布拉西莫18 小时前
【流畅的Python】第20章:并发执行器 — 学习笔记
笔记·python·学习