尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
SVM人脸识别实战:PCA降维与数据划分避坑指南
有次带实验课A同学说他把SVM人脸识别的案例跑通了测试准确率98%。我让他把预测错误的样本打出来看看结果发现同一张照片同时出现在训练集和测试集里。这不是段子是很多初学者第一次做“SVM人脸识别”时最容易踩的坑——算法本身不难难的是数据准备、降维策略和评估方式。很多人把PCA、支持向量机、可视化各学了一遍却不知道怎么串成一个完整案例。这篇笔记我按实际动手的顺序拆开讲从一个经典的小型人脸库开始读取图片、预处理、PCA降维、SVM训练、核函数对比、结果可视化最后专门讲几个我真实遇到过的坑。目标很明确你看完之后能照着代码复现知道每一步为什么这么做也清楚哪些地方默认的写法其实有问题。适合刚学完机器学习基础、想做一个完整图像分类项目的读者也适合给本科生做课程设计参考。1. 为什么说人脸识别是讲清SVM和PCA的最佳实验场1.1 高维小样本这是所有误区的源头一张64x64的灰度人脸图把像素展平之后就是一个4096维的特征向量。如果用人脸库常用的“40个人、每人10张照片”这种规模样本总数只有400个。用一个4096维特征去喂400个样本典型的“高维小样本”问题维度比样本量还高一个数量级。高维小样本带来的麻烦不是“计算慢”这么简单。第一像素之间存在大量冗余相邻像素灰度值高度相关真正区分不同人的信息可能只存在于全局结构里第二距离度量会变得很脆弱维数越高样本点在空间中越稀疏欧氏距离对不同维度差异的敏感性明显下降第三SVM虽然擅长小样本分类但直接在高维原始像素上硬训很容易把训练集的噪声当成规律。PCA在这里就是用来解决冗余和维度灾难的把4096维像素压缩到几十到一百多维保留大部分人脸结构信息再去训练SVM。人脸识别几乎是讲解“为什么要降维”最直观的场景因为你能把主成分重新还原成图片亲眼看PCA到底学到了什么。1.2 这次复现的实验目标与完整流程整个案例我按下面这个流程走这也是图像分类任务最常见的通用流水线读取人脸图片统一尺寸和灰度把每张图拉平成特征向量做归一化划分训练集和测试集注意分层和按人划分的问题在训练集上做PCA降维学习主成分方向用降维后的特征训练SVM对比不同核函数用网格搜索调参做结果可视化特征脸、混淆矩阵、决策边界、错误样本。后面所有章节都是按这个顺序展开的。建议你动手时也按这个顺序走先关注“数据能不能跑通”再关注“模型准不准”最后再关心“图片画得好不好看”。可视化不是可有可无的装饰它能帮你确认数据处理有没有错、分类器边界合不合理。2. 数据准备从原始人脸图像到可训练的特征矩阵2.1 数据集说明与读取方式我这次用的是一套模拟人脸数据集下文统一叫它Face40结构模仿了经典的小型人脸库40个人每个人10张灰度图每张64x64像素图片文件按“人物编号/图片编号”组织。真实项目里你可能拿到的是文件夹、数据库记录或者网络接口但核心逻辑都一样把图片和身份标签对齐。目录结构大概是这种风格face40/ person_00/ 00_0.pgm 00_1.pgm ... person_01/ 01_0.pgm ...读取代码用Python写核心是遍历每个子文件夹给每个人分配一个数字标签0到39然后把所有图片读成NumPy数组import os import numpy as np import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split from sklearn.decomposition import PCA from sklearn.svm import SVC from sklearn.metrics import classification_report, accuracy_score from sklearn.metrics import ConfusionMatrixDisplay from sklearn.model_selection import GridSearchCV data_dir ./face40 subjects sorted([d for d in os.listdir(data_dir) if os.path.isdir(os.path.join(data_dir, d))]) X_raw [] y [] for label, subject in enumerate(subjects): sub_dir os.path.join(data_dir, subject) for fname in sorted(os.listdir(sub_dir)): path os.path.join(sub_dir, fname) img plt.imread(path) if img.ndim 3: # 有些图片可能是RGB转灰度 img img.mean(axis2) X_raw.append(img) y.append(label) X_raw np.array(X_raw) y np.array(y) print(原始图像数组形状:, X_raw.shape) print(标签数量:, len(y))有一个容易被忽略的点os.listdir的返回顺序不保证和标签一一对应所以我用外层label给每个子文件夹编号并且对文件夹和文件都做了排序。如果你拿到的是几百个文件夹的乱序列表这种写法能保证同一个人的图片稳定映射到同一个标签。如果你用的图片尺寸不统一必须在读入时统一。最简单的做法是用PIL的缩放到固定大小from PIL import Image img Image.open(path).convert(L).resize((64, 64)) X_raw.append(np.array(img, dtypenp.float64))这里有个细节原始图像的像素值是什么范围会影响后面的距离计算和PCA结果。所以要统一resize不能有的图是32x32有的是128x128否则特征向量长度都对不上。2.2 图像拉直、灰度归一化与标签对齐读进来的X_raw形状是(400, 64, 64)这是三维数组分类器通常不认。需要把它展平成二维矩阵每一行是一个样本每一列是一个像素特征。n_samples X_raw.shape[0] X X_raw.reshape(n_samples, -1).astype(np.float64) print(特征矩阵形状:, X.shape) # (400, 4096) X X / 255.0reshape(n_samples, -1)的意思是第一个维度保持样本数不变第二个维度自动算成64 * 64 4096相当于把每张人脸图片“拉直”成一个长向量。这一步思路很简单但必须保证之前所有图片尺寸一致否则reshape会直接报错。为什么要除以255图像灰度值本身是0到255的整数直接做数值计算时像素绝对大小对距离和方差的影响会非常大。除以255之后特征值落在0到1之间量纲统一了SVM在高维空间里计算距离时不会因为某个特征数值天然偏大而主导整个距离。还要检查标签和图片是否真的对上了不要直接跳到训练。建议随机抽8张图把X_raw和y一起打印出来看fig, axes plt.subplots(2, 4, figsize(8, 4)) for i, ax in enumerate(axes.flat): idx np.random.randint(0, n_samples) ax.imshow(X_raw[idx], cmapgray) ax.set_title(fID: {y[idx]}) ax.axis(off) plt.show()如果你发现某个ID对应的脸明显不是同一个人或者某个文件夹里的图全读失败了马上停下来查路径和文件格式。这类问题在数据准备阶段解决的成本最低等模型训练完再发现标签错位那可真是欲哭无泪。2.3 训练集/测试集划分的两个关键点数据准备好之后下一步是划分训练集和测试集。最常用的写法是train_test_split但这里有两个关键点一定要处理。第一个是分层抽样stratifyy。Face40里每人10张类别数量完全均衡但如果你不指定stratify随机划分可能让某些类的10张照片全部掉进测试集模型训练时完全没见过这个人测试准确率自然崩盘。分层抽样能保证每个类别在训练集和测试集中的比例大致和原始数据一致。X_train, X_test, y_train, y_test train_test_split( X, y, test_size0.3, stratifyy, random_state42) print(训练集大小:, X_train.shape[0]) print(测试集大小:, X_test.shape[0])第二个关键点更隐蔽这里按“图片”随机划分但人脸识别真正严格的评估应该按“人”划分。什么意思同一个人的10张照片是高度相关的如果其中8张在训练集、2张在测试集模型很可能只是记住了这个人照片里的光照、角度和表情而不是真正学会了“这个人长什么样”。这种评估结果会虚高。严格场景应该先划分人物ID再把属于这些ID的所有照片归入对应集合。这个坑我放在第6章详细讲因为它是真实项目里最容易翻车的地方。3. PCA降维像素空间到特征脸空间发生了什么3.1 为什么不能拿高维像素直接扔给SVM很多初学者会问SVM不是号称能处理高维数据吗为什么还要PCA我直接给你看一组我在Face40上的实测趋势如果拿原始4096维像素喂线性SVM测试准确率大概只有七成多如果用PCA降到大约120维再喂线性SVM能稳定到九成五左右。同样的模型只是特征变了结果差距很大。原因有三层。第一原始像素维度太高样本只有400个模型很容易把训练集里的个体噪声当成规律过拟合很严重。第二相邻像素高度相关真正有用的人脸结构可能只需要几十个自由度其余都是冗余。第三SVM核函数在高维空间计算距离时大量无关维度会稀释有效信号RBF核尤其明显。降维不是“多此一举”而是把分类器从噪声里解放出来。3.2 主成分的数学直觉与n_components选择PCA的数学本质不复杂核心四步数据中心化把每个特征的均值减去让数据分布围绕原点计算协方差矩阵或者用SVD对中心化后的矩阵做分解求特征值和特征向量特征值代表该方向上的方差大小取前k个特征向量组成投影矩阵把原始数据投影到新空间。用生活化一点的说法假设你有一堆人脸的散点PCA就是找一组互相正交的坐标轴第一个轴指向数据散布最大的方向第二个轴在剩余方向里找散布最大的方向以此类推。如果你把主成分方向还原成图片看到的就是“特征脸”——它们不是某一张真实人脸而是这组数据集中共同变化模式的模板。在sklearn里常见的两种设置PCA维数的方式# 方式一固定保留120维 pca1 PCA(n_components120, svd_solverfull) X_train_pca1 pca1.fit_transform(X_train) X_test_pca1 pca1.transform(X_test) print(保留方差比例:, pca1.explained_variance_ratio_.sum()) # 方式二自动选择能保留95%方差的维数 pca2 PCA(n_components0.95, svd_solverfull) X_train_pca2 pca2.fit_transform(X_train) X_test_pca2 pca2.transform(X_test) print(自动选择维数:, pca2.n_components_)我个人的习惯是先看累计方差曲线再定维数plt.figure(figsize(8, 5)) plt.plot(np.cumsum(pca2.explained_variance_ratio_)) plt.xlabel(number of principal components) plt.ylabel(cumulative explained variance) plt.grid(True) plt.show()在人脸数据上通常前50到100个主成分就能解释95%以上的方差。如果你发现需要几百维才能到95%说明数据噪声或者原始尺寸太大可以先用更小分辨率。有一个最重要的原则PCA只能在训练集上fit然后同时transform训练集和测试集。如果你对整个数据集fit_transform再手动切分PCA会“偷看”测试集的统计信息属于数据泄漏后续所有评估指标都不可信。这点和标准化是一样的逻辑。3.3 用特征脸可视化检查PCA学到的内容PCA的优势在于它是线性变换主成分方向可以直接还原成和输入同尺寸的图像这就是“特征脸”。绘制前10个主成分fig, axes plt.subplots(2, 5, figsize(12, 6)) for i, ax in enumerate(axes.flat): eigenface pca2.components_[i].reshape(64, 64) ax.imshow(eigenface, cmapgray) ax.set_title(fPC{i1}) ax.axis(off) plt.show()同时可以看一下平均脸也就是数据集中所有脸的均值PCA中心化的起点mean_face pca2.mean_.reshape(64, 64) plt.imshow(mean_face, cmapgray) plt.title(mean face) plt.axis(off) plt.show()看特征脸的时候重点观察几点第一张主成分是不是偏向整体明暗变化这通常说明光照是数据里最大的差异来源。后面几张是不是开始出现五官轮廓的对比模式这说明PCA在抓取能区分不同人的结构信息。如果某个特征脸上出现大量高频噪点可能是图片没有做好对齐或者分辨率改变时插值产生了伪影。这一步骤最大的价值是“验证”。如果PCA学出来的特征脸完全看不出人脸结构那说明输入数据处理有问题比如图片翻转、裁切、缩放出了差错。不要急着训SVM先回头查数据。4. SVM训练与核函数对比线性、RBF、多项式到底差在哪4.1 支持向量机为什么适合小样本分类支持向量机的核心思想是间隔最大化在两堆样本之间找一个分离超平面同时让“离超平面最近的那些样本”到超平面的距离尽量大这些最近的样本就叫支持向量。因为它只关心边界附近的少数样本不需要所有样本都参与决策所以天然适合小样本、高维特征的情况。在sklearn里SVM处理多分类默认使用“一对多”策略40个人就是训练40个二分类器每个分类器负责“这个类”和“其余所有类”的区分。这个策略在高维小样本下通常很稳定。SVM还有一个核心参数叫核函数决定如何度量样本之间的相似性。这里不做太复杂的数学推导直接看三个常用核的直觉线性核直接在原始特征空间画超平面简单、稳定、不容易过拟合RBF核高斯核把样本映射到更高维空间能处理非线性边界但参数没调好时极容易过拟合多项式核通过多项式组合特征能表达一些非线性关系但阶数高了容易震荡。4.2 线性、RBF、多项式核在同样数据上的差别我用PCA保留约120维后对三个核分别做了粗略对比注意这不是固定结论每次随机划分不同会有起伏但趋势很典型核函数训练集准确率测试集准确率直观感受linear0.9850.958稳定是很好的baselinerbf (gammascale)1.0000.950训练集记忆能力强但需要调参poly (degree3)0.9990.933容易在边界区域出现抖动对比代码kernels [linear, rbf, poly] for kernel in kernels: clf SVC(kernelkernel, C10, gammascale) clf.fit(X_train_pca2, y_train) train_acc clf.score(X_train_pca2, y_train) test_acc clf.score(X_test_pca2, y_test) print(f{kernel:8s} train{train_acc:.3f} test{test_acc:.3f})为什么RBF训练集准确率能到100%测试集反而没有明显优势因为RBF核容量大在400个样本上很容易把所有训练点都记住尤其如果gamma偏大每个训练样本的影响范围会缩得很小决策边界变得弯弯曲曲把所有训练点都圈在自己周围。gamma越小RBF越接近线性gamma越大过拟合风险越高。所以一个可复用的判断逻辑是如果数据量很小、特征经过PCA已经比较干净先上线性核把C调好就够用。只有线性核明显不够好才考虑RBF并且一定要用交叉验证调C和gamma。4.3 用网格搜索稳定C和gamma而不是靠运气C是误分类惩罚系数C越大模型越不愿意在训练集上犯错边界可能更复杂C越小模型容忍更多训练误差边界更平滑。RBF核还有一个gamma控制单个样本的影响半径。不要手写循环一个个试直接用GridSearchCVparam_grid { C: [0.1, 1, 10, 50], gamma: [0.0001, 0.001, 0.01, 0.1, scale], kernel: [rbf] } grid GridSearchCV( SVC(), param_grid, cv5, scoringaccuracy, n_jobs-1 ) grid.fit(X_train_pca2, y_train) print(最佳参数:, grid.best_params_) print(交叉验证最佳得分:, grid.best_score_) best_svc grid.best_estimator_ y_pred best_svc.predict(X_test_pca2) print(测试集准确率:, accuracy_score(y_test, y_pred))这里有几个容易踩的细节。第一GridSearchCV的cv5会在训练集内部再做5折验证所以调参过程本身不会碰到测试集最终用测试集评估一次就够了。第二如果分类标签很不均衡建议改成StratifiedKFold保证每一折里各类比例一致Face40是均衡数据所以直接用默认也行。第三grid.best_score_是训练集内部交叉验证的平均值它通常比最终测试集准确率略高一点点不要把它和测试集准确率混为一谈。5. 结果可视化准确率之外值得关注的信息5.1 分类报告和混淆矩阵的正确打开方式很多人跑完模型只打印一个accuracy_score这对40类人脸识别来说信息量太少。40个人的测试集准确率95%看着还不错但你不知道是哪几类容易混。我建议一定要看分类报告和混淆矩阵print(classification_report(y_test, y_pred, zero_division0)) ConfusionMatrixDisplay.from_estimator( best_svc, X_test_pca2, y_test, normalizetrue, cmapBlues ) plt.show()分类报告里每一行的precision、recall、f1-score都值得看。Recall低说明这个人很多真实照片被分到了别人头上Precision低说明很多人被误判成了这个人。盲人摸象式地只看总准确率会漏掉这些结构性错误。40类的混淆矩阵画出来是40x40的网格肉眼看不清每一格但整体色块能帮你快速发现规律如果某一行的颜色明显比别行浅说明这个人被大量误分类如果矩阵里出现一些“十字亮线”说明某对类别总是互相混。5.2 降低到2维决策边界只能当“直觉检查”不能当最终结果很多教程喜欢把PCA降到2维然后画SVM决策边界看起来非常酷。但这种方法有个严重的误导2维投影会丢失大量判别信息最终分类性能往往远低于高维PCA特征上的真实模型。2维决策边界只能用来“看个大概”不能作为调参依据。我自己通常的做法是选前8类人脸用PCA降到2维再训练一个RBF-SVM画出边界用来检查分类器“直觉上是否合理”。代码大概是mask np.isin(y, np.arange(8)) X_sub X[mask] y_sub y[mask] pca2d PCA(n_components2, random_state42) X_sub_2d pca2d.fit_transform(X_sub) clf2d SVC(kernelrbf, C10, gamma0.5, random_state42) clf2d.fit(X_sub_2d, y_sub) x_min, x_max X_sub_2d[:, 0].min() - 1, X_sub_2d[:, 0].max() 1 y_min, y_max X_sub_2d[:, 1].min() - 1, X_sub_2d[:, 1].max() 1 xx, yy np.meshgrid(np.linspace(x_min, x_max, 500), np.linspace(y_min, y_max, 500)) Z clf2d.predict(np.c_[xx.ravel(), yy.ravel()]) Z Z.reshape(xx.shape) plt.figure(figsize(10, 8)) plt.contourf(xx, yy, Z, alpha0.3, cmaptab20) plt.scatter(X_sub_2d[:, 0], X_sub_2d[:, 1], cy_sub, cmaptab20, edgecolork, s30) plt.xlabel(PC1) plt.ylabel(PC2) plt.title(2D PCA RBF SVM decision boundary (first 8 classes)) plt.show()看这个图时重点是确认同一类样本在投影空间里是不是大致聚在一起不同类之间有没有大面积的交叉。如果连前8类都分不开说明数据预处理或者PCA参数有问题。但请注意我并不是说“把全部40类降到2维来训练”那个做法会严重损失信息。真实分类模型仍然应该用保留95%方差的PCA特征。5.3 把预测错误的样本直接打出来看准确率只是数字错误样本才是改进模型的线索。测试集里找出预测错的图片打印真实标签和预测标签incorrect_idx np.where(y_pred ! y_test)[0] print(错误样本数量:, len(incorrect_idx)) fig, axes plt.subplots(2, 5, figsize(12, 5)) for i, ax in enumerate(axes.flat): if i len(incorrect_idx): break idx incorrect_idx[i] ax.imshow(X_test[idx].reshape(64, 64), cmapgray) ax.set_title(ftrue{y_test[idx]}, pred{y_pred[idx]}) ax.axis(off) plt.show()看错误样本的时候我会问自己三个问题是不是光照差异太大是不是表情变化导致五官比例改变是不是这两类人本身长相就很接近如果你的错误集中在某几类建议把这几个人的训练样本也打印出来和错误样本放在一起对比。很多时候你会发现问题出在训练数据质量上而不是SVM参数上。比如某几类照片存在遮挡、模糊、重复或者拍摄角度跨度特别大。数据的问题靠调参是救不回来的。6. 踩过的人脸识别坑与后续扩展6.1 一次“测试集准确率只有25%”的完整排查过程有次A同学跑同一套流程代码看起来没问题但测试集准确率只有25%左右。我当时带着他按这条链路排查第一步先检查标签和数据是否对齐。我们随机打印了10张图和标签人眼确认没问题。这一步排除了“目录名排序导致标签错位”的常见坑。第二步检查数据泄漏。我看他的代码发现他先把整个X做了标准化然后再train_test_split。严格来说这也有问题但不至于让准确率掉到25%多半是虚高才对。第三步检查PCA和SVM参数。这是关键他在PCA那里写了n_components2理由是“为了后面可视化方便”然后直接用这两个主成分去训练RBF-SVMgamma还设成了0.1。结果可想而知2维投影保留的信息太少RBF在训练集上勉强记住遇到测试集几乎全部判断成少数几类准确率自然崩掉。这个坑特别典型把“可视化降维”和“分类降维”混淆了。可视化为了画二维散点图可以把PCA压到2维但分类任务的PCA应该按方差保留比例来选择维数通常是一百多维。我改回PCA(n_components0.95)再用线性SVM准确率马上恢复到95%以上。所以如果你复现时遇到了离奇的低准确率先问自己是不是在某个环节为了“好看”压缩掉了太多信息6.2 按图片划分还是按人划分评估指标虚高的根源这是一个比调参重要得多的问题但很多教程都不提。刚才说过按图片随机划分会让同一个人的相似照片同时进入训练集和测试集。在Face40这种小样本库上由于每人10张照片本身是从同一个人的视频帧中截出来的相似度极高模型很容易记住特定照片测试准确率会虚高到不真实。我做过的另一个对比实验非常能说明问题按图片划分线性SVM测试准确率97%改成按人划分同一个模型跌到88%左右。这个下跌不是模型变差了而是评估变严格了——测试集里的人从未在训练集出现过模型必须真正学会“人脸身份”而不是“记忆照片”。严格的人脸识别评估代码逻辑应该是这样person_ids np.array([i // 10 for i in range(len(y))]) # 假设每人10张 unique_ids np.unique(person_ids) train_ids np.random.choice(unique_ids, sizeint(len(unique_ids) * 0.7), replaceFalse) train_mask np.isin(person_ids, train_ids) test_mask ~train_mask X_train_people X[train_mask] X_test_people X[test_mask] y_train_people y[train_mask] y_test_people y[test_mask]如果要做开集人脸识别项目甚至还要注意同一个人的照片可能来自不同时间、不同设备必须保证训练和测试的时间跨度不重叠。这里不展开但你要记住一个原则评估协议比模型重要。协议错了所有指标都是自欺欺人。6.3 从模拟数据到真实项目的适用边界Face40把PCA和SVM讲清楚了但真实人脸识别场景和这个案例差别很大。真实场景通常没有整齐的文件夹你需要先做人脸检测、人脸对齐、裁剪归一化照片可能来自不同光照、不同角度、不同年龄阶段类别可能是开放集测试时会出现训练时没见过的陌生人。PCASVM这类经典方法在以下场景里依然好用小规模封闭集分类比如实验室门禁、小型考勤系统、论文复现作为baseline用来衡量更复杂模型是否真的有效特征维度特别高但样本量有限的场景。如果数据量涨到几万甚至几十万或者需要开放集识别就该考虑预训练的卷积特征提取器来生成embedding再用距离度量或轻量分类器SVM更多是作为辅助判断。最后分享一个我个人的使用习惯拿到任何图像分类数据第一步不是直接上深度学习而是先跑PCASVM把数据质量、标签问题、评估协议全部摸清楚。这个baseline虽然简单但能暴露大量工程问题。等它稳定了再换复杂模型也不迟。人脸识别这个案例尤其适合体会这条思路——模型越简单你越容易看见数据本身的真相。
RELATED

