小叶准备把几份课程资料整理成方便同学查阅的资料包。AI可以帮助提取文字、解释图表、整理题目,但在分配工作以前,小叶遇到了一个很普通的问题:怎样说明手上的材料究竟有多少工作?
只报文件数量显然不够。一份文件可能只有三页,也可能有几十页。换成总页数,情况好了一些,却仍然把纯文字页、复杂图表页和需要单独核验的习题混在了一起。同样十页材料,处理起来可能很不一样。
小叶开始做一张表:每份资料分别记录纯文字页数、含图表页数,以及需要额外核验的习题数。这个动作并不神秘,却已经走到了向量与矩阵表示的入口。原来笼统的“一份资料”,现在能够从几个确定的方面来描述;几份资料使用相同的描述方式,也就能够一起比较和处理。
本章要理解的,正是从对象到数字的这一步。我们会看数字怎样保留一个对象的不同方面,怎样组成批量数据,以及哪些计算因此变得有意义。随后再把这套认识带到文字和图片上,看看为什么一段文本、一张照片也能够进入数值计算。以下资料、数量和耗时均为虚构教学案例。
一、一个数不够时,为什么要用一组数
从标量到向量
标量可以先理解为一个单独的数。例如,“这份资料有十页”中的页数,可以用标量10表示。页数这个属性说清楚以后,一个数就足以记录它。
但如果小叶想估计整理工作,仅有总页数就不够用了。他把第一包资料记为:八页纯文字、两页含图表,另有六道习题需要核验。这三个数量一起描述同一包资料,写成:
这里的三个位置依次表示纯文字页数、含图表页数、额外核验题数。这样的有序数列就是我们在本章使用的向量。每一个位置上的数叫作一个分量,这个向量有三个分量,称为三维向量。这里的“维”指用了多少个分量来描述资料,并不要求我们把资料想象成物理空间里的一支箭头。
课本经常从平面上的箭头讲向量,那是很有用的几何理解。不过,用向量描述资料时,我们更关心它记录了哪些属性。同样的数列既可以被画成空间中的一个点,也可以被解释成三个工作量指标;赋予各个位置什么含义,取决于我们正在研究的对象。
如果用一般的符号写,含有三个分量的向量可以记作:
下标只是位置编号。在这个案例中,第二个位置固定记录含图表页数,所以看到第二个分量为2,就知道这里有两页含图表。为了阅读方便,本章先横着写向量;需要配合矩阵计算时也会竖着写。横排还是竖排会影响运算时的排列要求,但不会自动改变这三个数各自描述什么。
表示之前,要决定保留哪些区别
请留意小叶为什么选这三个属性:他目前要了解整理工作由什么组成。纯文字和图表的处理方式不同,习题还要额外核验,所以有必要分开记录。假如他正在按学科给资料分类,最需要的可能是课程、主题和知识范围,页数反而不是首要信息。
因此,建立向量并不是先找到几个数字,再设法给它们安排用途。通常应当先想清楚要作什么判断,再决定保留对象的哪些区别。用于描述对象的这些属性,在数据分析和机器学习中常称为特征。小叶这组三个数,就是一组人为选择的特征。
一种表示有用,不等于它把对象完整记录下来了。两份资料完全可以都有八页纯文字、两页图表和六道待核验题,却分别讲经济学和物理学。它们在当前三个属性上相同,不能由此断定内容相同。工作量表示支持的是工作量方面的判断,至于具体讲了什么,还需要阅读内容或采用其他表示。
这也解释了为什么不能把所有资料压成一个“综合分”以后,就认为后续判断都能交给这个分数。一个分数方便排序,却可能把不同情况合并。保留多个分量,可以暂时不急着把它们折成同一种尺度,让我们在需要时根据任务再决定如何组合。
不需要等全部属性都齐全才开始
选择特征并不要求一次找到完美方案。小叶先用这三项安排一轮整理,后来发现有些扫描页很模糊,需要单独处理,就可以增加“模糊页数”这一项。新增特征的理由是它会影响实际工作,而不是向量越长看起来越先进。
但增加了位置,就要让所有资料使用新的共同规则。不能第一包的第四项表示模糊页数,第二包的第四项却表示参考文献数。向量使信息变得容易计算,前提是相同位置始终描述可对应的东西。这是下一步需要认真做好的事情。
二、数字背后的约定,决定这组向量能不能用
顺序是表示的一部分
小叶把第一包资料发给AI,只写了“8、2、6”。这几个数字究竟是页数、题数还是分钟数,接收方无从知道。即使补充“分别是文字页、图表页、核验题”,下次换了顺序却不说明,仍然会出错。
假如另一张表按“图表页、文字页、核验题”排列,同一包资料在那张表里就应该写成(2,8,6)。这并不是资料发生了变化,而是记录的位置换了。如果把新排列直接当作旧排列来读,就会把两页图表看成八页图表。数值没有抄错,理解却已经错位。
所以,向量不仅需要数字,也需要与数字配套的含义说明。程序中常把这类说明保存为字段名、列名或数据格式。对小叶而言,一行明确的约定就很有帮助:
每包资料按“纯文字页数、含图表页数、额外核验题数”的顺序记录。前两项的单位为页,最后一项的单位为道。
这不是额外的文书负担。它使同学、AI和程序可以依据同一套规则理解这些数据。以后转换排列时,也知道哪些内容要一起转换。
不同分量可以有不同单位
第一包资料的前两项是页,第三项是道题。它们可以组成一个向量,因为向量可以同时记录不同属性,并不要求所有分量具有同一单位。
但这不意味着三个数能直接加成一个有明确现实含义的总量。八页文字加两页图表,可以得到十页资料;再加六道题得到16,却不能把16称为总页数或总工作时间。向量把几个属性放在一起,仍然保留了这些属性之间的区别。
如果确实需要把它们汇成工作时间,就要引入每类工作需要多少时间的关系。几页、几道题各自贡献多少分钟,确认以后才能合计。计算规则必须接得上原来的单位,而不是因为数字摆在同一个括号里,就把它们当成一种东西。
同样,不能仅凭某个分量的数值较大,就说它对结果更重要。把耗时从小时改成分钟,数字会扩大六十倍,工作本身却没有变得更重要。后面讨论距离、相似性和特征缩放时,这个问题还会出现;目前先记住,数的大小要连同它代表什么来理解。
“没有”与“还不知道”不是同一个零
第四包资料只有三页纯文字、没有图表,还有两道题待核验,可以写成(3,0,2)。中间的0说明已经检查过,确实没有含图表页。
现在又来了一份尚未翻完的文件,小叶只统计了纯文字页和习题,还不知道有多少图表。如果也把中间位置填成0,后续计算就会把未查清的工作当成不存在。问题发生在记录阶段,之后的程序即使每一步算得准确,也会沿着这个错误继续算下去。
一种简单处理办法,是先把该项记为“未知”,并保留需要补查的状态。使用程序时,可以用专门的缺失标记;如果后续方法要求每个位置都是数,也需要明确采用什么补值方法,并让使用者知道这里有估计成分。我们暂时不展开各种补值算法,关键是让“尚未观察”保持可辨认。
有时还可以用另一组指示数记录各项是否已经确认。例如,(1,0,1)表示第一项和第三项已确认,第二项未确认。它描述的是数据的确认状态,与原来描述工作数量的向量各有用途。两个向量外形相同,含义却由各自的约定决定。
这些细节看起来不像传统线性代数题,却决定了线性代数运算能否落到实际任务上。向量的数学形式很简洁;现实中的信息要进入这种形式,就需要把对象、含义和记录规则说明白。
三、向量运算:怎样让每一步都对应真实的变化
相加,是把同类数量放在一起
第二包资料有五页纯文字、一页图表、四道需要额外核验的题,记作:
如果小叶把前两包作为同一批工作,纯文字页归到一起,图表页归到一起,核验题也归到一起。合计为:
向量相加采用对应分量相加,在这里正好表示三类工作的分别累计。结果仍然保留三类工作,而不是把它们挤成一个没有单位的总数。
为什么不能把第一包的文字页数与第二包的题数相加后放进第一个位置?因为这个位置已经约定为文字页数。对应相加有意义,是由于两组向量遵守同样的属性顺序和计数口径。
口径还包括“我们在数什么”。如果两包资料含有重复页,小叶计划分别整理两份,按两份工作累计没有问题;如果他要先去重、每一页只处理一次,就不能把页数直接相加当作去重后的总页数。这里需要先识别重复内容。向量加法本身不会替我们决定是否重复计数。
缩放,表示每类数量按相同比例变化
假设小叶需要准备两套相同的纸质资料,并且每套都要逐页处理、逐题核验,工作数量就会成为第一包的两倍:
这是向量的数乘:用一个标量乘每一个分量。它适合表达所有属性按同一比例变化的情况。
现实任务不一定满足这种比例关系。如果核验一遍答案后,第二套直接复用核验结果,题目核验工作就不需要再做一次。此时,两个资料副本的数量翻倍,不代表各类劳动都翻倍。小叶应当按实际需要构造新的工作量向量,而不是看到“两套”就自动乘二。
平均值也可以写成类似的运算。对于前两包资料,平均来看,每包有6.5页纯文字、1.5页图表和5道核验题。这些小数是在描述两包资料的平均构成,并不是声称小叶真的拿到了半页需要独立处理的图表。向量可以记录实际数量,也可以记录统计量;读者需要知道此时是哪一种。
相减,把差异保留在各个方面
第三包资料记作(10,3,8)。将它与第一包比较,可以得到:
差向量告诉小叶:第三包比第一包多两页纯文字、一页图表和两道待核验题。相较于只说“第三包更重”,这个表示保留了工作增加在哪里。
如果某个分量为负,它在差向量中通常表示该项减少。例如,新版资料删掉一页图表,图表页的变化量可以是−1;但描述一份实际资料的图表页数,就不能出现负数。相同的数字形式会因为“总量”与“变化量”的区别而拥有不同解释。
在数学上,我们可以对三维实向量进行加减和数乘。但当向量表示具体对象时,并不是每一个运算结果都仍然对应合法的对象。把资料数量向量乘以−1,可以得到数学上的向量,却不能得到一包负页数的资料。把运算结果解释成变化量,或者解释成真实存量,是应用中必须作出的判断。
所以,学习这些运算并不只是熟练完成三次加法或乘法。更有价值的是能够看出:这次现实变化,是否真的允许各个属性按这条规则变化。能够说清这一点,才知道什么时候适合交给AI批量计算。
四、矩阵:让一批对象使用同一种语言
现在把小叶的四包资料放在一起。为了避免计数重叠,每一页只归入“纯文字页”或“含图表页”中的一类;凡是含有需要处理的图表,就归入后一类。题目核验指页内容整理之后的额外核验工作,因此第三列记录另一项需要做的事。
| 资料包 | 纯文字页数/页 | 含图表页数/页 | 额外核验题数/道 |
|---|---|---|---|
| 第一包 | 8 | 2 | 6 |
| 第二包 | 5 | 1 | 4 |
| 第三包 | 10 | 3 | 8 |
| 第四包 | 3 | 0 | 2 |
只取表格中的数值部分,按原来的行列排列,就得到一个矩阵:
矩阵是按行和列排列的数。这里有四行、三列,所以形状是“4×3”,读作四行三列。它不要求行数和列数相等,也不要求排成正方形。矩阵中的每一个数称为一个元素。
看一行与看一列,回答不同的问题
横着看第一行,小叶能了解第一包资料的三个属性。竖着看第二列,他能看到四包资料分别有多少图表页。因此,一行可以理解为一包资料的特征向量,一列可以理解为同一属性在四包资料上的取值。
如果用两个下标定位,通常先写行号,再写列号。例如,表示第三行、第二列的元素为3,也就是第三包资料有三页含图表。两个下标不是两道新运算,只是在一张表里找到一个位置。

