首页
CtrlK
Mleon的头像

从零开始学大语言模型-part1

大语言模型
3
大语言模型
自动补全
自动补全
造出新句
造出新句
神经网络
神经网络
语言模型
语言模型
自动补全
自动补全
tye频率
tye频率
用词频率
用词频率
无法创新
无法创新
巨量组合
巨量组合
构建模型
构建模型
一句歌词
一句歌词
新的歌词
新的歌词
一整首歌
一整首歌
两词一组
两词一组
三词一组
三词一组
距离相关
距离相关
押韵关系
押韵关系
复杂函数
复杂函数
近似函数
近似函数
五节八权
五节八权
训练网络
训练网络
寻找低处
寻找低处
反向传播
反向传播
需要容量
需要容量
四权不足
四权不足
改成ReLU
改成ReLU
请看下集
请看下集
单集封面
单集封面

从零开始学大语言模型-part1

03-02
27 次观看
Mleon的头像
Mleon
粉丝:156
主题:4
描述:9
例子:11
类比:1
其他:3
字数:2522

从零开始学大语言模型-part1

Large Language Models from scratch

03-02
27 次观看
Mleon的头像
Mleon
粉丝:156
Mleon的头像
Mleon
粉丝:156
主题:4
描述:9
例子:11
类比:1
其他:3
字数:2522
出处: https://youtu.be/lnA9DMvHtfI?si=1QJ0uRukSzPB9EYG

大语言模型

自动补全

主题 语言模型

出处: https://youtu.be/lnA9DMvHtfI?si=1QJ0uRukSzPB9EYG

大家好。在这段视频中,你将全面了解大型语言模型。

自动补全

让我们从手机上的自动补全功能开始。你有没有想过它是如何工作的?这里的建议词是英语中最常用的词 “the”。让我们输入“y”下一个字母。有许多单词以“ty”开头。

tye频率

如果你选择最短的,你会得到“tye”。这个图表绘制了这个词随时间的频率变化。它在18世纪非常流行,六十年代,但今天,你需要阅读2000万个单词才能找到它的第一次出现。我们可以查找每个单词的这些频率,以“ty”开头的单词。

用词频率

如果我们按单词频率排序,我们会有一个明显的胜者。同样的方法适用于短语和句子。每次你在搜索引擎中开始输入时都会看到它。搜索引擎通过计算查询的频率为每个查询打分。换句话说,有多少其他人使用了那个查询?

无法创新

那么这就是全部吗?语言建模?确实,目标是对每个句子分配一个概率,而频率是一种计算多个概率的方法。问题是这种频率方法不允许你对新句子进行评分。这是一个完全有效的句子,但它可能以前从未出现过。

巨量组合

你可能会问,真的有多少新句子,考虑到每天数以亿计的互联网帖子,当我们穷尽所有单词组合时,让我们做一个粗略的计算。英语中有超过10万单词,一个典型的句子包含超过十个单词。这意味着有10的50次方种组合。这是一个极其庞大的数字。绝大多数句子永远不会被任何人看到。

造出新句

需求 构建模型

因此,在真正的语言模型中,我们需要做的不仅仅是统计已经存在的句子。我们需要某种方式来建模语法和风格等东西。

一句歌词

这里有一个诺贝尔奖获奖诗人的例子。让我们尝试构建一个能够像鲍勃·迪伦那样写作的语言模型。我们首先将这段文本视为一个时间序列,其中每个单词依赖于前一个单词。请注意,“was”这个词出现了三次。让我们将这三次实例合并为一次。这将我们的序列转换为一个图。另一个重复的单词是“if”,让我们也将这两个合并。如果我们为这些边添加概率,它就变成了一个语言模型。

新的歌词

你可以用它生成类似鲍勃·迪伦风格的文本,如果从早期开始并遍历正确的分支序列。你会得到原始的歌词。现在让我们生成一个全新的短语,这首歌里没有的。我们将从“the”开始并跟随这些分支。这是另一个例子。嘿,这些实际上相当不错。它们是全新的短语,听起来像鲍勃·迪伦的风格。但其他路径会产生奇怪的结果,大多数只是产生无意义的内容。我们如何让它变得更好?

