神经网络,从本质上讲,是数学机器。它们处理数字,特别是数字数组或张量。因此,将神经网络应用于任何问题的一个基本步骤是将原始输入数据转换为合适的数值格式。这个过程很大程度上取决于您处理的数据类型。思考一下您希望网络从中学习的不同类型的信息:客户年龄、产品类别、图像中的像素值、句子中的单词。每种信息都需要特定的表示策略。数值型特征数值型特征通常最容易处理,因为它们本身就是数字。它们可以是:连续型: 能在一个范围内取任意值的(例如,温度、身高、价格)。离散型: 可计数的整数值(例如,购买商品数量、网站访问次数)。虽然这些特征已经是数值型的,但它们通常需要进一步处理,特别是缩放,我们将在下一节(“特征缩放:归一化与标准化”)中介绍。目前,重要的一点是,它们固有的数值性质使其能够直接与网络的输入要求兼容,通常在输入向量或矩阵中表示为浮点数。例如,如果您有年龄和收入等特征,一个数据点可以表示为[35, 55000.0]这样的向量。数据点的集合将构成一个矩阵,其中每行对应一个样本,每列对应一个特征。分类型特征分类型特征表示属于不同组或类别的性质或特点。例子包括产品类型('电子产品'、'服装'、'食品杂货')、用户满意度('高'、'中'、'低')或颜色('红'、'绿'、'蓝')。这些不能直接输入大多数神经网络模型,因为网络不理解像'服装'这样的字符串标签。我们需要将它们转换为数字。主要有两种类型:名义型: 没有固有顺序的类别(例如,'红'、'绿'、'蓝')。序数型: 具有有意义顺序的类别(例如,'低'、'中'、'高';'小'、'中'、'大')。编码分类型特征存在几种技术:标签编码这种方法为每个类别分配一个唯一的整数。例如:'红' -> 0'绿' -> 1'蓝' -> 2对于序数型特征,如('低'、'中'、'高'),这可能看起来合适('低' -> 0,'中' -> 1,'高' -> 2),因为它保留了顺序。然而,将标签编码应用于名义型特征可能会有问题。网络可能会错误地将分配的整数解释为具有顺序或大小关系(例如,蓝色=2是绿色=1的“两倍”),而这种关系并不存在。这可能会给学习过程带来意想不到的偏差。独热编码这是名义型分类特征最常见且通常首选的方法,也常用于序数型特征,除非您特别希望模型以数值方式学习序数关系(这可能很复杂)。神经网络处理数字,特别是数组或张量形式的数字。因此,将原始输入数据转换为合适的数值格式是应用神经网络的基本步骤。对于常见的分类特征,独热编码是一种有效的数值转换方法。它将每个具有$k$个不同类别的分类特征转换为$k$个独立的二元(0或1)特征。对于每个数据点,这些新特征中只有一个将是1(表示该类别的存在),所有其他特征将是0。考虑一个带有类别{'红'、'绿'、'蓝'}的颜色特征。独热编码将创建三个新特征:是_红、是_绿、是_蓝。原始颜色是_红是_绿是_蓝红100绿010蓝000绿010digraph G { rankdir=LR; node [shape=box, style=rounded, fontname="sans-serif", fontsize=10]; edge [fontname="sans-serif", fontsize=9]; subgraph cluster_0 { label = "原始特征"; style=filled; color="#e9ecef"; Original [label="颜色特征\n{红, 绿, 蓝}", shape=folder]; } subgraph cluster_1 { label = "独热编码特征"; style=filled; color="#dee2e6"; Is_Red [label="是_红\n{0, 1}", shape=box, fillcolor="#ffc9c9"]; Is_Green [label="是_绿\n{0, 1}", shape=box, fillcolor="#b2f2bb"]; Is_Blue [label="是_蓝\n{0, 1}", shape=box, fillcolor="#a5d8ff"]; } Original -> Is_Red [label=" '红' -> [1, 0, 0]"]; Original -> Is_Green [label=" '绿' -> [0, 1, 0]"]; Original -> Is_Blue [label=" '蓝' -> [0, 0, 1]"]; }使用独热编码将单个分类特征转换为多个二元特征。这种方法避免了引入人为的顺序。然而,如果原始特征有许多独特类别,它会明显增加维度(特征数量),导致输入数据稀疏(许多零)。其他数据类型虽然数值型和分类型特征在表格数据集中很常见,但神经网络也应用于其他数据结构:图像: 表示为像素值的网格。灰度图像通常是一个二维矩阵(高 x 宽),而彩色图像通常是一个三维张量(高 x 宽 x 颜色通道,例如RGB)。像素值本质上是数值型的,通常范围从0到255。文本: 文本数据需要专门的技术。单词或字符可以映射到整数(类似于标签编码),但在深度学习中,更复杂的方法,如TF-IDF或更普遍的词嵌入(如Word2Vec、GloVe或基于Transformer的嵌入)被采用。这些方法将单词或子词表示为密集数值向量,能够捕捉语义关系。这个主题内容广泛,通常在自然语言处理(NLP)课程中讲授。时间序列: 按时间顺序索引的数据点序列(例如,股票价格、传感器读数)。这些通常表示为数值向量序列,其中每个向量对应一个时间步。目标:数值张量无论原始数据类型如何,输入数据表示的最终目标是将您的原始数据转换为神经网络可以处理的数值张量(多维数组)。对于处理表格数据的典型前馈网络,这通常意味着将每个数据样本(行)转换为一个扁平的数值向量,并将整个数据集转换为一个二维矩阵(样本 x 特征)。理解如何正确表示输入是构建有效神经网络模型的第一步。本章的后续部分将以此为根据进行讲解,讨论如何缩放这些数值表示并为有效训练对其进行结构化。