4、远程监督假设:经典假设、假设的局限性、噪声问题分析、多实例学习动机
好,咱们今天来聊聊远程监督的根基——那个让无数人又爱又恨的假设。
说实话,我刚接触远程监督那会儿,第一反应是:这也太粗暴了吧?但后来在项目中用起来,发现它虽然糙,但真管用。嗯,咱们今天就把它掰开揉碎了讲清楚。
4.1 经典假设:一句话概括
远程监督的经典假设,说白了就一句话:
如果两个实体在知识库中存在某种关系,那么所有包含这两个实体的句子,都表达了这种关系。
举个例子。知识库里写着「乔布斯创立了苹果公司」。那么,任何同时出现「乔布斯」和「苹果公司」的句子,都会被自动打上「创始人」的标签。哪怕句子是「乔布斯在苹果公司吃午饭」,也会被当成正样本。
这个假设的优点是显而易见的:
- 自动生成数据:不需要人工标注,省时省力
- 规模大:知识库有多大,数据就能有多大
- 简单粗暴:实现起来就几行代码的事
我在项目中第一次用这个假设时,一天就生成了上百万条训练数据。当时心里那个美啊,觉得关系抽取也不过如此嘛。结果训练出来的模型,准确率惨不忍睹……
4.2 假设的局限性:理想很丰满,现实很骨感
为什么会这样?因为经典假设有个致命伤——它太理想化了。
你想想看,现实中的语言表达千变万化。同一个实体对,在不同句子里表达的关系可能完全不同。我给大家列几个典型问题:
| 问题类型 | 例子 | 说明 |
|---|---|---|
| 关系不匹配 | 「乔布斯在苹果公司吃午饭」 | 句子表达的是「地点」关系,但被标成「创始人」 |
| 关系缺失 | 「乔布斯和沃兹尼亚克一起创办了苹果」 | 句子表达的是「联合创始人」,但知识库里没有这个关系 |
| 实体歧义 | 「苹果很好吃」 | 这里的「苹果」是水果,不是公司 |
| 关系隐含 | 「乔布斯是苹果的灵魂人物」 | 句子暗示了关系,但没有明确表达 |
我曾经在一个金融领域的项目中,用远程监督抽取「投资关系」。结果发现大量句子像「某公司投资了某项目,但后来撤资了」——这明明是「撤资」关系,却被标成了「投资」。模型学到的全是错误信号。
4.3 噪声问题分析:数据里的「脏东西」
经典假设带来的噪声,主要分三类。我习惯把它们叫做「三座大山」:
4.3.1 假正例噪声(False Positive)
这是最头疼的问题。句子明明不表达目标关系,却被强行打上标签。占比有多高?我见过一些公开数据集,假正例率高达30%-40%。
注意:假正例噪声会让模型学到错误的模式。比如模型可能学会「只要两个实体出现在同一个句子里,就是目标关系」——这完全违背了我们的初衷。
4.3.2 假负例噪声(False Negative)
这个容易被忽略。知识库不可能覆盖所有关系,很多真实的关系没有被收录。结果就是,表达真实关系的句子被当成了负样本。
举个例子。知识库里只有「创始人」关系,没有「CEO」关系。那么「蒂姆·库克是苹果的CEO」这个句子,就会被当成负样本。模型学到的就是「CEO不是目标关系」——这显然不对。
4.3.3 多义性噪声(Ambiguity)
同一个实体对,在不同语境下表达不同关系。比如「乔布斯」和「苹果」:
- 「乔布斯创立了苹果」→ 创始人
- 「乔布斯在苹果担任CEO」→ 高管
- 「乔布斯离开了苹果」→ 离职
经典假设把它们全当成「创始人」,这能不乱吗?
4.4 多实例学习动机:我们得换个思路
面对这么多噪声,该怎么办?
我当时的想法是:既然单个句子不可靠,那咱们就别只看一个句子了。把同一个实体对的所有句子打包成一个「包」,然后看这个包的整体表现。
这就是多实例学习(Multi-Instance Learning, MIL)的核心思想。
多实例学习的基本假设:一个包中至少有一个正实例,这个包就是正包;如果包中所有实例都是负的,这个包才是负包。
放到远程监督里就是:
- 对于知识库中的关系,只要这个实体对有一个句子表达了该关系,这个包就是正包
- 训练时,模型只需要判断包级别的标签,而不是句子级别的标签
这样做的好处很明显:
- 容忍噪声:包里有几个噪声句子没关系,只要有一个对的就行
- 降低标注错误:不再要求每个句子都准确
- 更符合实际:现实中,同一个实体对确实可能在不同句子中表达不同关系
我记得第一次在项目中尝试多实例学习时,效果提升非常明显。准确率从原来的60%左右,直接跳到了75%以上。虽然还是不够完美,但至少模型不再「胡言乱语」了。
下面这张图展示了从经典假设到多实例学习的演进逻辑:
我的经验:多实例学习不是万能的。如果包里的噪声句子占绝大多数(比如90%以上),效果还是会打折扣。我建议在数据预处理阶段,先做一轮简单的规则过滤,把明显不相关的句子去掉,这样多实例学习的效果会更好。
好了,关于远程监督假设的核心内容就这些。经典假设给了我们一个起点,多实例学习帮我们跨过了噪声这道坎。下一节咱们会深入讲多实例学习的具体实现方法,包括怎么选句子、怎么聚合特征等等。
嗯,今天就到这儿。有什么问题欢迎交流。
公众号:蓝海资料掘金营,微信deep3321