leetcode
题目:24. 两两交换链表中的节点
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def swapPairs(self, head: ListNode) -> ListNode:
pre, pre.next= self, head
while pre.next and pre.next.next:
cur = pre.next
fol = cur.next
cur.next, fol.next, pre.next = fol.next, cur, cur.next
pre = cur
return self.next
文献
Article:Zhai X, Oliver A, Kolesnikov A, et al. S4l: Self-supervised semi-supervised learning 2019.
Data:
通过自监督得到特征表示,然后进行半监督学习
背景:获得大量标记数据费时费力,研究转向无标签数据,其中自监督图像表示学习取得良好结果,然而光靠自监督还不够,作者结合自监督和半监督提出了S4L模型。
自监督:对无标签数据构建一个pretext任务,从而挖局数据中的监督信息,构造伪标签,训练网络,得到特征表示。
自监督一般步骤:
1、定义一个pretext task(基于生成,基于free label-based,基于上下文,基于交叉方法)
2、通过数据的某些属性为pretext task 生成伪标签
3、训练网络,作为预训练模型,通过模型训练数据集
本文采用的两种自监督技术:
1) Rotation:图片旋转0°,90°,180°,270°,预测图片旋转了多少度
2) Exmplar:对小批量中每个图片进行裁剪、随机水平镜像、颜色饱和度随机变化生成8种样例。。。
目标公式:
前一项为有标签的标准交差熵损失,后一项无标签的损失,有多重形式。
结果:ACC
与半监督方法的对比(Pseudolabels, VAT, VAT + Entropy Minimization为半监督模型):
与自监督的方法对比:
MOMA(full) 步骤:
1) 联合S4L和VAT+Entropy Minimization得到新模型
2) *采用5种裁剪和4种旋转,得到相应数据的伪标签?*然后训练整个网络
3) 用真实的标签对以上得到的网络进行微调
Article:Guo X, Zhu E, Liu X, et al. Deep embedded clustering with data augmentation 2018
Code: TensorFlow
Data:
在一般深度聚类方法上引入了数据增广(对原始数据进行旋转、裁剪、平移等操作得到新的数据)
步骤:
1) 在预训练自编码器上用随机增广后的数据进行重构损失训练,得到网络初始化参数
2)增广后的数据和原数据通过两个相同编码器得到相应的特征表示,增广后的特征计算输出P,原始数据的特征计算目标Q
3)通过最小化输出P和目标Q的距离,交替更新簇中心和网络参数
重构损失:
聚类损失:
Framework:
数据:MNIST-full、MINIST-test、USPS、Fashion
Comment:在微调和重构两个阶段都用到了增广的数据,数据增广和原始数据之间的联系是通过最小化两个分布的差异,调整网络的参数,使学到的增广特征和原始数据特征更符合聚类要求。 S4L的增广是通过增广后数据属于同一类,进行伪标签标注,调整网络。图片增广,文字增广,增广代码
Why:了解数据增广
Label:深度聚类、数据增广
Article:(UDA) Xie Q, Dai Z, Hovy E, et al. Unsupervised data augmentation for consistency training 2019.
Data:
一致性训练简单地将规范模型预测,使其不受应用于输入示例或隐藏状态的小噪音的影响,常见加噪有增加额外的高斯噪声,丢弃噪声、对抗噪声,大多有监督应用数据增广,由于有标签数据较小,其效果类似’蛋糕上得樱桃‘,半监督有大量无标签数据,作者发现数据增广方法在半监督也表现良好,主要关注什么形式的噪声会影响一致性训练结构的性能。
数据增广的有点:1)有效噪声,数据增广后的标签和原始数据的标签一样,所以要求原始数据和增广后的数据的预测结果一致性是合理的。2)噪声多样性:可以对输入数据进行修改而不改变其标签能生成多个不同样例 3)Targeted inductive biases:数据增广本质上为有监督训练提供inductive biases work well
图像分类使用的是RandAugment
文本分类使用的是Back-translation,即样本从语言A翻译成语言B,再翻回语言A,得到的句子更具多样性且有相同语义
比较了文本和图像再有监督和半监督模型下,不同数据增广的错误率
目标函数:
前一项是有监督的交叉熵损失,后一项是无监督一致性训练损失,原始数据增强后和原始数据分别通过两个相同模型M,预测的结果间的交叉熵损失,λ为平衡系数,实验设置为1
Framework:
结果:错误率
Comments:无标签数据增广后的预测结果和原始数据预测结果有相同的标签,调整网络参数。UDA相同的标签的一致性,DEC-DA相同的簇类概率一致性,S4L自监督处用不同的数据增广,对模型进行预训练,再进行半监督。
Label:一致性训练、数据增广、半监督
Article:Laine S, Aila T. Temporal ensembling for semi-supervised learning 2016.
Data:
输入数据通过随机数据增广和dropout增加噪声,两次加噪通过网络得到的预测向量间的均方差损失和有标签数据与第一得到的预测向量的标准交叉熵损失组成目标损失函数
目标损失函数:
Framework:
数据:CIFAR-10、SVHN
Comment:不同数据增广预测向量的一致性
Label:一致性训练、数据增广、半监督