(学习记录)无监督学习、自监督学习超详细自我解读——附代码示例

无监督学习自我解读

无监督学习(Unsupervised Learning)是一种 不依赖于人工标注数据 的机器学习方法。与监督学习不同,它主要用于 从数据中发现结构、模式或隐藏信息,适用于 聚类、降维、异常检测 等任务。对于我来说,无监督学习 就像是把我丢进一个没有标注信息的迷宫,任务就是从中找到一些潜在的结构或者模式。没有明确的答案指引,只能依靠数据本身的特点。比如说,假设我有一堆图片,但这些图片没有任何标签(像是“狗”、“猫”这样的类别)。在这种情况下,无监督学习的目标 是通过某种方法去挖掘数据的潜在关系。
无监督学习的两种常见任务:
聚类(Clustering):我可能会把类似的图片分到同一组,比如把所有的“猫”图片归为一类,“狗”归为另一类,尽管我没有提前知道每张图片属于哪个类别。
K-Means 就是一个常见的聚类算法,它通过计算样本之间的距离,把相似的样本聚集到一起。
降维(Dimensionality Reduction):如果数据非常复杂、维度很高,像是图片有成千上万的像素值,我可以通过 PCA(主成分分析) 来把数据维度缩小,去掉不重要的部分,从而使得后续的处理更高效。


1. 无监督学习 vs. 监督学习

对比项监督学习无监督学习
训练数据有标签(已分类)无标签(仅有特征)
目标预测类别或数值发现数据结构、模式
常见算法逻辑回归、决策树、CNN、RNNK-Means、PCA、Autoencoder、GAN
适用场景目标分类、回归数据聚类、特征学习、异常检测

2. 无监督学习的主要任务

(1)聚类(Clustering)

定义:将 相似数据点 分为同一类别,而不需要事先知道类别。

典型算法:

  • K-Means:将数据划分为 K 个聚类中心,迭代优化。
  • DBSCAN:基于密度的聚类,可发现任意形状簇。
  • 层次聚类(Hierarchical Clustering):构建树状层级结构。

应用:

  • 客户分群(电商、银行)
  • 图像分割
  • 基因分析

K-Means 工作流程

  1. 随机选择 K 个初始簇心(中心点)。
  2. 计算每个数据点到各个簇心的距离,将其分配到最近的簇。
  3. 更新簇心(计算新簇的均值)。
  4. 迭代更新,直到收敛(簇心不变)。

公式:
C i = 1 ∣ S i ∣ ∑ x ∈ S i x C_i = \frac{1}{|S_i|} \sum_{x \in S_i} x Ci=Si1xSix
其中:

  • ( C_i ) 是第 ( i ) 个簇心
  • ( S_i ) 是属于第 ( i ) 个簇的数据点集合

🔷 示意图

初始点(随机)    →  计算距离 & 归类  →  更新簇心  →  迭代优化
----------------------------------------------------
●  ●     ●     ○  ○             ●  ●  ○  ○          ●  ○  ○
    ▲        ▲  ▲     →         ▲  ▲  ▲  ▲  →      ▲  ▲  ▲  
   簇心1      簇心2            簇心1   簇心2      簇心1   簇心2

(2)降维(Dimensionality Reduction)

定义:将高维数据映射到低维,提高可视化、计算效率。

典型算法

  • PCA(主成分分析):找到数据的最重要特征方向,降低维度。
  • t-SNE:保留局部数据结构,常用于可视化。
  • Autoencoder(自编码器):深度学习的降维方法。

应用:

  • 数据可视化
  • 特征提取
  • 去噪(Noise Reduction)

PCA 公式

  1. 计算 均值
    μ = 1 N ∑ i = 1 N x i \mu = \frac{1}{N} \sum_{i=1}^{N} x_i μ=N1i=1Nxi
  2. 计算 协方差矩阵
    C = 1 N ∑ i = 1 N ( x i − μ ) ( x i − μ ) T C = \frac{1}{N} \sum_{i=1}^{N} (x_i - \mu)(x_i - \mu)^T C=N1i=1N(xiμ)(xiμ)T
  3. 计算 特征值和特征向量,选取前 d 个最大特征值对应的向量作为降维矩阵。

