Leetcode
题目:1002. 查找常用字符
class Solution:
def commonChars(self, A: List[str]) -> List[str]:
# 求每个字符串之间字符数量的交集
res=[]
if not A:
return res
key=set(A[0])
for k in key:
minnum=min(a.count(k) for a in A)
res+=minnum*k
return res
- 填充每个节点的下一个右侧节点指针
"""
# Definition for a Node.
class Node:
def __init__(self, val: int = 0, left: 'Node' = None, right: 'Node' = None, next: 'Node' = None):
self.val = val
self.left = left
self.right = right
self.next = next
"""
# 左节点和右节点相连
# 左节点的右节点和右节点的左节点相连
class Solution:
def connect(self, root: 'Node') -> 'Node':
if root:
l, r = root.left, root.right
while l:
l.next, l, r = r, l.right, r.left
self.connect(root.left)
self.connect(root.right)
return root
- 有序数组的平方
class Solution:
def sortedSquares(self, A: List[int]) -> List[int]:
for i in range(len(A)):
A[i] = A[i]**2
A.sort()
return A
文献
Article:Xie J, Girshick R, Farhadi A. Unsupervised deep embedding for clustering analysis 2016
Code
Data:
结合神经网络和聚类方法建立一个端到端的深度聚类模型
步骤:
1) 通过自编码器还原数据建立重构损失初始化网路参数
2) 保留编码器部分,将样本数据喂入,得到数据的嵌入表示
3) 对嵌入表示用kmeans,得到初始化中心点
4) 通过梯度下降和反向传播最小化软分布P和其强化分Q布间的KL散度,交替更新中心点以及网络参数
5) 迭代停止条件
目标公式:
t分布计算嵌入点和中心点的相似性
辅助目标分布
Framework:
Article:Generate pairwise constraints from unlabeled data for semi-supervised clustering 2019
提出从无标签数据中生成成对约束,主要方法是自己提出的I-nice,没代码
Article:Shorten C, Khoshgoftaar T M. A survey on image data augmentation for deep learning 2019,
数据增广用于防止过拟合,增加样本,主要涵盖方式有 geometric transformations, color space augmentations, kernel flters,图片混合, 随机擦除 、feature space augmentation, adversarial training,生成对抗网络, neural style transfer, 元学习
Article:Lee H W, Kim N, Lee J H. [Deep neural network self-training based on unsupervised learning and dropout] 2017
Data:
本文解决自训练中,错误伪标签,导致错误放大
本文首先针对自训练中少量标签数据训练出的模型可信度不高,提出先用无标签数据对模型进行预训练。
其次少量数据容易带来过拟合,通过dropout来解决
最后针对错误的伪标签信息导致错误放大,提出两种解决方案1、权重重置(每次训练,权重都用预训练初始的权重) 2、有伪标签的数据仍加入伪标签重新标记
结果:
- P: Deep neural network with pre-training预训练
- S: Self-training自训练
- D: Dropout丢弃
- W: Weight reset scheme权重重置
- E: Example re-evaluation scheme样本重新标记
Article:Zou Y, Yu Z, Liu X, et al. Confidence regularized self-training 2019
Code
Data:
也是解决自训练中错误信息放大的问题
由于伪标签可能会有噪声,自训练可能会把置信度高的标签放在错误的类上,导致错误传播的偏差解,作者在CBSL模型基础上提出用置信正则化来防止自训练中的交叉熵过度最小化。提出两种置信正则项一个是基于标签的(在标注标签是考虑更多信息),一个是基于模型的。
目标公式:
中阔号展开,第一项为有监督交叉熵损失项,第二项是伪标签交叉熵损失项,第三项为置信正则项
提出多个不同的置信正则相关及相应的伪标签标注,第一项是基于标签的,其实是基于模型的:
对于LRENT标签置信正则项,自训练一个round定义为a,b两步:
a) 固定网络参数,生成伪标签,
b)固定伪标签,训练网络
Article:Ohi A Q, Mridha M F, Safir F B, et al. AutoEmbedder: A semi-supervised DNN embedding system for clustering
Code
Article: Zhong Z, Zheng L, Kang G, et al. Random Erasing Data Augmentation[C]//AAAI. 2020: 13001-13008.
Code:
Article:Cubuk E D, Zoph B, Mane D, et al. Autoaugment: Learning augmentation strategies from data[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2019: 113-123.
一种数据增强方式