图书目录

目    录

第1章  横空出世的Mamba 1

1.1  深度学习的前世今生 1

1.1.1  深度学习的发展历程 2

1.1.2  深度学习与人工智能 3

1.2  深度学习中的主要模型 4

1.2.1  深度学习中的代表性模型和应用 4

1.2.2  CNN、RNN与Transformer 5

1.2.3  剑指王者的Mamba带来了新的突破 7

1.3  本章小结 8

第2章  挑战注意力机制地位的Mamba架构详解 9

2.1  Mamba的优势 10

2.1.1  Transformer模型存在的不足 10

2.1.2  循环神经网络 12

2.1.3  结合Transformer与RNN优点的SSM 14

2.2  环境搭建1:安装Python 15

2.2.1  Miniconda的下载与安装 15

2.2.2  PyCharm的下载与安装 17

2.3  环境搭建2:安装PyTorch 2.0 20

2.3.1  Nvidia 10/20/30/40系列显卡选择的GPU版本 20

2.3.2  PyTorch 2.0 GPU Nvidia运行库的安装 21

2.4  第一次使用Mamba 24

2.4.1  Hello Mamba:使用预训练Mamba模型生成实战 24

2.4.2  了解Mamba:构建Mamba的三大模块说明 25

2.5  本章小结 26

第3章  Mamba组件详解 28

3.1  Mamba组件1:状态空间模型 28

3.1.1  经典状态空间详解 29

3.1.2  什么是状态空间 31

3.1.3  状态空间模型影响模型的学习过程与Python实现 33

3.2  Mamba组件2:连续信号转换成离散信号的方法 38

3.2.1  将连续信号转换成离散信号详解与Python实现 38

3.2.2  离散状态空间的Python实现 41

3.2.3  离散状态空间的循环计算(类似于RNN的计算方法) 44

3.3  Mamba组件3:HiPPO算法初始化的状态转移矩阵 46

3.3.1  SSM中的状态转移矩阵 47

3.3.2  HiPPO算法的Python实现与可视化讲解 49

3.4  本章小结 51

第4章  基于PyTorch的弹簧振子动力学Mamba实战 52

4.1  从状态空间模型SSM到结构化状态空间模型S4 52

4.1.1  从状态空间模型SSM开始(PyTorch具体实现) 53

4.1.2  连续信号转换为离散信号的PyTorch实现 54

4.1.3  离散信号循环计算的PyTorch实现 55

4.1.4  状态空间模型SSM的PyTorch实现 55

4.1.5  HiPPO算法初始化状态矩阵 57

4.1.6  基于S4架构的Mamba模型 58

4.2  基于状态空间模型模拟弹簧振子动力学 59

4.2.1  加速度的求解:详细讲解的经典弹簧-阻尼系统公式 59

4.2.2  弹簧-阻尼微分方程的SSM分解与PyTorch实现 61

4.2.3  使用空间状态方程模拟弹簧-阻尼方程 63

4.2.4  阻尼微分方程参数的物理解释(选学) 64

4.3  基于SSM的模拟弹簧振子输出的神经网络实战 65

4.3.1  数据的准备 66

4.3.2  对数空间中切分步数的准备 67

4.3.3  基于SSM的模型构建 68

4.3.4  SSM模型的训练实战 73

4.3.5  使用HiPPO算法初始化状态转移矩阵 74

4.4  本章小结 78

第5章  Mamba文本情感分类实战 80

5.1  有趣的词嵌入 80

5.1.1  什么是词嵌入 81

5.1.2  PyTorch中词嵌入处理函数详解 82

5.2  基于进阶SSM架构的情感分类Mamba实战 83

5.2.1  数据的准备 84

5.2.2  SSM进阶的S6架构的设计与手把手实现 84

5.2.3  Mamba堆叠Block的设计与完整实现 88

5.2.4  完整Mamba的实现 90

5.2.5  基于Mamba的情感分类实战 94

5.3  本章小结 98

第6章  Mamba文本转换实战 99

