title: 结构化数据entity embedding之后是否类似decode的过程 ?
date: 2019-08-08 10:52:43
tags: embedding
结构化数据entity embedding之后是否需要类似decode的过程 ?
0. Abstract
近年来,从计算机视觉到自然语言处理再到时间序列预测,神经网络、深度学习的应用越来越广泛。在深度学习的应用过程中,Embedding 这样一种将离散变量转变为连续向量的方式为神经网络在各方面的应用带来了极大的扩展。该技术目前主要有两种应用,NLP 中常用的 word embedding 以及用于类别数据的 entity embedding。 -- Embedding 的理解
1. What's entity embedding ?
Entity embedding not only reduces memory usage and speeds up neural networks compared with one-hot encoding, but more importantly by mapping similar values close to each other in the embedding space it reveals the intrinsic properties of the categorical variables. -- https://towardsdatascience.com/decoded-entity-embeddings-of-categorical-variables-in-neural-networks-1d2468311635
一般embedding 过程会跟one-hot 进行比较,有大量的文章描述这个不同我就不赘述,用张图来对比一下。
主要功能:
1. 将数据变得更加稠密,减少运算量;
2. 分类数据,在数据通过NN 之后,再有进行预测的空间。
2. Current application conditions
借鉴一个总结,用 embedding 有以下三个目的:
- 在 embedding 空间中查找最近邻,这可以很好的用于根据用户的兴趣来进行推荐。
- 作为监督性学习任务的输入。
- 用于可视化不同离散变量之间的关系。
当前的场景是我们有一堆告警的数据,拥有时间维度。要达到的目的是当出现某些告警时,预测接下来的告警以及出现此告警的时间。目前的思路是有监督学习,大致流程(排序数据-->embedding-->使用batch_x条告警,接下来的batch_y条作为lable,进行学习),达到预测的目的。
部分原始数据格式:
embedding 之后的数据格式:
3. what the problem is?
我们标题提出的问题是:结构化数据entity embedding之后是否需要类似decode的过程 ?这个问题的本质是,我们embedding 之后的 tensor 表示的是什么?这就决定了我们怎么评估神经网络计算出来的结果,也决定了使用什么loss 函数,所以理解embedding 之后的数据显得尤为重要。
首先我们回答一下这个问题,there is no reverse of the embedding per se.本身没有反向的过程。通过神经网络计算出来的向量其实意味着在空间中的一个向量,真正的结果,理论上应该是这个向量临近的向量集以及距离。也可以认为距离最近的那个向量是你的解。
4. reference
- https://zhuanlan.zhihu.com/p/46016518
- https://arxiv.org/abs/1703.03130
- https://towardsdatascience.com/decoded-entity-embeddings-of-categorical-variables-in-neural-networks-1d2468311635
- https://discuss.pytorch.org/t/vec2word-or-something-similar/2068
- https://stackoverflow.com/questions/43515400/how-to-train-a-reverse-embedding-like-vec2word