1
00:00:00,120 --> 00:00:01,280
好吧，这即将成为现实。

2
00:00:01,280 --> 00:00:03,440
大家好，欢迎来到第三周。

3
00:00:03,480 --> 00:00:04,680
第三天。

4
00:00:04,720 --> 00:00:06,680
这就是我们深入挖掘的地方。

5
00:00:07,520 --> 00:00:13,480
您已经可以自信地使用前沿模型进行编码、构建人工智能助手并使用管道

6
00:00:13,480 --> 00:00:14,440
在拥抱的脸上。

7
00:00:14,440 --> 00:00:18,760
记住它们，创建一个管道，然后使用不同的输入随意调用它。

8
00:00:19,040 --> 00:00:23,000
但现在我们将实际运行创建管道时无论如何都会运行的代码。

9
00:00:23,000 --> 00:00:27,680
但我们要自己去做，我们要先看看这些叫做

10
00:00:27,720 --> 00:00:28,760
分词器。

11
00:00:28,880 --> 00:00:34,120
分词器是在模型的文本和数字之间进行转换的东西。

12
00:00:34,200 --> 00:00:35,320
它们是数学上的东西。

13
00:00:35,320 --> 00:00:37,040
他们处理的是数字，而不是文字。

14
00:00:37,400 --> 00:00:44,040
了解特殊标记和聊天模板的工作方式是一件大事。

15
00:00:44,040 --> 00:00:46,520
所以要介绍分词器。

16
00:00:47,000 --> 00:00:53,680
因此，标记器是一些在自然语言和数字之间映射的代码，代表

17
00:00:53,680 --> 00:00:56,240
自然语言，这就是它的工作。

18
00:00:56,400 --> 00:01:00,920
需要明确的是，这项工作实际上有两个步骤。

19
00:01:01,320 --> 00:01:03,160
这会引起一些混乱。

20
00:01:03,160 --> 00:01:08,680
这里有一个术语错误，很多人都会犯错，包括我自己，

21
00:01:08,720 --> 00:01:09,320
但事实并非如此。

22
00:01:09,320 --> 00:01:10,040
这并不重要。

23
00:01:10,040 --> 00:01:12,440
但有时人们会宽松地使用这些术语。

24
00:01:12,440 --> 00:01:16,640
但严格来说，你从自然语言开始。

25
00:01:16,680 --> 00:01:19,520
组成句子的是单词和字母。

26
00:01:19,520 --> 00:01:20,960
这就是你的起点。

27
00:01:21,280 --> 00:01:28,560
分词器首先将其转换为一堆称为标记的东西，这些小块是

28
00:01:28,560 --> 00:01:29,280
字？

29
00:01:29,320 --> 00:01:34,480
非常像我们在第一周在用户界面中执行此操作时，我们看到了大块的颜色。

30
00:01:34,480 --> 00:01:36,040
其中每一个都是一个令牌。

31
00:01:36,080 --> 00:01:41,080
令牌是一组字母，它们构成单词的一部分，也可以是整个单词，

32
00:01:41,080 --> 00:01:44,280
有时它可以是两个词，但那是一个令牌。

33
00:01:44,520 --> 00:01:48,160
然后分词器将其转换为数字。

34
00:01:48,200 --> 00:01:52,600
每个令牌、每个可能的令牌都有一个与之关联的不同数字。

35
00:01:52,600 --> 00:01:58,800
所以我想我们看到的这个词的数字是 300，我已经忘记了，GPT。

36
00:01:59,040 --> 00:02:04,770
呃，所以，所以呃，每个，每个可能的标记都映射到一个数字，有时称为

37
00:02:04,770 --> 00:02:09,890
令牌 ID，就像它在所有可能令牌列表中的索引一样。

38
00:02:10,010 --> 00:02:14,610
严格来说，有令牌和令牌 ID 这两个不同的术语。

