当前位置: 首页 > article >正文

【11】ViT论文解析:图像为什么也能像句子交给Transformer

ViT论文解析图像为什么也能像句子交给Transformer论文链接https://arxiv.org/abs/2010.11929论文仓库https://github.com/google-research/vision_transformer在Transformer几乎改写完自然语言处理之后视觉领域并没有立刻跟上。同一个时期里NLP 已经习惯把一句话拆成 token 序列再交给自注意力建模图像分类这边却还在沿着ResNet、EfficientNet这条卷积路线继续打磨。问题不在于大家没见过注意力而在于一张图和一句话并不像同一类对象。句子天生就是离散序列图像却是二维连续信号。局部纹理、边缘、形状和空间邻接关系都缠在一起。把卷积拿掉之后这些原本由结构直接提供的先验还能不能保住一直是个很实在的问题。ViT的冲击力就在这里。它不是在卷积网络里插入几个注意力模块也不是继续沿着“卷积做主干、注意力做增强”的路线往前推。它直接换了问题如果尽量少改动标准Transformer只把图像改写成 patch 序列再用足够大规模的数据做预训练卷积是不是就不再是视觉主干的必要前提。这里先把patch说清楚它就是把整张图切成很多固定大小的小方块。后面ViT做的第一件事就是先把这些小方块当成视觉里的“词”再把它们送进Transformer。论文最后给出的答案可以先压缩成三句话图像确实可以先切成 patch再改写成 token 序列纯Transformer确实可以直接承担图像分类主干决定胜负的关键不只是结构替换而是大规模预训练把优劣排序重新洗了一遍背景这篇论文到底在验证什么ViT的直接研究对象不是所有视觉任务也不是所有Transformer变体。它研究的是图像分类主干网络而且用的是尽量接近 NLP 标准Transformer的最小改造版本。这点很关键。作者不是想为视觉重新发明一整套复杂结构而是要测试一条更极端的路线把图像切成 patch再把 patch 像词 token 一样交给Transformer。这样做同时带来两面性好处NLP 中已经成熟的结构和实现几乎可以原封不动地拿过来风险卷积网络长期依赖的图像归纳偏置会被大量拿掉所以全文的核心矛盾并不复杂CNN的优势是局部性、平移等变性和二维邻域结构被直接写进了模型Transformer的优势是更通用、更可扩展但它默认不带这些视觉归纳偏置核心判断ViT真正证明的不是后者“也能跑”而是在大规模预训练设定下后者可以变成更优的默认路线。为什么视觉模型长期依赖CNN卷积网络长期统治视觉不只是历史惯性。视觉任务天然带着很强的结构特征。相邻像素通常比远处像素关系更强局部纹理先组成边缘再组成部件再组成整体对象。CNN正好把这种规律写进了模型结构里局部感受野、权重共享、层级特征提取这些都在替模型提前表达“图像应该怎么学”。这也是为什么在很长一段时间里视觉研究更愿意在卷积主干上做改进而不是彻底换掉主干。因为卷积给的不是一两个技巧而是一整套归纳偏置。Transformer在这件事上的立场完全不同。它不假设局部一定比全局更重要也不预设先学边缘再学形状。它更像一个通用序列建模器只负责让 token 之间相互通信至于哪些关系该被重点建模要靠数据自己学出来。下面这张解释图把两条路线的差别压缩得很直观。图 1. 左边是CNN先抓局部、逐层扩大感受野的路线右边是ViT先切 patch再把 patch 当成 token 送入Transformer的路线。这张图要看的不是“谁更先进”而是两边把什么写进了模型。CNN把局部结构先验写进了网络本身所以小数据场景通常更稳ViT把更多自由度留给数据因此对预训练规模更敏感后面的实验结果基本都在验证这件事。也正因为前面这层差异存在接下来最自然的问题就变成了如果不用卷积ViT到底是怎么把一张图送进Transformer的。方法ViT到底怎么处理一张图ViT的方法部分非常克制。它引入的新设计并不多主要只有三件事把图像切成固定大小的 patch把 patch 线性投影成 token embedding在 token 序列前面加一个class token再接标准Transformerencoder原论文总览图把这个过程画得很清楚。图 2. 原论文Figure 1。图像被切成 patch每个 patch 被线性投影后加上位置编码整个序列进入标准Transformerencoder分类结果由class token的输出给出。顺着这张图往下看论文真正想强调的是它没有给视觉重新设计一套复杂骨干而是把图像输入改写成了标准Transformer能直接接住的形式。写成更技术的形式论文给出的输入定义是输入图像为x∈RH×W×Cx \in \mathbb{R}^{H \times W \times C}x∈RH×W×Cpatch 大小为P×PP \times PP×Ppatch 数量为NHWP2N \dfrac{HW}{P^2}NP2HW​每个 patch 被展平成长度为P2CP^2CP2C的向量再通过可学习矩阵EEE投影到统一维度DDD对应的初始输入可以写成z0[xclass;xp1E;xp2E;…;xpNE]Epos z_0 [x_{\text{class}}; x_p^1E; x_p^2E; \ldots; x_p^NE] E_{\text{pos}}z0​[xclass​;xp1​E;xp2​E;…;xpN​E]Epos​这里有两个容易被低估的点。第一ViT不是把像素直接拿来做 token而是先把像素块压成 patch token。patch 化的意义不只是“形式上更像 NLP”而是把像素级别几乎不可用的注意力成本压缩成 patch 级别可训练的序列长度。第二位置编码仍然是一维、可学习的位置编码而不是特意为视觉定制的复杂二维结构。论文明确说他们没有观察到更复杂的位置编码带来显著收益。整篇论文的态度都很一致尽量少做视觉特化尽量测试标准Transformer到底能走多远。结构先搭到这里下面就要回答另一个更现实的问题这套设计为什么没有在一开始就直接赢过CNN。为什么ViT一开始打不过CNNViT最值得细读的部分不是公式而是Inductive bias那一节。作者明确指出ViT比CNN少得多的图像专属归纳偏置。CNN里局部性、二维邻域结构和平移等变性会在网络每一层持续起作用。ViT不一样。它只有两处显式用了二维图像结构一开始把图像切成 patchfine-tuning 时为了适配更高分辨率对位置编码做二维插值除此之外patch 之间的空间关系、哪些区域彼此相关、局部模式该如何被优先建模几乎都要靠数据自己学出来。这直接解释了论文里最重要的一个现象ViT并不是从一开始就压过CNN。如果只在ImageNet这种中等规模数据上训练、又没有很强的正则化ViT的准确率会比同级别ResNet低几个点。这不是失败案例而是论文结论的一部分。少了卷积写死在结构里的局部先验模型就更依赖大规模数据去把这些规律重新学回来。为什么论文还要讲hybrid和高分辨率微调论文并不是只比较“纯ViT”和“纯ResNet”。方法部分专门介绍了 hybrid architecture。hybrid 的做法是输入序列不直接来自原始图像 patch而是来自 CNN feature map。也就是说前端先让卷积提一层局部特征再把 feature map 展平并投影成Transformer所需的序列输入。这一步的意义很清楚。论文没有把问题偷换成“卷积一无是处”而是把 hybrid 当成中间参照物去回答更细的问题局部卷积前端在小预算、小模型下是否仍有帮助如果模型继续变大、数据继续变多这种帮助会不会保留下来后面的 scaling 结果表明hybrid 在较小计算预算下确实略优但这个优势会随着模型规模上升而消失。这意味着卷积前端不是完全没价值而是在大规模预训练 regime 里不再是决定性前提。微调和高分辨率处理也值得单独说清。论文的做法是预训练后移除原有预测头换成一个零初始化的D×KD \times KD×K线性层其中KKK是下游类别数fine-tuning 时通常使用比预训练更高的输入分辨率麻烦在于分辨率变大后patch 大小不变序列长度就会增加。Transformer理论上可以处理更长序列但预训练好的位置编码无法直接对齐新分辨率。论文采取的办法是对预训练位置编码做二维插值。这一步很重要因为它说明ViT并不是完全拒绝视觉结构而是把视觉归纳偏置压缩到少数必要节点而不是像CNN那样在每一层反复写入。ViT-B/16这种名字到底是什么意思ViT还有一个影响很深、但常被一笔带过的贡献它把视觉 backbone 的命名方式也带进了新的范式。图 5. 原论文Table 1。这张表给出ViT-Base、ViT-Large、ViT-Huge的层数、隐藏维度、MLP 维度、注意力头数和参数规模。这张表先回答的是“B、L、H到底差在哪”。答案是模型层数、隐藏维度、MLP 宽度和参数规模都在变大。后面/16、/32这种后缀则对应 patch 大小。所以ViT-B/16这种名字实际上同时告诉了两件事这是Base规模的模型输入会被切成16×1616 \times 1616×16的 patchpatch 越小token 数量越多信息更细但计算开销也会上升。patch 越大序列更短计算更省但输入一开始就更粗。后续很多视觉模型的设计权衡仍然围绕这条线展开。实验数据一变大为什么ViT就反超了如果只看结构ViT很容易被误读成一句过于简单的话把图像切成 patch再把Transformer套上去事情就成了。原论文最重要的实验恰恰是在反驳这种读法。图 3. 原论文Figure 3的核心部分。横轴是预训练数据集规模纵轴是迁移到ImageNet后的 Top-1 准确率。这张图先回答一个关键问题ViT到底是不是从一开始就比CNN更好。答案不是。图里从左到右分别对应更大的预训练数据规模。数据还小时BiT这类强ResNet基线并不落下风甚至更稳。可一旦预训练规模从ImageNet走向ImageNet-21k再走向JFT-300M更大的ViT变体开始明显上升并逐步压过卷积模型。核心证据ViT的成功不是单靠结构更换直接得到的而是“patch token 化 大规模预训练”共同成立的结果。少了后半句这篇论文就会被误讲成一次简单的架构替换。为什么scaling study说明ViT不是偶然涨点如果说Figure 3说明了“数据规模会改写胜负关系”那么Figure 5和Table 6说明的是这种变化不是单点偶然而是出现在更系统的 scaling 研究里。论文在JFT-300M上做了一次受控 scaling study模型池包括7 个ResNet6 个Vision Transformer5 个 hybrid作者把迁移性能对照总预训练计算量来画得到Figure 5。图 4. 原论文Figure 5。图里比较的不是单一精度而是不同架构在总预训练计算量下的迁移表现。这张图先看左下角小模型或较小预算下hybrid 和ResNet仍然有竞争力。再往右上看ViT的点越来越靠前。这个趋势说明它不是只靠“多喂一点算力”碰巧赢了某个 benchmark而是扩展曲线本身开始更占优。论文从Figure 5和Table 6提炼出的三个结论可以直接保留性能/计算权衡ViT在 performance/compute trade-off 上整体压过ResNethybrid 的位置小预算下略优但随着模型规模变大这个差距会消失扩展趋势在论文尝试的范围里ViT的扩展曲线还没有明显饱和其中第一点最关键。作者的表述非常直接为了达到相同的平均迁移性能ViT大约只需要2-4×2\text{-}4\times2-4×更少的计算。这才让ViT不再只是“某个大模型跑出了更高分数”而更像是一条值得继续扩展的新路线。除了分数更高论文还补了什么证据ViT没有停在“分数更高”这里。论文还尝试解释模型到底学到了什么、代价又是否真的不可接受。在Inspecting Vision Transformer那一节里作者观察到第一层 patch 投影学到的基函数看起来是合理的局部结构表示位置编码的相似性会反映图像内的距离关系一些 attention head 在很浅层就已经能整合全图信息另一些 head 在低层保持较小的 attention distance更像在做局部处理这些观察不能单独证明模型已经“真正理解了视觉结构”但足以说明去掉卷积之后模型并没有完全失去局部感而是在训练后自己学出了局部和全局两种不同尺度的行为模式。效率部分论文在附录里还给出了经验计算成本分析。图 6. 原论文Figure 12。左图比较推理速度右图比较同设备上能容纳的最大 batch size。这张图给出的结论是速度在相近模型级别上ViT的实际推理速度和类似规模的ResNet可以接近内存大模型下ViT在每核可容纳 batch size 上更占优也就是更省内存这里的边界也要说清。论文并没有说“自注意力从此完全没有分辨率成本”理论上的双二次增长仍然存在它只是在说明在论文考察的模型规模和分辨率范围里ViT并没有表现出直觉上那么不可接受的效率问题。结论与边界哪些结论已经成立哪些还不能下如果把ViT的结论压缩成最严格的版本论文已经证明的是纯Transformer可以直接用于图像分类主干当预训练规模足够大时缺少卷积归纳偏置不再构成决定性障碍在大规模预训练设定下ViT在迁移性能与计算成本权衡上可以优于强CNN基线hybrid 前端在小预算下有帮助但不是大规模 regime 里的必要条件论文没有直接证明的是Transformer在所有视觉任务上都会天然优于CNN纯Transformer在小数据场景下同样更优patch token 化是视觉建模的最终形式更高分辨率和更长序列下的效率问题已经彻底解决边界提醒这两个列表必须分开。否则就会把这篇论文从一次严谨的 regime 验证误讲成“卷积时代结束”的口号。ViT为什么成了后续视觉大模型的起点如果只把ViT看成“图像分类精度更高了一些”这篇论文的重要性就被说轻了。它留下的是一条之后不断被复用的主线图像可以先被 token 化视觉主干可以直接使用Transformer大规模预训练会明显改变视觉模型的优劣排序后续多模态模型可以直接继承这套视觉编码方式这条线后来一路走到了CLIP、BLIP-2、LLaVA、InternVL这些视觉语言模型里。很多人今天说“视觉塔”时脑子里默认对应的其实已经是某种ViT变体而不是传统ResNet。历史位置ViT的位置更像一个分界点。它没有终结卷积也没有把视觉问题一次性彻底解决但它证明了另一件此前并不显然的事图像也可以像句子那样先变成 token再交给统一的序列模型去学。最后只记住三件事ViT把图像改写成了 patch token 序列预训练规模一变大胜负关系开始倒向Transformer它把视觉 backbone 从卷积范式推向了统一的 token 序列范式

