之前看的GCN部分还有不懂的,没有看完。
这段时间在网上看了meta-learning MAML的算法用途和流程方面的视频讲解
Meta learning =Learn to Learn,下面这张截图能很好的表示meta learning的作用
按照上面这个图来说,就是通过学习100个task之后,他的学习能力变强了,比如说可能出现,学习图像分类,语音分类后,文本分类增强了,虽然前后者关系不大,但是学习到了怎么去学习
区别: life-long是根据以前学过的很多相同类别的东西,然后以后的东西学习的很好。
Meta:学习时,不同的东西仍然有不同的模型,但是可以从这些模型中学习到新的技巧,以后学习新的模型时候,可以用的更好
这是视屏中举得一个例子,常规的做法其实就是拿一大堆样本,标好标签之后就开始训练,最后test文件导入模板得出结果,而meta learning不一样的地方在于,在图中的 learning algorithm地方改成了一个Function。下面会对这个Function有更深一步的说明。
这个图片让我们能很好的理解刚刚所说的meta learning 我们可以发现,机器学习的主要目标就是根据已经有的样本去找出一个训练好的model。
Meta learning是根据样本去找一个F(),这个F能够生成这个model
平时我们做机器学习的时候都需要手动的设置一些参数 比如batch epoch 初始embedding 学习率等等,而Meta learning就需要去自动学习一个参数,最好的参数。我的理解就是说,像学习率,batch,或者求embedding时候的初始embedding ,都对最终的结果有很大的影响,这里试图寻找到一组最优的参数。
这里我们讲到了寻找一个mete learning F( ),这个函数可以找到最优的参数,name我们如何判断这个学出来的F()好不好呢?,看到如下的两个,判断猫狗和水果的算法流程,同一个F去判断他们两个task,每一个得到loss 我们相加,加起来就是一个总loss,这个就是我们衡量F怎么样的标准,也是我们后面求最优参数的关键。
这里对及其学习和meta learning的区分就更明显了,在我看来 机器学习就是训练的train 样本然后输入测试样本,而meta learing 就是输入的大量的task 每一个task里面包含的是不同种类的train和test样本。
那我们需要做的就是:
在多任务学习中,也提到过使用其他任务训练好的参数,来初始化当前的模型。那么MAML和预训练模型的参数有什么区别呢,前者是在所有任务上训练完之后得到的,后者是使用上一批数据训练出来的model,直接用在新的数据集上面。
目前meta learning我就看了MAML,很适用于初始化参数。
这儿有个疑问其实,这儿就相当于再加了一个loss function,然后又有了新的参数,新的参数,比如学习率,新的参数应该也是需要人为设定的吧, 我们求到了一个初始参数又加了一个初始参数,虽然L()是在进行梯度下降,但是真能下降到最理想的值吗?这个方法是否存在一定的不可控,我们并不知道做多少步梯度下降才合适?
视频上的解释是MAML侧重于找到一个φ,有很大的潜力可以让模型的效果得到提升,model pre-training比较注重φ当前的表现,找到一个φ在所有的任务上表现好
MAML的总流程
Meta learning有很多种,现在我只看了MAML,关于embedding生成有很多深度学习的方法,是否能够采用meta learning去学习初始embedding和其他参数,包括实体对齐也有,知识图谱对齐,社交网络对齐也采用这样的方式来做一个优化? 还没有去查目前是否有人做过这个 做得怎么样了,大概看了一个关于embedding的 <<Meta-Learning with Latent Embedding Optimization>>,因为之前MAML出现的问题是不能很好的处理高维数据,导致即使把网络的层数加大,MAML的效果也上不去,这篇文章解决了这个,目前在想关于社交网络对齐。
Meta learning有很多种,现在我只看了MAML,关于embedding生成有很多深度学习的方法,是否能够采用meta learning去学习初始embedding和其他参数,包括实体对齐也有,知识图谱对齐,社交网络对齐也采用这样的方式来做一个优化?
这东西可能还是有个方向的。上次CNCC我见到唐杰和他简单说了下这个问题。他的意见是可以多网络学embedding,然后在上面去套meta learning。因为meta learning和传统的那些方法不太一样,感觉上可以解决任意多的网络对齐的问题。不过我现在也没有仔细看这个东西。 你的关注点建议。1、多个网络怎么处理,特别是我说的可能有多网络之间没有足够的标注数据的时候怎么办。2、对于学embedding可解释可还原的问题。这两个解决好的就会非常好。另外,动态网络对齐也是一个很有意思的问题,也可以和上面两个问题结合。
报告0218
1、看论文
这篇论文选自18的 CIKM,在github上偶然看见了 这篇论文,最近在社交网络对齐上没有什么比较好的思路,就想去看一下,文字文章做得比较简单,是利用卷积神经网络加入了属性 ,整个过程感觉没有特别新奇的点。
2 看论文
这篇文章以前下载过没有看,出自2019 IEEE的,原本以为是跟meta learning有关系的,下载去就看了
看了之后发现文章也是根据属性做得,不过他把怎么用属性做说的更明白一点了,用的属性貌似有不一样的地方,比如时间,发送者,接受者等等。后面的思路就是怎么融入属性的,粗略看了一下。
看到这儿我在想是否现在融入属性成了主流做法?包括SNNA,这样与IONE这种作比较,感觉就像作弊了一样,而且现在有些算法加的属性貌似还不一样,这样的话感觉是没有一个好的Baseline作对比的。
3、接着之前看的meta-learning 进行学习(摘自博文http://www.gwylab.com/note-meta_learning.html)
之前提到了meta-learning MAML主要是用来更新init参数
我们求L()时候,L()等于所有task loss的总和,所以我们需要吧参数代入每一个task中,然后梯度下降,这样就很费时间,网上给出的答复是MAML只更新一次参数结果作为该任务下的最终参数,也就是直走一次梯度下降,能这样做会因为一次训练就能达到很好的训练效果。
MAML在这里对梯度下降的实际计算做出了简化,首先我们可以吧这个步骤进行分解,由于:
这儿就是把L(.)进行展开成每一个task的loss求和。
这个时候把梯度进行展开:
MAML整个过程:
总结:
以上很多部分是看完博文的截图 ,整个过程通俗易懂,在MAML中,我们计算初始参数时,需要将 参数代入每个task,把l每个task的loss进行求和,再做反向传播,整个过程太费时间,提出两点:
1、每个task只做一次梯度下降
2、将每一个task的loss做一个偏导的展开,我们