6.1  基于Mamba的拼音汉字转换模型 99

6.1.1  拼音汉字数据集详解与实战处理方法 99

6.1.2  Mamba模型的设计详解 101

6.1.3  模型的训练与预测 102

6.2  PyTorch对数据集的封装与可视化训练步骤 105

6.2.1  使用torch.utils.data. Dataset封装自定义数据集 106

6.2.2  批量输出数据的DataLoader类详解 108

6.3  本章小结 111

第7章  含有位置表示的双向VisionMamba模型图像分类实战 112

7.1  使用PyTorch自带的图像管理工具与图像增强技术 112

7.1.1  PyTorch自带的图像管理工具 113

7.1.2  图片数据增强 115

7.2  基于双向VisionMamba的模块讲解 119

7.2.1  数据的准备 119

7.2.2  将图像转换为Mamba可用的Embedding处理方法 120

7.2.3  能够双向计算的VisionMamba模型 123

7.2.4  初始旋转位置编码RoPE 126

7.3  VisionMamba图像分类实战 129

7.3.1  VisionMamba模型的构建 129

7.3.2  VisionMamba图像分类实战 131

7.4  本章小结 132

第8章  多方案的Mamba文本生成实战 133

8.1  Mamba的经典文本生成实战 133

8.1.1  数据的准备与错位输入方法 134

8.1.2  基于经典Mamba的文本生成模型 136

8.1.3  基于Mamba的文本生成模型的训练与推断 138

8.1.4  生成函数中的注意事项:temperature与“模型尺寸” 140

8.2  微调:在原有Mamba模型上进行重新训练 142

8.2.1  什么是微调 142

8.2.2  预训练的Mamba生成模型 144

8.2.3  对预训练模型进行微调 144

8.2.4  使用微调的预训练模型进行预测 146

8.3  低硬件资源微调预训练Mamba模型的方法 147

8.3.1  使用冻结模型参数的微调方法 147

8.3.2  通过替换特定层的方式完成微调 151

8.3.3  对模型参数进行部分保存和载入的方法 153

8.4  本章小结 154

第9章  能够让Mamba更强的模块 155

9.1  What Kan I Do 155

9.1.1  从多层感知机的数学原理开始 156

9.1.2  KAN中的样条函数 157

9.1.3  KAN的数学原理 159

9.1.4  KAN的PyTorch实现 163

9.1.5  结合KAN的Mamba文本生成实战 168

9.2  xLSTM让老架构再现生机 169

9.2.1  LSTM背景介绍 169

9.2.2  LSTM实战演示 170

9.2.3  xLSTM简介 175

9.2.4  xLSTM的PyTorch实现 177

9.2.5  基于xLSTM的文本生成实战 188

9.3  本章小结 192

第10章  循环神经网络详解与切片时间序列预测 193

10.1  基于时间序列的温度预测实战 193

10.1.1  时间序列一维数据的准备与切片 194

10.1.2  基于GRU的时间序列模型设计 197

10.1.3  时间序列模型的训练与预测 198

10.1.4  时间序列常用的损失函数详解 200

10.2  循环神经网络理论讲解 201

10.2.1  什么是GRU 201

10.2.2  单向不行,那就双向 203

10.3  融合Mamba与KAN架构的时间序列预测模型实战 204

10.3.1  适配2D时间序列的MambaBlock模型设计 204

10.3.2  Mamba架构的时间序列模型训练与预测 206

10.4  本章小结 206

第11章  明天下雨吗:基于Jamba的天气预测实战 207

11.1  注意力机制与模型详解 208

11.1.1  注意力机制详解 208

11.1.2  自注意力机制 210

11.1.3  ticks和Layer Normalization 216

11.1.4  多头自注意力 217

11.2  注意力机制的应用实践:编码器Encoder 220

11.2.1  编码器的总体架构 220

11.2.2  回到输入层:初始词向量层和位置编码器层 221

11.2.3  前馈层的实现 224

11.2.4  将多层模块融合的TransformerBlock层 226

11.2.5  编码器的实现 227