相关文章:

【11】ViT论文解析:图像为什么也能像句子交给Transformer

ViT论文解析:图像为什么也能像句子交给Transformer论文链接:https://arxiv.org/abs/2010.11929 论文仓库:https://github.com/google-research/vision_transformer在 Transformer 几乎改写完自然语言处理之后,视觉领域并没有立刻跟…...

Ollama部署embeddinggemma-300m:支持中文/英文/日文等100+语言

Ollama部署embeddinggemma-300m:支持中文/英文/日文等100语言 想不想在你的电脑上,快速搭建一个能理解100多种语言的智能文本理解引擎?今天,我们就来聊聊如何用Ollama这个轻量级工具,一键部署谷歌开源的embeddinggemm…...

Chord基于Qwen2.5-VL的视觉定位服务CI/CD:GitOps自动化更新流程

Chord基于Qwen2.5-VL的视觉定位服务CI/CD:GitOps自动化更新流程 1. 项目简介与核心价值 想象一下,你有一个能看懂图片的智能助手。你给它一张照片,然后说“帮我找到图里的白色花瓶”,它就能立刻在图片上给你画个框,告…...

Windows系统函数操作码提取与应用:构建自动化签名数据库

1. 项目概述:从“黑盒”到“白盒”的Windows函数探索如果你在Windows平台上做过逆向分析、安全研究,或者仅仅是出于好奇,想看看某个系统API调用背后到底执行了哪些机器指令,那么你很可能遇到过这样的困境:你手头只有一…...

