深度学习中的模型训练问题
Loss 出现 Nan 总结可能的原因如下: 数据不正确 比如说我们处理的实际是一个N分类问题的时候,计算cross entropy时将其当作一个M分类问题。如果N>M, 则在计算loss的时候不会报错,计算得到的loss直接就是Nan。 训练样本中的脏数据导致计算结果为 0; 学习率过大 有时候学习率过大也会导致NAN,为了判别这种错误,我们只需要将学习率设置为0,看是否会继续出现NAN,如果还会出现NAN,则可以排除这种错误。 激活函数有误 比如我们使用 x12x^{\frac{1}{2}}x21 作为激活函数的时候,其在 x≤0x\leq 0x≤0 处是不可导的,此时也会产生NAN的问题。 上述的例子也说明了,当我们在计算l2loss的时候为何不去开根号,而是保留平方的形式。 参考: 激活函数与损失函数总结 Pytorch中的损失函数总结 数据没有归一化 当我们做一个regression任务的时候,如果prediction没有归一化的话,可能会导致prediction值过大,在计算loss的之后容易产生过大的loss值,而导致梯度爆炸,出现 Nan ...
【2004/VLDB】ObjectRank:Authority-Based Keyword Search in Databases
文章链接:http://www.vldb.org/conf/2004/RS15P2.PDF 背景 现实中的复杂系统大体可以抽象为两类:第一类是同质信息网络(Homogeneous information network),这种建模方法仅抽取网络中部分信息并且没有区分对象或者关系间的差异性;第二类是异质信息网络(Heterogeneous information network),网络中包含多种类型的关系和对象,具有全面的结构信息和丰富的语义信息。 目前同质信息网络中节点排序方法较多且应用较广,例如 Personalized PageRank ,其计算公式如下所示: PPRq=(1−α)MT×PPRq+αq\mathbf{P P R}_{q}=(1-\alpha) M^{T} \times \mathbf{P P R}_{q}+\alpha \mathbf{q} PPRq=(1−α)MT×PPRq+αq 但是其不适用于异质信息网络。因此介绍当前的两种适用于异质信息网络中节点排序的方法 ObjectRank 和 PopRank,主要思想借鉴 PageRank。 ObjectRank ...
【2019/DLG】Overlapping Community Detection with Graph Neural Networks
文章链接:https://arxiv.org/pdf/1909.12201.pdf 源码链接:https://github.com/shchur/overlapping-community-detection TL;DR 近年来 GNN 在图相关任务中取得了重大成果但在社团检测领域应用较少。目前基于深度学习的社团检测模型都只处理了非重叠的社团检测问题,而现实中的社团都是重叠的。因此本文中提出一个可以检测重叠社团的 GNN 模型。 Model / Algorithm 问题定义 对于一个无向无权图 GGG, 可以用二值邻接矩阵 A∈{0,1}N×NA\in \{0,1\}^{N \times N}A∈{0,1}N×N 进行表示,其中包含 NNN 个节点 V={1,…,N}V=\{1, \ldots, N\}V={1,…,N},MMM 条边 E={(u,v)∈V×V:Auv=1}E=\left\{(u, v) \in V \times V: A_{u v}=1\right\}E={(u,v)∈V×V:Auv=1}。每个节点具有 DDD 维属性 X∈RN×DX \in \mathbb{R ...
Python 高效代码片段及其常见问题
Snippets 参考:https://medium.com/better-programming/20-python-snippets-you-should-learn-today-8328e26ff124 序列定长分割 12345678910111213141516In [16]: from six.moves import zip_longestIn [17]: for i in zip_longest(*[iter([1,2,3,4,5])]*2, fillvalue=0): ...: print(i) ...:(1, 2)(3, 4)(5, 0)In [18]: for i in zip_longest(*[iter('abcdefg')]*2, fillvalue='*'): ...: print(i) ...:('a', 'b')('c', 'd')('e', 'f')( ...
【2019/CVPR】Graph Convolutional Label Noise Cleaner for Anomaly Detection
论文链接:https://arxiv.org/pdf/1903.07256.pdf TL;DR 文章中对于视频的异常检测提出了一种优化的方法,基于feature similarity和temporal consistency,利用GCN构建一个Label Noise Cleaner来产生Snippet-level Anomaly Labels从而接着重新训练模型,以此来提高模型的精度。整体属于一个弱监督学习的方法,可以优化模型。 Contributions We formulate the problem of anomaly detection with weak labels as a supervised learning task under noise annotations, and put forward an alternate training framework to optimize the action classifier. We propose a GCN to clean noise labels. To the best of our knowle ...
SIGMETRICS 2013丨MonitorRank:微服务架构中的根因定位方法
论文标题 | Root Cause Detection in a Service-Oriented Architecture 论文来源 | SIGMETRICS 2013 论文链接 | https://dl.acm.org/doi/10.1145/2465529.2465753 源码链接 | 未公布 背景 MonitorRank 是最早使用随机游走的策略定位故障根因服务的方法,MonitorRank 把系统的服务分成三类: 前端服务:负责接收用户的请求以及进一步调用下游请求以完成用户的请求。 应用服务:负责真正处理用户请求的逻辑。 数据服务:负责提供经过包装的数据。 应用服务和数据服务又统称为后端服务。 在每个服务上,配置有传感器,会定时给出指标数据。通过服务之间的调用关系,可以形成一个调用拓扑图。 图上的节点就是服务,边就是节点之间的调用关系。 基于这样的数据,MonitorRank 把根因服务定位问题定义为,给定告警指标mmm,告警前端节点vfev_{fe}vfe和时间ttt,根据剩下其他节点的指标mmm的值,对所有节点进行排序。 MonitorRank 和我们研究的其他 ...
详解 Word2vec 模型
论文:1. Distributed Representations of Words and Phrases and their Compositionality 2. Efficient Estimation of Word Representations in Vector Space 源码:gensim 背景 用低维实值向量表示word,而不使用one-hot来表示? One-hot编码稀疏,高维数据中不适用。 One-hot编码不能捕捉到上下文(context)信息。 Word2vec是从大量文本语料中以无监督的方法学习语义知识的一种模型,广泛地用于自然语言处理当中。实际上Word2vec是通过学习文本来用词向量的方式表征词的语义信息,即通过一个嵌入空间使得语义上相似的单词在该空间内距离很近。Embedding是一个映射,将单词从原先所属的空间映射到新的多维空间中,也就是把原先词所在空间嵌入到一个新的空间中去。 模型 Word2vec主要包含Skip-Gram和CBOW两种模型。从直观上理解,Skip-Gram是给定input word来预测上下文。而CBOW是给定上下 ...
ϵ-Diagnosis:大规模微服务系统中无监督的小窗口长尾延迟诊断方法
论文标题 | ϵ-Diagnosis: Unsupervised and Real-time Diagnosis of Smallwindow Long-tail Latency in Large-scale Microservice Platforms 论文来源 | WWW 2019 论文链接 | https://monadyn.github.io/Papers/p3215-shan.pdf 源码链接 | 未公布 TL;DR 对于大规模网络应用中service-level objective(SLO)诊断比较困难,文中提出了 small-window long-tail latency (SWLT) 的问题。为了定位产生SWLT问题的根因,文中提出了一个诊断算法 ϵ−Diagnosis\epsilon -Diagnosisϵ−Diagnosis。 Contributions We identify a new type of tail latency problem, small-window long-tail latency (e.g., in an 1-minute or ...
IJCAI 2019丨基于 CNN 和迁移学习的时间序列异常检测模型
论文标题丨Time Series Anomaly Detection Using Convolutional Neural Networks and Transfer Learning 论文来源丨IJCAI 2019 论文链接丨https://arxiv.org/pdf/1905.13628.pdf 源码链接丨未公布 TL;DR 对于时间序列中异常检测的问题,以前的方法都是基于RNN预测。文中基于CNN提出了一种时间序列分割的方法,并且在此基础上提出了一种迁移学习的框架用于异常检测。在人工数据集和真实数据集上有比较好的结果。 Algorithm/Model 首先文中的观点比较新颖:将时间序列中的异常检测问题看成图像分割的类似的问题。然后使用图像分割中效果比较好的U-net架构来处理时间序列。 文中使用的U-net架构如下所示: 对于文中提到的分割方法就是讲时间序列分段,每一段都输入模型测试是否发生异常并且每个时间点至少要被测试一次,文中给出了测试三次的图例: 至于时间序列分段,当然理想情况下都可以取模型输入大小,但是对于周期比较长的数据可以选择比较大的snapshot,然后下采样 ...
【2019/ACL】Attention Guided Graph Convolutional Networks for Relation Extraction
文章链接:https://arxiv.org/pdf/1906.07510.pdf TL;DR 这是一篇关于NLP中如何利用GCN进行关系抽取的文章,主要是用到了Dependency tree构图,然后在GCN模型中增加了注意力机制,不像Dependency tree中剪枝方法容易消去相关的特征。 Dataset/Algorithm/Model/Experiment Detail 首先看看entity之间的dependency tree,对于上面的标记并不是很了解。 假设我们懂了dependency tree是如何构造了,那么就可以将这个tree看成一个图结构,有图了自然就可以使用GCN来提取特征。以前的方法都是基于某种规则剪枝,本文使用全图作为输入,用模型自动提取特征,这样就不会丢失相关信息了。文章模型的主要pipeline如下所示: 模型由多个block构成,每个block包含三个module: Attention Guided Layer. A~(t)=softmax(QWiQ×(KWiK)Td)\tilde{\mathbf{A}}^{(\mathrm{t})}=\ ...
Alias 随机采样及其 Python 实现
Alias 采样 参考:【数学】时间复杂度O(1)的离散采样算法—— Alias method/别名采样方法 对于问题: 比如一个随机事件包含四种情况,每种情况发生的概率分别为: 12,13,112,112\frac{1}{2},\frac{1}{3},\frac{1}{12},\frac{1}{12}21,31,121,121,问怎么用产生符合这个概率的采样方法。 两次掷骰子:第一次决定所属列,第二次决定事件概率。 算法流程 事件N中情况概率按照均值归一化,即每种情况概率乘N。 构造Alias表。 Alias Method一定要保证:每列中最多只放两个事件; 按照某种方法将整个概率分布拉平成为一个1*N的长方形即为Alias Table,然后储存两个数组,一个里面存着第i列对应的事件i矩形所占的面积百分比,即概率,上图的话数组就为Prob[23,1,13,13]Prob[\frac{2}{3}, 1, \frac{1}{3}, \frac{1}{3}]Prob[32,1,31,31]。另一个数组里面储存着第i列不是事件i的另外一个事件的标号,上图就 ...
那些年~一直刷的算法题
题源来自于:https://github.com/Greatandy/leetcode 刷题列表 两数之和:unordered_map遍历LC 两数相加:注意最后的进位不为0,LC 无重复字符最长子串:滑动窗口+unordered_map记录,LC 寻找两个正序数组的中位数:相当于找两个有序数组的第k大的数,二分,先判断k/2和小数组长度大小。LC 最长回文子串: 二维动态规划 dp[i] [j] = dp[i + 1] [j - 1]. if s[i + 1] [j - 1] 注意这个循环的遍历,外层是len from 0 to n,内层是i from 0 to n,j = i + len 整数反转:注意是否越界,可以用INT_MAX / 10或者INT_MIN / 10判断一下. LC 字符串转整数atoi:主要就是越界的处理,和6一样,注意一点的就是-12 % 10 = -2,LC 正则表达式匹配:二维动态规划或者递归求解。LC dp[i] [j]:s的前i个和p的前j个是否匹配,dp[i] [0] = false, dp[0] [j] ...
DevNet:基于偏差网络的深度异常检测模型
论文标题 | Deep Anomaly Detection with Deviation Networks 论文来源 | KDD 2019 论文链接 | https://arxiv.org/abs/1911.08623 源码链接 | https://github.com/GuansongPang/deviation-network 本文是一篇使用深度学习模型进行异常检测的文章。在异常检测领域,目前存在的方法大部分是先进行特征学习,然后再使用异常检测的方法间接地优化异常数据样本评分。本文提出了一个端到端学习的异常检测模型。 Introduction 异常数据是指明显偏离大部分数据分布的数据对象,异常检测的目标就是正确地检测出这些异常数据。在现实世界中有很多的应用场景,例如交易反欺诈、网络攻击检测和医疗异常检测等。传统的异常检测方法通常受限于数据的维度灾难和特征的非线性等问题。最近基于深度学习的方法在处理上述问题中表现出不错的性能,但是仍然存在不足:一是在大部分的异常检测任务中,难以获得大规模的标签数据来训练模型;二是不同任务中异常数据通常具有不同分布,这对异常检测任务是非常大的挑战。 ...
CLOUD 2019丨基于多模态深度学习方法调用链异常检测方法
文章链接:http://jorge-cardoso.github.io/publications/Papers/CP-2019-089-IEEECloud-Anomaly_Detection_from_Tracing_and_MDL.pdf TL;DR 目前,基于深度学习的AIOps方法考虑到的都是单一形式的数据,例如logs的文本属性或者traces中的实时响应时间,没有考虑到不同形式数据之间的关系。本文首先基于trace structure单一形式的数据提出一种异常检测的模型,然后利用LSTM将单一形式的结构扩展到多数据形式的结构。在实验测试集上本文提出的模型比当前基于深度学习的方法好。 Dataset/Algorithm/Model 文中使用的数据(tracing data)包含两种形式(也就是文章中提到的Multimodal,个人感觉说的有点大): service response time causal relationships 对于一条tracing data,由多个events组成,如下图所示: 对于每个event,至少需要包含以下信息: trac ...
【2019/ACL】Learning Attention-based Embeddings for Relation Prediction in Knowledge Graphs
链接:https://arxiv.org/pdf/1906.01195v1.pdf TL;DR 对于知识图谱中关系预测这一问题,目前基于CNN的方法在学习特征嵌入上取得了不错的效果,但是目前的方法只考虑了三元组实体的的特征并没有考虑到关系的特征。本文提出了基于注意力机制的特征嵌入模型,其中包含实体特征和关系特征来做实体间关系的预测。在当前数据集上取得了不错的效果。 Algorithm/Model 模型的pipeline如下所示: 详细的梳理一下attention layer的计算方式: 输入: entity embedding:H∈RNe×T\mathbf{H} \in \mathbb{R}^{N_{e} \times T}H∈RNe×T relation embedding: G∈RNr×P\mathbf{G} \in \mathbb{R}^{N_{r}\times P}G∈RNr×P 输出: entity embedding:H′∈RNe×T′\mathbf{H^{'}} \in \mathbb{R}^{N_{e} \times T^{'}}H′∈R ...