39
00:02:14,890 --> 00:02:16,850
令牌是单词的片段。

40
00:02:16,890 --> 00:02:19,730
令牌 ID 是代表该令牌的数字。

41
00:02:19,890 --> 00:02:25,170
人们经常说令牌时指的是令牌 ID，但这并不重要。

42
00:02:25,170 --> 00:02:29,170
但严格来说，令牌是块，ID 是数字。

43
00:02:29,170 --> 00:02:31,290
所以分词器有一个字典。

44
00:02:31,530 --> 00:02:33,410
我的意思是，这都是 Python 意义上的。

45
00:02:33,410 --> 00:02:39,330
但也就像正常意义上的一样，它就像一个查找工具，其中包含所有可能的列表

46
00:02:39,370 --> 00:02:44,210
它知道的令牌，以及与它将用于查找的每个令牌关联的 ID

47
00:02:44,210 --> 00:02:45,930
一个块并用它的 ID 替换它。

48
00:02:46,330 --> 00:02:52,130
那本字典包含了那个词汇，所有可能破坏事物的东西

49
00:02:52,130 --> 00:02:53,690
深入到所有可能的标记。

50
00:02:54,010 --> 00:03:02,250
它还包含一些不映射到任何自然语言单词的特殊标记，特殊标记

51
00:03:02,250 --> 00:03:06,450
将用于向模型传达某些信息。

52
00:03:06,490 --> 00:03:08,090
特殊令牌示例。

53
00:03:08,090 --> 00:03:09,770
有一个代表。

54
00:03:09,770 --> 00:03:11,650
这是提示的开始。

55
00:03:11,650 --> 00:03:13,930
这就是我想告诉你的事情的开始。

56
00:03:13,970 --> 00:03:15,530
那是一个特殊的令牌。

57
00:03:15,530 --> 00:03:18,130
所以这是有自己编号的东西。

58
00:03:18,170 --> 00:03:19,930
比如说，它是数字 10。

59
00:03:20,010 --> 00:03:25,650
然后，数字 10 将在我们想要表示的任何时候传递给 LM 的数字中使用。

60
00:03:25,690 --> 00:03:27,410
这是提示的开始。

61
00:03:27,410 --> 00:03:29,410
我们要在那里输入数字 10。

62
00:03:29,410 --> 00:03:30,450
它就是这样知道的。

63
00:03:30,450 --> 00:03:32,130
这是提示的开始。

64
00:03:32,130 --> 00:03:38,130
让我说得非常清楚，以防万一你在这一点上有任何困惑，当我说

65
00:03:38,130 --> 00:03:44,290
LM 会知道 10 是提示符或其他内容的开始，我并不是说有

66
00:03:44,290 --> 00:03:50,530
我们在神经网络中对其进行配置，以便数字 10 意味着开始

67
00:03:50,530 --> 00:03:56,250
提示，或者变压器架构中存在任何固有的期待特殊的东西

68
00:03:56,290 --> 00:03:57,010
代币。

69
00:03:57,450 --> 00:04:01,730
我要告诉你的是，我们为此目的保留了数字“10”。

70
00:04:01,730 --> 00:04:06,610
而在所有的训​​练数据中，海量的训练数据。

71
00:04:06,610 --> 00:04:14,090
我们在每个提示符的开头重复使用数字 10，因为我们总是这样做，

72
00:04:14,090 --> 00:04:21,530
随着时间的推移，神经网络从所有的例子中了解到，这表明

73
00:04:21,530 --> 00:04:23,290
接下来就是开始。

74
00:04:23,290 --> 00:04:28,850
当它看到类似的结构时，它在预测下一个标记方面变得越来越好。

75
00:04:29,130 --> 00:04:34,570
所以这就像老式的模型一样，根据一些数据来预测某人的信用评级

76
00:04:34,570 --> 00:04:35,290
因素。

77
00:04:35,650 --> 00:04:40,250
你给它信息，并通过给它足够的例子，随着时间的推移，它学会如何称重