Numba-SciPy:打破Python高性能计算壁垒,无缝集成科学计算库

1. 项目概述:当Numba遇见SciPy如果你在Python高性能计算领域摸爬滚打过一阵子,大概率对Numba这个名字不会陌生。这个由Anaconda公司主导的即时编译器,通过LLVM后端将Python代码(尤其是涉及NumPy数组操作的代码)直接编译…...

nli-MiniLM2-L6-H768在软件测试中的应用:自动化生成测试用例与断言

nli-MiniLM2-L6-H768在软件测试中的应用:自动化生成测试用例与断言 1. 引言:软件测试的痛点与机遇 测试工程师小王最近很头疼。他负责的电商系统即将上线新功能,但测试用例编写进度严重滞后。按照传统方法,他需要先阅读200多页的…...

深度学习实践

深度学习实践:探索智能时代的核心技术 深度学习作为人工智能领域的重要分支,近年来在图像识别、自然语言处理、自动驾驶等领域取得了突破性进展。其核心在于通过多层神经网络模拟人脑的学习机制,从海量数据中提取特征并完成复杂任务。对于技…...

07.训练自己的数据集(上):标注与格式准备

从本篇开始,我们将正式进入YOLO的核心操作环节——训练自己的数据集。在之前的篇目中,你已了解了YOLO的基本原理、环境搭建以及如何使用预训练模型进行目标检测。但真正让YOLO为你工作的关键,是让它学会识别你关心的特定目标。这需要你提供一批标注好的图片,让模型从中学习…...

