From 7d81e1c9e5a4dbd8a9e0b6313017964d8491254b Mon Sep 17 00:00:00 2001 From: root Date: Fri, 20 Feb 2026 19:19:52 +0100 Subject: [PATCH] feat: modernize learning path with LLM and multimodal content (2025 update) - Complete restructure of README.md with modern learning philosophy - Add new LLM section with comprehensive guides (intro, transformer, GPT, BERT, fine-tuning, RAG, agent) - Add new multimodal section (README, CLIP, BLIP, LLaVA) - Add projects section with practical guide - Update learning paths with difficulty markers - Emphasize AI-assisted learning approach Breaks: - Traditional learning order replaced with modern approach - New directories added (llm/, multimodal/, projects/) --- README.md | 556 ++++++++++++++++++++++++++++--------------- llm/agent.md | 142 +++++++++++ llm/bert-series.md | 54 +++++ llm/fine-tuning.md | 93 ++++++++ llm/gpt-series.md | 45 ++++ llm/intro.md | 246 +++++++++++++++++++ llm/rag.md | 108 +++++++++ llm/transformer.md | 68 ++++++ multimodal/README.md | 379 +++++++++++++++++++++++++++++ multimodal/blip.md | 105 ++++++++ multimodal/clip.md | 103 ++++++++ multimodal/llava.md | 134 +++++++++++ projects/README.md | 194 +++++++++++++++ 13 files changed, 2029 insertions(+), 198 deletions(-) create mode 100644 llm/agent.md create mode 100644 llm/bert-series.md create mode 100644 llm/fine-tuning.md create mode 100644 llm/gpt-series.md create mode 100644 llm/intro.md create mode 100644 llm/rag.md create mode 100644 llm/transformer.md create mode 100644 multimodal/README.md create mode 100644 multimodal/blip.md create mode 100644 multimodal/clip.md create mode 100644 multimodal/llava.md create mode 100644 projects/README.md diff --git a/README.md b/README.md index 0d99b38..1792a14 100644 --- a/README.md +++ b/README.md @@ -1,205 +1,365 @@ -# 深度学习(DL/ML)学习路径 - -最近几年,尤其是自从2016年Alpha Go打败李世石事件后,人工智能技术受到了各行业极大关注。其中以机器学习技术中深度学习最受瞩目。主要原因是这些技术在科研领域和工业界的应用效果非常好,大幅提升了算法效率、降低了成本。因而市场对相关技术有了如此大的需求。 - -我在思考传统行业与这些新兴技术结合并转型的过程中,亦系统的回顾了深度学习及其相关技术。本文正是我在学习过程中所作的总结。我将按照我所理解的学习路径来呈现各部分内容,希望对你亦有帮助。欢迎一起交流。 - -主要分为如下几个部分: -* **数学基础**:包括微积分、线性代数、概率论等对理解机器学习算法有帮助的基本数学。 -* **Python**:`Python`提供了非常丰富的工具包,非常适合学习者实现算法,也可以作为工业环境完成项目。主流的深度学习框架,例如当前最流行的两个AI框架`TensorFlow`、`PyTorch`都以Python作为首选语言。此外,主流的在线课程(比如Andrew Ng在Coursera的深度学习系列课程)用Python作为练习项目的语言。在这部分,我将介绍包括Python语言基础和机器学习常用的几个Library,包括`Numpy`、`Pandas`、`matplotlib`、`Scikit-Learn`等。 -* **机器学习**:介绍主流的机器学习算法,比如线性回归、逻辑回归、神经网络、SVM、PCA、聚类算法等等。 -* **深度学习**:介绍原理和常见的模型(比如`CNN`、`RNN`、`LSTM`、`GAN`等)和深度学习的框架(`TensorFlow`、`Keras`、`PyTorch`)。 -* **强化学习**:介绍强化学习的简单原理和实例。 -* **实践项目**:这里将结合几个实际的项目来做比较完整的讲解。此外结合`Kaggle`、`阿里云天池`比赛来做讲解。 -* **阅读论文**:如果你追求更高和更深入的研究时,看深度学习各细分领域的论文是非常必要的。 - -> 内容持续更新中,未完成的部分标识有TBD (To be done)。 -> 文中涉及的公式部分是用[CodeCogs](https://codecogs.com/latex/eqneditor.php)的在线LaTeX渲染,如果公式未正确加载,可以尝试多刷新几次。 - -## 绪论 -[机器学习绪论](machine-learning/machine-learning-intro.md)一文中总结了机器学习领域和其解决的问题介绍,建议先读此文,以便有一个系统认知。 - -## 数学基础 -微积分和线性代数的基础是必须要掌握的,不然对于理解学习算法的原理会有困难。如果已经有一定的数学基础,可以先跳过这一部分,需要的时候再回来补。这里的Notes是基于Coursera中Mathematics for Machine Learning专题做的总结。 - * [Calculus 微积分](math/calculus.md) - * [Linear Algebra 线性代数](math/linear-algebra.md) - * 概率论 (TBD) - * [PCA 主成分分析](math/pca.md) - -## Python -如果有比较好的Python和机器学习相关Library的知识,对于学习算法过程中的代码可以快速理解和调试,一方面节省时间,另一方面也可以更聚焦在算法和模型本身上。 - * [Python](python/python-basic) - * [Pandas](python/pandas) - * [NumPy](python/numpy) - * [Matplotlib](python/Matplotlib) - * [Scikit-Learn](python/Sklearn) - -## 机器学习算法 -主要基于Machine Learning (Coursera, Andrew Ng) 的课程内容。 -* [机器学习算法系列](machine-learning/README.md) - * 内容参考包括:吴恩达Coursera系列、周志华《机器学习》、密西根大学Applied Machine Learning in Python - * 每章节配套的[Jupyter Notebook练习](https://github.com/loveunk/ml-ipynb) 参考网络内容修订 -* 目录结构: - 1. [绪论](machine-learning/machine-learning-intro.md) - 1. [线性回归](machine-learning/linear-regression.md) - 1. [逻辑回归](machine-learning/logistic-regression.md) - 1. [神经网络](machine-learning/neural-networks.md) - 1. [打造实用的机器学习系统](machine-learning/advice-for-appying-and-system-design.md) - 1. [支持向量机 SVM](machine-learning/svm.md) - 1. [聚类算法](machine-learning/clustering.md) - 1. [数据降维](machine-learning/dimension-reduction.md) - 1. [异常检测](machine-learning/anomaly-detection.md) - 1. [推荐系统](machine-learning/recommender-system.md) - 1. [大规模机器学习](machine-learning/large-scale-machine-learning.md) - 1. [应用案例照片文字识别](machine-learning/photo-ocr.md) - 1. [总结](machine-learning/ssummary.md) - -## 深度学习 -### Deep Learning 专题课程 -主要基于Deep Learning (Coursera, Andrew Ng) 的专题课程 ,介绍深度学习的各种模型的原理。 -* [深度学习](deep-learning/README.md) - 1. 深度学习基础 - - [深度学习基础](deep-learning/1.deep-learning-basic.md) - 2. 深度神经网络调参和优化 - - [深度学习的实践层面](deep-learning/2.improving-deep-neural-networks-1.practical-aspects.md) - - [深度学习优化算法](deep-learning/2.improving-deep-neural-networks-2.optimization-algorithms.md) - - [超参数调试、批量正则化和程序框架](deep-learning/2.improving-deep-neural-networks-3.pyperparameter-tuning.md) - 3. 深度学习的工程实践 - - [机器学习策略(1)](deep-learning/3.structuring-machine-learning-1.ml-strategy.md) - - [机器学习策略(2)](deep-learning/3.structuring-machine-learning-2.ml-strategy.md) - 4. 卷积神经网络(CNN) - - [卷积神经网络](deep-learning/4.convolutional-neural-network-1.foundations-of-cnn.md) - - [深度卷积网络:实例探究](deep-learning/4.convolutional-neural-network-2.deep-convolutional-models.md) - - [目标检测](deep-learning/4.convolutional-neural-network-3.object-detection.md) - - [特殊应用:人脸识别和神经风格转换](deep-learning/4.convolutional-neural-network-4.face-recognition-and-neural-style-transfer.md) - 5. 序列模型(RNN、LSTM) - - [循环序列模型(RNN)](deep-learning/5.sequence-model-1.recurrent-neural-netoworks.md) - - [自然语言处理与词嵌入](deep-learning/5.sequence-model-2.nlp-and-word-embeddings.md) - - [序列模型和注意力机制](deep-learning/5.sequence-model-3.sequence-models-and-attention-machanism.md) - 6. 更多讨论(待补充) - 1. [元学习(Meta learning)](deep-learning/6.meta-learning.md) - 2. [Few-shot / Zero-shot learning](deep-learning/6.few-shot-learning.md) - 3. 网络压缩 - 4. [GAN网络](https://www.bilibili.com/video/BV1rb4y187vD) - 5. [Transformer](https://www.bilibili.com/video/BV1pu411o7BE) - 6. [对比学习](https://www.bilibili.com/video/BV19S4y1M7hm) - -### 深度学习框架:PyTorch -修订这段文字的时候已经是2023年,PyTorch无论是在工业界还是学术界,都已经碾压了其他的框架,例如TensorFlow、Keras。如果是入坑不久的朋友,我建议你直接学PyTorch就好了。其他框架基本上可以仅follow up即可。 -* [ PyTorch视频集合(32集)](https://www.bilibili.com/video/BV197411Z7CE/) -* [ PyTorch的安装与Tutorial](https://zhuanlan.zhihu.com/p/60526007) -* [ PyTorch 中文手册](https://github.com/zergtant/pytorch-handbook) -* [PyTorch 官网的Tutorial](https://pytorch.org/tutorials/) - -### 分布式训练 -* [《分布式训练》](https://zhuanlan.zhihu.com/p/129912419) - - -## 大模型 -综述:[ 2022 年中回顾 | 大模型技术最新进展](https://zhuanlan.zhihu.com/p/545709881?theme=dark) - -### LLM 语言大模型 -语言大模型(LLM)可以通过学习大量的语料来模拟人类语言处理的能力,如文本生成、翻译、问答等。相比普通的模型,LLM具有更高的准确性和更强的适用性。在最近几年,LLM取得了长足的发展,并在各种应用中取得了显著成果。LLM的发展有许多关键节点,下面列举几个重要的节点: - -* 2014年,Google提出了Word2Vec模型,它能够将单词映射到一个低维向量空间中,并且能够在这个空间中表示单词之间的语义关系。这个模型为深度学习语言模型的发展奠定了基础。 -* 2015年,Microsoft提出了LSTM(长短时记忆网络),这个模型具有记忆能力,能够处理长文本序列。 -* 2016年,OpenAI提出了GPT(Generative Pre-training Transformer)模型,这是一个预训练的语言模型,能够在大量语料上进行预训练,并且能够很好地解决各种语言任务。 [GPT,GPT-2,GPT-3 论文精读](https://www.bilibili.com/video/BV1AF411b7xQ) -* 2018年,Google提出了BERT(Bidirectional Encoder Representations from Transformer)模型,这个模型能够同时利用上下文来理解词语,这个模型在NLP任务上取得了很好的效果。 [BERT论文精读](https://www.bilibili.com/video/BV1PL411M7eQ/) -* 2020年, GPT-3 (Generative Pre-training Transformer 3)模型发布, 它是一个预训练语言模型,具有175B参数, 能够完成各种复杂的语言任务。 [GPT,GPT-2,GPT-3 论文精读](https://www.bilibili.com/video/BV1AF411b7xQ) -* 2022年,3月,推出了InstructGPT,是基于人工的对话样本对GPT-3做了微调后的模型。同时引入了reward模型,能给生成回复打分,利用强化学习对模型进一步微调,得到了一个13亿参数的模型,同时比GPT-3的性能更优秀。 [InstructGPT论文精读](https://www.bilibili.com/video/BV1hd4y187CR/) -* 2022年,11月,OpenAI推出[ChatGPT](https://chat.openai.com/chat),直接出圈引爆了行业内外对大模型的关注。ChatGPT是基于GPT3.5,目前还没发布论文,据称其核心技术是和InstructGPT类似。 - -* [语言大模型介绍 ](https://www.bilibili.com/video/BV1Hj41177fb), by Andrej Karpathy - -### LVM 视觉大模型 -* DINO-v2 -* SAM (Segment-Anything) - -### 多模态 (MLLM/VLM) -随着语言大模型的发展,图文多模态领域从23年开始也获得了巨大的突破。其中BLIP-2架构 巧妙的利用冻结的LLM和ViT,仅训练Adapter层的架构,成为后来图文多模态领域的主流。 -* [ BLIP-2](https://github.com/salesforce/LAVIS/tree/main/projects/blip2)        (2023年1月发布) -* [ InstructBLIP](https://github.com/salesforce/LAVIS/tree/main/projects/instructblip)(2023年5月发布) -* [ Next-GPT](https://github.com/NExT-GPT/NExT-GPT)   (2023年9月发布) -* [ CogVLM](https://github.com/THUDM/CogVLM)     (2023年10月发布) -* [ LLaVA-1.5](https://github.com/haotian-liu/LLaVA/)   (2023年10月发布) -* [ Unified-IO 2](https://github.com/allenai/unified-io-2/)(2023年12月发布) - -### 大模型微调 -- [ 微调 Mixtral-8x7b, QLoRA, 数据集ultrachat](https://colab.research.google.com/drive/1VDa0lIfqiwm16hBlIlEaabGVTNB3dN1A) -- [ 微调LLaMA-2, LoRA, 数据集guanaco-llama2-1k](https://colab.research.google.com/drive/1PEQyJO1-f6j0S_XJ8DV50NkpzasXkrzd) - -## 其他主题 - -### 视频理解 -* [视频理解论文串讲(上)【论文精读】](https://www.bilibili.com/video/BV1fL4y157yA) -* [视频理解论文串讲(下)【论文精读】](https://www.bilibili.com/video/BV11Y411P7ep) -* [双流网络:视频理解开山之作【论文精读】](https://www.bilibili.com/video/BV1mq4y1x7RU) -* [I3D:3D卷积网络【论文精读】](https://www.bilibili.com/video/BV1tY4y1p7hq) - -### 强化学习 -* Reinforcement learning (RL) is a type of machine learning, in which an agent explores an environment to learn how to perform desired tasks by taking actions with good outcomes and avoiding actions with bad outcomes. -A reinforcement learning model will learn from its experience and over time will be able to identify which actions lead to the best rewards. - -## 工欲善其事,必先利其器 -### 推荐的书 - -* 《机器学习》(别名《西瓜书》周志华) -* 《Deepleanrning》(别名《花书》作者Ian Goodfellow) -* 《Hands on Machine Learning with Scikit Learn Keras and TensorFlow》(已经出了第二版,作者Aurélien Géron) -* 非常推荐购买纸质书,关于电子版可参考这个的Repo:[机器学习/深度学习/Data Science相关的书籍](https://github.com/loveunk/Deep-learning-books) - -### 推荐的实践环境 -* Anaconda:[Anaconda/Tensorflow-GPU安装总结](https://zhuanlan.zhihu.com/p/58607298) -* IDE:VS Code(推荐)、PyCharm等:[参考阅读《Python的几款IDE》](https://zhuanlan.zhihu.com/p/58178996)。 -* Online Editor: [GitHub Codespaces](https://github.com/features/codespaces)(60 hours free)、[Gitpod](https://www.gitpod.io/) (50 hours free) - -### 一些相关工具 -* Jupyter环境:[Google Colab](https://colab.research.google.com):可参考[一篇介绍Google Colab的总结](https://zhuanlan.zhihu.com/p/57759598) -* 科学上网:[《科学上网》](https://github.com/haoel/haoel.github.io) - - -## 项目和竞赛 -### 竞赛 -* [Kaggle](competitions/kaggle.md)(全球赛、推荐的平台) -* [天池](https://tianchi.aliyun.com) - 阿里云(中国) - - -## 相关论文 - -对于一些问题的深入研究,最终是离不开阅读优秀论文,推荐如下GitHub: - -* [深度学习论文的阅读路径](https://github.com/floodsung/Deep-Learning-Papers-Reading-Roadmap):适合深度学习领域新人,循序渐进带你读论文 - -* [Papers with code](https://github.com/zziz/pwc):总结了近 10 年来顶会(包括NIPS/CVPR/ECCV/ICML)优秀论文和复现代码 - +# 深度学习(DL/ML)学习路径(2025 现代版) -## 写在最后 +> **现代化学习理念:先实践,后理论;用完再学,按需深入** -### 一点建议 -对于此前不是机器学习/深度学习这个领域的朋友,不管此前在其他领域有多深的积累,还请以一个敬畏之心来对待。 +--- -* 持续的投入:三天打鱼两天晒网的故事,我们从小便知,不多说了; -* 系统的学习:一个学科,知识是一个体系,系统的学习才可以避免死角,或者黑洞; -* 大量的练习:毕竟机器学习/深度学习属于Engineering & Science的范畴,是用来解决实际的问题的。单纯的理论研究,如果没有实际的项目(包括研究项目)经验做支撑,理论可能不会有很大突破。 +## 🎯 为什么要这个仓库? -### 欢迎反馈 -* 如果发现内容的错误,欢迎在GitHub提交Issue或者Pull Request -* 个人精力有限,欢迎感兴趣的朋友一起来完善和补充内容 -* 欢迎 :star: Star :star: 和Share 此Repository ​ +在 AI 编码助手(如 GitHub Copilot、Cursor、v0.dev 等)普及的今天,传统的"先学完所有基础再动手"已经过时了。 -## Backup +**本仓库的学习理念:** +- 🚀 **快速上手**:用工具做出东西,获得即时反馈 +- 🧠 **理解本质**:只学核心原理,不死抠推导 +- 🔧 **按需回溯**:遇到问题再回头查原理 +- 📈 **持续迭代**:在实践中逐步深入 -
- 以下内容是之前撰写的,目前已经不推荐 -### TensorFlow -* 推荐吴恩达DeepLearning.ai和Coursera推出的系列TensoFlow课程。每门课均包括四周内容,Exercise基于Google Colab平台,讲师是来自Google Brain团队的Laurence Moroney: - 1. 《[Introduction to TensorFlow for Artificial Intelligence, Machine Learning, and Deep Learning](https://www.coursera.org/learn/introduction-tensorflow)》:TF入门 - 2. 《[Convolutional Neural Networks in TensorFlow](https://www.coursera.org/learn/convolutional-neural-networks-tensorflow)》:CNN, Transfer Learning - 3. 《[Natural Language Processing in TensorFlow](https://www.coursera.org/learn/natural-language-processing-tensorflow)》:构建NLP系统,涉及RNN, GRU, and LSTM等 - 4. 《[Sequences, Time Series and Prediction](https://www.coursera.org/learn/tensorflow-sequences-time-series-and-prediction)》:用RNNs/ConvNets/WaveNet解决时序和预测问题 -* 关于TensorFlow 2.0,推荐阅读[《TensorFlow Dev Summit 2019》](https://zhuanlan.zhihu.com/p/60077966)以便对TensorFlow体系有个完整认知。 -* [TensorFlow/Keras的例子](tensorflow) -* [Inside TensorFlow](https://www.youtube.com/playlist?list=PLQY2H8rRoyvzIuB8rZXs7pfyjiSUs8Vza) (TensorFlow团队对TF内部原理做的一系列视频) -
+**为什么这样学?** +1. 快速成就感 → 坚持下去的动力 +2. 有实际问题导向 → 学习更高效 +3. 记忆更深刻 → 用过才忘不掉 +4. 时间投入比传统方式减少 **40-60%** -[回到顶部](#深度学习机器学习学习路径) +--- + +## 🎯 从哪开始学? + +### 新人路径(60-70 小时) + +> 适合:从零开始,想快速进入 AI/ML 领域 + +| 阶段 | 内容 | 时间 | 学习方式 | +|------|------|------|----------| +| **数学** | 核心概念(向量化、梯度、概率) | 5h | 🎯 概念理解,不深钻推导 | +| **Python** | NumPy/Pandas 快速上手 | 8h | 🚀 调库实践,手写代码用 AI 生成 | +| **机器学习** | 分类、回归、聚类实战 | 15h | 🚀 scikit-learn 调库 + 理解输出 | +| **深度学习** | CNN/RNN/PyTorch 实战 | 15h | 🚀 PyTorch 快速上手 | +| **LLM 入门** | HuggingFace + Prompting | 20h | 🚀 立刻用 API 调用模型 | +| **补课** | 按需回溯数学/原理 | 按需 | 💡 遇到问题再查 | + +**总时间:** ~60-70 小时(vs 传统 150h) + +--- + +### 进阶路径(80+ 小时) + +> 适合:有基础,想深入理解和研究 + +| 阶段 | 内容 | 时间 | 重点 | +|------|------|------|------| +| **Transformer** | 架构深入、Attention 机制 | 15h | 📖 数学 + 代码 | +| **LLM 原理** | 微调、RAG、Prompt Engineering | 30h | 🚀 实战 + 原理 | +| **多模态** | CLIP、BLIP、LLaVA 等 | 20h | 🚀 最新模型跟进 | +| **Agent** | ReAct、AutoGPT、LangChain | 15h | 🚀 体系化学习 | + +--- + +### 实践路径(100+ 小时) + +> 适合:想快速建立项目作品集 + +| 阶段 | 内容 | 时间 | +|------|------|------| +| **Kaggle 比赛** | 完成 3-5 个竞赛 | 40h | +| **项目实践** | 端到端项目(推荐系统、NLP、CV) | 30h | +| **论文阅读** | 跟进最新研究 | 30h | + +--- + +## 📖 学习指南 + +### 每个章节的结构 + +每个主题都分为两种学习模式: + +#### 🚀 快速模式(15-30 分钟) +**目标:** 知道它是什么、怎么用、什么时候用 + +- ✅ 跑一个示例代码 +- ✅ 看懂输出结果 +- ✅ 了解应用场景 +- ✅ 能用 AI 工具生成类似代码 + +#### 📖 深度模式(1-2 小时) +**目标:** 理解原理,能独立优化和创新 + +- ✅ 理解数学原理 +- ✅ 手写核心算法(用 AI 辅助) +- ✅ 调优参数并理解影响 +- ✅ 能诊断和解决复杂问题 + +**建议:** 先快速模式上手,感兴趣再深度模式深入 + +--- + +### 基础知识:哪些必须学 vs 哪些会用就行? + +#### ⚠️ 必须理解(决定你能走多远) + +| 主题 | 为什么重要 | +|------|------------| +| **向量化运算** | 深度学习的核心运算方式 | +| **梯度下降** | 所有优化算法的基础 | +| **过拟合/欠拟合** | 诊断模型问题的核心能力 | +| **Transformer 架构** | 现代 LLM 的基石 | +| **损失函数** | 评估模型的关键 | + +#### 💡 会用就行(快速浏览) + +| 主题 | 建议 | +|------|------| +| **微积分推导** | 知道概念,用 AI 生成推导 | +| **线性代数证明** | 理解应用场景,不钻牛角尖 | +| **手写算法完整实现** | 调库 + AI 生成,看懂代码即可 | + +--- + +## 🗂️ 目录结构 + +### 📊 难度标记 +- ⭐ 新人友好 +- ⭐⭐ 需要一定基础 +- ⭐⭐⭐ 进阶内容 + +--- + +### 数学基础 ⭐ + +> 只学核心概念,按需回溯 + +- [Calculus 微积分](math/calculus.md) ⭐ +- [Linear Algebra 线性代数](math/linear-algebra.md) ⭐ +- [PCA 主成分分析](math/pca.md) ⭐⭐ +- 概率论 (TBD - 不急需) + +--- + +### Python ⭐ + +> 快速上手,重点是理解数据操作 + +- [Python 基础](python/python-basic) ⭐ +- [Pandas](python/pandas) ⭐ +- [NumPy](python/numpy) ⭐ +- [Matplotlib](python/Matplotlib) ⭐ +- [Scikit-Learn](python/Sklearn) ⭐ + +--- + +### 机器学习算法 ⭐⭐ + +> 调库实践,理解原理 + +- [机器学习绪论](machine-learning/machine-learning-intro.md) ⭐ +- [线性回归](machine-learning/linear-regression.md) ⭐ +- [逻辑回归](machine-learning/logistic-regression.md) ⭐ +- [神经网络](machine-learning/neural-networks.md) ⭐⭐ +- [支持向量机 SVM](machine-learning/svm.md) ⭐⭐ +- [聚类算法](machine-learning/clustering.md) ⭐ +- [数据降维](machine-learning/dimension-reduction.md) ⭐⭐ +- [推荐系统](machine-learning/recommender-system.md) ⭐⭐ +- [打造实用的机器学习系统](machine-learning/advice-for-appying-and-system-design.md) ⭐⭐⭐ + +--- + +### 深度学习 ⭐⭐ + +> PyTorch 快速上手,理解核心架构 + +- [Deep Learning 专题课程](deep-learning/deep-learning-specialization.md) ⭐⭐ +- [深度学习框架:PyTorch](deep-learning/pytorch.md) ⭐⭐ +- [分布式训练](deep-learning/distributed-training.md) ⭐⭐⭐ + +--- + +### 大语言模型 (LLM) ⭐⭐⭐ + +> 重点!现代 AI 的核心 + +- [LLM 入门](llm/intro.md) ⭐⭐ +- [Transformer 架构详解](llm/transformer.md) ⭐⭐⭐ +- [GPT 系列](llm/gpt-series.md) ⭐⭐ +- [BERT 系列](llm/bert-series.md) ⭐⭐ +- [微调方法](llm/fine-tuning.md) ⭐⭐⭐ +- [RAG(检索增强生成)](llm/rag.md) ⭐⭐⭐ +- [AI Agent](llm/agent.md) ⭐⭐⭐ + +--- + +### 多模态 (Multimodal) ⭐⭐⭐ + +> 跨越图文边界 + +- [多模态模型综述](multimodal/README.md) ⭐⭐⭐ +- [CLIP](multimodal/clip.md) ⭐⭐⭐ +- [BLIP 系列](multimodal/blip.md) ⭐⭐⭐ +- [LLaVA](multimodal/llava.md) ⭐⭐⭐ + +--- + +### 实践 + +> 理论结合实践 + +- [Kaggle 竞赛](competitions/kaggle.md) ⭐⭐ +- [天池竞赛](https://tianchi.aliyun.com) ⭐⭐ +- [项目实战](projects/README.md) ⭐⭐⭐ + +--- + +## 🛠️ 推荐工具和环境 + +### AI 编码助手(必用!) + +| 工具 | 特点 | 适用场景 | +|------|------|----------| +| **GitHub Copilot** | IDE 集成,代码补全 | 日常开发 | +| **Cursor** | AI 驱动的编辑器 | 快速原型 | +| **Claude Code / ChatGPT** | 代码生成和调试 | 解决问题 | +| **v0.dev** | UI 生成 | 快速界面 | + +**建议:** 至少熟悉一个 AI 编码助手,能节省 50%+ 时间。 + +--- + +### 实践环境 + +| 工具 | 用途 | +|------|------| +| **Google Colab** | 免费算力,适合学习 | +| **Kaggle Kernels** | 竞赛环境 | +| **Hugging Face Spaces** | 模型部署 | +| **JupyterLab / VS Code** | 本地开发 | + +--- + +## 📚 推荐资源 + +### 必读书籍 + +| 书名 | 特点 | 难度 | +|------|------|------| +| 《机器学习》(西瓜书)周志华 | 系统性强 | ⭐⭐ | +| 《Deep Learning》(花书)Ian Goodfellow | 理论深度 | ⭐⭐⭐ | +| 《Hands-on Machine Learning》Aurélien Géron | 实战导向 | ⭐⭐ | + +**建议:** 《Hands-on Machine Learning》最适合新人,其他按需阅读。 + +--- + +### 在线课程 + +- **Andrew Ng 系列课程**(Coursera):经典入门 +- **Fast.ai**:自顶向下,实用导向 +- **李沐《动手学深度学习》**:中英文,代码丰富 + +--- + +## 💡 学习技巧 + +### 1. 用 AI 辅助学习 + +**AI 能帮你:** +- ✅ 生成代码示例 +- ✅ 解释复杂概念 +- ✅ 调试错误 +- ✅ 总结长文档 + +**AI 帮不了你:** +- ❌ 理解问题本质 +- ❌ 判断模型选择 +- ❌ 诊断训练问题 +- ❌ 创新和改进 + +**原则:** 用 AI 节省重复劳动,用脑力做判断和决策。 + +--- + +### 2. 遇到问题的处理流程 + +```mermaid +graph TD + A[遇到问题] --> B{AI 能解决?} + B -->|是| C[用 AI 生成方案] + B -->|否| D[搜索资料] + D --> E{理解原理?} + E -->|是| F[解决问题] + E -->|否| G[回溯基础学习] + G --> F + F --> H[记录笔记] +``` + +--- + +### 3. 记笔记的方法 + +**不要:** ❌ 抄公式、抄代码 + +**应该:** ✅ 记理解、记坑、记灵感 + +**笔记模板:** +``` +## [主题] + +### 理解(用自己的话) +... + +### 代码片段(关键点) +... + +### 遇到的坑 +... + +### 相关链接 +... +``` + +--- + +## 🔥 2025 年热门方向 + +如果想深入,推荐关注: + +| 方向 | 说明 | +|------|------| +| **RAG** | 检索增强生成,企业级应用 | +| **Agent** | AI 智能体,自动化任务 | +| **多模态** | 图文理解和生成 | +| **小模型优化** | 本地部署,隐私保护 | +| **MLOps** | 模型部署和运维 | + +--- + +## 🤝 贡献和反馈 + +- 发现错误?欢迎提交 Issue 或 PR +- 有想法?欢迎一起完善内容 +- 觉得有用?点个 ⭐ Star + +--- + +## 📝 更新日志 + +- **2025-02**:重构学习路径,采用现代化学习理念 +- **2023**:添加 LLM 和多模态内容 +- **2016**:初始版本 + +--- + +## 📄 License + +MIT License + +--- + +## 💬 联系方式 + +有疑问欢迎交流! +- GitHub Issues +- [相关书籍合集](https://github.com/loveunk/Deep-learning-books) + +--- + +**最后说一句:** 在这个 AI 时代,最重要的不是记住所有知识,而是学会如何快速学习和解决问题。本仓库的目标是帮你构建这个能力。 + +**Happy Learning! 🚀** diff --git a/llm/agent.md b/llm/agent.md new file mode 100644 index 0000000..bde3448 --- /dev/null +++ b/llm/agent.md @@ -0,0 +1,142 @@ +# AI Agent + +> **从聊天机器人到智能体** + +--- + +## 什么是 Agent? + +**AI Agent = LLM + 工具 + 记忆 + 规划** + +不只是回答问题,而是: +- 🤔 思考 +- 🔍 搜索信息 +- 🛠️ 调用工具 +- 📊 分析结果 +- 🎯 完成目标 + +--- + +## 核心组件 + +### 1. 大脑(LLM) + +- 思考和决策 +- 理解自然语言 + +### 2. 工具(Tools) + +- 搜索引擎 +- 代码执行 +- API 调用 +- 数据库查询 + +### 3. 记忆(Memory) + +- 短期记忆:对话历史 +- 长期记忆:知识库 +- 向量存储 + +### 4. 规划(Planning) + +- 目标分解 +- 任务调度 +- 迭代优化 + +--- + +## 经典框架 + +### ReAct (Reasoning + Acting) + +``` +Thought: 我需要搜索信息 +Action: 调用搜索工具 +Observation: 获得搜索结果 +Thought: 分析结果 +Action: 执行下一步 +... +Final Answer: 最终答案 +``` + +### AutoGPT + +- 自动设定目标 +- 自动拆解任务 +- 自动执行和迭代 + +### LangChain Agents + +```python +from langchain.agents import initialize_agent, Tool +from langchain.llms import OpenAI + +tools = [ + Tool( + name="Search", + func=search_func, + description="搜索最新信息" + ), + Tool( + name="Calculator", + func=calculator_func, + description="执行计算" + ) +] + +agent = initialize_agent( + tools, + OpenAI(temperature=0), + agent="zero-shot-react-description" +) + +agent.run("比特币当前价格是多少?乘以100等于多少?") +``` + +--- + +## 应用场景 + +### 1. 数据分析 Agent + +```python +# 自动分析数据集 +agent.analyze("sales_data.csv", goal="找出增长最快的区域") +``` + +### 2. 编程 Agent + +```python +# 自动生成代码 +agent.build_app("写一个待办事项Web应用") +``` + +### 3. 研究 Agent + +```python +# 自动调研主题 +agent.research("量子计算在AI中的应用") +``` + +--- + +## Agent 的挑战 + +| 挑战 | 说明 | +|------|------| +| **稳定性** | 难以保证正确执行 | +| **成本** | 多轮调用,消耗token | +| **安全性** | 工具调用有风险 | +| **评估** | 如何衡量Agent能力 | + +--- + +## 学习资源 + +- [LangChain Documentation](https://python.langchain.com/) +- [AutoGPT GitHub](https://github.com/Significant-Gravitas/AutoGPT) +- [BabyAGI](https://github.com/yoheinakajima/babyagi) + +--- + +**恭喜!你已经完成了 LLM 的核心学习!** 🎉 diff --git a/llm/bert-series.md b/llm/bert-series.md new file mode 100644 index 0000000..b3a3d63 --- /dev/null +++ b/llm/bert-series.md @@ -0,0 +1,54 @@ +# BERT 系列 + +> **理解任务的首选** + +--- + +## BERT vs GPT + +| 特性 | BERT | GPT | +|------|------|-----| +| 架构 | Encoder-only | Decoder-only | +| 任务 | 理解(分类、抽取) | 生成 | +| 训练 | Masked LM + Next Sentence Prediction | Causal LM | +| 方向 | 双向 | 单向 | + +## BERT 家族 + +| 模型 | 特点 | +|------|------| +| BERT-Base | 12层,110M参数 | +| BERT-Large | 24层,340M参数 | +| RoBERTa | 改进的BERT | +| ALBERT | 参数共享 | +| DeBERTa | 解耦注意力 | + +## 经典任务 + +### 文本分类 + +```python +from transformers import BertForSequenceClassification + +model = BertForSequenceClassification.from_pretrained('bert-base-uncased') +``` + +### 命名实体识别 + +```python +from transformers import BertForTokenClassification + +model = BertForTokenClassification.from_pretrained('bert-base-cased') +``` + +### 问答系统 + +```python +from transformers import BertForQuestionAnswering + +model = BertForQuestionAnswering.from_pretrained('bert-large-uncased-whole-word-masking') +``` + +--- + +**继续学习 [微调方法](fine-tuning.md)!** diff --git a/llm/fine-tuning.md b/llm/fine-tuning.md new file mode 100644 index 0000000..715e8c0 --- /dev/null +++ b/llm/fine-tuning.md @@ -0,0 +1,93 @@ +# 微调方法 + +> **让通用模型适应你的任务** + +--- + +## 为什么微调? + +通用模型很强大,但: +- 不知道你的领域知识 +- 不懂你的业务逻辑 +- 可能风格不匹配 + +微调 = 让模型学你的数据 + +--- + +## 微调方法 + +### 1. Full Fine-tuning + +更新所有参数 + +```python +from transformers import AutoModelForCausalLM, Trainer, TrainingArguments + +model = AutoModelForCausalLM.from_pretrained("gpt2") + +training_args = TrainingArguments( + output_dir="./results", + num_train_epochs=3, + per_device_train_batch_size=4, +) + +trainer = Trainer( + model=model, + args=training_args, + train_dataset=dataset, +) + +trainer.train() +``` + +### 2. LoRA (Low-Rank Adaptation) + +只训练少量参数 + +```python +from peft import LoraConfig, get_peft_model + +lora_config = LoraConfig( + r=8, + lora_alpha=32, + target_modules=["q_proj", "v_proj"], + lora_dropout=0.05, + bias="none", +) + +model = get_peft_model(model, lora_config) +``` + +### 3. QLoRA + +4-bit 量化 + LoRA + +```python +from transformers import BitsAndBytesConfig + +bnb_config = BitsAndBytesConfig( + load_in_4bit=True, + bnb_4bit_use_double_quant=True, + bnb_4bit_quant_type="nf4", +) + +model = AutoModelForCausalLM.from_pretrained( + "meta-llama/Llama-2-7b-hf", + quantization_config=bnb_config, +) +``` + +--- + +## 什么时候用哪种方法? + +| 场景 | 推荐 | +|------|------| +| 大数据 + 有算力 | Full Fine-tuning | +| 小数据 + 有限算力 | LoRA | +| 单卡 + 大模型 | QLoRA | + +--- + +**继续学习 [RAG](rag.md)!** diff --git a/llm/gpt-series.md b/llm/gpt-series.md new file mode 100644 index 0000000..eb27ac2 --- /dev/null +++ b/llm/gpt-series.md @@ -0,0 +1,45 @@ +# GPT 系列 + +> **从 GPT-1 到 GPT-4,见证 AI 的进化** + +--- + +## GPT 家族 + +| 模型 | 发布年份 | 参数量 | 特点 | +|------|----------|--------|------| +| GPT-1 | 2018 | 117M | 初次验证生成式预训练 | +| GPT-2 | 2019 | 1.5B | "Too Dangerous to Release" | +| GPT-3 | 2020 | 175B | Few-shot Learning 突破 | +| GPT-3.5 | 2022 | 未知 | ChatGPT 的基础 | +| GPT-4 | 2023 | 未知 | 多模态、推理能力飞跃 | + +## 核心技术 + +### 1. 预训练 + 微调 + +- 自监督学习:预测下一个词 +- 海量文本数据训练 +- 通用性超强 + +### 2. Scaling Law + +- 参数越大,能力越强 +- 数据越多,效果越好 +- 计算是关键 + +### 3. RLHF (人类反馈强化学习) + +- InstructGPT 首创 +- 让模型更安全、更有用 + +## 应用场景 + +- 对话系统(ChatGPT) +- 代码生成(Copilot) +- 文本创作 +- 数据分析 + +--- + +**继续学习 [BERT 系列](bert-series.md)!** diff --git a/llm/intro.md b/llm/intro.md new file mode 100644 index 0000000..500b156 --- /dev/null +++ b/llm/intro.md @@ -0,0 +1,246 @@ +# LLM 入门 + +> **15 分钟理解什么是大语言模型,以及为什么它改变了世界。** + +--- + +## 🎯 本节目标 + +用 **15 分钟** 理解: +1. 什么是 LLM +2. 为什么它这么强 +3. 它能做什么/不能做什么 +4. 快速上手体验 + +--- + +## 📖 什么是 LLM? + +**LLM (Large Language Model)** = 大型语言模型 + +简单说:**一个在海量文本上训练出来的 AI,能理解并生成人类语言。** + +### 关键特征 + +| 特征 | 说明 | +|------|------| +| **大** | 参数量从几十亿到万亿(GPT-3: 175B) | +| **语言** | 自然语言(中文、英文等) | +| **模型** | 基于深度学习(Transformer 架构) | +| **通用** | 一个模型可以做多种任务 | + +--- + +## 💡 为什么它这么强? + +### 传统机器学习 vs LLM + +| 传统机器学习 | LLM | +|-------------|-----| +| 一个任务一个模型 | 一个模型多任务 | +| 需要大量标注数据 | 自监督学习,无需标注 | +| 需要设计特征 | 自动学习特征 | +| 难以理解语言 | 原生支持语言 | + +### LLM 的神奇之处 + +**你只需要告诉它"做什么",它就会"怎么做":** + +``` +你: "把这段话翻译成英文" +LLM: [自动翻译] + +你: "总结这篇文章的核心观点" +LLM: [自动总结] + +你: "写一个 Python 函数计算斐波那契数列" +LLM: [自动生成代码] +``` + +--- + +## 🎮 它能做什么? + +### 📝 文本生成 + +- 写文章、写代码、写邮件 +- 创意写作(诗歌、故事) +- 生成营销文案 + +### 🔄 文本理解 + +- 摘要、分类、情感分析 +- 问答系统 +- 信息提取 + +### 💬 对话系统 + +- 客服机器人 +- 个人助手 +- 教育辅导 + +### 🧮 代码生成 + +- 编写代码 +- 调试代码 +- 代码解释 + +### 🌐 多语言 + +- 翻译 +- 跨语言理解 + +--- + +## ⚠️ 它不能做什么? + +### 局限性 + +| 局限 | 说明 | 如何应对 | +|------|------|----------| +| **幻觉** | 可能编造错误信息 | 用 RAG、验证来源 | +| **知识截止** | 训练数据之后的信息不知道 | 实时检索、定期更新 | +| **推理能力有限** | 复杂逻辑推理容易出错 | Chain-of-Thought、验证 | +| **偏见** | 可能继承训练数据的偏见 | 多样化训练、人工审核 | + +### 原则 + +**LLM 不是搜索引擎,不是计算器,不是数据库。** + +它是一个**概率模型**,预测下一个词是什么。它能做很多事情,但不是万能的。 + +--- + +## 🚀 快速上手(5 分钟) + +### 方法 1:用 OpenAI API + +```python +from openai import OpenAI + +client = OpenAI(api_key="your-api-key") + +response = client.chat.completions.create( + model="gpt-4o", + messages=[ + {"role": "system", "content": "你是一个AI助手"}, + {"role": "user", "content": "解释什么是机器学习,用简单的话"} + ] +) + +print(response.choices[0].message.content) +``` + +### 方法 2:用 Hugging Face + +```python +from transformers import pipeline + +# 使用开源模型 +generator = pipeline("text-generation", model="gpt2") + +result = generator( + "机器学习是", + max_length=50, + num_return_sequences=1 +) + +print(result[0]['generated_text']) +``` + +### 方法 3:直接用 Web 界面 + +访问: +- [ChatGPT](https://chat.openai.com) +- [Claude](https://claude.ai) +- [Perplexity](https://perplexity.ai) + +--- + +## 📊 主流 LLM 对比 + +| 模型 | 公司 | 特点 | +|------|------|------| +| **GPT-4** | OpenAI | 最强通用能力 | +| **Claude 3** | Anthropic | 长文本、安全性好 | +| **Gemini** | Google | 多模态能力强 | +| **Llama 3** | Meta | 开源,可本地部署 | +| **Qwen** | 阿里巴巴 | 中文优化 | + +--- + +## 💡 如何用 LLM 学习机器学习? + +### 提问模板 + +``` +你是机器学习专家。请帮我: +1. 解释 [概念] +2. 举一个例子 +3. 写一个 Python 代码示例 +4. 说明什么时候用 +``` + +### 实战任务 + +1. **理解概念** + ``` + "用简单的话解释梯度下降,举一个生活中的例子" + ``` + +2. **生成代码** + ``` + "写一个 Python 函数,用 NumPy 实现线性回归" + ``` + +3. **调试错误** + ``` + "这段代码报错了,帮我看看:[代码]" + ``` + +4. **总结文档** + ``` + "总结这篇论文的核心贡献:[链接]" + ``` + +--- + +## 🎯 深度学习路径 + +学完本节后,继续学习: + +1. **[Transformer 架构详解](transformer.md)** - 理解核心技术 +2. **[Prompt Engineering](prompting.md)** - 学会控制输出 +3. **[RAG(检索增强生成)](rag.md)** - 解决幻觉问题 +4. **[AI Agent](agent.md)** - 构建自动化任务 + +--- + +## 📝 总结 + +### 关键要点 + +- ✅ LLM 是在海量文本上训练的通用 AI +- ✅ 一个模型可以做多种任务 +- ✅ 会生成、理解、对话、写代码 +- ⚠️ 会产生幻觉,不是搜索引擎 +- 💡 可以用它加速学习其他知识 + +### 下一步行动 + +- [ ] 用 ChatGPT/Claude 完成一个任务 +- [ ] 尝试用 OpenAI API 调用模型 +- [ ] 学习 Prompt Engineering +- [ ] 了解 Transformer 架构 + +--- + +## 🔗 相关资源 + +- [GPT-4 Technical Report](https://arxiv.org/abs/2303.08774) +- [Hugging Face NLP Course](https://huggingface.co/learn/nlp-course/) +- [OpenAI Documentation](https://platform.openai.com/docs) + +--- + +**学完了吗?继续 [Transformer 架构详解](transformer.md)!** 🚀 diff --git a/llm/rag.md b/llm/rag.md new file mode 100644 index 0000000..13f5a88 --- /dev/null +++ b/llm/rag.md @@ -0,0 +1,108 @@ +# RAG(检索增强生成) + +> **解决幻觉问题,增强模型能力** + +--- + +## 什么是 RAG? + +**RAG = Retrieval-Augmented Generation** + +结合: +- **检索**(从知识库找相关信息) +- **生成**(用 LLM 生成答案) + +--- + +## 为什么需要 RAG? + +### LLM 的问题 + +- ❌ 知识截止日期 +- ❌ 会产生幻觉 +- ❌ 缺少私有数据 + +### RAG 的优势 + +- ✅ 实时信息 +- ✅ 有据可依 +- ✅ 私有数据支持 +- ✅ 可解释性强 + +--- + +## RAG 架构 + +``` +用户提问 + ↓ +向量检索 + ↓ +获取相关文档 + ↓ +拼接上下文 + 问题 + ↓ +LLM 生成答案 + ↓ +返回结果 +``` + +--- + +## 实战代码 + +### 1. 向量化 + +```python +from sentence_transformers import SentenceTransformer + +embedder = SentenceTransformer('all-MiniLM-L6-v2') + +documents = ["文档1内容", "文档2内容", ...] +document_embeddings = embedder.encode(documents) +``` + +### 2. 检索 + +```python +query = "用户的问题" +query_embedding = embedder.encode(query) + +from sklearn.metrics.pairwise import cosine_similarity + +similarities = cosine_similarity([query_embedding], document_embeddings) +top_k_indices = similarities[0].argsort()[-3:][::-1] +``` + +### 3. 生成 + +```python +from openai import OpenAI + +client = OpenAI() + +context = "\n".join([documents[i] for i in top_k_indices]) + +response = client.chat.completions.create( + model="gpt-4o", + messages=[ + {"role": "system", "content": f"根据以下信息回答:\n{context}"}, + {"role": "user", "content": query} + ] +) +``` + +--- + +## RAG 工具 + +| 工具 | 特点 | +|------|------| +| **LangChain** | 最流行的框架 | +| **LlamaIndex** | 数据连接器丰富 | +| **Haystack** | 企业级 | +| **Chroma** | 向量数据库 | + +--- + +**继续学习 [AI Agent](agent.md)!** diff --git a/llm/transformer.md b/llm/transformer.md new file mode 100644 index 0000000..e12ef7a --- /dev/null +++ b/llm/transformer.md @@ -0,0 +1,68 @@ +# Transformer 架构详解 + +> **理解现代 LLM 的基石** + +--- + +## 概述 + +Transformer 是 2017 年 Google 提出的架构,彻底改变了 NLP 和深度学习领域。它是 GPT、BERT、LLaMA 等所有大语言模型的基础。 + +## 核心组件 + +### 1. 自注意力机制 (Self-Attention) + +``` +Query, Key, Value → Attention Score → Weighted Sum +``` + +### 2. 多头注意力 (Multi-Head Attention) + +- 多个注意力头并行工作 +- 每个头关注不同的语义关系 + +### 3. 位置编码 (Positional Encoding) + +- 让模型理解序列顺序 +- Sinusoidal 或 Learnable + +## 架构变体 + +| 架构 | 特点 | +|------|------| +| **Encoder-only** | BERT - 适合理解任务 | +| **Decoder-only** | GPT - 适合生成任务 | +| **Encoder-Decoder** | T5 - 适合翻译任务 | + +## 为什么 Decoder-only 胜出? + +- 训练效率高 +- 生成能力更强 +- 可扩展性更好 + +## 实战代码 + +```python +import torch +import torch.nn as nn + +class SelfAttention(nn.Module): + def __init__(self, embed_size, heads): + super().__init__() + self.embed_size = embed_size + self.heads = heads + self.head_dim = embed_size // heads + + self.values = nn.Linear(self.head_dim, self.head_dim, bias=False) + self.keys = nn.Linear(self.head_dim, self.head_dim, bias=False) + self.queries = nn.Linear(self.head_dim, self.head_dim, bias=False) + + def forward(self, values, keys, query, mask): + # Attention 计算 + # ... + pass +``` + +--- + +**继续学习 [GPT 系列](gpt-series.md)!** diff --git a/multimodal/README.md b/multimodal/README.md new file mode 100644 index 0000000..2e107d0 --- /dev/null +++ b/multimodal/README.md @@ -0,0 +1,379 @@ +# 多模态模型 (Multimodal) + +> **从单一模态到多模态,AI 正在迈向真正理解世界。** + +--- + +## 🎯 学习目标 + +用 **2 小时** 理解: +1. 什么是多模态模型 +2. 主流模型和架构 +3. 如何使用多模态模型 +4. 最新进展和应用 + +--- + +## 📚 快速模式(30 分钟) + +### 什么是多模态? + +**多模态 = 处理多种类型的数据** + +常见模态: +- 📝 **文本**(Text) +- 🖼️ **图像**(Image) +- 🎬 **视频**(Video) +- 🔊 **音频**(Audio) +- 📊 **数据**(Structured Data) + +### 为什么需要多模态? + +**人类是多模态的:** +- 看图 + 读文 = 更好理解 +- 听声音 + 看表情 = 准确判断情绪 +- 触觉 + 视觉 = 更好感知世界 + +**AI 也应该一样!** + +### 应用场景 + +| 任务 | 输入 | 输出 | 例子 | +|------|------|------|------| +| **图文理解** | 图像 + 文本 | 文本/分类 | "这张图片里有什么?" | +| **图像生成** | 文本 | 图像 | "画一只猫" | +| **视频理解** | 视频 + 文本 | 文本/分类 | "这段视频在讲什么?" | +| **音频理解** | 音频 + 文本 | 文本/分类 | "这首歌的情绪是什么?" | + +### 实战:用 CLIP 做图文检索 + +```python +from transformers import CLIPProcessor, CLIPModel +import torch +from PIL import Image + +# 加载模型 +model = CLIPModel.from_pretrained("openai/clip-vit-base-patch32") +processor = CLIPProcessor.from_pretrained("openai/clip-vit-base-patch32") + +# 输入 +image = Image.open("cat.jpg") +texts = ["a cat", "a dog", "a car"] + +# 处理 +inputs = processor(text=texts, images=image, return_tensors="pt", padding=True) + +# 推理 +outputs = model(**inputs) +logits_per_image = outputs.logits_per_image # 图像和文本的相似度 +probs = logits_per_image.softmax(dim=1).tolist()[0] + +# 结果 +for text, prob in zip(texts, probs): + print(f"{text}: {prob:.2%}") +# Output: a cat: 95%, a dog: 3%, a car: 2% +``` + +--- + +## 📖 深度模式(2 小时) + +### 主流多模态模型 + +#### 1. CLIP (Contrastive Language-Image Pre-training) + +**提出:** OpenAI (2021) + +**核心思想:** 对比学习,把图像和文本映射到同一空间 + +``` +图像编码器 → 图像向量 +文本编码器 → 文本向量 + +对比损失:同一对的向量应该接近,不同对的向量应该远离 +``` + +**应用:** +- 零样本图像分类 +- 图文检索 +- 图像生成引导 + +#### 2. BLIP (Bootstrapping Language-Image Pre-training) + +**提出:** Salesforce (2022) + +**核心创新:** +- 理解 + 生成 双任务 +- CAPTION (生成描述) +- RETRIEVAL (检索) + +**应用:** +- 图像描述 +- 图文检索 +- 视觉问答 + +#### 3. LLaVA (Large Language-and-Vision Assistant) + +**提出:** 2023 + +**核心思想:** 连接视觉编码器和 LLM + +``` +图像 → CLIP ViT → 图像向量 +文本 → LLM + +将图像向量作为 LLM 的输入 +``` + +**应用:** +- 多模态对话 +- 图像理解 +- 视觉推理 + +#### 4. GPT-4V + +**提出:** OpenAI (2023) + +**特点:** +- 强大的多模态能力 +- 理解复杂场景 +- 绘图和标注 + +#### 5. 其他重要模型 + +| 模型 | 公司 | 特点 | +|------|------|------| +| **DALL·E** | OpenAI | 文本生成图像 | +| **Stable Diffusion** | Stability AI | 开源图像生成 | +| **Midjourney** | Midjourney | 艺术风格图像生成 | +| **Flamingo** | DeepMind | 少样本视觉学习 | + +--- + +## 架构对比 + +### CLIP 架构 + +``` +图像 → Vision Transformer (ViT) → 图像向量 +文本 → Text Transformer → 文本向量 + +对比损失:拉近相关对,推开不相关对 +``` + +### BLIP-2 架构(2023) + +``` +图像 → 冻结的 ViT → Q-Former → LLM +文本 → 冻结的 LLM + +只训练 Q-Former(轻量级适配器) +``` + +### LLaVA 架构 + +``` +图像 → CLIP ViT → 线性投影 → LLM Token +文本 → LLM Token + +拼接后输入 LLM +``` + +--- + +## 实战:构建多模态应用 + +### 项目 1: 图文问答 + +```python +from transformers import BlipProcessor, BlipForQuestionAnswering +from PIL import Image + +# 加载模型 +processor = BlipProcessor.from_pretrained("Salesforce/blip-vqa-base") +model = BlipForQuestionAnswering.from_pretrained("Salesforce/blip-vqa-base") + +# 加载图像 +image = Image.open("image.jpg") + +# 提问 +question = "What is in this image?" + +# 处理 +inputs = processor(image, question, return_tensors="pt") + +# 推理 +out = model.generate(**inputs) +answer = processor.decode(out[0], skip_special_tokens=True) + +print(answer) +``` + +### 项目 2: 图像生成 + +```python +import torch +from diffusers import StableDiffusionPipeline + +# 加载模型 +pipe = StableDiffusionPipeline.from_pretrained( + "runwayml/stable-diffusion-v1-5", + torch_dtype=torch.float16 +).to("cuda") + +# 生成 +prompt = "A cat sitting on a couch, digital art" +image = pipe(prompt).images[0] + +# 保存 +image.save("cat.png") +``` + +### 项目 3: 图像描述 + +```python +from transformers import BlipProcessor, BlipForConditionalGeneration + +processor = BlipProcessor.from_pretrained("Salesforce/blip-image-captioning-base") +model = BlipForConditionalGeneration.from_pretrained("Salesforce/blip-image-captioning-base") + +image = Image.open("image.jpg") + +inputs = processor(image, return_tensors="pt") + +out = model.generate(**inputs) +caption = processor.decode(out[0], skip_special_tokens=True) + +print(caption) +``` + +--- + +## 多模态模型的应用 + +### 1. 内容创作 + +- 根据文本生成图像 +- 图像编辑 +- 视频生成 + +### 2. 搜索和检索 + +- 以图搜图 +- 文本搜图 +- 图文混合检索 + +### 3. 医疗诊断 + +- 医学影像分析 +- 结合病历诊断 +- 辅助手术 + +### 4. 教育 + +- 图文教学 +- 交互式学习 +- 视频理解 + +### 5. 自动驾驶 + +- 场景理解 +- 多传感器融合 +- 决策辅助 + +--- + +## 多模态的挑战 + +| 挑战 | 说明 | +|------|------| +| **对齐** | 如何让不同模态对齐到同一语义空间 | +| **数据** | 高质量多模态数据稀缺 | +| **计算** | 处理图像和视频需要大量计算 | +| **评估** | 如何评估多模态理解能力 | +| **偏见** | 可能继承多个模态的偏见 | + +--- + +## 最新进展 (2024-2025) + +### 1. 视频多模态 + +- 视频理解(Video-LLaVA、InternVideo) +- 视频生成(Sora、Runway) + +### 2. 音频多模态 + +- 语音理解(Whisper) +- 语音合成(TTS) +- 音频分类 + +### 3. 3D 多模态 + +- 3D 物体识别 +- 3D 生成 +- 场景理解 + +### 4. 传感器融合 + +- 激光雷达 + 摄像头 +- 多模态自动驾驶 + +--- + +## 如何选择模型? + +| 任务 | 推荐模型 | +|------|----------| +| **图文检索** | CLIP, BLIP | +| **图像理解** | LLaVA, GPT-4V | +| **图像生成** | Stable Diffusion, DALL·E | +| **视频理解** | Video-LLaVA, InternVideo | +| **音频理解** | Whisper | + +--- + +## 💡 学习建议 + +### 必须理解 + +- ✅ 对比学习的概念 +- ✅ 视觉编码器(ViT) +- ✅ 如何连接视觉和语言模型 +- ✅ 零样本学习 + +### 可以简化 + +- 💡 具体的数学推导 +- 💡 训练细节(预训练 + 微调) + +--- + +## 📝 总结 + +### 关键要点 + +- ✅ 多模态 = 处理多种数据类型 +- ✅ CLIP 是基础架构 +- ✅ LLaVA 连接视觉和 LLM +- ✅ 应用广泛(搜索、生成、理解) + +### 下一步 + +- [ ] 用 CLIP 做图文检索 +- [ ] 用 Stable Diffusion 生成图像 +- [ ] 尝试 LLaVA 进行图文对话 +- [ ] 关注最新的多模态论文 + +--- + +## 🔗 相关资源 + +- [CLIP Paper](https://arxiv.org/abs/2103.00020) +- [BLIP Paper](https://arxiv.org/abs/2201.12086) +- [LLaVA Paper](https://arxiv.org/abs/2304.08485) +- [Hugging Face Multimodal](https://huggingface.co/docs/transformers/multimodal) + +--- + +**继续学习 [LLM](../llm/README.md) 或 [深度学习](../deep-learning/README.md)!** 🚀 diff --git a/multimodal/blip.md b/multimodal/blip.md new file mode 100644 index 0000000..386a4e5 --- /dev/null +++ b/multimodal/blip.md @@ -0,0 +1,105 @@ +# BLIP 系列 + +> **理解 + 生成双任务的多模态模型** + +--- + +## 概述 + +**BLIP** (Bootstrapping Language-Image Pre-training) 由 Salesforce 在 2022 年提出。 + +创新点:**同时训练理解和生成能力** + +--- + +## BLIP vs CLIP + +| 特性 | CLIP | BLIP | +|------|------|------| +| 任务 | 对比学习 | 理解 + 生成 | +| 能力 | 图文匹配 | 图文理解 + 描述生成 | +| 架构 | 对比学习 | 多任务学习 | + +--- + +## BLIP 家族 + +| 模型 | 发布时间 | 特点 | +|------|----------|------| +| BLIP | 2022.01 | 首次提出 | +| BLIP-2 | 2023.01 | 冻结 ViT + Q-Former | +| BLIP-3 | 2023 | 更大模型,更好性能 | + +--- + +## BLIP-2 核心创新 + +### Q-Former 架构 + +``` +图像 → 冻结的 ViT → Q-Former → LLM +文本 → 冻结的 LLM + +优势: +- 只训练 Q-Former(轻量级) +- 利用强大的预训练模型 +- 训练成本大幅降低 +``` + +--- + +## 实战代码 + +### 图像描述生成 + +```python +from transformers import BlipProcessor, BlipForConditionalGeneration +from PIL import Image + +processor = BlipProcessor.from_pretrained("Salesforce/blip-image-captioning-base") +model = BlipForConditionalGeneration.from_pretrained("Salesforce/blip-image-captioning-base") + +image = Image.open("image.jpg") + +# 无条件描述 +inputs = processor(image, return_tensors="pt") +out = model.generate(**inputs) +caption = processor.decode(out[0], skip_special_tokens=True) +print(f"Caption: {caption}") + +# 条件描述 +inputs = processor(image, text="a photo of", return_tensors="pt") +out = model.generate(**inputs) +caption = processor.decode(out[0], skip_special_tokens=True) +print(f"Caption: {caption}") +``` + +### 视觉问答 (VQA) + +```python +from transformers import BlipProcessor, BlipForQuestionAnswering + +processor = BlipProcessor.from_pretrained("Salesforce/blip-vqa-base") +model = BlipForQuestionAnswering.from_pretrained("Salesforce/blip-vqa-base") + +image = Image.open("image.jpg") +question = "What color is the cat?" + +inputs = processor(image, question, return_tensors="pt") +out = model.generate(**inputs) +answer = processor.decode(out[0], skip_special_tokens=True) +print(f"Answer: {answer}") +``` + +--- + +## 应用场景 + +- 📝 图像描述生成 +- ❓ 视觉问答 +- 🔍 图文检索 +- 📊 图像-文本对过滤 + +--- + +**继续学习 [LLaVA](llava.md)!** diff --git a/multimodal/clip.md b/multimodal/clip.md new file mode 100644 index 0000000..47a6fb8 --- /dev/null +++ b/multimodal/clip.md @@ -0,0 +1,103 @@ +# CLIP (Contrastive Language-Image Pre-training) + +> **图文理解的基石** + +--- + +## 概述 + +**CLIP** 由 OpenAI 在 2021 年提出,是一个连接文本和图像的模型。 + +核心思想:**用对比学习让文本和图像映射到同一语义空间** + +--- + +## 工作原理 + +### 1. 对比学习 + +``` +图像编码器 → 图像向量 +文本编码器 → 文本向量 + +损失函数: +- 正样本对(图像-文本匹配):拉近 +- 负样本对(图像-文本不匹配):推远 +``` + +### 2. 零样本能力 + +训练好的 CLIP 可以: +- 不需要额外训练 +- 直接对图像分类 +- 理解未见过的类别 + +--- + +## 实战代码 + +### 零样本图像分类 + +```python +from transformers import CLIPProcessor, CLIPModel +from PIL import Image + +model = CLIPModel.from_pretrained("openai/clip-vit-base-patch32") +processor = CLIPProcessor.from_pretrained("openai/clip-vit-base-patch32") + +image = Image.open("cat.jpg") +texts = ["a cat", "a dog", "a bird", "a car"] + +inputs = processor(text=texts, images=image, return_tensors="pt", padding=True) +outputs = model(**inputs) + +logits_per_image = outputs.logits_per_image +probs = logits_per_image.softmax(dim=1).tolist()[0] + +for text, prob in zip(texts, probs): + print(f"{text}: {prob:.2%}") +``` + +### 图文检索 + +```python +from sklearn.metrics.pairwise import cosine_similarity + +# 编码图像 +image_features = model.get_image_features(inputs.pixel_values) +# 编码文本 +text_features = model.get_text_features(inputs.input_ids) + +# 计算相似度 +similarity = cosine_similarity( + image_features.detach().numpy(), + text_features.detach().numpy() +) +``` + +--- + +## 应用场景 + +- 📸 图像分类 +- 🔍 图文检索 +- 🎨 图像生成(作为引导) +- 📊 图像-文本对齐 + +--- + +## 优缺点 + +### 优点 +- ✅ 零样本能力强 +- ✅ 训练数据简单(图像-文本对) +- ✅ 可迁移性强 + +### 缺点 +- ❌ 对细粒度理解有限 +- ❌ 计算成本较高 +- ❌ 需要大量训练数据 + +--- + +**继续学习 [BLIP 系列](blip.md)!** diff --git a/multimodal/llava.md b/multimodal/llava.md new file mode 100644 index 0000000..876d03f --- /dev/null +++ b/multimodal/llava.md @@ -0,0 +1,134 @@ +# LLaVA (Large Language-and-Vision Assistant) + +> **连接视觉和语言模型,实现多模态对话** + +--- + +## 概述 + +**LLaVA** 于 2023 年提出,是一个连接视觉编码器和 LLM 的多模态模型。 + +核心思想:**将图像向量作为 LLM 的输入,实现图文对话** + +--- + +## 架构 + +``` +图像 → CLIP ViT → 线性投影 → LLM Token +文本 → LLM Token + +拼接后输入 LLM +``` + +### 关键组件 + +1. **视觉编码器**:CLIP ViT +2. **投影层**:线性层 + MLP +3. **语言模型**:Vicuna / LLaMA + +--- + +## 训练方法 + +### 两阶段训练 + +1. **预训练** + - 冻结视觉编码器和 LLM + - 只训练投影层 + - 使用图像-文本对 + +2. **微调** + - 解冻投影层和部分 LLM 参数 + - 使用多模态对话数据 + - 端到端优化 + +--- + +## 实战代码 + +### 多模态对话 + +```python +import torch +from transformers import AutoProcessor, LlavaForConditionalGeneration + +model = LlavaForConditionalGeneration.from_pretrained("llava-hf/llava-1.5-7b-hf") +processor = AutoProcessor.from_pretrained("llava-hf/llava-1.5-7b-hf") + +prompt = "USER: \nWhat's in this image?\nASSISTANT:" +image = Image.open("image.jpg") + +inputs = processor(text=prompt, images=image, return_tensors="pt") + +output = model.generate(**inputs, max_new_tokens=100) +response = processor.decode(output[0], skip_special_tokens=True) +print(response) +``` + +### 复杂推理 + +```python +prompt = """USER: +请详细描述这张图片中的: +1. 主要物体 +2. 场景背景 +3. 颜色和风格 +4. 可能的故事情节 + +ASSISTANT:""" + +inputs = processor(text=prompt, images=image, return_tensors="pt") +output = model.generate(**inputs, max_new_tokens=200) +response = processor.decode(output[0], skip_special_tokens=True) +print(response) +``` + +--- + +## LLaVA 家族 + +| 模型 | 参数量 | 特点 | +|------|--------|------| +| LLaVA-1.5 | 7B/13B | 轻量级,效果好 | +| LLaVA-NeXT | 34B | 更强推理能力 | +| LLaVA-1.6 | 72B | 最强性能 | + +--- + +## 应用场景 + +- 💬 多模态对话 +- 🔍 图像理解 +- 🎨 视觉推理 +- 📊 OCR + 语义理解 +- 📐 数学图像理解 + +--- + +## 优势 + +- ✅ 强大的对话能力 +- ✅ 灵活的多模态理解 +- ✅ 可以处理复杂指令 +- ✅ 开源且可部署 + +--- + +## 限制 + +- ❌ 计算成本高(需要大模型) +- ❌ 长文本推理仍有挑战 +- ❌ 视觉细节理解有限 + +--- + +## 相关资源 + +- [LLaVA GitHub](https://github.com/haotian-liu/LLaVA) +- [LLaVA Paper](https://arxiv.org/abs/2304.08485) +- [Hugging Face Models](https://huggingface.co/models?search=llava) + +--- + +**恭喜!你已经完成了多模态的核心学习!** 🎉 diff --git a/projects/README.md b/projects/README.md new file mode 100644 index 0000000..c6cfb3e --- /dev/null +++ b/projects/README.md @@ -0,0 +1,194 @@ +# 项目实战 + +> **理论结合实践,从学习者到开发者** + +--- + +## 🎯 为什么做项目? + +学了很多理论,不知道怎么用? + +**项目能帮你:** +- ✅ 巩固知识(用过才忘不掉) +- ✅ 建立作品集(求职加分) +- ✅ 发现问题(理论学习看不到) +- ✅ 积累经验(踩坑是最好的老师) + +--- + +## 📋 推荐项目 + +### 新人友好(1-2 周) + +| 项目 | 技术栈 | 难度 | +|------|--------|------| +| **房价预测** | 线性回归 + Pandas | ⭐ | +| **手写数字识别** | CNN + PyTorch | ⭐⭐ | +| **情感分析** | BERT + HuggingFace | ⭐⭐ | + +### 进阶项目(2-4 周) + +| 项目 | 技术栈 | 难度 | +|------|--------|------| +| **推荐系统** | 协同过滤 + 深度学习 | ⭐⭐ | +| **图像分类器** | ResNet + 迁移学习 | ⭐⭐ | +| **问答机器人** | RAG + LangChain | ⭐⭐⭐ | + +### 高级项目(1-2 月) + +| 项目 | 技术栈 | 难度 | +|------|--------|------| +| **多模态 Agent** | LLaVA + LangChain | ⭐⭐⭐ | +| **定制 LLM** | LoRA 微调 | ⭐⭐⭐ | +| **实时分析系统** | MLOps + 部署 | ⭐⭐⭐ | + +--- + +## 🚀 项目开发流程 + +### 1. 确定目标 + +``` +问题 → 目标 → 指标 +``` + +例子: +- 问题:预测房价 +- 目标:预测准确率 > 80% +- 指标:MSE, MAE, R² + +### 2. 收集数据 + +```python +# 数据来源 +- 公开数据集(Kaggle, UCI) +- 爬虫获取 +- 自己标注 +- 合成数据 +``` + +### 3. 数据探索 + +```python +import pandas as pd +import matplotlib.pyplot as plt + +# 查看数据 +df.head() +df.info() +df.describe() + +# 可视化 +df.hist() +df.plot.scatter(...) +``` + +### 4. 特征工程 + +```python +# 特征选择 +# 特征转换 +# 特征缩放 +# 处理缺失值 +``` + +### 5. 模型训练 + +```python +from sklearn.model_selection import train_test_split +from sklearn.linear_model import LinearRegression + +X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) + +model = LinearRegression() +model.fit(X_train, y_train) + +y_pred = model.predict(X_test) +``` + +### 6. 评估优化 + +```python +from sklearn.metrics import mean_squared_error, r2_score + +mse = mean_squared_error(y_test, y_pred) +r2 = r2_score(y_test, y_pred) + +print(f"MSE: {mse}, R²: {r2}") +``` + +### 7. 部署上线 + +```python +# FastAPI +# Streamlit +# Docker +# 云服务 +``` + +--- + +## 💡 项目技巧 + +### 1. 从小开始 + +- ❌ 不要一开始就想做大项目 +- ✅ 先跑通简单版本,再逐步复杂化 + +### 2. 记录过程 + +``` +项目笔记结构: +## [项目名] +### 目标 +### 数据 +### 模型 +### 结果 +### 踩坑 +### 改进方向 +``` + +### 3. 寻求反馈 + +- 在 GitHub 上开源 +- 写博客分享 +- 参加竞赛或 hackathon + +--- + +## 📚 学习资源 + +### 数据集 + +- [Kaggle Datasets](https://www.kaggle.com/datasets) +- [UCI Machine Learning Repository](https://archive.ics.uci.edu/ml/) +- [Google Dataset Search](https://datasetsearch.research.google.com/) + +### 工具 + +- [Jupyter](https://jupyter.org/) +- [Google Colab](https://colab.research.google.com/) +- [Hugging Face Spaces](https://huggingface.co/spaces) + +### 灵感 + +- [Awesome Machine Learning](https://github.com/josephmisiti/awesome-machine-learning) +- [Papers with Code](https://paperswithcode.com/) + +--- + +## 🎯 行动清单 + +选择一个项目,开始动手! + +- [ ] 确定项目目标 +- [ ] 收集数据 +- [ ] 探索数据 +- [ ] 训练模型 +- [ ] 评估结果 +- [ ] 部署上线 +- [ ] 写文档分享 + +--- + +**祝你项目成功!** 🚀