为什么需要序列编码?
机器学习模型通常输入数值向量,但原始序列(尤其是文本)是符号化的(如单词、字符),序列编码旨在将这些符号映射为数值表示,同时尽可能保留语义和结构信息。

常见编码方法
1 独热编码(One-hot Encoding)
- 将每个符号表示为一个长度为词汇表大小的向量,其中只有对应索引处为1,其余为0。
- 优点:简单直观。
- 缺点:高维稀疏,无法表达语义相似性(任意两个词向量正交)。
2 整数编码(Integer Encoding)
- 为每个符号分配一个唯一的整数ID。
- 优点:紧凑,将序列转换为整数序列。
- 缺点:整数本身没有语义,且可能引入错误的序关系(如“狗”=3,“猫”=4,但并不意味着猫>狗)。
3 词嵌入(Word Embeddings)
- 将符号映射到低维连续向量空间,语义相似的词向量距离相近。
- Word2Vec:通过预测上下文(CBOW)或中心词(Skip-gram)学习嵌入。
- GloVe:基于全局词-词共现统计的嵌入。
- FastText:考虑子词信息,能处理未登录词。
- 优点:稠密、蕴含语义,泛化能力强。
4 基于上下文的嵌入(Contextualized Embeddings)
- 根据上下文动态生成词表示,同一词在不同语境中有不同向量。
- ELMo:基于双向LSTM,生成深层上下文表示。
- BERT:基于Transformer编码器,通过掩码语言模型预训练。
- 这类模型已成为现代NLP的基石,能捕获复杂语义和句法。
序列编码的应用
- 文本分类:将句子编码后输入分类器。
- 机器翻译:编码源语言序列,解码为目标语言。
- 情感分析:编码评论或推文,判断情感倾向。
- 时间序列预测:将历史观测编码为特征向量。
挑战与应对
- 变长序列:使用填充(padding)或截断,或采用RNN/Transformer等自适应模型。
- 未知词:使用子词分割(如BPE)、字符级嵌入或预留未知词标记。
- 多语言/跨领域:需考虑领域自适应或多语言嵌入。
- 计算效率:嵌入矩阵大小随词汇表增长,可采用哈希技巧或量化压缩。
序列编码是连接原始数据与模型的桥梁,从简单的独热编码到复杂的上下文嵌入,编码方式的选择直接影响模型性能,实践中应根据任务需求、数据规模和计算资源权衡选择,并充分利用预训练嵌入以提升效果。 能帮助你理解序列编码的基础,如有进一步问题,欢迎继续探讨!
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。