11.3  给注意力添加相对位置编码RoPE 233

11.3.1  给注意力添加相对位置编码RoPE 233

11.3.2  添加旋转位置编码的注意力机制 235

11.3.3  基于现有库包的旋转位置编码RoPE的使用 236

11.4  明天下雨吗:基于Jamba的天气预测实战 237

11.4.1  Jamba模型的基本架构 237

11.4.2  Jamba架构的实现1:修正后的Transformer模块 238

11.4.3  Jamba架构的实现2:Mamba模块 242

11.4.4  Jamba架构的实现3:Jamba模型的实现 245

11.4.5  基于Jamba的天气预测实战 246

11.4.6  基于时间序列的天气预报任务 253

11.5  本章小结 254

第12章  统一了注意力与Mamba架构的Mamba2模型 255

12.1  Mamba2模型的实现 256

12.1.1  Mamba2核心组件SSD详解 256

12.1.2  基于SSD的Mamba2模型 259

12.2  基于Mamba2的文本生成实战 263

12.2.1  文本生成Mamba2模型的完整实现 263

12.2.2  基于Mamba2的文本生成 264

12.3  本章小结 265

第13章  Mamba结合Diffusion的图像生成实战 266

13.1  Diffusion原理精讲以及经典实现 267

13.1.1  Diffusion Model的传播流程 267

13.1.2  直接运行的经典DDPM的模型训练实战 269

13.1.3  DDPM模型的基本模块说明 272

13.1.4  DDPM加噪与去噪详解:结合成功运行的Diffusion Model代码 275

13.1.5  DDPM的损失函数:结合成功运行的Diffusion Model代码 281

13.2  基于注意力的可控Diffusion实现 281

13.2.1  Diffusion Model可控生成的基础:特征融合 282

13.2.2  DiT中的可控特征融合 282

13.2.3  DiT模型的设计 285

13.2.4  图像的加噪与模型训练 289

13.2.5  基于DiT模型的可控图像生成 293

13.3  基于Mamba的可控Diffusion实现 295

13.3.1  基于Mamba架构的模块生成 296

13.3.2  基于Mamba的Dim模型的设计 299

13.4  本章小结 303

第14章  Mamba实战1:知识图谱的构建与展示 305

14.1  什么是知识图谱 305

14.1.1  知识图谱的应用 306

14.1.2  知识图谱中的三元组 307

14.2  知识图谱的可视化展示 308

14.2.1  数据的准备与处理 308

14.2.2  知识图谱的可视化展示 309

14.3  分词与数据的编码与解码 312

14.3.1  分词器Tokenizer的构建与使用 312

14.3.2  数据的编码处理 315

14.3.3  数据的解码处理 319

14.4  基于Mamba的知识图谱模型构建 321

14.4.1  基于Mamba的知识图谱模型构建 321

14.4.2  基于Mamba的知识图谱模型训练与预测 322

14.4.3  命名实体识别在预测时的补充说明 325

14.5  本章小结 326

第15章  Mamba实战2:基于特征词的语音唤醒 327

15.1  音频特征工具Librosa包的基础使用 327

15.1.1  基于Librosa的音频信号读取 328

15.1.2  基于Librosa的音频多特征提取 331

15.2  Mamba实战:基于特征词的语音唤醒 333

15.2.1  数据的准备 333

15.2.2  数据的处理 334

15.2.3  模型的设计 337

15.2.4  模型的数据输入方法 338

15.2.5  模型训练 338

15.2.6  模型结果展示 340

15.3  本章小结 340

第16章  Mamba实战3:多模态视觉问答 341

16.1  视觉问答数据集的准备 341

16.1.1  VQA数据集介绍 342

16.1.2  VQA数据集的下载与预处理 342

16.1.3  VQA数据集的准备 346

16.2  Mamba架构的多模态视觉问答模型的训练与推断 348

16.2.1  Mamba架构的多模态视觉问答模型的设计 348

16.2.2  多模态视觉问答模型的训练与推断 351

16.3  本章小结 353