人工智能之核心基础 机器学习 第十三章 自监督学习

人工智能之核心基础 机器学习

第十三章 自监督学习


文章目录

  • 人工智能之核心基础 机器学习
    • 13.1 自监督学习概述
      • 📌 定义:从无标签数据中**自动生成监督信号**
      • 🔍 与无监督学习的区别
    • 13.2 自监督学习的核心:前置任务设计
      • 1️⃣ 掩码填充(Masked Input Reconstruction)
      • 2️⃣ 对比学习(Contrastive Learning)
      • 3️⃣ 时序预测(Temporal Prediction)
    • 13.3 入门级自监督算法
      • 算法1:自编码器(Autoencoder)——最经典的重构型自监督
      • 算法2:简化版 SimSiam(无负样本对比学习)
      • 算法3:掩码自编码器(MAE)基础思路
    • 13.4 自监督学习的核心价值
      • ✅ 三大核心优势
    • 13.5 优缺点与适用场景
      • ✅ 适用场景
      • ❌ 局限性
    • 13.6 实战案例 + 代码实现(PyTorch + Scikit-learn)
      • 案例1:自编码器实现数据降维与重构
      • 案例2:简单对比学习(SimSiam简化版) + 下游分类
      • 案例3:文本掩码填充预训练 + 情感分析微调(使用Hugging Face)
    • 🎯 本章总结
      • 💡 建议:
  • 资料关注

13.1 自监督学习概述

📌 定义:从无标签数据中自动生成监督信号

  • 输入:只有大量无标签数据x 1 , x 2 , … , x n x_1, x_2, \dots, x_nx1,x2,,xn
  • 关键操作:人为设计一个前置任务(Pretext Task),从原始数据中“挖掉一部分”或“打乱结构”,让模型去预测被挖掉的部分
  • 输出:训练好的编码器(Encoder),可提取通用特征用于下游任务

通俗比喻
就像玩拼图——你把一张完整图片撕成碎片(制造任务),然后训练自己把碎片拼回去(学习特征)。
拼图能力练好了,看一眼新图片就能理解其结构!


🔍 与无监督学习的区别

维度无监督学习自监督学习
目标发现数据结构(聚类/降维)学习可迁移的特征表示
是否有任务❌ 无明确预测任务✅ 有精心设计的前置任务
输出形式簇标签、低维坐标、异常分数特征向量(可用于分类/检测等)
评估方式内部指标(轮廓系数等)下游任务性能(如分类准确率)

💡一句话总结
自监督 = 无监督数据 + 监督式训练方式


13.2 自监督学习的核心:前置任务设计

“任务设计决定特征质量”

以下是三种入门级前置任务:

1️⃣ 掩码填充(Masked Input Reconstruction)

  • 操作:随机遮盖输入的一部分(如图像块、文本词)
  • 任务:预测被遮盖的内容
  • 代表模型:BERT(文本)、MAE(图像)

🖼️ 图像示例:
原图 → 随机盖住30%方块 → 模型猜被盖住的像素

2️⃣ 对比学习(Contrastive Learning)

  • 操作:对同一张图做两种不同增强(裁剪、颜色抖动等),得到两个“视角”
  • 任务:让这两个视角的特征相似,与其他样本的特征不相似
  • 代表模型:SimCLR, MoCo, SimSiam

🧠 核心思想:“同一事物的不同照片应有相似表示”

3️⃣ 时序预测(Temporal Prediction)

  • 操作:给定视频前几帧 / 时间序列前几步
  • 任务:预测下一帧 / 下一时刻
  • 适用:视频、语音、传感器数据

13.3 入门级自监督算法

算法1:自编码器(Autoencoder)——最经典的重构型自监督

  • 结构
    • 编码器(Encoder):x → z x \rightarrow zxz(压缩到低维)
    • 解码器(Decoder):z → x ^ z \rightarrow \hat{x}zx^(重建原始输入)
  • 损失函数L = ∥ x − x ^ ∥ 2 \mathcal{L} = \|x - \hat{x}\|^2L=xx^2
  • 用途:降噪、降维、特征提取

✅ 优点:结构简单,训练稳定
❌ 缺点:可能学不到高级语义(只记像素)


算法2:简化版 SimSiam(无负样本对比学习)

  • 核心创新:不需要负样本对,也能学好特征!
  • 结构
    • 一个编码器f ff
    • 一个投影头g gg(MLP)
    • 一个停止梯度(stop-gradient)操作
  • 损失:对称的余弦相似度损失

💡 适合入门:避免复杂负采样,效果却很好


算法3:掩码自编码器(MAE)基础思路

  • 编码器:只处理未被掩码的图像块(高效!)
  • 解码器:用轻量网络重建所有块(包括被掩码的)
  • 关键:高比例掩码(如75%),迫使模型学全局语义

