文本、图像和音频等不同类型的数据以特定结构为AI系统准备。通过观察这些数据格式的实际例子,可以更好地理解它们在为机器处理时呈现的样貌。这种实践性的审视提供了一个直观的视角,如同检查发动机内部零件一般。观察文本数据格式文本随处可见,从简单的消息到长篇文档。但AI模型如何“读取”文本呢?它首先将其分解为可处理的片段,然后将这些片段转换为数字。原始文本:这是我们看到的文本。让我们来看一个简单的句子: AI processes data.分词:第一步通常是将句子分解为称为“标记”(tokens)的独立单元。这些标记通常是单词或标点符号。 我们的句子 AI processes data. 将被分词成如下列表: ["AI", "processes", "data", "."]数值表示:AI模型直接处理的是数字而不是文本。因此,这些标记被转换为数值形式。一种直接的方法是为预定义词汇表中的每个词分配一个唯一的ID。假设我们例子中有一个非常小的词汇表:AI:0processes:1data:2. (句号):3使用这个词汇表,我们的分词句子 ["AI", "processes", "data", "."] 变成一个数字序列: [0, 1, 2, 3]实际的AI系统使用更大的词汇表,有时包含数万甚至数百万个词语。每个词语都有一个唯一的数值ID。更先进的技术会为词语创建密集向量表示(嵌入),它们能够捕捉语义信息,但其主要思路始于这种数值映射。观察图像数据格式如前所述,图像可以被看作是像素值的网格。每个像素都有一个值(或一组值),表示其颜色和强度。让我们考虑一个非常小的灰度图像,例如3像素宽、3像素高。它的表示形式将是一个由数字组成的二维数组(或矩阵)。每个数字通常在0(黑色)到255(白色)之间,表示灰度像素的强度。例如,这样一个3x3的灰度图像可能表示为: $$ \text{图像矩阵(灰度)} = \begin{pmatrix} 210 & 180 & 90 \ 150 & 120 & 60 \ 80 & 50 & 20 \end{pmatrix} $$一个3x3的灰度图像,表示为像素强度值的矩阵。值越大表示像素越亮(例如,210比20亮)。对于彩色图像,表示方式类似但稍微复杂。一种常用的方式是使用RGB颜色模型,其中每个像素由三个值表示:一个代表红色强度,一个代表绿色强度,一个代表蓝色强度。因此,彩色图像就像拥有三个这样的矩阵,每个对应一个颜色通道。对于尺寸为 $W \times H$(宽 $W$ 像素,高 $H$ 像素)的图像,灰度图像是一个 $W \times H$ 矩阵,而RGB彩色图像是一个 $W \times H \times 3$ 张量(一个3D数组)。观察音频数据格式音频,如语音或音乐,起始于连续的声波。为了进行数字处理,这种波形以固定的时间间隔进行采样。在每个时间间隔,测量波形的幅度(响度)。这会得到一个表示音频的数字序列。设想一个短小的声音片段。它的数字表示可能看起来像这样一串幅度值: [0.0, 0.25, 0.7, 0.3, -0.2, -0.6, -0.1, 0.15]每个数字都是在特定时间点测量的幅度。我们可以将其可视化:{"data":[{"type":"scatter","mode":"lines+markers","x":[0,1,2,3,4,5,6,7],"y":[0.0,0.25,0.7,0.3,-0.2,-0.6,-0.1,0.15],"marker":{"color":"#228be6"},"line":{"color":"#228be6"}}],"layout":{"title":{"text":"简化音频波形","font":{"size":14}},"xaxis":{"title":"时间步长(采样点)","zeroline":false},"yaxis":{"title":"幅度","range":[-1,1],"zeroline":false},"height":300,"width":500,"margin":{"l":60,"r":20,"b":50,"t":50,"pad":4},"paper_bgcolor":"#f8f9fa","plot_bgcolor":"#f8f9fa"}}一个简化的声波数字表示,显示离散时间步长的幅度值。这些原始波形值可以直接使用,或者可以转换为更复杂的表示形式,例如频谱图,频谱图显示音频中随时间变化的频率频谱。频谱图本身通常被表示为二维数组,非常类似于灰度图像。观察视频数据格式视频数据结合了动态图像和声音。本质上,视频是一系列图像帧快速连续显示以产生运动错觉,并伴随着与这些帧同步的音轨。因此,对于AI系统而言,视频数据分解为两个主要组成部分:图像帧:一系列独立的图像。如果视频以每秒30帧(fps)的速度播放,一秒钟的视频包含30个这样的图像。每个帧都像我们上面讨论的静态图像一样表示(例如,作为像素值网格)。音轨:伴随视频的声音,表示为波形或其他音频特征,就像我们之前看到的音频数据一样。下面是一个说明此结构的简单图表:digraph G { rankdir=TB; node[shape=box, style="filled", fontname="sans-serif"]; subgraph cluster_video { label="视频数据结构"; color="#adb5bd"; fontcolor="#495057"; Video_File [label="视频文件\n(例如,.mp4, .avi)", fillcolor="#e9ecef", shape=folder, width=2]; Image_Sequence [label="图像帧\n(例如,每秒24-60帧)", fillcolor="#a5d8ff", width=2]; Audio_Data [label="音轨\n(同步声音)", fillcolor="#96f2d7", width=2]; Video_File -> Image_Sequence [label=" 包含 ", fontname="sans-serif", fontsize=10, color="#495057"]; Video_File -> Audio_Data [label=" 包含 ", fontname="sans-serif", fontsize=10, color="#495057"]; Image_Frame_1 [label="帧 1", fillcolor="#74c0fc", width=1.5]; Image_Frame_2 [label="帧 2", fillcolor="#74c0fc", width=1.5]; Image_Frame_Dots [label="...", shape=plaintext, fontsize=18]; Image_Sequence -> Image_Frame_1 [style=dotted, arrowhead=none, color="#495057"]; Image_Sequence -> Image_Frame_2 [style=dotted, arrowhead=none, color="#495057"]; Image_Sequence -> Image_Frame_Dots [style=dotted, arrowhead=none, color="#495057"]; } }视频数据的结构,说明了它由一系列图像帧和相关联的音轨组成。处理视频数据通常涉及处理这两个流,有时先单独处理,然后考虑它们之间的关联(例如,音频如何与帧中的视觉事件对齐)。数据格式概述在这次实践性的观察中,我们看到了文本、图像、音频和视频如何转换为AI模型能够理解和处理的简化示例。文本成为表示单词或字符的数字序列。图像成为表示像素强度或颜色的数字网格。音频成为表示声音幅度或更复杂频谱特征的数字序列。视频是图像序列和同步音频数据的组合。这些数值表示是AI模型用于学习和预测的基本构成要素。本章前面讨论的预处理步骤有助于清理和标准化这些格式。理解这些基本表示是一个重要的第一步,在此之后我们可以研究AI模型如何整合来自这些不同来源的信息。