Time2Vec: Learning a Vector Representation of Time论文笔记
前言
Time2vec是将时间转换成Embedding的形式,并且可以很容易将这种Embedding合并到已有的项目中
论文主体
论文基本介绍
- 论文年份: 2019年
- 论文作者所在机构: Borealis AI
前人工作Trick
- 传统机器学习的方法,费时费力。
- 深度学习的工作主要将时间信息融合进入模型之中,而本文的Time2vec主要目标为了提出一种与模型无关的时间模型。
提出模型
Time2Vec的设计主要基于以下几个方面:
- 捕获周期性和非周期性模式
- 对时间缩放不变
- 易于与其他模型融合
性质
周期性
对于许多事件而言,一般可以分为周期性(periodic)和非周期性(non-periodic)两种:
- 周期性:例如消费常常发生在周末
- 非周期性:得病概率在老年较高
时间缩放的不变性
由于时间衡量的单位是不一样的,所以我们必须定义时间的规模(周、天、小时、分钟等)
简明性
由于我们需要将Time2vec应用于不同的模型,所以我们需要提出一种易于融合的表征(例如矩阵表示不是一种很好的表征)
Time2Vec
t
2
v
(
τ
)
[
i
]
=
{
ω
i
τ
+
φ
i
i
f
i
=
0
F
(
ω
i
τ
+
φ
i
)
i
f
1
≤
i
≤
k
t2v(\tau)[i]=\left\{ \begin{aligned} \omega_i\tau+\varphi_i & & if\ i = 0 \\ \mathcal{F}(\omega_i\tau+\varphi_i) && if\ 1\leq i \leq k \end{aligned} \right.
t2v(τ)[i]={ωiτ+φiF(ωiτ+φi)if i=0if 1≤i≤k
其中
k
k
k是time2vec的维度,
t
2
v
(
τ
)
[
i
]
t2v(\tau)[i]
t2v(τ)[i]是
t
2
v
(
τ
)
t2v(\tau)
t2v(τ)的第
i
i
i个元素,
F
\mathcal{F}
F是周期激活函数,
ω
i
\omega_i
ωi和
φ
i
\varphi_i
φi是可学习的参数。
为了使算法可以捕获周期性,所以 F \mathcal{F} F选用Sin函数(Cos函数同样效果)捕获周期性,线性项 ω i τ + φ i ( i = 0 ) \omega_i\tau+\varphi_i(i=0) ωiτ+φi(i=0)用于捕获非周期特征。
一个问题:非周期应该怎么办?
论文实验
需要解决问题:
- Time2Vec是否可以很好地代表time?
- Time2Vec可以在其他架构中使用并提高其性能吗?
- 正弦函数能学到什么?
- 我们可以使用非周期性的激活函数来获得类似的结果吗? 而不是周期性的?
- 学习正弦频率是否有价值
问题1:Time2Vec是否可以很好地代表time?
上图可以回答问题1,Time2vec的表现比直接使用时间的效果好。
问题2:Time2Vec可以在其他架构中使用并提高其性能吗?
上图可以回答问题2,Time2vec在不同的模型中,效果都比较好。
问题3:正弦函数能学到什么?
从上图可以观察到,Time2Vec可以学习到一种周期性的规律,例如图3 a)中红点的间隔是7天。
问题4: 我们可以使用非周期性的激活函数来获得类似的结果吗? 而不是周期性的?
作者尝试使用ReLu、Sigmoid、Tanh等函数作为
F
\mathcal{F}
F函数,但是效果不佳,究其原因可能是因为随着时间的增长这些函数会趋于0。
问题 5: 学习正弦频率是否有价值
从图5 b)中可以看到学习频率和相移而不是固定它们有助于改善模型的性能。
# 小小的感悟
Time2Vec可以很好的捕获周期性特征以及非周期性特征,但论文中捕获了的非周期性特征指的却是函数在初始位置的偏移。
这种非周期性特征和笔者理解的稍有不一样,例如:类似于随着年龄增大,得病的概率也越大。这种几乎没有周期规律特征的捕获效果不知道是如何的。
该部分为个人理解仅供参考。