🌟 优势:训练快、特征强,已成为视觉预训练主流


13.4 自监督学习的核心价值

✅ 三大核心优势

  1. 学习通用特征表示

    • 无需领域标签,学到的特征适用于多种任务(分类、检测、分割)
  2. 大幅降低下游标注需求

    • 在1%标签数据上微调,效果接近全监督
  3. 利用海量无标签数据

    • 互联网图像、网页文本、用户行为日志 → 全是免费训练数据!

📊现实案例

  • BERT:用全部维基百科+图书语料预训练 → 各NLP任务SOTA
  • MAE:用ImageNet无标签版预训练 → 分类准确率提升5%+

13.5 优缺点与适用场景

✅ 适用场景

  • 大规模无标签数据可用(如爬取的网页、监控视频)
  • 下游任务标注成本高(医疗、工业质检)
  • 需要通用特征平台(公司级AI中台)

❌ 局限性

  • 前置任务设计依赖经验:任务不好 → 特征没用
  • 计算资源要求高:通常需GPU集群预训练
  • 小数据场景收益有限:预训练需足够数据多样性

⚠️重要提醒
自监督不是“万能药”——如果下游任务与预训练数据分布差异大(如用自然图像预训练做X光分类),效果可能不佳。


13.6 实战案例 + 代码实现(PyTorch + Scikit-learn)

💡 为便于理解,以下使用简化模型和小数据集


案例1:自编码器实现数据降维与重构

importtorchimporttorch.nnasnnimporttorchvision.transformsastransformsfromtorchvision.datasetsimportMNISTimportmatplotlib.pyplotasplt# 自编码器定义classAutoencoder(nn.Module):def__init__(self,latent_dim=32):super().__init__()# 编码器self.encoder=nn.Sequential(nn.Linear(28*28,128),nn.ReLU(),nn.Linear(128,64),nn.ReLU(),nn.Linear(64,latent_dim))# 解码器self.decoder=nn.Sequential(nn.Linear(latent_dim,64),nn.ReLU(),nn.Linear(64,128),nn.ReLU(),nn.Linear(128,28*28),nn.Sigmoid()# 输出0~1)defforward(self,x):x=x.view(x.size(0),-1)z=self.encoder(x)recon=self.decoder(z)returnrecon,z# 训练device='cuda'iftorch.cuda.is_available()else'cpu'model=Autoencoder(latent_dim=32).to(device)criterion=nn.MSELoss()optimizer=torch.optim.Adam(model.parameters(),lr=1e-3)# 加载MNIST(仅用图像,不用标签)transform=transforms.Compose([transforms.ToTensor()])train_set=MNIST(root='./data',train=True,download=True,transform=transform)train_loader=torch.utils.data.DataLoader(train_set,batch_size=256,shuffle=True)# 训练循环(简化)forepochinrange(10):fordata,_intrain_loader:data=data.to(device)recon,_=model(data)loss=criterion(recon,data.view(data.size(0),-1))optimizer.zero_grad()loss.backward()optimizer.step()print(f"Epoch{epoch}, Loss:{loss.item():.4f}")# 可视化重构效果model.eval()withtorch.no_grad():sample,_=next(iter(train_loader))sample=sample[:8].to(device)recon,_=model(sample)fig,axes=plt.subplots(2,8,figsize=(12,3))foriinrange(8):axes[0,i].imshow(sample[i].cpu().squeeze(),cmap='gray')axes[1,i].imshow(recon[i].cpu().view(28,28),cmap='gray')axes[0,i].axis('off')axes[1,i].axis('off')axes[0,0].set_title("原始")axes[1,0].set_title("重构")plt.show()

🔍观察:即使只用32维,也能较好重构手写数字!


案例2:简单对比学习(SimSiam简化版) + 下游分类

# 数据增强(两个视角)defaugment(x):returntransforms.Compose([transforms.RandomResizedCrop(28,scale=(0.8,1.0)),transforms.RandomApply([transforms.ColorJitter(0.2,0.2,0.2,0.1)],p=0.8),transforms.RandomGrayscale(p=0.2),transforms.ToTensor()])(x)# SimSiam简化模型classSimSiam(nn.Module):def__init__(self,backbone,proj_dim=64):super().__init__()self.backbone=backbone# 如ResNetself.projector=nn.Sequential(nn.Linear(backbone.out_features,proj_dim),nn.BatchNorm1d(proj_dim),nn.ReLU(),nn.Linear(proj_dim,proj_dim))self.predictor=nn.Sequential(nn.Linear(proj_dim,proj_dim//2),nn.ReLU(),nn.Linear(proj_dim//2,proj_dim))defforward(self,x1,x2):z1=self.projector(self.backbone(x1))z2=self.projector(self.backbone(x2))p1=self.predictor(z1)p2=self.predictor(z2)returnp1,p2,z1.detach(),z2.detach()# 损失函数(对称余弦相似度)defsimsiam_loss(p1,p2,z1,z2):defcos_loss(a,b):a=nn.functional.normalize(a,dim=1)b=nn.functional.normalize(b,dim=1)return-(a*b).sum(dim=1).mean()return(cos_loss(p1,z2)+cos_loss(p2,z1))/2# 注意:完整实现较复杂,此处展示思路# 预训练后,冻结backbone,接分类头微调

