[paper] Zero-Shot Learning with Semantic Output Codes [NIPS 2009]

本文介绍了Zero-Shot Learning的概念,它在已知领域训练高性能分类器后,尝试解决新领域的分类问题,即使新领域样本稀少或不存在。该方法基于迁移学习,通过构建语义输出码分类器利用知识库进行类别外推。核心思想是定义一种使用Y的语义属性知识库的分类器,以抽象出新类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Zero-Shot Learning with Semantic Output Codes [NIPS 2009]


zero-shot和one-shot:

在分类场景下(或序列标注或NLU),在已知的几个topic或domain内(domain A,B,C),已经训练出了性能较好的分类器。此时想解决针对新的domain D的分类问题,然而D domain的样本非常少(one-shot),或者没有(zero-shot)。此时如何根据ABC类别的样本,或MACHINE,生成D domain的machine,就是zero-shot model要解决的问题。

其实是transfer-learning的一种。

tansfer-learning核心思想:source-domain->pivot->general Feature Space->target-domain

典型应用场景:如图像检测,y的value太多,很难见到全部y和全部x。

成功案例:如语音识别,能识别OOV的词


核心问题:

omitted from the training set


核心思想:

define the notion of a semantic output code classifier (SOC) which utilizes a knowledge base of semantic properties of Y to extrapolate to n

### Few-Shot 学习与 Zero-Shot 学习的概念 #### Few-Shot 学习 Few-shot 学习是指机器学习模型能够在仅有少数几个样例的情况下完成新任务的能力。这种技术特别适用于数据稀缺的情况,在实际应用中非常有价值,因为获取大量标注数据往往成本高昂且耗时。 对于 few-shot learning 来说,算法通常会利用预先积累的知识来帮助理解和泛化到新的类别上。例如,如果一个图像分类器已经被训练用来区分猫、狗和其他常见宠物,则当面对从未见过的新物种如狐狸时,只需提供少量带有标签的例子就能快速调整并学会识别这一新类别[^1]。 ```python def train_few_shot_model(model, support_set, query_set): """ 训练少样本学习模型 :param model: 预先训练的基础模型 :param support_set: 支持集,含少量标记样本 :param query_set: 查询集,用于评估性能的数据集合 """ # 更新模型参数以适应新类别的特点 updated_parameters = fine_tune_on_support_set(support_set) predictions = [] for sample in query_set: prediction = predict_with_updated_params(sample, updated_parameters) predictions.append(prediction) return predictions ``` #### Zero-Shot 学习 Zero-shot 学习则更进一步,它允许模型在完全没有看到过目标类别的任何实例的前提下做出预测。这听起来似乎不可能实现,但实际上通过引入额外的信息源——比如属性描述或语义表示——使得这样的推断成为可能。具体而言,zero-shot 方法依赖于跨模态映射机制,即将不同类型的特征空间关联起来,从而即使是在缺乏直接观察的情况下也能建立起合理的判断依据[^2]。 考虑这样一个场景:给定一组已知动物种类及其视觉外观特征(如颜色、形状),以及文字形式的其他未知生物特性说明;借助这些辅助资料,系统应当有能力推测出未曾接触过的实体是什么样子,并据此作出相应决策。 ```python from sklearn.metrics.pairwise import cosine_similarity def zero_shot_predict(known_features, unknown_descriptions, new_instance_description): """ 使用零样本学习进行预测 :param known_features: 已知类别的特征向量矩阵 :param unknown_descriptions: 未见类别对应的自然语言描述列表 :param new_instance_description: 新实例的文字描述字符串 """ similarities = [] for desc in unknown_descriptions: sim_score = calculate_semantic_similarity(new_instance_description, desc) similarities.append(sim_score) best_match_index = np.argmax(similarities) predicted_class_vector = get_corresponding_feature_vector(best_match_index, known_features) return predicted_class_vector ``` 两种方法的主要差异在于它们对待新颖事物的方式: - **样本需求**:few- **信息来源**:前者主要依靠有限数量的实际观测来进行归纳推理,后者更多地依赖间接知识(如文本描述或其他形式的相关线索)来填补空白。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值