图一:第一行与第二列分别突出显示。它们相交处的2,既属于第一包资料,也属于含图表页数这一项。
原表中的资料包名称没有进入数值矩阵,却不能因此丢掉。假如把第三包和第一包调换位置,整行数字以及相应的资料编号都应一起移动。否则结果算出来以后,小叶可能把第三包的工作量记到第一包名下。矩阵负责组织数值,配套编号负责把数值与现实对象接起来。
转置:把行和列交换
有时小叶想按工作类型查看数据:先列出各包资料的纯文字页数,再列出各包的图表页数,最后列出各包的核验题数。这时可以把矩阵的行和列交换,得到它的转置,记为:
转置以后,矩阵变成三行四列。原来属于第一包的三个数,现在沿第一列排列;原来记录图表页数的一列,现在成为第二行。资料和数量没有变,只是查看它们的方向变了。
这可以帮助理解矩阵为什么不等于某一种固定的业务表。“一行一个对象、一列一个特征”是很常用的约定,但经过转置,角色便交换了。读一个矩阵时,要查看它的行列含义,不能只凭习惯猜。
这里还有一个容易混淆的说法。X有两个排列方向,即行与列;但每包资料使用三个分量表示,是三维特征向量。前者在说数值怎样排布,后者在说一个对象用了多少个坐标。下一章讨论数据形状时会继续区分这两件事,不必把“二维数组”误解为每条记录只能包含两个特征。向量、矩阵及转置的教材定义可参见《动手学深度学习》的线性代数章节。
五、统一表示以后,怎样一次处理整批资料
矩阵的作用不只在于看起来整齐。只要各行使用相同的特征规则,小叶就能把同一套计算应用到每一包资料上。
先把工作量转换为同一种单位
为了估计刚才定义的三类工作,小叶暂作如下教学假设:一页纯文字处理需2分钟,一页含图表内容处理需5分钟,一道题的额外核验需3分钟。图表页的5分钟已经包含这一页的文字处理,不再另算这一页的文字处理时间;题目核验则是页内容处理后的另一项工作。
第一包资料的三类工作分别需要16分钟、10分钟和18分钟。因此,这三类工作预计共需44分钟。这里的关键是,每一类数量先按相应的单位耗时转成分钟,再把时间合起来:
这个式子解释了为什么不能直接把8、2、6相加当作总工作量。文字页、图表页和题目对时间的贡献不同,只有通过相应的换算关系,才获得可相加的同一种量。
我们把三个单位耗时竖着写成向量:
它的三个位置仍然对应文字页、图表页、核验题,单位依次是分钟/页、分钟/页、分钟/道。为了避免把这种对应藏起来,图二把第一包资料的三项贡献直接排在各自的工作类型下面。