5步搭建Sunshine游戏串流服务器:从零到丝滑体验的完整指南

5步搭建Sunshine游戏串流服务器:从零到丝滑体验的完整指南 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 您是否曾梦想过在客厅电视上畅玩PC游戏,或在平板…...

Realistic Vision V5.1写实人像生成案例:不同年龄段亚洲面孔真实感表现

Realistic Vision V5.1写实人像生成案例:不同年龄段亚洲面孔真实感表现 你有没有想过,用AI生成一张照片,能逼真到让人分不清是真人还是AI?今天,我们就来深度体验一个专门干这件事的神器——Realistic Vision V5.1虚拟…...

Claude代码插件与技能项目:AI编程助手集成开发环境实战指南

1. 项目概述与核心价值最近在开发者社区里,一个名为jeremylongshore/claude-code-plugins-plus-skills的项目引起了我的注意。乍一看标题,它似乎是一个围绕 Claude(Anthropic 公司开发的大型语言模型)的代码插件和技能增强包。但深…...

SAP-Fiori:系列(4)Gateway ODATA (V2) CURD之Delete

在 OData V2 服务中,DELETE 操作用于删除指定的实体资源。本文将从客户端调用、HTTP 协议细节、ABAP 后端实现、常见错误等方面全面介绍 OData 的删除功能。如果你已经熟悉了 OData 的查询(GET)和创建(POST)&#xff0…...