(3)异常检测(Anomaly Detection)

定义:识别 与数据模式不同的异常点

典型算法

  • Isolation Forest:基于决策树,异常点更容易被隔离。
  • One-Class SVM:找出数据边界,超出边界的数据为异常点。
  • Autoencoder:训练模型重构数据,误差大的样本为异常。

应用:

  • 信用卡欺诈检测
  • 服务器故障预测
  • 网络安全入侵检测

Isolation Forest 机制

  1. 随机选择数据特征,划分数据点。
  2. 异常点更容易被隔离(少数、远离密集区域)。
  3. 异常分数
    S ( x ) = 2 − E ( h ( x ) ) c ( n ) S(x) = 2^{-\frac{E(h(x))}{c(n)}} S(x)=2c(n)E(h(x))
    • ( E(h(x)) ):平均路径长度
    • ( c(n) ):标准化项

(4)生成模型(Generative Models)

定义:学习数据分布,并生成相似的新数据。

典型算法

  • GAN(生成对抗网络):两个网络(生成器 vs 判别器)互相博弈。
  • VAE(变分自编码器):基于概率分布生成新数据。

应用

  • 人脸生成(如 DeepFake)
  • 图像风格迁移
  • 数据增强

GAN 公式

  • 判别器损失
    L D = − E [ log ⁡ D ( x ) ] − E [ log ⁡ ( 1 − D ( G ( z ) ) ) ] L_D = - \mathbb{E}[\log D(x)] - \mathbb{E}[\log (1 - D(G(z)))] LD=E[logD(x)]E[log(1D(G(z)))]
  • 生成器损失
    L G = − E [ log ⁡ D ( G ( z ) ) ] L_G = - \mathbb{E}[\log D(G(z))] LG=E[logD(G(z))]

3. 代码示例

1. K-Means 聚类

from sklearn.cluster import KMeans
import numpy as np

# 生成数据
X = np.random.rand(100, 2)  # 100个二维点

# K-Means 聚类
kmeans = KMeans(n_clusters=3, random_state=0)
kmeans.fit(X)

# 预测类别
labels = kmeans.predict(X)

print("聚类中心:", kmeans.cluster_centers_)

2. PCA 降维

from sklearn.decomposition import PCA
import matplotlib.pyplot as plt

# 生成高维数据
X = np.random.rand(100, 5)

# PCA降维至2维
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)

plt.scatter(X_pca[:, 0], X_pca[:, 1])
plt.title("PCA 降维")
plt.show()

3. GAN 生成图片(PyTorch)

import torch
import torch.nn as nn

# 生成器
class Generator(nn.Module):
    def __init__(self):
        super().__init__()
        self.fc = nn.Linear(100, 784)

    def forward(self, x):
        return torch.sigmoid(self.fc(x))

# 生成随机噪声
z = torch.randn((1, 100))

# 生成图片
gen = Generator()
img = gen(z).view(28, 28).detach().numpy()

4. 总结

无监督学习任务代表算法应用场景
聚类K-Means、DBSCAN客户分群、图像分割
降维PCA、t-SNE数据可视化、特征提取
异常检测Isolation Forest、One-Class SVM欺诈检测、故障预测
生成模型GAN、VAE图像生成、数据增强

无监督学习 适用于 数据探索、降维、聚类、生成任务,为 无标注数据的深度学习 提供了重要工具

自监督学习自我解读

自监督学习(Self-Supervised Learning, SSL)是一种 无监督学习的变种,其核心思想是 通过数据本身生成标签 来训练模型。它通过构建任务,使得模型在不需要人工标注的情况下,学习到数据的特征和结构。自监督学习尤其在计算机视觉和自然语言处理(NLP)领域表现突出。
在我了解了无监督学习之后,自监督学习 让我更加兴奋。这种方法结合了 无监督学习 的优势,但它更像是在没有标签数据的情况下,通过给模型设计一种 代理任务(pretext task),让模型 自己创造标签,并通过这个任务来学习数据的特征。在自监督学习中,模型并不依赖于外部的人工标签,而是通过 自己构建任务 来进行训练。举个例子,如果你给我一个图片,并要求我去预测图像的一部分(比如遮住一个区域,要求我预测被遮挡的部分),我就可以通过这样的任务来学习图像的结构和特征。这种方法不需要人工标注,却能帮助我获得数据的有效表示。