相关推荐

EDI文件发送成功监控:邮件通知方案完整落地指南

EDI文件发送成功监控:邮件通知方案完整落地指南

EDI系统上线后最容易被忽略的一件事:文件到底发出去没有。客户那边没收到订单,或者发票少了附件,业务同事来问,你翻半天日志才发现文件卡在传输队列里已经三天了。这种事发生一次是意外,发生三次就是流程缺陷。做监控不…

📅 2026/10/24 6:05:59
大模型如何决定“读不读”?从注意力机制到长上下文应用实践

大模型如何决定“读不读”?从注意力机制到长上下文应用实践

模型在长上下文里是不是真的把每个字都“读”进去了?这个问题我琢磨了很久。正好NIPS 2025上有篇标题很直接的研究,题目叫“Language Models (Mostly) Know When to Stop Reading”,大意是“大语言模型大多数时候知道自己该停在哪”。这篇博文…

📅 2026/10/24 6:00:58
DirectShow 虚拟摄像头:.ax 源滤镜与 FillBuffer 实现

DirectShow 虚拟摄像头:.ax 源滤镜与 FillBuffer 实现

简介:DirectShow 实现的 VCAM 虚拟摄像头工程项目,面向 Windows 多媒体开发者,适合需要在不依赖物理摄像头的情况下提供连续视频流的测试、演示与软件集成场景,也可作为学习 DirectShow 滤镜体系的实战样本。压缩包共 154 个文件&…