Transformer模型中的LayerNorm与RMS Norm对比与实践

1. 标准化技术在现代Transformer模型中的核心地位Transformer架构自2017年问世以来,已经成为自然语言处理领域的基石技术。在这个架构中,标准化(Normalization)层扮演着神经网络的"稳定器"角色,直接影响模型的训练动态和最终性能。…...

3个步骤快速掌握MTK设备修复:新手完整救砖指南

3个步骤快速掌握MTK设备修复:新手完整救砖指南 【免费下载链接】mtkclient MTK reverse engineering and flash tool 项目地址: https://gitcode.com/gh_mirrors/mt/mtkclient MTKClient是一款强大的开源联发科设备修复工具,能够帮助用户解决手机…...

MTKClient终极指南:如何快速修复联发科设备变砖问题

MTKClient终极指南:如何快速修复联发科设备变砖问题 【免费下载链接】mtkclient MTK reverse engineering and flash tool 项目地址: https://gitcode.com/gh_mirrors/mt/mtkclient 当你的联发科手机或平板遭遇系统崩溃、无法开机、刷机失败等"变砖&quo…...

MySQL 远程访问实战:从基础操作到真实踩坑记录

MySQL 远程访问实战:从基础操作到真实踩坑记录本文记录了一次完整的 MySQL 远程连接踩坑过程,涵盖基础命令行操作、认证插件报错、IP 被拉黑等问题及解决方案。一、MySQL 基础命令行操作 1.1 登录与退出 # 本地登录(默认走 localhost&#xf…...

LangGraph 并发控制:如何防止多 Agent 同时操作资源导致的数据竞争

一、 引言 (Introduction) 钩子 (The Hook): 从ChatGPT的“分身乏术”到企业级多Agent的“致命混乱” 你有没有试过让ChatGPT帮你同时整理3份季度财报,同步核对5个不同来源的竞品价格,还要实时生成一封给投资人的更新邮件——然后看着它一会儿漏记了第三…...

Multi-Agent系统测试方法:确保协同效率与决策准确性

