自监督学习实体定位文献阅读及代码环境配置

1、自监督学习

参考文章:自监督学习
可以被看作是机器学习的一种“理想状态”,模型直接从无标签数据中自行学习,无需标注数据
(一)学习简介
(1)自监督学习的核心,在于如何自动为数据产生标签。例如输入一张图片,把图片随机旋转一个角度,然后把旋转后的图片作为输入,随机旋转的角度作为标签。再例如,把输入的图片均匀分割成3*3的格子,每个格子里面的内容作为一个patch,随机打乱patch的排列顺序,然后用打乱顺序的patch作为输入,正确的排列顺序作为label。类似这种自动产生的标注,完全无需人工参与。
(2)自监督学习如何评价性能?自监督学习性能的高低,主要通过模型学出来的feature的质量来评价。feature质量的高低,主要是通过迁移学习的方式,把feature用到其它视觉任务中(分类、分割、物体检测…),然后通过视觉任务的结果的好坏来评价。目前没有统一的、标准的评价方式。
(3)自监督学习的一个研究套路。前面说到,自监督学习的核心是如何给输入数据自动生成标签。之前的很多工作都是围绕这个核心展开的。一般的套路是:首先提出一个新的自动打标签的辅助任务(pretext task,例如:旋转图片、打乱patch顺序),用辅助任务自动生成标签,然后做实验、测性能、发文章。每年都有新的辅助任务被提出来,自监督学习的性能也在不断提高,有的甚至已经接近监督学习的性能。总体上说,或者是提出一种完全新的辅助任务,或者是把多个旧的辅助任务组合到一起作为一个“新”的辅助任务。
从扩展性的角度看自监督学习的发展
(二)

  • 从扩展性(scalability)的角度看,需要搞清楚自监督学习和以下三方面的关系:
    (1)扩展数据集。主要研究的问题是:训练自监督学习模型的数据集的大小,跟性能是否有某种关系?能否通过增大数据集来提升性能?
    (2)扩展模型复杂度。自监督学习,本质上是要训练出来一个feature提取器(一个CNN网络)。这个CNN网络的复杂度,跟性能是否有某种关系?能否通过增大网络复杂度来提升性能?(比如ResNet50比AlexNet复杂,用ResNet50,效果比AlexNet好吗?)
    (3)扩展辅助任务的难度。自监督学习的核心,是用一个辅助任务(pretext task)来自动为数据生成标签。这个辅助任务的难度,跟性能是否有某种关系?能否通过增大辅助任务的难度来提升性能?(比如拼图这个辅助任务,把图片分割成2x2个patch,还是4x4个patch?4x4个patch的难度更大)

2、表示学习

参考文章:
表示学习(Representation Learning)

  • 机器学习:方法的性能很大程度上取决于数据表达(或者特征)的选择。也正是因为这个原因,为了使得机器学习算法有效,特征工程的工作非常重要,但它费时费力,属于劳动密集型产业。
    请添加图片描述
  • 表示学习:采用模型自动学习数据的隐式特征,数据表示与后续任务往往是联合训练,不依赖专家经验,但需要较大的训练数据集。在机器学习时代,我们如果需要对汽车进行表示,往往依靠的是领域专家手工提取特征并表示;在深度学习时代,我们直接将汽车输入模型,汽车将自动转换成高效有意义的表示。
    “数据决定了机器学习的上限,而算法只是尽可能逼近这个上限”,这里的数据指的就是经过特征工程得到的数据。特征工程就是一个把原始数据转变成特征的过程,这些特征可以很好的描述这些数据,并且利用它们建立的模型在未知数据上的表现性能可以达到最优(或者接近最佳性能)。从数学的角度来看,特征工程就是去设计输入变量X。
    请添加图片描述
  • 分布式表示(distributed representation): 这是深度学习最重要的性质。举一个非常简单的例子,假设我们的词典上有16个词,如果用传统的bag-of-words 的表示方法,我们可以用16维的向量来表示每个词,向量的每一位代表某个词的出现与否。然而,如果我们用分布式表示的思想,我们也可以用四维的向量来代表每一个词,例如(0,0,0,1), (0,0,1,0),…, (1,1,1,1) 。 这个简单的例子其实用来说明:对同一个输入,我们可以有不同的配置(configuration)。
  • 三种单层表示学习方法:请添加图片描述

2.1、概率图模型

概率图模型中的术语图指的是图论,也就是带有边和点的数学对象。确切地说,概率图模型(Probabilistic Graphical Models,PGM)是指:你想描述不同变量之间的关系,但是,你又对这些变量不太确定,只有一定程度的相信或者一些不确定的知识。
(1)贝叶斯概率图模型是有向图,因此可以解决有明确单向依赖的建模问题
(2)马尔可夫概率图模型是无向图,可以适用于实体之间相互依赖的建模问题。这两种模型以及两者的混合模型应用都非常广泛。条件随机场(CRF)广泛应用于自然语言处理(如词性标注,命名实体识别)。