78
00:04:40,250 --> 00:04:44,050
通过这些不同的因素来预测某人的信用评级。

79
00:04:44,170 --> 00:04:49,890
嗯，显然这是同一件事，但是要大很多很多个数量级。

80
00:04:50,090 --> 00:04:57,690
并给出足够多的例子，数字十总是开始一个新的提示，它已经看到了这些模式

81
00:04:57,690 --> 00:04:59,610
它复制了这些模式。

82
00:04:59,610 --> 00:05:07,420
因此，以带有该令牌 ID 的数字 10 开始提示，呃，可以正确定向统计数据

83
00:05:07,420 --> 00:05:09,540
以便它更好地预测模式。

84
00:05:09,860 --> 00:05:10,940
这就是重点。

85
00:05:10,940 --> 00:05:13,260
我希望这对您有意义，因为它非常重要。

86
00:05:13,260 --> 00:05:18,860
我们会回过头来讨论几次，但是特殊令牌的想法，它们之所以有用，是因为

87
00:05:18,860 --> 00:05:21,460
我们在所有训练数据中都是这样做的。

88
00:05:21,460 --> 00:05:27,460
这就是他们现在的重点，不同的 Llm 不需要使用相同的方法进行标记化，因为

89
00:05:27,460 --> 00:05:29,140
将文本转换为令牌 ID。

90
00:05:29,260 --> 00:05:31,220
事实上，他们通常不这样做。

91
00:05:31,260 --> 00:05:36,260
通常，当某人构建模型时，他们会构建他们认为可以实现模型的分词器

92
00:05:36,260 --> 00:05:42,220
最有意义的是，它对待单词，以它们喜欢的方式将它们变成ID，并使用特殊的

93
00:05:42,220 --> 00:05:44,500
以他们想要的方式进行训练的令牌。

94
00:05:44,740 --> 00:05:49,980
因此，对于您使用的每个模型，您可能都有不同的分词器。

95
00:05:50,180 --> 00:05:56,860
嗯，meta 通过 llama 模型引领了开源 llms 的发展，并且有一个 llama 分词器，Microsoft

96
00:05:56,860 --> 00:05:57,420
是 fi。

97
00:05:57,460 --> 00:05:59,100
我们将看看它的标记器。

98
00:05:59,380 --> 00:06:00,740
深度搜索有一个分词器。

99
00:06:00,740 --> 00:06:03,980
我们将使用它的一个深度搜索，现在是深度搜索 3.2。

100
00:06:03,980 --> 00:06:05,900
但这仍然是一个实验模型。

101
00:06:05,900 --> 00:06:13,460
因此，我们将继续使用 Deep Seek 3.1，然后我们将研究 Quinn 2.5 coda 的 coda tokenizer。

102
00:06:13,700 --> 00:06:16,620
因此，我们稍后将使用这些不同的标记器。

103
00:06:16,620 --> 00:06:20,780
需要记住的重要一点是模型有自己的标记器。

104
00:06:20,780 --> 00:06:25,540
特定模型没有理由需要使用与另一个模型相同的标记器。

105
00:06:25,540 --> 00:06:31,380
这只是他们为了该模型的目的而决定将单词映射到数字的一部分，并为了

106
00:06:31,420 --> 00:06:33,940
仅涵盖人们提出的两个典型问题。

107
00:06:33,940 --> 00:06:37,900
其中之一是，呃，人们会问，好吧，那这重要吗？

108
00:06:37,900 --> 00:06:44,340
一种模型是否更高效，因为它能够在同一个句子中使用更少的标记，因此更便宜？

109
00:06:44,580 --> 00:06:47,860
老实说，不值得担心这样的事情。

110
00:06:47,900 --> 00:06:53,620
这些决定都是非常小的、琐碎的决定，人们为了获得更多的利益而做出的决定