1. 自监督学习 vs 无监督学习 vs 监督学习

对比项监督学习无监督学习自监督学习
标签需求需要人工标签无标签数据本身生成标签
目标分类、回归聚类、降维生成数据的上下文信息、特征表示
算法逻辑回归、CNN、SVMK-means、PCASimCLR、BYOL、BERT
应用领域图像分类、回归预测数据压缩、特征学习图像预训练、语言模型

自监督学习的常见方法:
对比学习(Contrastive Learning):我可以通过生成不同的 正样本(positive pairs) 和 负样本(negative pairs),来训练模型。正样本是指同一物体的不同视角或增强版本,负样本则是不同物体。通过训练,模型学会让正样本的特征更接近,负样本的特征更远离。比如,假设我有两张图片,分别是“猫”和“狗”,通过对比学习,模型可以学习到“猫”和“狗”是不同的,而相同物体的不同图像应该有相似的特征。

自编码器(Autoencoder):在这种方法下,我的目标是 压缩 输入数据到一个低维表示(编码),然后 重建 输入数据(解码)。这样,模型就能学到数据的 潜在特征,并且不需要标签。

2. 自监督学习的原理

自监督学习的目标是通过构造 代理任务(pretext task)来 预训练模型,使其学习到数据的有效表示。代理任务的结果是让模型在没有标签的情况下,通过数据本身获取有意义的信息。

(1)通过数据本身创建标签

  • 数据增强:将原始数据进行扰动(如旋转、裁剪等),然后通过预测这些扰动的类型来训练模型。
  • 自编码器(Autoencoders):通过压缩和重建输入数据,学习数据的低维表示。
  • 上下文预测:预测数据中的某些部分,例如语言模型中预测下一个单词,图像中预测被遮挡的区域。

(2)代理任务(Pretext Task)

  • 对比学习(Contrastive Learning):构造不同的样本对,目标是通过模型让相似样本的表示更接近,异类样本的表示更远。
  • 生成任务(Generative Task):如训练一个网络来生成图像的一部分,或预测图像的缺失部分。

3. 自监督学习的关键技术

(1)对比学习(Contrastive Learning)

对比学习是一种通过训练模型将相似样本的表示拉近、不同样本的表示推远的方法。其核心思想是:

  • 通过某种方式产生一对 正样本(positive pair)负样本(negative pair)
  • 通过训练让相似的样本(例如数据增强后的相同图像)在特征空间中更接近,而不相似的样本在特征空间中尽可能远离。

SimCLR(Simple Contrastive Learning)是最流行的对比学习方法之一,工作流程如下:

  1. 从原始图像生成多个 增强视图(如旋转、裁剪等)。
  2. 使用神经网络提取每个视图的 特征表示
  3. 计算 对比损失,通过最小化 同类视图之间的距离,最大化 异类视图之间的距离

对比学习的损失函数(NT-Xent Loss)
在这里插入图片描述


(2)自编码器(Autoencoders)

自编码器是一种 神经网络,旨在 压缩输入数据到低维表示,然后重建数据。自编码器的目的是 学习数据的潜在表示,而不需要标签。

  • 编码器(Encoder):将输入数据映射到一个潜在空间(低维表示)。
  • 解码器(Decoder):将低维表示重建回原始数据。

自编码器工作流程

  1. 将输入图像通过 编码器 压缩成一个 潜在空间(低维表示)。
  2. 通过 解码器 尝试重建输入图像。
  3. 训练目标是最小化 重建误差,即重建图像与原始图像之间的差异。

(3)生成任务(Generative Task)

自监督学习中的生成任务通常是训练一个模型预测数据的缺失部分。生成任务可以帮助模型学习到数据的内在结构。

BERT(Bidirectional Encoder Representations from Transformers):NLP 领域的一种自监督学习模型,目标是通过 遮蔽部分单词 来预测这些被遮蔽的单词,帮助模型学习词语之间的关系和上下文。