📅 2026/10/24 6:00:58
MORE NEWS

更多资讯

📰

Linux 高性能网络:NtyCo 协程实现百万 TCP 并发连接

NtyCo 这样的协程库,究竟能不能在客户端和服务端之间维持百万级 TCP 连接?协程在高并发服务端中能带来什么好处?Linux 内核需要怎样调优?出现 OOM 时,又应该从哪里定位和优化? 本文以一次 NtyCo 百万连接实…

📰

12. Agent 记忆压缩通常有哪些方法?

12. Agent 记忆压缩通常有哪些方法?

📰

3天从85%降到20%!这3个降AI率工具让我查重秒变原创

为什么你的论文总被判定AIGC超标? 很多同学以为用自己的话复述AI生成的内容就万事大吉,但现在的检测系统远比我们想象的聪明。通过这次经历,我总结出三个最常见的原因:首先是文本模式化,AI生成的段落往往具有特定的词汇…

📰

自带降重+降 AI 率功能!2026这3款降AI率工具太强了!

第一款:千笔AI(首选!自动降AI率天花板) 如果只能推荐一款,我绝对首推千笔AI,亲测是目前自动降AI率效果最好、最省心的论文工具,不管是本科生写课程论文,还是研究生写课题论文&#x…

📰

《执行控制工程》作者手记 06|把权力分成三份,为什么仍然可能只有一种权力

本文是《执行控制工程》(Execution Control Engineering)的作者手记。 它不是书籍正文的摘要或重写,而是围绕本章问题、工程背景与写作之后的进一步思考。 在设计安全系统的时候,我们似乎总是倾向于相信,参与者越多&am…

📰

大模型长文本批处理与实时会话分流调度:基于 Chunked Prefill 的防饥饿实战

在大模型(LLM)推理架构的生产化落地中,许多技术团队最开始往往采用统一的推理池来承接全公司的所有请求。然而,随着业务复杂度的提高,集群内部很快分化出两类性格迥异的极端流量负载: 实时在线交互会话&…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