1. 项目概述:当词向量遇上神经网络
十年前我第一次接触词向量时,还需要手动实现复杂的矩阵运算。如今借助深度学习框架,一个简单的CBOW模型就能在十分钟内完成训练。这个经典的神经网络结构虽然不如Transformer惊艳,但仍是理解词嵌入(Word Embedding)的最佳切入点。
CBOW(Continuous Bag-of-Words)作为Word2Vec的两种实现方式之一,其核心思想是通过上下文词预测中心词。想象你在玩填字游戏——系统给你"人工智能 __ 处理"这几个词,让你猜中间空缺的"自然语言"。这就是CBOW在做的事情,只不过它处理的是向量形式的数学运算而非文字游戏。
2. 核心原理拆解
2.1 网络结构解剖
CBOW的神经网络结构简单得令人惊讶:
- 输入层:上下文窗口内的词索引(如窗口大小为2时,"the quick brown fox"会生成[the, quick, fox]作为输入)
- 嵌入层:将每个词映射为D维向量(通常D=100-300)
- 平均池化:上下文词向量的算术平均
- 输出层:通过softmax计算目标词概率
python复制# PyTorch模型核心代码示例
class CBOW(nn.Module):
def __init__(self, vocab_size, embedding_dim):
super().__init__()
self.embeddings = nn.Embedding(vocab_size, embedding_dim)
self.linear = nn.Linear(embedding_dim, vocab_size)
def forward(self, inputs):
embeds = self.embeddings(inputs) # (context_size, batch, emb_dim)
avg_embeds = torch.mean(embeds, dim=0) # (batch, emb_dim)
out = self.linear(avg_embeds) # (batch, vocab_size)
解锁全文
加入我们的会员,获取最新、最热、最精彩的开发者技术内容