1. 自然语言处理基础:从词向量到上下文理解
在自然语言处理(NLP)领域,如何让计算机理解人类语言一直是个核心挑战。想象一下,如果让你教一个完全不懂中文的外国人阅读文章,你会从哪里开始?最基础的一步就是先让他认识单个汉字的意思。在NLP中,这个过程被称为"词表示"(Word Representation)。
1.1 词向量的演进:从One-Hot到分布式表示
最早的词表示方法是One-Hot编码,就像给字典里的每个字分配一个唯一的编号。假设中文有21000个常用字,那么每个字就用一个21000维的向量表示,其中只有对应位置是1,其他都是0。这种方法简单直接,但存在几个明显问题:
- 维度灾难:21000维的向量对计算资源消耗极大
- 语义缺失:无法表示词语之间的关系(如"猫"和"狗"都是动物,但它们的向量正交)
- 无法处理多义词:同一个字在不同语境下的不同含义无法区分
实际应用中,One-Hot编码只在小规模分类任务中偶尔使用,现代NLP系统几乎都采用更先进的词嵌入(Word Embedding)技术。
1.2 上下文建模的早期尝试:RNN与LSTM
为了解决词语的上下文依赖问题,研究者们最初采用了循环神经网络(RNN)。RNN就像一个有记忆的人,阅读句子时会记住之前看过的内容。它的核心是一个循环结构,可以表示为:
code复制h_t = f(W * x_t + U * h_{t-1} + b)
其中h_t是当前时刻的隐藏状态,x_t是当前输入,W和U是权重矩阵,b是偏置项。
然而,基础RNN存在两个致命缺陷:
- 梯度消失问题:当序列较长时,早期信息很难传递到后面
- 串行计算限制:必须按顺序处理每个词,无法并行加速
长短期记忆网络(LSTM)通过引入门控机制(gate mechanism)部分解决了梯度消失问题。LSTM有三个关键门:
- 遗忘门:决定保留多少之前的信息
- 输入门:决定更新多少新信息
- 输出门:决定输出多少当前状态
虽然LSTM比基础RNN表现更好,但它仍然受限于串行计算。在处理长文档时,计算速度成为瓶颈。此外,单向的LSTM只能考虑前面的上下文,无法利用后面的信息。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