图二:44分钟由三类不同的工作贡献组成。换算关系先于求和,结果仅覆盖图中这三项工作。
矩阵乘向量,把同一规则用于每一行
第二包也按同样的单位耗时估计,第三包和第四包同理。把四行计算放在一起,可以简洁地写成:
这就是本章需要先认识的矩阵与向量相乘:对矩阵的每一行,先把三类工作数量与各自的单位耗时相乘,再将所得时间加起来。一行得到一个结果,四包资料就得到四个时间估计。
为什么左边是四行三列的矩阵,右边要有三个分量?因为每包资料记录了三类工作,需要三个对应的换算关系。为什么结果有四个分量?因为我们分别计算了四包资料,而不是三类工作的总计。形状要求在这里有具体含义,并非额外需要背诵的口令。
如果小叶先把全部资料按工作类型汇总,会得到26页纯文字、6页图表和20道核验题。再用相同单位耗时换算,合计142分钟;把刚才四包资料的时间相加,也得到142分钟。在本案例的规则下,两种路径统计了同一批工作,所以结果一致。
但“同一种规则”还包含单位耗时一致的假设。如果某包资料的图特别复杂,需要用不同的处理时间,就不能继续把所有图表页汇总后统一乘5。小叶可以先按复杂程度分组,或者对那包资料单独估计。矩阵运算让共同规则容易重复使用,也让我们更容易看见哪些对象已经不适合共同处理。
矩阵里有数据,结果还依赖模型
这里的142分钟是三类工作的估计,不是全部项目的完工承诺。它尚未包含确定整理方式、沟通要求和最终检查等其他工作,也没有计入耗时波动。即使数量表完全正确,单位耗时的估计仍可能需要调整。
假如小叶试做后发现图表页平均需要更长时间,他不必重抄四包资料的所有数量,只要更新图表页对应的换算关系,再计算整批结果。数据描述与处理规则分开以后,哪些事实变了、哪些假设变了,就更容易区分。
这一点与使用AI直接相关。我们可以让AI帮助建立数量表,也可以让它依据已说明的规则编写计算程序;检查时则分别核对“数量有没有读对”和“规则有没有用对”。一个精确的输出数字,不能同时证明这两部分都可靠。
以后还会见到更多矩阵乘法,包括同时得到多种结果,以及把一种表示变成另一种表示。本章先停在这个可解释的例子上:同一批对象按照共同方式表示之后,同一套计算才能有条理地落到每一个对象身上。
六、类别也能变成数字,但编号不等于数量
小叶现在想为资料补上类型,例如讲义、习题册和幻灯片。这些类型不是页数那样的数量。能不能为了放进矩阵,就把它们依次编号为1、2、3?
作为查找标签,这样编号可以使用:见到1就查到讲义,见到2就查到习题册。然而,一旦把编号直接当作连续数量,某些计算就可能带入本来不存在的关系。幻灯片编号为3,不说明它是讲义的三倍;1和3的平均是2,也不说明讲义与幻灯片平均起来就是习题册。
给每一种类别一个位置
一种常用方法是给三种类型分别保留一个位置:讲义、习题册、幻灯片。如果一份资料只归入其中一类,可以用以下向量表示:
| 类型 | 类别向量 |
|---|---|
| 讲义 | (1,0,0) |
| 习题册 | (0,1,0) |
| 幻灯片 | (0,0,1) |
一个位置为1,表示属于相应类别,其他位置为0。这种方式通常叫作独热编码。它把类别转成可计算的数值,同时没有用1、2、3给类别强加先后等级。官方工具中这一方法的基本定义可见scikit-learn的OneHotEncoder说明。
这时,对多个资料的类别向量相加,就可以统计每类有多少份。假如一批包含两份讲义和一份幻灯片,相加得到(2,0,1),它表示三类资料的数量分布。这个结果不再是一份资料的独热向量,却仍然有明确的统计意义。
如果同一份资料可以同时具有多个标签,例如既包含讲义又包含习题,就可以在对应的两个位置都填1,形成(1,1,0)。此时表示规则改成“分别记录各标签是否存在”,不能再要求每一行恰好只有一个1。几乎相同的外形,适用的是不同的分类任务。
表示方式会影响后续计算怎样看待对象
独热编码也不会自动表达类别之间的丰富关系。它只记录属于哪一类,没有告诉程序讲义与习题册在教学用途上可能怎样配合。如果任务需要利用这种关系,就需要其他信息或进一步学习。
这让我们看到,转换成数字并不只是换一种写法。原始编号若被当作数量,会引入大小和间隔;类别指示保留了归属,却没有提供类别之间的语义联系。表示选择会影响后续方法容易利用哪些关系。
资料编号则是另一回事。“第三包”用于指认文件,而不是衡量资料质量。如果小叶把资料编号也塞进工作量公式,让编号越大的资料得到越高耗时,形式上可能照样能算,依据却不存在。数字能够出现在计算里,不代表它适合参与当前计算。
七、文字怎样变成向量:从数词语到学习表示
工作量和类型都属于资料的外部描述。小叶还想让同学按问题寻找资料,这就需要利用文本内容。文本不像页数那样天然对应一个数,但仍然可以先选择要记录的属性,再形成向量。
一个能够手工检查的文字表示
我们先做一个很小的例子,固定词表为“模型、数据、实验”,并约定只统计这三个词各出现多少次。下面用空格标明已经分好的词,避免分词方式成为新的问题:
数据 支持 模型,实验 检验 模型。
三个词的出现次数分别是2、1、1,所以它在该词表下的表示为(2,1,1)。注意第一项对应“模型”,虽然句子开头出现的是“数据”。向量的位置由固定词表决定,不是由词语首次出现的顺序临时决定。
另一段文字“实验 产生 数据,数据 用于 实验”对应(0,2,2)。两段文字组成矩阵时,一行代表一段文字,一列代表词表中的一个词。这样就能按列统计某词的使用情况,或者为后续文本分类提供数值输入。
这种只看词语出现情况、把文本表示成词计数的办法,是词袋表示的一种基本形式。这里展示的是最简单的单词计数版;实际处理还会涉及分词、词表和权重等选择。其基本思路及限制可参见scikit-learn的文本特征提取说明。
词表扩大以后,向量可以有成千上万个分量。一小段文字通常只使用其中少量词语,其他位置都是0,这就形成了大量分量为0的稀疏表示。它的维度很高,却不要求人能在脑中画出上万维空间;我们仍然是在按共同的词表记录一串有序的数。
计数保留了什么,又丢掉了什么
把词表换成“小叶、帮助、同学”,下面两句话都会得到(1,1,1):
小叶帮助同学。
同学帮助小叶。
它们用了同样的词,次数也相同,但帮助的方向相反。单词计数没有保留语序,因而无法仅凭这组三个数恢复谁帮助了谁。此时把计数矩阵算得再精确,也不能从已经被合并的两种情况中找回原句。
所以,如果任务只是统计哪些词常见,这种表示可以直接有用;如果要回答行为主体是谁,它保留的信息就不够。这并不是说词袋“没有用”,而是说明一个表示需要放到具体问题中评价。
还可以换一种方式,按词序把句子记录成一串词的编号。这样能够保留顺序,但编号仍然只是词的身份标签。不能因为某词编号100、另一词编号101,就认为二者意思相近。现代语言处理会进一步把这些身份信息转成适合模型运算的向量,身份标记与语义表示要分开理解。
嵌入:由模型学习怎样表示文本
在AI应用中经常遇到的嵌入,可以先理解为由模型把文本等对象转换为数值向量的一种表示方式。与小叶手工规定“第一项数模型、第二项数数据”不同,这类向量通常通过训练学得,分量也不一定能够逐个命名成清楚的日常概念。
例如,要让同学输入“怎样判断实验是否支持假设”,从资料库中找到相关内容,系统可以为资料片段和查询生成配套的向量,再依据它们的关系挑选候选资料。具体的相似性计算留到后续章节;这里先看流程:文本进入表示模型,形成向量,向量帮助检索,检索结果再连回可阅读的原文。官方示例可以参见Sentence Transformers的语义文本相似性说明。
训练使模型有机会把对任务有用的语言关系反映在向量中,但不能保证每一种关键区别都处理正确。两段文字主题接近,一段支持某主张、一段反驳它,仍可能同时出现在相关资料中。找到相关段落之后,是否支持问题中的结论,还需要阅读内容。
小叶可以让AI协助选用合适的表示工具,却不宜要求它随手为每份资料编几个小数,再把这些小数当作经过训练的嵌入。数字写得精细,并不说明它们具有经过验证的语义关系。
不同来源的向量也需要检查是否配套。即使两套模型都输出相同长度的向量,分量的含义与形成方式也可能不同,不能据此直接混在一起比较。就像把“文字页、图表页、核验题”的数列与“图表页、文字页、核验题”的数列混用,外形相同并不足以保证对应正确。学习得到的坐标更难逐项解释,因此更需要保持模型及处理方式的兼容。
这里不要求先看懂模型的全部内部计算。能够区分人为选择的特征、词语身份编号和学习得到的向量,已经有助于判断AI系统究竟在使用哪一种信息。
八、图像怎样变成矩阵:位置本身也在提供信息
小叶的资料包含图片。为了看清表示过程,我们先使用一张只有两行、三列像素的灰度小图。在本例采用的8位灰度约定下,0为黑,255为白,中间数值表示不同灰度。图像的像素值与模式概念可参见Pillow官方文档。
假设这张图记录为:
这里的每一行对应一行像素,每一列对应一列像素。第一行第三列是白色,第二行第三列是黑色。数值给出灰度,所在位置给出它在图中的地点,两者共同决定图像。
这张矩阵与资料工作量矩阵的外形类似,但行列含义不同。工作量矩阵的一列记录同一个属性,图像矩阵的一列对应图中从上到下的一列像素。不能因为都叫矩阵,就把解释方式直接搬过去。
展开成长向量,是否一定丢失位置
如果某个程序需要一串数字,我们可以约定从上到下逐行读取,每行从左到右,将图像展开为:
只要保留“两行三列”和“逐行从左到右”这两个约定,就能把它重新排回原矩阵。数值一个也没少,位置也能通过排列规则恢复。因此,不能笼统地说图像一旦展开,空间信息就必然丢失。
不过,后续方法怎样利用位置是另一个问题。二维排列直接展示了谁在谁的上方、谁在谁的旁边;展开以后,程序需要按相应规则处理这种关系。比如原图第一行最后一个像素,与第二行第一个像素虽然在长向量中前后相接,却不是原图中的左右相邻位置。理解表示保留了什么,和理解算法会利用什么,需要分开看。

