如今,在机器学习领域,理解大型语言模型(LLMs)的内部工作机制已经成为一项至关重要的技能。无论你是正在为自己的应用选择合适的模型,还是希望获得该领域的基础知识,亦或是关注LLMs及其在理解、创造或引领人工通用智能(AGI)方面的潜力,首先需要做的就是深入理解它们的本质。
在这篇文章中,我将分享自己的学习经验,以及我在大约两周时间内学习LLM基础知识时发现的最有帮助的资源。借助这些资源,你也可以在相对较短的时间内掌握这些知识。这个学习路线图将引导你了解LLM的几乎所有关键知识点。
我的学习之旅为何开启
我对深入理解各种概念有着浓厚的兴趣,哪怕这些概念我已经相当熟悉。我能够阅读并理解关于LLMs的研究论文,也能够构建代理或对模型进行微调。然而,对我来说,这些成就仍显不足。
我渴望深入了解大型语言模型在数学和直观层面是如何运作的,以及它们为何会表现出特定的行为模式。
由于我已经有机器学习和相关领域的知识背景,这使我能够在短短两周内完成这一学习过程。如果没有这样的基础,所需时间可能会远远超过一个月。
我的学习材料
我希望这次学习之旅不仅仅局限于LLMs,还能涵盖量子机器学习、Jax等更多我感兴趣的主题。因此,为了系统地整理并分享我的学习成果,我创建了ml-retreat
GitHub仓库。这个仓库不仅帮助我梳理了学习思路,还得到了社区的热烈反响和支持。
我使用的所有学习资源都是完全免费的,你无需支付任何费用。
在学习LLMs的过程中,我主要遵循了三个步骤:
1. 从零开始构建LLM
这一阶段的学习将帮助你掌握语言模型的基础知识和核心技术。包括令牌和位置嵌入、自注意力机制、变压器架构等。我参考了许多资源,但其中Sebastian Raschka的著作《从头开始构建大型语言模型》尤为出色,它深入浅出地阐释了这些复杂概念。
https://github.com/hesamsheikh/ml-retreat/blob/main/assets/LLM-from-scratch-notes.pdf
2. LLM幻觉现象
在第二阶段的学习中,我深入研究了LLMs为何会产生幻觉现象。这一研究不仅满足了我个人的求知欲,也让我对语言模型的工作机制有了更深刻的理解。
https://github.com/hesamsheikh/ml-retreat/blob/main/assets/LLM-Hallucination.pdf
3. LLM前沿技术:超越注意力机制
最后两个阶段的学习让我对LLMs的工作原理有了全面的了解。此外,我还掌握了一些非基础但非常重要的技术,如暂停令牌、无限注意力机制、RoPE(旋转位置嵌入)、KV缓存以及专家混合(MoE)等。
https://github.com/hesamsheikh/ml-retreat/blob/main/assets/LLM-Edge-Beyond-Attention.pdf
为了巩固所学知识,我深入研究了Meta的Llama项目,其架构和代码实现充分体现了我所学习的内容。
我的学习资源
在学习过程中,我并未局限于单一的学习资源。
对于LLMs的基础知识,我主要参考了Sebastian Raschka的著作《从头开始构建大型语言模型》。
我还阅读了大量的学术论文。尽管阅读论文可能具有一定的挑战性,但它们为我提供了宝贵的理论知识,尤其是那些首次提出某一技术的论文以及综述性论文。
此外,YouTube视频教程也对我非常有帮助。我强烈推荐你观看Andrej Karpathy的系列视频,他深入浅出地讲解了语言建模和LLMs的相关知识。
学习前的准备
虽然学习LLMs并非易事,但只要你具备一定的机器学习和相关领域的知识背景,学习过程将会更加顺利。
数学基础
线性代数:向量、矩阵及其运算,矩阵乘法等。
概率与统计:概率论基础,随机变量及其分布,期望和方差,最大似然估计(MLE)等。
微积分:导数、积分(特别是反向传播中的计算),偏导数(用于梯度优化算法)。
优化方法:梯度下降法、随机梯度下降(SGD)以及其他高级优化算法(如Adam)。
编程与框架
Python编程:熟悉NumPy、Pandas等数据处理库。
深度学习框架:掌握TensorFlow或PyTorch等深度学习框架,了解模型训练、调试及评估流程。
深度学习核心概念
理解感知器、激活函数及神经网络层的基本原理;掌握反向传播算法和梯度下降法;熟悉常见的损失函数(如交叉熵损失、均方误差损失)。
卷积神经网络(CNNs)(可选但推荐):有助于深入理解神经网络层的运作机制。
在学习过程中,你可能会遇到一些难以理解的概念。但这并不意味着你应该放弃。记住,学习是一个循序渐进的过程,遇到困难时,不妨先放一放,稍后再回来深入研究。
学习建议
享受学习过程:我提到自己在两周内完成了这些主题的学习,但这并不意味着学习过程轻松简单。我只是想强调,只要你感兴趣并愿意投入时间,就一定能够掌握这些知识。因此,请不要给自己设定过于严格的学习期限。
个性化学习路径:虽然我分享了自己的学习路线图,但它并不一定适用于所有人。请根据自己的兴趣和需求选择合适的学习资源和方法。
选择性阅读:在阅读书籍、观看视频或论文时,请务必明确自己的学习目标。只关注与目标相关的内容,避免在无关紧要的信息上浪费时间。
希望这篇文章能为你的LLM学习之旅提供有益的帮助和启示。