Strategies for Pre-training Graph Neural Networks
Strategies for Pre-training Graph Neural Networks目前深度学习各个领域的预训练都搞的热火朝天,GNN也是肯定要搞的。那么预训练之后下一个热潮会是什么呢?
ICLR2020 首次系统的探索了大规模GNN预训练
提出了一种结合节点级和图级表示的预训练方法来训练模型。
在节点级,使用了两种自监督方法,即上下文预测和属性预测。
在图形级,使用有监督的图级属性预测和结构相似性预测
同时作者建立了两个新的预训练数据集,2M graph的化学数据集和一个有395K graph的生物数据集。
接下来介绍作者这么做的理由
发现因为对于特定任务的有标签数据是很稀少的,但无标签数据却有很多,所以为了充分利用无标签数据,各种自监督方法开始兴起。
所以作者分别在图级和节点级层面上提出了两大类预测方法
属性预测:属性mask(节点)、有监督的属性预测(图级)
结构预测:上下文预测(节点)、结构相似性预测(图级)
以往的一些研究表明(Xu et al., 2017; Ching et al., 2018; Wang et al., 2019),一个成功的迁移学习不 ...
Meta Learning(李宏毅)
Meta Learning李宏毅:https://www.bilibili.com/video/BV15b411g7Wd?p=57&spm_id_from=pageDriver
一个不错的科普:https://www.bilibili.com/video/BV1KB4y1c7gg?from=search&seid=2922012165894972973
什么是元学习Meta Learning = Learn to Learn (学习如何去做学习这件事)
机器在学习了很多task后,在获得过去的任务下所汲取的经验后,学习到了更多的学习技巧,成为了一个更厉害的学习者。
从而有一个新任务,他可以学的更快更好。
比如:task1你教机器去学语音识别,task2你教他去做图片识别,那么task3你让他去学习文字识别,那么他可能学的会更好。
元学习的输入是训练数据,输出的是可以用于下一个任务的function,function也就是万能函数模拟器神经网络的模型参数
\begin{equation}\begin{split}
f^* = F(D_{train})
\en ...
Learning to Pre-train Graph Neural Networks
Learning to Pre-train Graph Neural Networks动机与挑战图神经网络也是有预训练模型的,预训练之所以可以提升,可以解释为获取了有用的先验知识,并迁移到任务中。
常规的GNN预训练步骤和其他网络一样分为两个步骤:
在大量未标记的图数据上预先训练GNN模型,其导出编码固有图属性的通用可转移知识
在特定于任务的图形数据上对预先训练的GNN模型进行微调,以使通用知识适用于下游任务。
但之前有人已经研究过直接进行fine-tuning效果不提反降,产生负迁移效果。应该是出自(Strategies for Pre-training Graph Neural Networks 如何解决的以后看了这篇论文再说)
而这篇文章的主要想解决的是由于预训练和fine-tuning优化目标的不同,两者之间存在明显差距,损害了模型的泛化效果。
引出了第一个挑战:如何缩小不同优化目标带来的差距? —->>元学习思想
那GNN的预训练模型的特点是不仅要考虑局部的节点级先验知识还要获取图级别的全局先验知识 (现有方法要么只考虑节点级的预训练,或者仍然需要用有监督的 ...
海华阅读理解比赛复盘
海华阅读理解比赛复盘比赛详情、EMA、Baseline,本文主要记录提分点和模型改进的验证
参考上文 海华中文阅读理解比赛梳理/多卡并行/transformers
github
数据增强数据增强的办法很多参考 https://zhuanlan.zhihu.com/p/145521255
我只采用了句子乱序和数据回译,都是将增强数据和原始数据挨着放到数据集中,在训练的时候停用shuffle。(可能有其他方法:每条数据根据概率来选择性增强),我这种可能会让数据集臃肿,质量下降。
句子乱序没有提分,也没有降很多。
原因参考:从知觉谈中文乱序不影响阅读的原因
代码:https://github.com/Coding-Zuo/MRC_multiChoice/blob/main/train/data_process.py 中的data_enhancement_sentence_order
数据回译和句子乱序一样和回译到的数据和原始数据挨着放到数据集,没有提分,可能是回译到的数据质量不好。
使用的是百度API,百度限制一个账户免费200万字符,如果超了就多注册几个账户薅羊毛。
代码:https:// ...
阅读理解文献梳理
阅读理解文献梳理多跳QA模型在任务中学习的多跳推理行为。QFE (Nishida et al., 2019) regards evidence extraction as a query-focused summarization task, and reformulates the query in each hop. 将证据提取作为以查询为中心的摘要任务,并在每一跳中重构查询。—— HGN
Kosuke Nishida, Kyosuke Nishida, Masaaki Nagata, Atsushi Otsuka, Itsumi Saito, Hisako Asano, and Junji Tomita. 2019. Answering while summarizing: Multi-task learning for multi-hop qa with evidence extraction. In ACL.
DecompRC (Min et al., 2019b) decomposes a compositional question into simpler s ...
Hierarchical Graph Network for Multi-hop Question Answering
Hierarchical Graph Network for Multi-hop Question Answeringhttps://arxiv.org/pdf/1911.03631.pdf
这篇文章也是HotpotQA数据集上的关于解决多跳问答场景的,在干扰项排行榜和全维基排行榜都曾是前列。
多跳QA和HotpotQA数据集 : HotpotQA数据集:A Dataset for Diverse, Explainable Multi-hop Question Answering
其特点是
通过在问题、段落、句子、实体等不同粒度上构建层次图(HGN)
通过HGN这种节点粒度层次可以区分,进一步进行多任务推理:段落选择、支持句预测、实体抽取、最终答案预测
如何构图首先来介绍下作者是如何构图的。
段落由句子组成,每个句子包含多个实体。这个图自然是以层次结构编码的,它也激发了作者构建层次图的动机。
四种节点类型:
问题节点Q
实体节点E
段落节点P:对于每个段落节点,在段落中的所有句子之间添加边。
句子节点S:对于每个句子节点,提取句子中的所有实体,并在段落句子节点和这些实体节点之间 ...
二分模板
二分模板https://www.acwing.com/problem/content/791/
二分的本质不是单调性, 单调性的题目一定可以二分, 可以二分的题目不一定有单调性
二分的本质是边界二分法用于查找, 每次都选择答案所在的区间再次进行查找, 当区间长度为 1时, 就是答案
根据 check(mid)来判断 r和 l的取值范围
根据取值范围选择 mid是否有 + 1操作
mid归于左边, r = mid, mid选择 不 +1
mid归于右边, l = mid, mid选择 +1
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Arrays;public class 模板_二分 { public ...
归并排序模板
归并排序模板分治思想
确定分界点:$mid = (l+r)/2$
先递归分成左右两边
将两个有序数组合并成一个有序序列——归并
使用两个指针:这个过程时间复杂度为$O(n)$
整体时间复杂度$O(nlogn)$
因为分层用了$logn$次
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class 模板_归并排序 { public static void main(String[] args) throws IOException { BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); ...
Ubantu18.04安装NVIDIA驱动+cuda10.1+cuDNN+Tensorflow2.1.0
Ubantu18-04安装NVIDIA驱动-cuda10-1-cuDNN-Tensorflow2-1-0注意:TensorFlow2.1 要求 你的GPU算力要达到3.5,检查自己GPU算力
安装和卸载NVIDIA驱动首先要确保驱动已经卸载干净
12sudo apt-get purge nvidia*sudo apt-get autoremove
检查自己GPU版本,之后到官网去下载,这种办法安装比较稳妥,其他网络安装办法有时候出错不知道咋回事。
1lshw -numeric -C display
下载驱动网址:https://www.nvidia.cn/Download/index.aspx?lang=cn
禁用Nouveau
1234567891011121314Nouveau驱动禁用方法:sudo gedit /etc/modprobe.d/blacklist.conf或者sudo vim /etc/modprobe.d/blacklist.conf 在最后两行添加: blacklist nouveauoptions ...