BERT 工作流程

  1. 将输入文本进行 遮蔽(masking),比如随机选择一些单词用 [MASK] 替换。
  2. 训练模型预测这些被遮蔽的单词。
  3. 通过大量文本数据训练,模型可以捕捉到语法、语义等信息。

4. 自监督学习的应用

(1)计算机视觉

  • 图像分类:使用无标签图像进行预训练,然后微调分类任务。
  • 目标检测:通过自监督学习获得图像的特征表示,用于检测目标。
  • 图像生成:如 GAN 和自编码器生成新图像。

(2)自然语言处理(NLP)

  • 预训练语言模型:BERT、GPT 等模型通过自监督任务(如遮蔽单词预测)学习大量语言信息。
  • 句子表示学习:模型通过上下文信息预测缺失的词或句子。

(3)强化学习

  • 状态表示学习:通过自监督学习训练一个代理,从环境中提取有用的状态信息。

5. 自监督学习的优势

  • 减少人工标注:无需手动标注大量数据,节省人工成本。
  • 适用于无标签数据:能够利用无标签的数据进行有效学习。
  • 强大的特征表示:自监督学习方法通常能学习到数据的深层次特征。

7. 代码示例:SimCLR 实现

import torch
import torch.nn as nn
import torchvision.transforms as transforms
from torchvision import datasets, models

# 模型:ResNet-18
model = models.resnet18(pretrained=False)

# 数据增强(对比学习)
transform = transforms.Compose([
    transforms.RandomResizedCrop(224),
    transforms.RandomHorizontalFlip(),
    transforms.ToTensor(),
    transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
])

# 加载数据
train_dataset = datasets.CIFAR10(root='./data', train=True, download=True, transform=transform)

# 定义对比学习损失
class ContrastiveLoss(nn.Module):
    def forward(self, x1, x2, label):
        # 计算相似度损失
        pass

总结

自监督学习(SSL)是机器学习领域中一个非常有前景的方向,它通过数据本身生成标签,避免了大量人工标注。自监督学习通过代理任务(如对比学习、生成任务)训练模型,并广泛应用于 计算机视觉、自然语言处理等领域。随着技术的发展,自监督学习将进一步推动 无标签数据的使用,大大提升模型的性能和泛化能力。

智能网联汽车的安全员高级考试涉及多个方面的专业知识,包括但不限于自动驾驶技术原理、车辆传感器融合、网络安全防护以及法律法规等内容。以下是针对该主题的一些核心知识解析: ### 关于智能网联车安全员高级考试的核心内容 #### 1. 自动驾驶分级标准 国际自动机工程师学会(SAE International)定义了六个级别的自动驾驶等级,从L0到L5[^1]。其中,L3及以上级别需要安全员具备更高的应急处理能力。 #### 2. 车辆感知系统的组成与功能 智能网联车通常配备多种传感器,如激光雷达、毫米波雷达、摄像头和超声波传感器等。这些设备协同工作以实现环境感知、障碍物检测等功能[^2]。 #### 3. 数据通信与网络安全 智能网联车依赖V2X(Vehicle-to-Everything)技术进行数据交换,在此过程中需防范潜在的网络攻击风险,例如中间人攻击或恶意软件入侵[^3]。 #### 4. 法律法规要求 不同国家和地区对于无人驾驶测试及运营有着严格的规定,考生应熟悉当地交通法典中有关自动化驾驶部分的具体条款[^4]。 ```python # 示例代码:模拟简单决策逻辑 def decide_action(sensor_data): if sensor_data['obstacle'] and not sensor_data['emergency']: return 'slow_down' elif sensor_data['pedestrian_crossing']: return 'stop_and_yield' else: return 'continue_driving' example_input = {'obstacle': True, 'emergency': False, 'pedestrian_crossing': False} action = decide_action(example_input) print(f"Action to take: {action}") ``` 需要注意的是,“同学”作为特定平台上的学习资源名称,并不提供官方认证的标准答案集;建议通过正规渠道获取教材并参加培训课程来准备此类资格认证考试
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值