2.1.1、有向图模型

请添加图片描述
请添加图片描述
请添加图片描述
在马尔科夫链中,每一个圆圈代表相应时刻的状态,有向边代表了可能的状态转移,权值表示状态转移概率。 HMM,隐马尔可夫模型,是一种有向图模型。由1阶马尔可夫模型演变而来,不同之处在于我们能够观测到的量不是过程本身,而是与其有一定关系的另一些量。那HMM中的隐体现在哪呢?这里“隐”指的是马尔科夫链中任意时刻的状态变量不可见,也就是说状态序列Y1,Y2,…,…,Yt无法直接观测到。但是HMM中每时刻有一个可见的观测值Xt与之对应.隐马尔可夫模型(HMM)是语音识别的支柱模型.

2.1.2 无向图模型

参考文章:
受限玻尔兹曼机RBM最通俗易懂的教程
请添加图片描述
玻尔兹曼机是一大类的神经网络模型,但是在实际应用中使用最多的则是受限玻尔兹曼机(RBM)。受限玻尔兹曼机(RBM)能学习并发现数据的复杂规则分布,将多个RBM堆叠就构成了深度置信网络(deep belief network, DBN),从而可以从更加复杂的高维输入数据中抽取维数更低、区别度较高的特征。
请添加图片描述
请添加图片描述

2.2、直接编码

2.2.1、自编码器

参考文章:
自动编码器
请添加图片描述
自动编码器就是一种尽可能复现输入信号的神经网络,一个自编码器模型,它由编码器(Encoder)和解码器(Decoder)两部分组成,本质上都是对输入信号做某种变换
可以这么想,在我们强迫编码y和输入x
不同的情况下,系统还能够去复原原始信号x,那么说明编码y已经承载了原始数据的所有信息,但以一种不同的形式 !这就是特征提取,而且是自动学出来的!
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

2.2.2、主成分分析法

目的:为了聚类的降维
可以看下面这个讲解视频:
【【中字】主成分分析法(PCA)| 分步步骤解析 看完你就懂了!-哔哩哔哩】
如何通俗易懂地讲解什么是 PCA(主成分分析)?
第一步:中心化
请添加图片描述
第二步:为了让 X 1 2 + X 2 2 {X_1}^2+{X_2}^2 X12+X22最大请添加图片描述

请添加图片描述
第三步:实际求主元
请添加图片描述

请添加图片描述

2.3、流行学习

请添加图片描述
请添加图片描述

3、《SelfKG: Self-Supervised Entity Alignment in Knowledge Graphs》

3.1、环境配置:

1、配置镜像源,镜像源下载贼快:
Conda - Downloaded bytes did not match Content-Length 问题解决方案
conda创建环境速度慢解决办法
Anaconda 查看、添加、删除 安装源
2、用了镜像源还慢的问题:
亲测绝对有效——解决pytorch安装下载慢(清华源+缓存到本地)
3、服务器里好几个用户,配置好几个anaconda,想用指定anaconda,可以更改config设置:
Anaconda 修改默认虚拟环境安装位置
4、项目环境:

#!bin/bash

echo "Please make sure that you have installed Anaconda"

echo "create conda environment 'selfkg'"
conda create -n selfkg_l python=3.8.13

echo "activate selfkg"
conda activate selfkg_l 

echo "install pytorch"
conda install pytorch=1.9.0 torchvision torchaudio cudatoolkit=11.1 -c pytorch # change according to your need here

echo "install faiss-cpu=1.7.1"
conda install -n selfkg faiss-cpu=1.7.1 -c pytorch

echo "install numpy=1.19.2 pandas=1.0.5 tqdm=4.61.1 transformers=4.8.2"
pip install numpy==1.19.2 pandas==1.0.5 tqdm==4.61.1 transformers==4.8.2 torchtext==0.10.0

3.2、文章创新

对于来自两个kg的每个配对实体,现有学习目标的目标是,如果它们实际上是相同的实体(即正对),则使它们彼此更相似,否则,如果它们是不同的实体(即负对),则使它们不相似。在嵌入空间中,这一目标是通过拉近对齐的实体和推开不同的实体来实现的。

正对是配对好的实体
负对是由从另一个KG中随机抽样的实体形成的(排除了正对实体)。