💡下游任务
预训练后,取backbone作为特征提取器,接一个线性分类器,在少量标签数据上训练。


案例3:文本掩码填充预训练 + 情感分析微调(使用Hugging Face)

fromtransformersimportBertTokenizer,BertForMaskedLM,BertForSequenceClassificationfromtransformersimportLineByLineTextDataset,DataCollatorForLanguageModelingfromtransformersimportTrainer,TrainingArguments# 1. 准备无标签文本(如大量影评)tokenizer=BertTokenizer.from_pretrained('bert-base-uncased')# 2. 构建MLM数据集dataset=LineByLineTextDataset(tokenizer=tokenizer,file_path="unlabeled_reviews.txt",block_size=128)data_collator=DataCollatorForLanguageModeling(tokenizer=tokenizer,mlm_probability=0.15)# 3. 加载预训练BERT(继续预训练)model_mlm=BertForMaskedLM.from_pretrained('bert-base-uncased')training_args=TrainingArguments(output_dir='./mlm_model',num_train_epochs=3,per_device_train_batch_size=16,save_steps=1000,)trainer=Trainer(model=model_mlm,args=training_args,data_collator=data_collator,train_dataset=dataset,)trainer.train()# 4. 微调情感分析(二分类)model_clf=BertForSequenceClassification.from_pretrained('./mlm_model',num_labels=2)# ... 此处加载少量标注情感数据,标准Trainer微调 ...# 结果:在100条标注数据上,准确率可达85%+(远超从零训练)

🌐现实意义
用公司内部客服对话预训练BERT,再微调做意图识别,效果远超通用BERT!


🎯 本章总结

方法前置任务特点适用模态
自编码器重构原始输入简单、稳定图像、表格
对比学习区分正负样本对学高级语义图像、音频
掩码重建预测被遮盖部分利用上下文文本、图像

💡 建议:

  1. 入门:自编码器(理解重构思想)
  2. 进阶:SimSiam(掌握对比学习)
  3. 实战:Hugging Face + MAE(工业级应用)

📘未来方向

  • 多模态自监督(图文对齐:CLIP)
  • 生成式自监督(扩散模型、LLM)
  • 自监督 + 强化学习(智能体自主探索)

🌟记住
自监督学习的本质,是教会机器“自学成才”的能力—— 这正是通往通用人工智能的关键一步!

资料关注

公众号:咚咚王
gitee:https://gitee.com/wy18585051844/ai_learning

