ranker-Scaling Up Crowd-Sourcing to Very Large Datasets: A Case for Active Learning

本文介绍了如何通过UncertaintyAlgorithm和MinExpErrorAlgorithm两种不确定性方法,实现主动学习(Active Learning)来提高大规模数据集中未标注数据的利用效率。这两种方法分别从数据的不确定性及其对模型改进的影响程度出发,挑选最有价值的数据进行人工标注。

论文Scaling Up Crowd-Sourcing to Very Large Datasets A Case for Active Learning提出两种AL算法。

  首先找到分类器θ对未标注数据的不确定程度。然后让crowd对这些数据进行标定。下边介绍两种不确定性方法。
下边的u是未标记数据,但是是指未标注数据的每一个,而不是整体。

一:Uncertainty Algorithm

这里写图片描述
这里写图片描述
第二项计算公式:
这里写图片描述
这里写图片描述
这里写图片描述

二:MinExpError Algorithm

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
  所以说MinExpError scores算法结合了,question的难度(不确定性)和这个回答能够提高我们分类器的结果的程度(影响较大的数据)。

三:附加小知识

这里写图片描述

### 部署 bge-reranker-large 模型 为了成功部署 `bge-reranker-large` 模型,需关注几个核心方面来确保模型能够高效运行并满足预期效果。 #### 1. 环境搭建 首先,创建适合的开发环境对于顺利部署至关重要。推荐使用 Python 虚拟环境管理工具如 `conda` 或者 `venv` 来隔离项目依赖项。安装必要的库文件,特别是 PyTorch 和 Transformers 库,因为这些是加载预训练模型的基础组件[^2]。 ```bash conda create --name myenv python=3.8 conda activate myenv pip install torch transformers ``` #### 2. 加载模型 接着,通过 Hugging Face 提供的 API 接口下载并实例化 `bge-reranker-large` 模型。这一步骤涉及到指定正确的模型名称以及设置设备(CPU/GPU),以便后续可以快速响应查询请求[^3]。 ```python from transformers import AutoModelForSequenceClassification, AutoTokenizer model_name = "BAAI/bge-reranker-large" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForSequenceClassification.from_pretrained(model_name).to('cuda' if torch.cuda.is_available() else 'cpu') ``` #### 3. 数据处理管道构建 针对输入文本或文档集合建立有效的预处理流程非常重要。此过程通常包括分词、编码转换等操作,目的是让原始数据适应于模型的要求格式。此外,考虑到该模型主要用于跨语言场景下的重排序任务,因此还需要特别注意不同语种之间的差异性处理。 ```python def preprocess(texts): inputs = tokenizer( texts, padding=True, truncation=True, max_length=512, return_tensors="pt" ).to('cuda' if torch.cuda.is_available() else 'cpu') with torch.no_grad(): outputs = model(**inputs) scores = outputs.logits.softmax(dim=-1)[:, 1].tolist() return list(zip(texts, scores)) ``` #### 4. 构建服务接口 最后,基于上述准备工作,可以通过 Flask/Django RESTful Web Service 或 FastAPI 等框架封装成易于调用的服务端点。这样不仅方便前端应用集成,也便于后期维护升级工作。 ```python import uvicorn from fastapi import FastAPI app = FastAPI() @app.post("/rerank/") async def rerank_texts(request: dict): texts = request.get("texts", []) ranked_results = preprocess(texts) return {"results": sorted(ranked_results, key=lambda x: x[1], reverse=True)} if __name__ == "__main__": uvicorn.run(app, host="0.0.0.0", port=8000) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值