为了解决有标签感知负抽样的监管和没有标签感知负抽样的假阴性样本冲突的困境
(1)相对相似度度量:为了摆脱标签监督,我们从理论上提出了相对相似度度量(RSM)的概念,实现了自我监督的学习目标。RSM的核心思想是,它不是直接将对齐的实体在嵌入空间中拉得更近,而是试图将未对齐的负推得更远,从而避免使用正对的监督
(2)自负采样:为了解决有标签感知负抽样的监管和没有标签感知负抽样的假阴性样本冲突的困境,SelfKG进一步提出了自负抽样策略,即对一个KG中的每个实体,直接从同一KG中抽样实体形成其负对。换句话说,SelfKG完全依赖于从输入kg中随机抽样的负实体对。
(3)多重负队列:随着负样本数量的增加,自监督损失误差项衰减得更快,也就是说,大量的负样本可以使SelfKG受益,在飞行中编码大量的负样本在计算上非常昂贵。我们通过扩展MoCo(Momentum Contrast 无监督学习)技术来解决这个问题,以支持两个负队列,每一个对应于两个KGs用于对齐,确保负样本的有效增加。(没看懂?)请添加图片描述

3.2.1、NCE损失:噪声对比估计损失

参考文章:
通俗易懂的NCE Loss
把多分类问题转化成二分类。之前计算softmax的时候class数量太大,NCE索性就把分类缩减为二分类问题。之前的问题是计算某个类的归一化概率是多少,二分类的问题是input和label正确匹配的概率是多少。

  • 问题背景:
    通常训练例如word2vec的时候,我们最后用full softmax预测出下一个词,真实的值通常是一小部分context words,也就是一小部分target classes,在非常大的语料库中(通常维度为百万),softmax需要对每一个class预测出probability,那么类别总数非常大的时候,这个计算量就非常大。
    请添加图片描述
    请添加图片描述
    training的时候我们使用nce loss,可以减少计算量,但testing的时候,我们通常使用sigmoid cross entropy,因为我们还是要衡量所有可能class的probability,在所有可能结果中做选择。
    请添加图片描述
    kg中的实体存在潜在的歧义和异构性,对齐的对应该共享相似的语义,即使不是完全相同的名称。此外,已知预先训练的单词嵌入通过在嵌入层空间中投影相近的实体来捕获这种语义相似性,因此可以确保公式1中相对较大的 𝑓 ( 𝑥 ) 𝑇 𝑓 ( 𝑦 ) 𝑓(𝑥)^𝑇𝑓(𝑦) f(x)Tf(y),即“对齐”项。因此,要优化NCE损失,主要任务是优化公式1中的“uniformity”项,而不是“alignment”项。

3.2.2、负采样

可以自负采样,但是自然界中也存在一定的噪声,证明了一定量的噪声不会影响NCE损耗的收敛

3.2.3、多重负队列

请添加图片描述
batch_size:N
训练到:K+1次截止
负例数量:|E|

3.2.3.1、两个编码器——在线编码器和目标编码器

请添加图片描述
在线编码器的参数 θ o n l i n e \theta_{online} θonline随着反向传播而立即更新时,通过: θ t a r g e t ← 𝑚 ⋅ θ t a r g e t + ( 1 − 𝑚 ) ⋅ θ o n l i n e , 𝑚 ∈ [ 0 , 1 ) \theta_{target}←𝑚·\theta_{target}+(1−𝑚)·\theta_{online},𝑚∈[0,1) θtargetmθtarget+(1m)θonlinem[0,1)用动量异步更新目标编码器 θ t a r g e t \theta_{target} θtarget当前批次,然后推入负队列。

首先,在线编码器与BYOL中相同,引入了一个预测头(将原先的对比任务转化为了分类任务;同时,这步操作也让两个编码器不对称)。对于线上编码器,他是通过梯度回传来更新参数的,也就是说每次迭代之后参数都会有较显著的变化(与目标编码器对比)。在目标编码器上,采用的是动量更新参数的策略,也就是说他会使用在线编码器的梯度作为其更新的参数,但是其会大部分保留其原来的参数(动量大小一般设置为0.99)。

3.2.3.2、动量更新
  • 参考文献:
    机器学习 | 优化——动量优化法(更新方向优化)
  • 动量更新
    在 小批量梯度下降 中,如果每次选取样本数量比较小,损失会呈现震荡的方式下降。
    (本文的)动量是模拟物理中的概念。一般而言,一个物体的动量指的是这个物体在它运动方向上保持运动的趋势,是物体的质量和速度的乘积。
    当我们将一个小球从山上滚下来,没有阻力时,它的动量会越来越大(速度越来越快),但是如果遇到了阻力,速度就会变小。动量优化法 就是借鉴此思想,使得梯度方向在不变的维度上,参数更新变快,梯度有所改变时,更新参数变慢,这样就能够加快收敛并且减少动荡

动量优化法是用之前 积累动量 来替代真正的梯度,每次迭代的梯度可以看作是 加速度,包括 Momentum 和 Nesterov 两种算法。
请添加图片描述
请添加图片描述
请添加图片描述

3.3 效果

SelfKG优于除有监督CEAFF和BERT-INT外的所有有监督和无监督模型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一拳Marx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值