《Python编程:从入门到实践》
《利用Python进行数据分析》
《算法导论中文第三版》
《概率论与数理统计(第四版) (盛骤) 》
《程序员的数学》
《线性代数应该这样学第3版》
《微积分和数学分析引论》
《(西瓜书)周志华-机器学习》
《TensorFlow机器学习实战指南》
《Sklearn与TensorFlow机器学习实用指南》
《模式识别(第四版)》
《深度学习 deep learning》伊恩·古德费洛著 花书
《Python深度学习第二版(中文版)【纯文本】 (登封大数据 (Francois Choliet)) (Z-Library)》
《深入浅出神经网络与深度学习+(迈克尔·尼尔森(Michael+Nielsen)》
《自然语言处理综论 第2版》
《Natural-Language-Processing-with-PyTorch》
《计算机视觉-算法与应用(中文版)》
《Learning OpenCV 4》
《AIGC:智能创作时代》杜雨+&+张孜铭
《AIGC原理与实践:零基础学大语言模型、扩散模型和多模态模型》
《从零构建大语言模型(中文版)》
《实战AI大模型》
《AI 3.0》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1155959.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

项目一多就混乱?试试把大目标拆成7层小动作

我见过太多这样的现场:每天早会一开,大家低头刷手机,汇报永远是“差不多完成了”、“快了快了”;群里消息满天飞,每个人都在跟进,但项目依旧卡在原地;老板问一句:“现在到底卡在哪&a…

一次半夜回滚,让我彻底扔掉了本地开发环境

对于一个初创团队而言,最兴奋的时刻,莫过于核心产品上线的那一刻。我至今还记得那个周五晚上,我们准备了一个月的新版本终于要发布了。团队所有人都挤在会议室,盯着部署脚本,等待见证奇迹。然而,奇迹没有发…

基于STM3251单片机的多功能垃圾桶控制系统

作者贡献介绍 💗CSDN从事毕设辅导第一人,本着诚信、靠谱、质量在业界获得优秀口碑,在此非常希望和行业内的前辈交流学习,欢迎成考学历咨询老师、大学老师前来合作交流💗 2013年,正式踏入技术写作领域&…

【计算机毕业设计案例】机器学习基于python-AI深度学习对狗表情训练识别基于python-AI深度学习对狗表情训练识别

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

我们如何把“配环境一天”缩短到“3秒启动”?

我写了十年代码,热情被磨灭的瞬间,往往不是因为一个复杂的算法,而是因为那些无穷无尽的琐事。新同事入职,第一天基本废了,全在配环境。我的 MacBook 风扇狂转,就因为跑了个复杂的后端项目。最怕听到那句“在…

千元出头,权限全开!实测最近卖爆的拾光坞G2到底如何!

引言时间已经来到了26年的一月中旬了,从上个月某N150型号预售到现在,熊猫依然是没看到网上有什么用户的测评,当然别人提前就说了是预售模式,所以这一点没啥喷的。在同样的配置下,N150的另一款机型因为其价格的优势最近…

大数据数据服务在物流行业的应用

大数据数据服务在物流行业的创新应用:构建智能物流新生态 摘要/引言 在当今数字化时代,物流行业面临着诸多挑战,如配送效率低下、成本居高不下、库存管理不合理等。大数据数据服务作为一种新兴技术,为解决这些问题提供了有效途径。…

化学研究智能体:AI架构师必须掌握的负载均衡策略

化学研究智能体规模化部署:AI架构师必学的负载均衡策略 引言:化学智能体从实验室到生产的算力瓶颈 当你花费数月时间训练出一个能预测分子性质的化学智能体,从实验室的单节点测试走向生产环境时,可能会遇到这样的场景:…

【计算机毕业设计案例】基于python_CNN深度学习卷积神经网络训练识别猫的表情

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

【毕业设计】基于深度学习对狗表情训练识别基于python-AI深度学习对狗表情训练识别

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

深度学习毕设项目推荐-基于python_CNN深度学习卷积神经网络训练识别猫的表情

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

【计算机毕业设计案例】基于python_CNN深度学习卷积神经网络识别菠萝是否腐烂

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

创新试错提速,国产CAD助力原型快速迭代

投资人最喜欢问:“你们迭代一个版本要多久?”我们的回答是:“看软件的响应速度。”这不是玩笑。从灵光一现到初步模型,CAXA 3D的“创新模式”让我们几小时内就能完成。以前用传统设计软件,从突发的创意灵感落到初步模型…

KubeSphere v4.2.1 重磅发布:精进不止、向新而生

随着云原生平台在企业核心业务中的广泛落地,K8s 已从早期的 “技术尝鲜” 阶段全面迈入 “生产级承载” 时代。越来越多的关键业务系统纷纷构建于 K8s 之上。在此背景下,K8s 面临的核心挑战已不再局限于基础部署与运维,而是逐步转向三大关键维…

深度学习毕设选题推荐:基于python_CNN卷积神经网络深度学习识别花卉是否绽放

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

01. 如何建立 SET? I ANSA 设计小诀窍系列

大家好,本次分享的是如何在ANSA前处理中快速创建并管理 SET。SET是ANSA中进行模型组织和分类的关键工具,能帮助我们将散乱的节点、单元、面等几何或网格实体,归类为逻辑清晰的组。无论是处理复杂装配体,还是为后续的求解器设置边界…

【开源上新】4B 参数突破端侧智能体性能壁垒!AgentCPM-Explore 正式入驻 AtomGit

当行业还在讨论 “大参数模型如何降本” 时,一款仅 4B 参数的端侧智能体模型,已用实力重新定义小模型的性能天花板 —— 由清华大学自然语言处理实验室、中国人民大学、面壁智能与 OpenBMB 开源社区联合研发的AgentCPM-Explore,今日正式在 At…

2026年你应该掌握的进阶版 Gemini CLI 实用指南

现在用AI,只会在网页版当聊天机器人用吗?那你就out了。 Gemini CLI 是 Google 推出的终端 AI 助手。相比于网页版,命令行工具在处理本地文件、读取项目上下文方面有着天然优势。对于开发者而言,它不仅仅是一个聊天机器人&#xf…

电商api实战解析:1688.item_get_company 获取公司档案信息

一、接口定位item_get_company 不是“商品级”接口,而是“供应商级”接口。 输入:1688 商品 offerId 或 companyId(二选一) 输出:公司档案 60 字段,包括工商信息、深度认证、工厂能力、贸易能力、在线表现 …

【毕业设计】基于python_CNN深度学习卷积神经网络训练识别猫的表情

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…