这里有一个事实,当人们第一次真正深入思考时,它会打破他们对大型语言模型的固有认知:
语言模型从未“看到”你的文字。一个都没有。它看到的只是数字——而且仅仅是数字。
当你在 ChatGPT 中输入 Hello, world 时,另一端的模型并不是在阅读英语。当你的文本到达神经网络时,它已经被切割成称为词元(tokens)的片段,并且每个片段都被替换为一个整数 ID。在所有神奇表象之下,该模型本质上是一个将整数映射为整数的昂贵函数。所谓的“智能”就发生在这个映射过程中。
让我们实际来看一下。
亲眼见证(5 行 Python 代码)
# pip install tiktoken
import tiktoken
enc = tiktoken.get_encoding("cl100k_base") # GPT-4 时代的分词器
ids = enc.encode("Hello, world")
print(ids) # -> [9906, 11, 1917]
print([enc.decode([i]) for i in ids]) # -> ['Hello', ',', ' world']
三个词元。Hello 是一个词元。逗号是它自己的词元。那么 world 呢?它显示为 ' world' ——前导空格被固定包含在内。 这个空格是词元的一部分。这不是舍入误差;它是整个工作机制的核心。
那么,究竟什么是词元?
词元是常见的文本片段。它不一定是一个单词,也不一定是一个字母——只要是分词器在海量文本训练过程中认为有用的任何内容即可。常见单词会成为单个词元。罕见单词则会被拆分成碎片:
for word in ["playing", "tokenization", "antidisestablishmentarianism"]:
print(word, "->", [enc.decode([i]) for i in enc.encode(免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。