Multi-Agent系统测试方法:确保协同效率与决策准确性一、 引言 (Introduction) (预计字数12000,含场景示例、背景问题、核心预告、全文导读) 1.1 钩子:从自动驾驶车队的深夜惊魂说起 你有没有刷到过去年(202…...

规格驱动开发:用AI编码助手实现工程化协作与边界控制

1. 项目概述:当AI编码助手学会“看图纸”施工 如果你和我一样,长期在项目一线和各类AI编码助手(Claude Code、Cursor、GitHub Copilot等)打交道,那你肯定经历过这种场景:你给AI一个模糊的需求,比…...

AED设备原理与ECG信号处理技术解析

1. 自动体外除颤器(AED)的核心原理与医疗价值AED设备本质上是一个高度集成的嵌入式系统,它通过"感知-分析-决策-执行"的闭环工作流程挽救心脏骤停患者的生命。当患者出现心室颤动(VF)或无脉性室性心动过速(VT)时,心脏电活动处于混沌状态&#…...

Python在TVA算法架构优化中的创新应用(二)

前沿技术背景介绍:AI 智能体视觉系统(TVA,Transformer-based Vision Agent),是依托Transformer架构与因式智能体所构建的新一代视觉检测技术。它区别于传统机器视觉与早期AI视觉,代表了工业智能化转型与视觉…...

Python在TVA算法架构优化中的创新应用(一)

前沿技术背景介绍:AI 智能体视觉系统(TVA,Transformer-based Vision Agent),是依托Transformer架构与因式智能体所构建的新一代视觉检测技术。它区别于传统机器视觉与早期AI视觉,代表了工业智能化转型与视觉…...

使用yubikey-agent实现硬件级SSH密钥安全管理与无缝认证

1. 项目概述:为什么你需要一个硬件密钥管理代理 如果你是一名开发者,或者日常工作中需要频繁使用SSH密钥访问远程服务器、Git仓库,那么你一定对管理那一堆 id_rsa 、 id_ed25519 私钥文件感到头疼。它们要么躺在 ~/.ssh 目录里&#x…...

Pandas快速数据分析实战:紧急需求处理技巧

## 1. 项目概述:当数据分析遇上"快餐文化"上周三凌晨两点,市场部的同事突然发来一份300MB的销售数据,要求"天亮前给出关键趋势摘要"。这种场景下,优雅的代码架构和完美的数据管道都是奢侈品——我们需要的是像…...

VS Code MCP插件生态实战手册:从零搭建→性能压测→CI/CD集成的5步标准化流程

更多请点击: https://intelliparadigm.com 第一章:VS Code MCP 插件生态搭建手册对比评测报告 VS Code 的 MCP(Model Control Protocol)插件生态正处于快速演进阶段,主流实现方案包括官方预览版、社区维护的 mcp-serv…...

企业级Dev Containers标准化配置方案(已落地金融/云原生团队),含安全加固+CI/CD兼容+多架构支持

更多请点击: https://intelliparadigm.com 第一章:企业级Dev Containers标准化配置方案概览 企业级 Dev Containers 的核心目标是实现开发环境的一致性、可复现性与安全合规性。在大型组织中,不同团队使用各异的技术栈和依赖版本&#xff0c…...

从零搭建AI开发环境:手把手教你用Anaconda管理多个PyTorch+CUDA版本(Ubuntu 20.04/22.04实测)

从零搭建AI开发环境:手把手教你用Anaconda管理多个PyTorchCUDA版本(Ubuntu 20.04/22.04实测) 在深度学习项目开发中,不同项目往往需要不同版本的PyTorch和CUDA环境。比如一个项目可能基于PyTorch 1.8和CUDA 10.2开发,…...

Keras深度学习多分类任务实战与优化技巧

1. 深度学习多分类任务实战指南在机器学习领域,多分类问题就像一位超市理货员需要把上千种商品准确归到不同货架——每件商品只能放在一个正确位置,但选择范围却很广。Keras作为深度学习领域的"瑞士军刀",以其简洁的API和模块化设计…...

如何用Logitech鼠标宏实现PUBG零后坐力压枪?3步快速上手指南

如何用Logitech鼠标宏实现PUBG零后坐力压枪?3步快速上手指南 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 你是否还在为《绝地求生…...

别再只用K-Means了!用MATLAB手把手教你搞定更抗噪的K-Medoids聚类(附完整代码)

超越K-Means:用MATLAB实战K-Medoids聚类算法解决噪声数据难题 当你的数据集里混入了异常值,K-Means的表现往往会让你失望——那些偏离群体的数据点像磁铁一样把聚类中心拽离合理位置。这时候,K-Medoids算法就该登场了。与K-Means不同&#xf…...