聚类与 PCA
机器人记录下的数据大多没有标签:抓取位置、关节轨迹、点云、相机图像。无监督学习先问两个最朴素的问题:哪些数据点属于同一类(聚类),以及描述每个点真正需要几个数(降维)。本节在浏览器里实时运行 k-means(Lloyd 算法与 k-means++)、用 EM 训练高斯混合模型,把 PCA 看成“方差最大”与“重建误差最小”的同一件事,看清这些线性、团块状的方法在哪里失效,最后用 PCA 找出机器人手的“特征抓取”(eigengrasp)。
1为什么机器人需要它
前面几章的学习都有“标准答案”:16.1 节的回归和分类,每个输入都配着一个目标 \(y\)。可机器人每天产生的数据绝大多数没人标注。一个演示者在桌上做了 150 次抓取,日志里只有夹爪闭合时的位置,没人写下“这次抓的是杯子”;一只 15 个关节的灵巧手记录了几千个抓取姿态,没人告诉你哪些关节总是一起动;一段拾放演示是一条长长的时间序列,没人标出“这里开始抬起”。
无监督学习从数据本身找结构。本节讲两类最基本、至今仍到处在用的工具:
- 聚类:把数据分成 \(K\) 组,同组的点彼此相近。k-means 用“最近的中心”做硬划分;高斯混合模型(GMM)给每个点一个属于各组的概率,用 EM 算法训练,它建立在 4.4 节的多元高斯和 4.6 节的最大似然之上。
- 主成分分析(PCA):找一个低维的线性子空间,让数据投影上去后损失最少。1.12 节已经用 SVD 算过点云的主方向和法向量;这里讲它的统计含义:为什么“方差最大”和“重建误差最小”是同一个问题,“解释方差”怎么读,以及该保留几个成分。
它们在机器人里随处可见:把桌面点云分割成一个个物体,把视觉特征量化成“视觉单词”用于回环检测,把演示切成阶段,把动作空间离散成几个“模式”,把高维的手部姿态压缩成两三个协同量。它们的共同弱点同样重要:k-means 只认圆团,PCA 只认平面,数据一弯就失效。这正是 18.2 节自编码器要解决的问题。
2直觉:插旗、站队、挪旗
在桌面上插 \(K\) 面小旗(中心 \(\hl{mu}{\boldsymbol\mu_k}\))。然后反复做两件事:① 站队:每个数据点走到离它最近的旗子下面;② 挪旗:每面旗子挪到它队伍的平均位置(重心)。这就是 Lloyd 算法,人们口中的 k-means。它在降低一个量:每个点到自己旗子的距离平方之和
其中 \(c(n)\) 是点 \(\mathbf x_n\) 所在的组。站队这一步,在旗子不动时为每个点选了最近的旗,\(J\) 不会变大;挪旗这一步,在队伍不变时把旗子放到重心,而重心正是使队内距离平方和最小的点(第 5 节),\(J\) 也不会变大。\(J\) 只降不升,而把 \(N\) 个点分成 \(K\) 组的方式只有有限多种,所以算法一定会停。但它停下的地方只是“两步都改进不了”的地方,不一定是全局最好的分法。下图让你亲手体验这两点。
- 保持默认设置(3 个物体,\(K=3\)),交替按“① 站队”和“② 挪旗”,或直接按“运行”,直到收敛(一次站队后没有任何点换组)。默认起点要挪 8 次旗,\(J/N\) 从 582 降到 72.8 cm²,而且每半步都不升;注意中间那段几乎平坦的“停滞”。
- 让 Lloyd 卡在坏的局部极小:按“角落起点”(所有中心挤在左上角)或者把所有中心拖到同一个角落,再运行到收敛。收敛后的 \(J\) 至少是 \(J^\star\) 的 1.5 倍(读数里的比值)。“角落起点”下有一面旗一个点都没分到:它成了“空簇”。
k-means 是坐标下降:未知数分两块,一块是每个点的组号(离散),一块是中心(连续),轮流固定一块、最优地解另一块。每一步都精确最优,所以 \(J\) 单调下降、有限步收敛;但整体问题是非凸的组合优化,坐标下降只保证停在一个“两块都不能单独改进”的点。起点决定结局。
3动手:软聚类、初始化与选 K
高斯混合模型与 EM
k-means 用欧氏距离判断“最近”,等于默认每个组都是同样大小的圆团。真实的组常常不是:同一个长条形物体上的抓取点沿物体长轴散开;一个大托盘旁边放着一个小螺丝盒。高斯混合模型换一种说法:数据是这样产生的,先以概率 \(\hl{pi}{\pi_k}\) 选一个组 \(k\),再从这个组的高斯 \(\mathcal N(\boldsymbol\mu_k,\hl{Sigma}{\Sigma_k})\) 里抽一个点。每组有自己的位置、形状(协方差椭圆,4.4 节)和份额。
训练它的 EM 算法和 Lloyd 长得几乎一样,只是“站队”变软了:E 步算每个点属于每组的后验概率,即责任 \(\hl{gamma}{\gamma_{nk}}\)(贝叶斯公式,4.2 节);M 步用这些责任作权重,重新估计每组的 \(\pi_k,\boldsymbol\mu_k,\Sigma_k\)(加权的最大似然,4.6 节)。每一轮 EM 都不会降低数据的对数似然(第 5 节证明)。
- 选“长条”和 k-means(\(K=2\)),运行到收敛:k-means 把两个长条拦腰切开,一致率只有约 60%,并且换几个种子(“新种子”)都一样。这不是初始化不好:这样切开的 \(J\) 确实更小。
- 切到 GMM(仍是“长条”),按“运行”:对数似然一路上升,两个椭圆拉长并转到长条的方向,大约 25 轮后收敛,一致率达到 95% 以上(默认种子是 100%)。再试“大小悬殊”:k-means 约 71%,GMM 约 99%,小盒子的份额 \(\pi\) 约 0.14。
初始化与选 K
FIG 1 已经看到:Lloyd 的结局取决于起点。最常见的起点有两种。随机起点(Forgy 法):随机挑 \(K\) 个数据点当初始中心,容易把两个中心放进同一团、另一团没有中心。k-means++(Arthur 与 Vassilvitskii,2007):第一个中心随机挑,之后每个新中心按“到已有中心的最近距离的平方” \(D(\mathbf x)^2\) 成比例地抽样,离现有中心远的点更容易被选中,于是中心自然散开。它在期望意义下保证结果不差于最优解的 \(O(\log K)\) 倍,实践中再配合多次重启取最好的一次。
另一个问题是 \(K\) 本身。\(J^\star(K)\)(\(K\) 个组时能达到的最小 \(J\))随 \(K\) 单调下降,\(K=N\) 时为 0,所以不能拿 \(J\) 直接选 \(K\)。常用的经验法是“肘部”:画 \(J^\star(K)\) 对 \(K\),找下降突然变缓的那个拐点。对 GMM 可以用信息准则(第 5 节的 BIC)。下图是一个货架上的 8 个格子,每格 25 次抓取。
- 看肘部曲线,把 K 设在“拐点”上(读数里的 \(J^\star(K)/J^\star(K-1)\) 从 0.5 左右突然跳到 0.9 以上的前一个 K)。它正好等于格子数。
- 在 \(K=8\) 时两个按钮各按一次:改 K 后的第一批里,随机起点只有 21 次命中,平均 \(J/J^\star\) 约 2.2;k-means++ 有 60 次命中,平均约 1.5,而且平均只需约 3 次迭代(随机起点约 6 次)。即使用 k-means++,也有四成的运行没找到最优:所以要重启。
(1) GMM 胜过 k-means,靠的是更丰富的模型(每组自己的协方差),不是更好的优化:FIG 2 里 k-means 把长条切开,是因为在它的目标 \(J\) 下这样切就是更好的。选错了模型,优化得再好也没用。 (2) GMM 也有局部极小,而且参数更多(2D 里每组 6 个:2 个均值、3 个协方差、1 个份额),收敛也更慢(“大小悬殊”要 60 多轮),所以实践中常先用 k-means 的结果给 EM 初始化。 (3) 在 FIG 3 的最差运行里,常见的毛病是“两个中心挤在一格,另有一个中心横跨两格”,正是 FIG 1 那种局部极小。
4另一个视角:不是分组,而是压缩:PCA
聚类用 \(K\) 个“原型”概括数据;降维换个角度,用更少的坐标描述每一个点。设想一台机械臂做了 120 次够取,每次记录肩关节角 \(q_1\) 和肘关节角 \(q_2\)。抬肩时人总是同时伸肘,两个角高度相关:点云是一根斜着的细长条。如果只允许用一个数描述每次够取,最好的办法是在这根长条上画一条直线 \(\hl{u}{\mathbf u}\)(单位向量),用点在这条线上的投影坐标 \(z=\mathbf u^\top(\mathbf x-\bar{\mathbf x})\) 代替原来的两个角。
线该朝哪个方向?有两种说法。一种是让投影后的坐标方差最大,保留尽可能多的“变化”;另一种是让每个点到直线的距离平方和(重建误差,即图中的残差 \(\hl{res}{\mathbf r_n}\))最小。下图告诉你它们是同一个方向:对每个点,到均值的距离平方 = 投影长度平方 + 残差平方(勾股定理),左边与方向无关,所以投影方差最大时残差一定最小。这个方向就是协方差矩阵 \(S\) 最大特征值 \(\hl{lam}{\lambda_1}\) 的特征向量,第一主成分。
- “显示主轴”保持关闭,拖动手柄,把直线转到与第一主成分相差 2° 以内(看右图曲线的最高点,读数会显示差多少度)。这时残差最小:投影保留了约 97.9% 的方差,单个角度描述一次够取几乎不丢信息。
- 关闭“中心化”,再找过原点的最佳直线(拖动或按“对准最佳方向”,与最佳方向相差 2° 以内):它指向点云的均值(约 60°),而不是沿着点云的伸展方向(约 −44°),却号称“保留了”约 95%。忘记减均值时,第一主成分描述的是“数据离原点多远”。
换到“各向同性”的点云:两个方向的方差差不多(约 110 对 88),右图的曲线几乎是平的,第一主成分只解释约 56%,换一个样本(“新样本”)主轴就会大幅转动。PCA 的方向只在特征值明显分开时才有意义。
线性与团块的极限
PCA 找的是平的子空间,k-means 找的是凸的团块(每组是一个 Voronoi 多边形)。数据一弯,两者都会出问题。下图第一组数据是夹爪沿圆碗边缘擦拭的路径(3/4 个圆):它本质上是一维的(一个角度就能描述每个点),但一条直线只能保留约 70% 的方差。一个补救办法是分段线性:先用 k-means 把数据切成 \(K\) 段,再在每段里各做一次一维 PCA,即局部 PCA,也就是概率模型里的“混合 PCA”的简化版。第二组数据是激光雷达在一根圆柱和外圈圆墙上的点:两组是同心圆环,k-means 怎么画直线边界也分不开它们,但若换一个特征,用点到圆心的半径 \(\|\mathbf x-\mathbf c\|\),问题立刻变成一维、可分。选对特征,线性方法就够了;核方法(核 PCA、谱聚类)和 18.2 节的自编码器,都是让机器自己学这种特征。
- 在“擦拭路径”上逐步增大 K:K = 1 时相对误差约 30%,K = 2 约 3.2%;增大到相对误差低于 0.5% 为止(K = 4,约 0.43%)。再往上几乎不降:剩下的就是 0.9 cm 的测量噪声。
- 切到“同心圆环”:用坐标 \((x,y)\) 聚类,一致率只有约 50%(k-means 把两环一起切成左右两半);把特征换成“半径”,一致率变成 100%。
5再看数学
k-means:目标与两步的最优性
数据 \(\mathbf x_1,\dots,\mathbf x_N\in\R^D\)。把分组写成指示量 \(r_{nk}\in\{0,1\}\),\(\sum_k r_{nk}=1\)。目标函数是
站队:固定 \(\boldsymbol\mu\),\(J\) 对每个 \(n\) 分开,各自取 \(r_{nk}=1\) 给距离最小的 \(k\),这显然是最优的。挪旗:固定 \(r\),\(J\) 是 \(\boldsymbol\mu_k\) 的凸二次函数,令梯度为零:
即重心。另一种看法:对任意点 \(\mathbf m\),\(\sum_{n\in k}\|\mathbf x_n-\mathbf m\|^2=\sum_{n\in k}\|\mathbf x_n-\boldsymbol\mu_k\|^2+N_k\|\boldsymbol\mu_k-\mathbf m\|^2\),所以偏离重心只会多出一项。两步都精确最优,\(J\) 单调不增;分组方式至多 \(K^N\) 种,且一次真正的改变会严格降低 \(J\),所以有限步内收敛。若某组变空(FIG 1 的“角落起点”),重心无定义,本页让它留在原地;实际库里常把它重新放到离现有中心最远的点上。
找全局最优的 k-means 划分在一般情况下是 NP 难的,所以只能靠好的起点和重启。k-means++ 的抽样规则是:已选中心集合为 \(\mathcal C\) 时,下一个中心取 \(\mathbf x_n\) 的概率为
其中 \(J_0\) 是抽样得到的初始中心本身的代价:右边的界对它就已经成立(Arthur 与 Vassilvitskii,2007),之后的 Lloyd 迭代只会让 \(J\) 更小。
高斯混合与 EM
对数里面有求和,导数为零的方程没有闭式解。EM 的做法是引入隐变量“这个点来自哪一组”。E 步:用当前参数算后验(责任)
M 步:把责任当作“每个点有 \(\gamma_{nk}\) 份属于第 \(k\) 组”,做加权的最大似然,记 \(N_k=\sum_n\gamma_{nk}\):
为什么似然不降:对任意满足 \(\sum_k q_{nk}=1\) 的权重 \(q_{nk}>0\),由于对数是凹函数(Jensen 不等式),
当 \(q_{nk}=\gamma_{nk}\) 时等号成立(E 步让下界在当前参数处贴住似然),M 步再对参数最大化这个下界(它对每组是可以闭式求解的加权高斯似然)。似然 ≥ 新下界 ≥ 旧下界 = 旧似然,所以每一轮都不降。这个下界在 19.1 节的 VAE 里会再次出现,那里叫 ELBO。与 k-means 的关系:令所有 \(\Sigma_k=\sigma^2I\)、\(\pi_k=1/K\) 固定,让 \(\sigma\to0\),责任变成 0 或 1(离最近中心的那组得 1),M 步只剩更新均值:EM 退化为 k-means。
两个坑。一是奇异性:如果某个高斯的均值正好落在一个数据点上、方差趋于 0,该点的密度趋于无穷,似然无上界。FIG 2 给每个协方差加了 \(\varepsilon I\),\(\varepsilon=0.001\) cm²(这让 M 步不再是严格的极大化,但在本页数据上对数似然的下降不超过 \(10^{-7}\));更严格的做法是给协方差加先验做 MAP(4.6 节)。二是选 K:似然随 K 单调上升。贝叶斯信息准则 \(\mathrm{BIC}=-2\log p_{\hat\theta}(\mathcal D)+P\ln N\)(\(P\) 为自由参数个数:2D 中每组有 2 个均值和 3 个全协方差参数,共 5 个,再加 \(K-1\) 个份额)取最小,就在拟合与复杂度之间做了折中。
PCA:方差最大与误差最小
记均值 \(\bar{\mathbf x}=\frac1N\sum_n\mathbf x_n\),把中心化后的数据按行堆成 \(N\times D\) 矩阵 \(\tilde X\),样本协方差 \(S=\frac1N\tilde X^\top\tilde X\)(统计软件常用 \(\frac1{N-1}\),只差一个比例,方向不变)。沿单位向量 \(\mathbf u\) 的投影方差为 \(\mathbf u^\top S\mathbf u\)。在 \(\|\mathbf u\|=1\) 的约束下最大化它(拉格朗日乘子,6.7 节):
所以驻点都是特征向量,投影方差就是特征值,最大值在 \(\hl{lam}{\lambda_1}\) 处(1.11 节:对称矩阵的特征向量正交,特征值为实数且这里非负)。误差的那一面:点 \(\tilde{\mathbf x}_n\) 在直线上的重建是 \(\mathbf u\mathbf u^\top\tilde{\mathbf x}_n\),
这就是 FIG 4 的“勾股定理”:残差均方 = 总方差 − 投影方差。推广到 \(q\) 个成分:取 \(W_q=[\mathbf v_1,\dots,\mathbf v_q]\)(前 \(q\) 个特征向量),编码 \(\mathbf z=W_q^\top(\mathbf x-\bar{\mathbf x})\),解码 \(\hat{\mathbf x}=\bar{\mathbf x}+W_q\mathbf z\),均方重建误差恰为被丢掉的特征值之和,“解释方差比” \(\eta_q\) 为保留的那部分:
与 SVD 的关系(1.12 节):\(\tilde X=U\Sigma V^\top\),则 \(S=\frac1N V\Sigma^2V^\top\),所以主方向就是 \(V\) 的列,\(\lambda_i=\sigma_i^2/N\);1.12 节的“\(\sigma_i/\sqrt N\) 是沿该方向的标准差”说的正是 \(\sqrt{\lambda_i}\)。数值上直接对 \(\tilde X\) 做 SVD 比先算 \(S\) 再求特征值更稳(不会把条件数平方),\(N\ll D\) 时(例如图像)也更省。最小重建误差这件事就是 1.12 节的 Eckart–Young 定理:秩 \(q\) 截断 SVD 是最好的秩 \(q\) 近似。
标准化:PCA 依赖单位。若特征的单位不同(弧度与牛顿),应先把每一维除以自己的标准差,相当于对相关矩阵做 PCA。白化:用 \(\Lambda_q^{-1/2}W_q^\top(\mathbf x-\bar{\mathbf x})\) 得到协方差为单位阵的坐标。概率 PCA(Tipping 与 Bishop,1999)把 PCA 写成一个线性高斯隐变量模型 \(\mathbf x=W\mathbf z+\bar{\mathbf x}+\boldsymbol\epsilon\),\(\mathbf z\sim\mathcal N(0,I)\),\(\boldsymbol\epsilon\sim\mathcal N(0,\sigma^2I)\),其最大似然解张成同一个主子空间。把线性的编码、解码换成神经网络,就是 18.2 节的自编码器;再把隐变量当成概率分布,就是 19.1 节的 VAE。
k-means 用 \(K\) 个点(零维)近似数据,PCA 用一个 \(q\) 维平面,局部 PCA 用 \(K\) 个 \(q\) 维小平面;GMM 和概率 PCA 是前两者的概率版本。它们都最小化某种平方重建误差(或最大化高斯似然),也都只看二阶统计量(均值与协方差),这既是它们简单可靠的原因,也是它们看不见弯曲结构的原因。
6机器人中的它:灵巧手的特征抓取
9.3 节提到过“协同”:人手的抓取姿态高度相关,少数几个主成分就能解释大部分方差(Santello、Flanders 与 Soechting,1998)。Ciocarlie 与 Allen(2009)把这件事用到机器人上:在几个主成分张成的“特征抓取”(eigengrasp)空间里搜索抓取,而不是在全部关节空间里搜索,让多指灵巧手的抓取规划快得多。下图用一只示意的 15 关节手(5 根手指,每根 3 个屈曲角)演示这个流程。数据是模拟的:80 个抓取姿态由三种“协同”(整手握拳、拇指与食指捏合、尺侧手指与桡侧手指的反向运动)随机组合再加 3° 的独立噪声生成,PCA 并不知道这一点,它要从 80 × 15 的数据里自己找出来。
- “协同探索”模式下把 \(z_1\) 推到 +1.5 以上,\(z_2,z_3\) 保持在 ±0.5 以内:五根手指一起握拢(拇指动得最少),这一个数同时驱动 15 个关节。再单独动 \(z_2\),看拇指和食指如何与无名指、小指反向运动。
- 切到“重建抓取”,增大 q,直到全部 80 个抓取的平均重建误差(RMS)低于 3°:需要 q = 3(约 2.7°,此时累计解释方差约 98.4%)。q = 1 时约 11.2°,q = 2 时约 4.8°;q 再大,每多一个成分只再降约 0.2°(q = 4 时 2.5°),因为剩下的主要是 3° 的独立噪声,均匀摊在其余各个方向上,再加成分只是在拟合噪声。
第一个成分解释约 74%,前两个约 95%,前三个约 98.4%,之后每个成分只剩约 0.2%:碎石图(scree plot)在第 3 个成分之后变平,这就是“该保留几个”的读法。注意 PCA 找到的方向只是张成同一个子空间,未必和生成数据的三种协同一一对应:主成分彼此正交,而我们设计的三种协同并不正交,所以 \(\mathbf v_1\) 是“握拳”混了一点其他成分(例如拇指几乎不参与)。
点云分割:桌面场景常先用 RANSAC(11.5 节)拟合并去掉桌面,再对剩下的点做欧氏聚类,把彼此距离小于阈值的点连成一个物体(PCL 里的 EuclideanClusterExtraction),或用 DBSCAN 这类基于密度的聚类:它们不需要预先给 K,也不要求团块是圆的。每个点的法向量来自邻域的局部 PCA(1.12 节、12.1 节)。 视觉词袋与回环检测:ORB-SLAM 的回环检测(15.2 节)用 DBoW2 词袋库,其“视觉单词”是对大量特征描述子做层次化 k-means 式聚类得到的树(思路来自 Nistér 与 Stewénius 2006 的词汇树);一幅图像变成单词的直方图,就能快速检索相似的历史帧。 演示学习:Calinon 等(2007)用 GMM 拟合多次演示中的(时间,位置)数据,再用高斯混合回归(GMR)生成平滑的轨迹;把演示切成“够取、抓取、抬起”等阶段,也常从对每个时刻的特征(速度、夹爪开合、高度)做聚类开始,实际系统再加上隐马尔可夫模型之类的时间模型,避免标签逐帧乱跳。 动作的模式:Behavior Transformer(Shafiullah 等,NeurIPS 2022)先用 k-means 把演示里的连续动作聚成 K 个中心,策略预测“哪个中心”(分类)再加一个连续的偏移量,从而能表示多峰的动作分布;这与 17.5 节的动作 token 化、22.2 节的多峰策略直接相关。 手:除了 Ciocarlie 与 Allen 的特征抓取规划,“协同”的思想也启发了用少数电机驱动多关节的欠驱动手(9.3 节)。
7常见误区
k-means 和 PCA 都建立在欧氏距离和方差上,而它们完全取决于单位。把关节角(弧度,变化约 0.3)和夹爪力(牛顿,变化约 20)放进同一个向量,力的方差是角度的四千多倍,聚类和主成分几乎只看力。先标准化(每维减均值、除以标准差),或者有意识地选择有物理意义的权重。反过来,若各维单位相同且大小本身有意义(例如都是关节角、都是像素),标准化反而会放大噪声维度。
k-means 的每个组是一个凸的 Voronoi 区域,它偏爱大小相近的圆团。长条、大小悬殊、环形的组都会被切错(FIG 2、FIG 5),而且这不是优化失败,是目标函数本身就偏爱错的答案。按数据形状选方法:椭圆形用 GMM,任意形状且密度均匀用 DBSCAN 一类的密度方法,弯曲流形用谱聚类或先学特征。
一次 Lloyd 的结果取决于起点:FIG 3 里即便用 k-means++,也有四成的运行停在局部极小。总是用 k-means++ 并重启多次(scikit-learn 的 KMeans 就有 n_init 参数),取 \(J\) 最小的那次。但不要用 \(J\) 比较不同的 K:K 越大 \(J\) 一定越小。用肘部、BIC、轮廓系数,或者最好是下游任务的效果来选。
最大似然下,一个高斯可以缩到一个点上让似然无穷大(第 5 节),在重复的数据点(例如机器人静止时的多帧相同读数)上特别容易发生。给协方差加下限或先验,必要时用对角协方差或所有组共享协方差。\(D\) 维全协方差每组有 \(D(D+1)/2\) 个参数,维数一高,数据量很快不够,常先用 PCA 降维再拟合 GMM。
(a) 忘记中心化,第一主成分会指向均值(FIG 4)。 (b) 特征向量的符号和顺序是任意的:\(-\mathbf v\) 同样是特征向量,特征值相近时顺序和方向都不稳定(FIG 4 的“各向同性”),不同数据集算出的主成分不能直接逐个对比。 (c) 方差大不等于重要:对任务关键的那个方向(例如决定抓取成败的手指微调)可能方差很小,被 PCA 当噪声扔掉。 (d) 角度数据要注意周期性:\(179^\circ\) 和 \(-179^\circ\) 只差 2°,却被当成相差 358°,应先展开或用 \((\cos q,\sin q)\)。 (e) 数据弯曲时,解释方差比会低估真实的低维结构(FIG 5 里一维的路径只有 70%)。
8小练习
9延伸阅读
- C. M. Bishop, Pattern Recognition and Machine Learning, Springer, 2006, Ch. 9 and 12 — k-means、GMM 与 EM,PCA 与概率 PCA 的标准教材讲法
- S. P. Lloyd, Least Squares Quantization in PCM, IEEE Transactions on Information Theory, 1982 (Bell Labs memo of 1957) — “站队、挪旗”算法的出处
- D. Arthur & S. Vassilvitskii, k-means++: The Advantages of Careful Seeding, SODA 2007 — \(D^2\) 抽样与 \(O(\log K)\) 的保证
- A. P. Dempster, N. M. Laird & D. B. Rubin, Maximum Likelihood from Incomplete Data via the EM Algorithm, Journal of the Royal Statistical Society B, 1977 — EM 算法的经典论文
- K. Pearson, On Lines and Planes of Closest Fit to Systems of Points in Space, Philosophical Magazine, 1901; H. Hotelling, Analysis of a Complex of Statistical Variables into Principal Components, Journal of Educational Psychology, 1933 — PCA 的两个源头:最小误差与最大方差
- M. E. Tipping & C. M. Bishop, Probabilistic Principal Component Analysis, Journal of the Royal Statistical Society B, 1999 — PCA 作为线性高斯隐变量模型
- B. Schölkopf, A. Smola & K.-R. Müller, Nonlinear Component Analysis as a Kernel Eigenvalue Problem, Neural Computation, 1998 — 核 PCA
- M. Santello, M. Flanders & J. F. Soechting, Postural Hand Synergies for Tool Use, Journal of Neuroscience, 1998 — 人手姿态的低维协同
- M. T. Ciocarlie & P. K. Allen, Hand Posture Subspaces for Dexterous Robotic Grasping, International Journal of Robotics Research, 2009 — 在特征抓取空间里规划机器人抓取
- S. Calinon, F. Guenter & A. Billard, On Learning, Representing, and Generalizing a Task in a Humanoid Robot, IEEE Transactions on Systems, Man, and Cybernetics B, 2007 — 用 GMM/GMR 表示演示
- N. M. Shafiullah, Z. J. Cui, A. Altanzaya & L. Pinto, Behavior Transformers: Cloning k Modes with One Stone, NeurIPS 2022 — 用 k-means 的动作中心加偏移表示多峰动作