ML:自监督学习数据集的基本结构
从机器学习建模角度看一个自监督学习数据集self-supervised learning dataset通常只包含原始数据而不需要人工标注的标签。模型通过设计一种“预训练任务”pretext task从数据自身构造学习目标。因此从结构上看一个典型的自监督学习数据集通常包括以下几部分• 原始特征数据raw data / feature matrix• 自动生成的目标数据generated targets• 特征名称feature names可选• 数据说明dataset description可选其中自动生成的目标数据并不是人工标注的标签而是根据数据自身构造出来的预测目标。下面分别介绍这些概念并使用 Scikit-Learn 的数字手写体数据集Digits dataset进行说明。一、原始特征数据1、基本概念在自监督学习中数据通常以特征矩阵feature matrix的形式提供。如果一个数据集中有 n 个样本每个样本包含 m 个特征这些特征就会组成一个二维矩阵X [ [x11, x12, x13, ...], [x21, x22, x23, ...], ...]其中• 每一行表示一个样本• 每一列表示一个特征矩阵维度为(n_samples, n_features)即(样本数, 特征数)特征矩阵通常记为 X。在实际应用中原始特征数据通常来自• 图像数据• 文本数据• 语音信号• 传感器数据• 各类结构化数据与监督学习不同自监督学习的数据集中通常没有人工标注的标签。2、Digits 数据集示例Scikit-Learn 提供了数字手写体数据集Digits dataset每个样本是一个 8×8 的灰度图像。查看特征矩阵from sklearn.datasets import load_digits digits load_digits() print(digits.data.shape) # 特征矩阵形状print(digits.data[:3]) # 前三个样本示例输出(1797, 64)[[ 0. 0. 5. ...] [ 0. 0. 0. ...] [ 0. 0. 0. ...]]说明digits.data 就是特征矩阵二维 ndarray 数组矩阵形状 (1797, 64) 表示有 1797 个样本数每个样本有 64 个特征数8×8 图像展开。在自监督学习任务中模型通常直接使用X digits.data作为训练输入。二、自动生成的目标数据1、基本概念自监督学习的关键思想是从数据本身构造预测目标。也就是说训练任务中的“标签”并不是人工标注的而是由数据自动生成。例如• 预测被遮挡的部分• 判断两个样本是否相似• 重建原始输入数据• 预测序列中的下一元素因此自监督学习任务通常构造一种新的目标数据y_generated。这些目标数据由某种规则自动生成而不是由人工提供。2、Digits 数据集示例以一种简单的自监督任务为例图像重建reconstruction。在这种任务中可以人为地破坏输入数据然后要求模型恢复原始数据。例如from sklearn.datasets import load_digitsimport numpy as np digits load_digits() X digits.data # 随机遮挡部分像素mask np.random.rand(*X.shape) 0.8 # 生成随机布尔矩阵约 20% 的位置为 True用于决定哪些像素被遮挡X_masked X.copy() # 复制原始数据避免直接修改原始特征矩阵X_masked[mask] 0 # 将被选中的像素位置设为 0模拟被遮挡或缺失的输入数据 # 训练目标为恢复原始数据y_generated X # 将原始未遮挡的数据作为训练目标让模型学习从 X_masked 重建 X训练过程X_masked ──► model ──► X_reconstructed │ ▼ 与 X 比较误差让模型学习 X_masked → X 的方法就是把原始数据 X 当作训练目标用回归模型或自编码器去学习从“被破坏的数据”恢复原始数据的映射关系。需要注意的是这些目标数据并不是数据集原本提供的标签而是由数据本身生成的训练目标。三、特征名称1、基本概念特征矩阵中的每一列通常表示一个特征。为了说明这些特征的含义数据集有时会提供特征名称feature names。其结构通常是一个字符串列表[feature1, feature2, ...]特征名称可以帮助理解每一列数据所表示的实际意义。2、Digits 数据集示例Digits 数据集并没有提供 feature_names因为其特征只是像素值。每一列表示图像中的一个像素位置。例如• data[:,0] → 第一个像素• data[:,1] → 第二个像素在许多自监督学习任务中特征往往来自• 图像像素• 文本 token• 音频信号因此并不一定需要特征名称。四、数据说明1、基本概念很多机器学习数据集还会提供背景说明信息例如• 数据来源• 数据采集方式• 样本数量• 特征解释这些信息通常用于帮助理解数据背景。2、Digits 数据集示例查看数据说明print(digits.DESCR[:200])说明digits.DESCR 是数据集说明文本字符串内容通常较长因此这里只显示前 200 个字符。其中通常包括• 数据集来源• 数据规模• 数据结构说明五、自监督学习数据集结构关系一个典型的自监督学习数据集通常可以表示为数据集│├── 原始特征数据 X│ └── 每一行是一个样本│ └── 每一列是一个特征│├── 自动生成目标 y_generated│ └── 由数据本身构造│├── 特征名称可选│└── 数据说明在 Scikit-Learn 数据集中这些信息通常来源于X → data数据说明 → DESCR而自监督任务所需的训练目标通常由程序根据数据生成。 小结自监督学习数据集通常只包含原始数据而不需要人工标注的标签。模型通过设计预训练任务从数据自身构造学习目标例如重建输入数据或预测被遮挡的信息。因此自监督学习数据结构通常由原始特征矩阵以及自动生成的目标数据组成。在 Scikit-Learn 数据集中原始数据通常来自 data 字段而训练目标则通过算法或数据处理过程生成。“点赞有美意赞赏是鼓励”