图三:左图逐行展开后保留六个像素。右图与左图的排列不同,但黑白像素数量相同,两者的平均灰度都是127.5。
真正只留下一个平均数,会发生什么
假如小叶为了减少记录量,只保存所有像素的平均灰度,本例得到127.5。另一张图也有三个黑色像素和三个白色像素,即使排列完全不同,平均灰度仍然相同。
仅凭127.5,已经无法判断白色集中在哪里。这次变化与刚才的展开不同:展开保留了全部数值和恢复位置的规则;取平均把多种排列合并为同一个结果。若任务只需要粗略了解整体明暗,平均灰度可能有用;若要辨认字形,位置差异就是关键,只有这个平均数远远不够。
彩色图像还需要表示颜色。在常见RGB表示中,一个像素用红、绿、蓝三个通道的数值共同描述。于是除了行和列,还多了颜色通道这一层;多张图片放在一起,又需要区分是哪一张。下一章的张量和数据形状,会继续处理这种多层排列。
通过这张小图,我们已经可以建立一个很重要的直觉:把世界写成数字,既包括选择记录哪些量,也包括安排这些量之间的位置关系。向量与矩阵不只是把文字换成数字,它们提供了一种组织信息、保留对应关系并开展计算的方式。
九、回到小叶的资料任务:现在能把哪些事情说清楚
小叶不再只向AI报告“有四份资料”,而是准备了四行三列的数量表,并附上每一列的含义、单位和计数规则。资料编号与原文件对应保存,第四包的图表页数为0也经过确认。这使接下来的批量处理有了清楚的输入。
他首先按列汇总,得到26页纯文字、6页图表和20道额外核验题。这回答了“分别有多少工作”,还没有把不同工作混成一个总量。随后依据本章的单位耗时假设,得到四包资料各44、27、59、12分钟的估计,合计142分钟,用于了解三类工作的时间构成。
如果只是估计这几项工作,当前表示已经能发挥作用;如果同学还需要按内容找资料,小叶会另行保留原文片段及来源位置,使用适合内容检索的表示。页数向量与文本向量不必争夺一个“唯一正确的表示”名额,它们服务于不同的问题,也可以共同组成一个资料系统。
图片同样保留原文件和必要的尺寸信息。做整体明暗统计时可以计算平均值,识别图中文字时则需要使用包含空间细节的图像。小叶现在能够说明,哪些处理只是重新排列已有数值,哪些处理会让原来的区别无法恢复。
这就是本章所完成的判断:先根据任务选择要保留的信息,再用共同约定组织数值,最后选择与这些数值含义相符的计算。AI可以协助提取、编程和分析;小叶能够检查它是不是把资料的特征读对、把对应关系接对,以及输出的结果究竟回答了哪一个问题。
十、练习与参考分析
练习一:相同的三个数,为什么算出不同结果
小叶把第一包资料改按“含图表页、纯文字页、额外核验题”的顺序记为(2,8,6),却仍使用原先按“纯文字页、含图表页、核验题”排列的单位耗时(2,5,3)。计算得到62分钟。有人认为这说明新的表示更保守,留出的时间更充分。你怎样判断?应该怎样改?
**参考分析:**问题来自属性与换算关系没有对应,不能把错误结果解释成经过考虑的时间余量。重新排列以后,第一项是图表页,应对应5分钟/页;第二项是文字页,应对应2分钟/页。因此,单位耗时也要改成(5,2,3),正确结果仍为44分钟。
同一批工作只改变记录顺序,按相同假设估计的时间应保持不变。62分钟中的增加没有来自工作变难,也没有来自小叶决定留多少余量,只是将两种工作的换算关系接反了。
这类错误未必导致程序报错:两边都是三个数,形式上完全能够计算。检查时需要核对列名与单位,不能只看数据长度相同。如果确实希望留出余量,应在正确估计之后,根据另行说明的理由安排,而不是保留一个偶然偏大的错误结果。
练习二:缺失的图表页数能不能先写零
小叶新增一包资料,已知有四页纯文字和三道额外核验题,但尚未确认图表页数。AI建议先记成(4,0,3),由此算得17分钟,并把它与原四包一起汇总。你认为17分钟可以怎样使用,怎样使用会出问题?
**参考分析:**按本章固定单位耗时,17分钟只涵盖已知的文字页处理和题目核验。若尚未统计的图表页还需要处理,完整的三类工作耗时就可能更高。因此,不能把17分钟无标记地当成新资料包的完整估计。
可以保留已确认部分的17分钟,同时把图表页数记为未知,并标出待补查。倘若小叶暂时只安排已知部分,这个数字能够支持该范围内的安排;倘若他要汇总整批资料的全部三类工作,就需要先补查,或者明确说明总计还缺哪部分。
这里也不能简单地说“凡是缺失都不能算”。已经确认的信息仍然可以使用,关键在于输出的名字和范围准确。将不完整的小计写成完整总计,才会把未知工作悄悄删掉。因为案例中的每类工作耗时非负,在保持其他假设时,17分钟还可以作为这三类工作总耗时的下界。
练习三:平均向量是一包真实资料吗
前两包资料的平均向量为(6.5,1.5,5)。小叶的同学说:“图表页不能有半页,因此这个向量不合法,向量只能用于连续数量。”请解释哪里混淆了,并说明这个平均向量能支持什么判断。
**参考分析:**实际单包资料的页数按整页统计,应当是非负整数;平均向量描述的是两包资料的平均构成,不是声称存在一包恰好符合这组页数的文件。因此,出现小数不构成计算错误,也不说明原始离散数量不能用向量表示。
依据同一单位耗时,平均向量对应35.5分钟,恰好是44分钟与27分钟的平均。它可以帮助小叶了解这两包资料的平均负担,不能代替逐包安排时的实际数量和耗时。
再进一步,不能因为这两包平均35.5分钟,就断言下一包资料也会如此。下一包可能包含更多图表,或者采用不同的整理标准。从算出已知两包的平均值,到推断未见资料,还需要说明额外依据。平均向量把统计结果组织起来,并没有自动提供这种推断依据。
练习四:如何表示资料的多个标签
小叶给资料设置三个标签:“有概念讲解、有练习、有答案”。第一份三项都有,第二份只有概念讲解,第三份有练习和答案。请建立三行三列的表示,并说明按列求和与按行求和分别表示什么。
**参考分析:**按题目列出的标签顺序,三行可以写成(1,1,1)、(1,0,0)、(0,1,1)。一行允许多个位置为1,因为一份资料可以有多个标签;不应强制改成每行只有一个1的互斥分类。
按列求和得到(2,2,2),意思是有概念讲解的资料两份、有练习的资料两份、有答案的资料两份。按行求和分别得到3、1、2,表示各份资料具有几个所列标签。
同样是相加,因为沿着不同方向,统计对象就不同。把所有1加起来得到6,统计的是“资料具有某个标签”这样的记录总数,不是六份资料。也不能由第一份有三个标签,就断言它质量最高:是否正确、讲解是否清楚、能否满足同学需要,都尚未进入这个表示。
练习五:词计数相同,可以互换原文吗
小叶使用词表“小叶、推荐、同学”,发现“小叶推荐同学”和“同学推荐小叶”的词计数向量相同。AI据此建议只保留其中一句,另一句视为重复。若目标是统计这几个词的总出现次数,若目标是记录推荐关系,你会分别怎样处理?
**参考分析:**两句话各自的词计数相同,但“只保留一句”会减少整个语料的词语出现总数。即使目标只是词频统计,也需要保留出现次数或相应权重,不能在去重时把重复计数一并抹掉。可以保存一份计数向量并记它出现两次,计算总频次时再乘以二。
若目标是记录推荐关系,两句话更不能当作相同记录,因为推荐者与被推荐者不同。单词计数没有保留方向,要回到原文,或者另建能够记录“谁推荐谁”的表示。
这道题有两层判断。第一层是两句话在当前表示中是否相同,答案是相同;第二层是是否允许在当前任务中合并,它取决于合并后还保留什么。表示相同并不自动给出去重规则,保留任务所需的信息才是作出选择的依据。
练习六:六个像素与一个平均数
图三中的两张图都含三个黑像素和三个白像素。小叶保存了一张图按行展开的六个数,同时保存形状为两行三列;又为另一张图只保存平均灰度127.5。两种记录都叫“数值表示”,它们支持的恢复能力有什么不同?如果六个数还在,但形状和读取顺序丢失了呢?
**参考分析:**第一种记录保留全部像素值、形状和读取顺序,能够按原规则恢复该图。第二种只保留平均灰度,多种不同排列都会得到127.5,所以无法从平均数确定原图的像素位置。
若六个数还在,但形状和读取顺序丢失,即使知道总共有六个像素,也可能把它们排成两行三列、三行两列或一行六列。甚至在形状相同的情况下,逐行读取还是逐列读取,也会影响位置。原图若没有其他约定可以补回,就不能声称已经唯一恢复。
这说明恢复所需的信息不一定全在数值本身里面。有时它保存在形状、索引、编号或顺序约定中。让AI处理图片、表格或文本批次时,保留这些对应信息,才能把数值结果正确地接回原对象。