111
00:06:53,620 --> 00:06:54,460
超出了他们的模型。

112
00:06:54,820 --> 00:07:01,540
如果一个标记器生成的标记较少，那么您可能会节省一小部分

113
00:07:01,580 --> 00:07:03,180
您的输入令牌使用情况。

114
00:07:03,180 --> 00:07:06,940
但该模型可能会给出稍差的结果或稍好的结果。

115
00:07:06,980 --> 00:07:11,740
您知道，更重要的因素是结果的质量。

116
00:07:11,780 --> 00:07:17,180
给定您提供的输入，而不是确切地映射到多少个令牌以及它如何工作。

117
00:07:17,180 --> 00:07:23,060
这是一个转移注意力的事情，所以你不想太陷入为什么不同的标记器

118
00:07:23,060 --> 00:07:24,580
产生不同数量的代币。

119
00:07:24,620 --> 00:07:30,300
更重要的是要理解分词器属于一个模型而不被挂断

120
00:07:30,300 --> 00:07:32,860
关于它创建的代币种类。

121
00:07:32,860 --> 00:07:37,700
最后一点对于一些已经听说过向量的人来说是一个困惑。

122
00:07:37,860 --> 00:07:43,060
向量是 llms 的一个重要属性，我们会经常讨论向量。

123
00:07:43,300 --> 00:07:50,860
令牌与向量不同，向量来自于神经网络的更深处

124
00:07:50,860 --> 00:07:54,380
这些令牌被称为嵌入到模型中。

125
00:07:54,380 --> 00:07:59,540
因此，对于那些了解这些向量的人来说，只需记住所有模型，包括

126
00:07:59,540 --> 00:08:04,060
创建向量的模型将标记作为输入。

127
00:08:04,060 --> 00:08:09,140
因为统计模型只能用数字来说话，所以他们不知道这意味着什么

128
00:08:09,140 --> 00:08:09,900
一句话。

129
00:08:09,900 --> 00:08:12,990
所以你必须以数字的形式输入一些东西。

130
00:08:12,990 --> 00:08:15,430
我们选择的数字就是代币 ID。

131
00:08:15,470 --> 00:08:18,150
这就是我们首先将信息输入模型的方式。

132
00:08:18,150 --> 00:08:20,630
结果可能是向量嵌入。

133
00:08:20,630 --> 00:08:22,150
它可能是下一个令牌。

134
00:08:22,190 --> 00:08:24,390
我们可能会从中得到很多不同的东西。

135
00:08:24,430 --> 00:08:27,870
进来的是所有模型的令牌 ID。

136
00:08:27,870 --> 00:08:34,030
因此，标记化就像是我们稍后将介绍的向量之类的东西之前的一个步骤。

137
00:08:34,030 --> 00:08:37,310
因此，以防万一您感到困惑，请澄清一下。

138
00:08:37,350 --> 00:08:40,750
接下来我们将再次访问 Google Colab。

139
00:08:40,750 --> 00:08:45,350
这次我不会拿到光标并说它是在本周第三天第三天，因为你知道

140
00:08:45,350 --> 00:08:46,510
现在你知道该去哪里了。

141
00:08:46,510 --> 00:08:47,470
你知道如何提出来。

142
00:08:47,470 --> 00:08:48,510
你不会问我的。

143
00:08:49,150 --> 00:08:51,230
所以我们直接去Colab。

144
00:08:51,230 --> 00:08:55,910
请记住，我们正在研究与拥抱脸部互动的更深入、更坚韧的方式。

145
00:08:55,910 --> 00:09:01,510
它的真正威力在于使用模型，这是我们明天要做的。

146
00:09:01,550 --> 00:09:03,710
我们今天所做的就像一部前传。

147
00:09:03,710 --> 00:09:08,990
Tokenizers 为我们明天的工作奠定了基础。

148
00:09:09,150 --> 00:09:12,390
但现在让我们开始使用一些标记器。