关于One-shot Learning定义、Siamese网络可行性及测试方法的问询
问题1:仅用单对样本训练的方式是否可行?模型能否学习到鲁棒的番茄特征表示?
绝对不可行。单对样本训练会导致模型严重过拟合到这两张图片的独有特征(比如某张腐烂番茄上的特定污渍、完好番茄的局部反光点),根本无法学到通用的“腐烂/完好”番茄特征。反复迭代训练只会让模型死记硬背这对样本的相似度,换任何其他番茄图片都会失效,完全达不到鲁棒特征表示的目的。
问题2:对One-shot Learning的定义理解是否正确?
你的理解存在偏差。维基百科中“基于单个或少量样本完成目标分类”的描述,核心指的是测试阶段针对新类别仅需少量样本,而非训练阶段只用这么点数据。像Siamese神经网络这类用于One-shot任务的模型,训练阶段需要大量的同类、异类样本对,来学习通用的特征相似度度量能力;最终部署时,面对从未见过的新类别,只需要提供1个或几个样本就能完成分类。那篇博客提到的“少量即可”,同样是针对新类别的样本量,训练过程仍需足够多的各类样本对来保证模型的泛化能力。
问题3:测试时固定A为完好番茄,B为待测试样本,相似度低则判定B为腐烂的方法是否正确?
这种方法存在很大局限性。仅固定一张完好番茄的图片,模型学到的相似度是与这张特定图片的匹配度,而非“完好番茄”这个类别的通用特征。如果待测的完好番茄与你选定的A图存在较大差异(比如品种、光照、拍摄角度不同),模型也会输出低相似度,进而误判为腐烂。
更合理的做法是:测试阶段使用少量完好番茄样本(比如5-10张)分别与待测样本计算相似度,取平均值后结合阈值判断;或者在训练阶段就构建足够多的同类(完好-完好、腐烂-腐烂)和异类(完好-腐烂)样本对,让模型学会“同类特征相似、异类特征不相似”的判别逻辑,测试时可以用待测样本与某张类别样本配对,结合训练得到的同类/异类相似度分布阈值来判定,而非依赖单张固定图。
内容的提问来源于stack exchange,提问作者lonyen11

