神经网络中的向量化:入门指南

发布: (2025年12月24日 GMT+8 14:02)
6 min read
原文: Dev.to

Source: Dev.to

请提供您希望翻译的具体文本内容,我将按照要求保留源链接并进行简体中文翻译。

什么是向量化?

  • Vector:数据的数学表示,作为有序的数字列表。
  • Vectorization:将原始数据(单词、像素、声音等)转换为向量,以便神经网络能够执行快速算术并学习模式。

通过将数据表示为向量,计算机可以用高效的数组操作取代慢速循环,从而加快训练和推理速度。

实际应用

  • 搜索引擎 – 查询和文档被向量化以比较相关性。
  • 手机助手 – 语音被向量化,使 Siri/Google Assistant 能理解指令。
  • 语言翻译 – 单词被映射到捕捉意义的向量。
  • 交通路由 – 地图数据被向量化以计算最佳路线。
  • 电子商务 – 产品和用户行为被向量化用于推荐系统。
  • 医疗保健 – 医学扫描被向量化用于异常检测。
  • 金融 – 交易被向量化以发现欺诈。
  • 垃圾邮件过滤 – 电子邮件被向量化以分类为垃圾邮件或安全邮件。
  • 自动驾驶 – 传感器数据被向量化用于车道保持和碰撞警报。

工作原理

文本数据

每个词都会映射到一个向量(例如,“king” → [0.25, 0.89, 0.12,…])。常见的技术包括词袋模型、TF‑IDF 和密集嵌入。

图像数据

像素(RGB 值)会转换为向量中的数字。一个 64×64、包含三个颜色通道的图像就是一个长度为 12 288 的向量。

运算

不是对单个元素进行循环,而是一次性对整个向量进行数学运算:

[1, 2, 3] + [4, 5, 6] = [5, 7, 9]

优势

  • 速度 – 训练和推理更快。
  • 简洁 – 代码更清晰,无需显式循环。
  • 可扩展性 – 能高效处理大规模数据集。
  • 准确性 – 捕捉文本的语义含义和图像的视觉模式。

Python 示例

import numpy as np

# 两个简单向量
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

# 向量化相加
c = a + b
print(c)          # [5 7 9]
from sklearn.feature_extraction.text import CountVectorizer

texts = [
    "AI is amazing",
    "Vectorization makes AI fast",
    "AI AI is powerful"
]

vectorizer = CountVectorizer()
X = vectorizer.fit_transform(texts)

print(vectorizer.get_feature_names_out())
# ['ai' 'amazing' 'fast' 'is' 'makes' 'powerful' 'vectorization']

print(X.toarray())
# [[1 1 0 1 0 0 0]
#  [1 0 1 0 1 0 1]
#  [2 0 0 1 0 1 0]]

说明

  • 词汇表由所有句子中出现的唯一单词组成。
  • 每一列对应一个单词;每一行对应一个句子。
  • 值表示单词出现的次数(例如 2 表示该单词出现了两次)。

向量化类型

数值向量化

直接使用原始数字(例如像素强度、传感器读数)。

类别向量化

将类别值转换为数值形式。

One‑Hot 编码

创建一个二进制向量,唯一的 1 表示激活的类别。

import pandas as pd

animals = pd.DataFrame({'pet': ['cat', 'dog', 'fish', 'cat']})
encoded = pd.get_dummies(animals, columns=['pet'])
print(encoded)
#    pet_cat  pet_dog  pet_fish
# 0        1        0        0
# 1        0        1        0
# 2        0        0        1
# 3        1        0        0

Label 编码

为每个类别分配唯一整数(例如 cat → 0dog → 1fish → 2)。简单但可能无意中暗示序数关系。

Binary 编码

将类别表示为二进制数,较 One‑Hot 可降低维度。

Frequency 编码

使用每个类别的出现次数作为其数值(例如 cat → 10dog → 5fish → 2)。

文本向量化

将单词或句子转换为向量。

  • Bag‑of‑Words / TF‑IDF – 基于词频或加权频率的稀疏向量。
  • Embedding – 从大语料库学习的密集、低维向量(例如 Word2Vec、GloVe、BERT)。
    示例:king - man + woman ≈ queen.

操作向量化

对整个数组一次性应用数学运算(例如 NumPy、TensorFlow、PyTorch)。这是高效神经网络计算的核心。


编码方法——One‑Hot、Label、Binary、Frequency 与 Embedding——各有优势和权衡。选择合适的方法取决于数据集规模、模型结构以及具体问题。

Back to Blog

相关文章

阅读更多 »

神经网络:绝对初学者

引言 如果你曾经想过机器是如何识别面孔、翻译语言,甚至生成艺术的,背后的秘密往往是 neural networks。Do...