00 深度学习知识体系
近几年人工智能很火,很多人也想学习,但一看到数学那一堆公式就吓退不少人。事实上,想要入门的话,了解其原理,并不用多少数学基础。笔者以前买过很多相关的书籍看,忘了又忘,但最后发现其实用到的并不多。还是秉持陶渊明的那句 “好读书,不求甚解”。遇到不懂的,可以简单研究一下,但一定不要死扣不放,适时忽略跳过即可,等后面有了全局观,再回过头来看,就会更容易理解。
本文围绕着最近比较火自然语言大模型所需要的知识点,进行列举和简述其用途。希望可以让读者用最少的精力入门掌握原理。
-
数学基础
-
向量/矩阵乘法
在神经网络算法中几乎处处充斥着向量内积,矩阵乘法其实就是批量向量内积。
-
导数/偏导
神经网络优化算法——梯度下降就是利用导数的知识,网络中那么多参数需要优化其实是利用了偏导的思想。
-
雅可比矩阵/黑塞矩阵
这个是矩阵一阶偏导数和二阶偏导数,直接按矩阵批量反向传播。
-
-
误差与近似
在这个世界,误差无处不在,即使用最精确的尺子衡量依旧是存在误差的,我们不能消灭误差,只能减少误差,求其近似值,神经网络就是在通过优化算法减少误差近似求解。
-
牛顿法、泰勒公式展开
一种简易的巧妙的方式求解近似值,你有想过计算机时如何开根号的吗?
-
-
距离
-
余弦相似度、欧式距离、切比雪夫距离
距离可以衡量向量之间差异,有很多可以计算距离的算法,但常用的只有欧式距离和余弦相似度。
-
范数(向量模(长度)这一概念的推广)
神经网络的 Module 中可能会看到 $L_1$ 正则化,$L_2$ 正则化,其实就是这个范数,它是用来约束权重向量值要平稳些,不要太离散。
-
-
信息论
-
信息熵、交叉熵
大名鼎鼎的多分类损失函数交叉熵,了解这个你更知道为什么用它。
-
-
概率论
这里仅简单提一下,其实只要知道 0~1 之间代表什么。
-
-
深度学习基本概念
深度神经网络号称是可以拟合任意的函数。下面就是其支撑其核心的七大基本概念。
-
神经元/输入层/隐藏层/输出层
一个神经网络的基本组成部分,数据从输入层进入,再到隐藏层,最后到输出层预测结果。
-
激活函数
有了非线性的激活函数,所以神经网络可以很深,且不能被简化成一个 $Y=WX$。还有一些概念如:梯度消失与梯度爆炸。
-
损失函数/目标函数
损失函数和目标函数可以基本等同,损失函数是描述模型输出值与我们期望的标签值的距离。
-
反向传播
梯度下降算法就是反向传播中的重要优化算法。
-
学习率
用来控制模型训练过程的参数更新速度快慢的。
-
权重初始化
模型权重的初始化很重要,一般采用随机初始化,这样每个神经元就有不同的导数了。
-
批量归一化
一个非常重要的算法,假如模型参数偏离原点(激活函数大多都在原点工作的比较好)太过分,这个算法可以拉回原点。
-
-
自然语言大模型(Large Language Model, LLM)/ChatGPT
-
词向量
自然语言文本时如何转成词向量。
-
Seq2Seq
这是一个可以实现输入和输出的序列长度不一样的算法,典型的应用就是语言翻译。
-
注意力
这是模仿人可以关注一段文本的关键内容的算法,也可用于计算机视觉,关注图像前景而忽略背景。
-
Transformer 以及其他流行的类 Transformer 大模型。千问/Llama/百川。
-
自然语言文本生成 自然语言大模型中生成文本最常见的几个参数,及其生成原理。
-
采样
有三种采样方法:贪婪搜索/集束搜索/穷举搜索。
-
温度
用于控制某些词元(Token)被采样到概率。
-
TopK/TopP
用于控制模型采样候选词元(Token)的范围。
-
-
提示词工程(Prompt Engineering)
提示工程是一门较新的学科,关注提示词开发和优化,帮助用户将大语言模型用于各场景和研究领域。
-