一整首歌

首先,我们可以使用更多的文本构建我们的模型。如果你用整首歌构建模型,结果如下。嗯,这些仍然有点奇怪。

两词一组

这里真正的问题在于我们的模型过于简单。它假设每个单词只依赖于前一个单词。我们可以将其写成条件概率。这是当前单词x(n)在给定前一个单词x(n-1)条件下的概率。

三词一组

如果你查看三个单词的关系而不是两个,可以做得稍微好一点。让我们构建一个所有连续三元组的表格。这些称为三元组,你可以使用这些三元组根据前两个单词定义下一个单词的概率。生成文本的结果稍微好一些,但仍然不够好。

距离相关

问题在于这些单词可能具有相当长距离的依赖关系。

押韵关系

例如,单词“red”与“hair”相关,这是三个单词之前的内容,但它也与“bed”押韵,这是十三个单词之前的内容。如果你忽略那些押韵,这首歌根本无法成立。

神经网络

复杂函数

因此,我们需要建模这样的函数,甚至是更长的函数,以准确表示语言。这些函数极为复杂。

近似函数

我们无法精确建模,但我们可以尝试近似它。有多种方法可以近似一个函数。

  • 你可能听说过傅里叶级数,它使用正弦和余弦来近似函数,或者泰勒级数,

  • 这是一个多项式的和。它们都是通用近似器。它们几乎可以近似任何函数。

  • 另一个通用近似器的例子是神经网络。神经网络的一个优势是,你不需要了解你试图近似的函数的任何信息,只需要输入和输出对即可。

五节八权

让我们尝试一个例子。这个函数很有趣。让我们用神经网络来近似它。我们将使用这个。它有五个节点和八个权重。让我们在图上选择一个点,并将其通过网络传递。第一层复制x,并将每个副本乘以不同的权重。然后每个加权副本通过激活函数,一个称为sigmoid的S形曲线。在这种情况下,乘以新的权重然后相加。结果是我们对f(x)的近似值,我们称之为y。

训练网络

我们可以绘制它以查看它离我们试图拟合的函数有多远。这是我们的误差。你可以看到它相当大。那是因为我随机生成了权重。所以这只是其中一个数据点,我们可以向网络发送许多x值以生成这条红色曲线。让我们定义一个误差函数,该函数将红色和蓝色曲线值之间的所有差异相加。我们将使用这些误差来更新权重。这被称为训练网络。如果我们重复这些更新步骤数千次,我们能得到一个相当不错的拟合。

寻找低处

我们可以将我们的能量函数视为一个地形图。我们的目标是找到最低点,也就是盆地。这看起来很容易,对吧?但如果我没有给你展示这个函数呢?现在要难多了,对吧?好的,我会给你几个点,以及它们的负梯度,它们指向下坡方向。现在你可以沿着梯度下降到山脚下。这被称为梯度下降。这也是优化神经网络的方式。

反向传播

为了训练我们的网络,我们需要误差函数的梯度。它是一个包含八个偏导数的向量,每个权重对应一个。事实证明,对于神经网络来说,计算这个相对直接。并且可以在单次反向传递中完成。在网络中计算偏导数的过程称为反向传播。它是神经网络的核心工作原理。

需要容量

好吧。你现在告诉我神经网络是通用近似器,你可以拟合任何函数。那么这个函数呢,它用于建模语言?嗯,有些网络可以做到这一点,但它需要足够的容量。

四权不足

举个类比的例子,假设我们尝试用这个只有四个权重的网络拟合我们的蓝色曲线。它无法拟合第二个波峰,因为网络的容量不足。

改成ReLU

设计决策很重要。比如,如果我使用不同的激活函数呢?ReLU比较流行,但它们提供的是分段线性重构,所以你需要更多这样的单元来拟合像这样的弯曲函数。

预告 请看下集

那么我们如何设计一个用于建模语言的神经网络呢?请继续关注第二部分,在那里我们将创建一个惊人的神经网络,它可以生成诗歌,翻译语言,甚至编写计算机代码。

讨论
随记