작성자 리뷰
시간을 간단하고 효과적으로 표현 할 수 있는 좋은 방법을 제안한 것 같습니다.Abstract
주기적 또는 비주기적으로 이벤트가 일어나는 많은 분야에서 시간은 중요한 의미를 지닙니다. 최근의 연구들은 시간이 가진 정보를 효과적으로 이용할 수 있도록 새로운 아키텍처를 디자인 하는데 초점을 맞추고 있습니다. 반면 본 논문에서는 모델과는 무관하게 시간을 벡터로 표현하는 것을 목표로 하고 이를 Time2Vec 이라고 명명합니다.Time2Vec
논문에서는 시간을 벡터로 표현하기 위해, 3가지 속성을 전제합니다.- Peroidicity : 주기적, 비 주기적인 패턴을 모두 표현할 수 있어야 합니다.
- Time Rescaling : 시간의 단위를 변환 할 수 있어야 합니다.
- Simplicity : 다양한 모델에서 사용할 수 있도록 간단해야 합니다.
Time2Vec
- t2v(τ) : time τ 에서의 벡터 t2v(τ)[ i ] : t2v(τ) 의 i 번째 element
- k : t2v의 dimension
- F : periodic activation function (논문에서는 sin 함수)
시간을 벡터로 표현하는 식은 위와 같습니다. 각 element 는 w_i와 ϕ_i 를 학습합니다.
i = 0의 경우 시간 타우의 흐름에 따라 선형적으로 증가합니다. 예를 들어 τ = 10과 같은 특정 시간을 표현 할 수 있습니다. 즉 주기가 없는 이벤트에 대한 처리를 할 수 있습니다.
반면 1 ≤ i ≤ k의 경우 시간의 흐름을 w_i와 ϕ_i 를 통해 주기적으로 표현할 수 있습니다. 예를 들어 w_1 = 2π/7 이라면, t2v(τ)[1] = sin( 2π/7 * τ + ϕ_1 ) 가 됩니다. 즉 첫번째 element는 7이라는 시간의 흐름마다 같은 값을 가지게 됩니다. 이를 통해 주기적으로 일어나는 이벤트를 표현 할 수 있습니다.
w_i는 주기를 표현하고, ϕ_i는 주기의 시작을 시프트하는 역할을 합니다.
Properties
-
Peroidicity
sin함수를 통해 주기를 표현 할 수 있습니다.
-
Time Rescaling
w_i * τ = w_i * 60 * (τ/60) 으로 표현할 수 있습니다. 예를 들어 초 단위의 τ 를 분 단위의 τ/60로 변환 한다면 주기도 같은 만큼 변환됩니다.
-
Simplicity
간단한 sin함수의 벡터 형태로 시간을 표현할 수 있습니다.
Questions
논문에서는 나올 수 있는 5가지 질문을 스스로 정의하고 실험 결과를 토대로 이에 대한 답을 합니다.Q1. Is Time2Vec a good representation for time?
- LSTM + T : LSTM에 Time 정보를 concat 하여 사용한 기존 모델
Q2. Can Time2Vec be used in other architectures and improve their performance?
2017년에 발표된 'What to do next: Modeling user behaviors by time-lstm' 논문의 TLSTM1과 TLSTM3 알고리즘을 Time2Vec으로 대체 하는 실험을 토대로 Q2에 답을 합니다.
Q3. What do the sine functions learn?
sin함수가 의도한대로 주기를 정확하게 표현하는 지 확인하고자 하는 질문입니다. 이를 확인하기위해 t2v의 element의 weighted sum으로 가상의 데이터를 classification을 하는 실험을 합니다.가상의 데이터는 설정된 주기를 가지고 있습니다. 학습이 끝났을 때, 가상의 데이터가 가진 주기를 t2v가 잘 표현하고 있다면 sin함수가 주기를 잘 표현한다고 할 수 있다고 합니다.
위 그래프는 각 7, 14의 주기를 가진 가상의 데이터를 학습하여 classification을 한 결과입니다. weighted sum of sinusiods이 주기를 잘 표현하고 있습니다.
그렇다면 각 element는 무엇을 표현하고 있을까요? 다음 그래프는 sin함수 내의 w_i(Frequencies)와 이를 weighted sum 할 때 weight를 나타낸 것입니다.
왼쪽은 랜덤 값으로 초기화 한 그래프이고, 오른쪽은 학습이 끝난 후의 그래프 입니다. Frequency가 0.898 ≈ 2π/7 인 element에 weight를 많이 주는 것을 확인 할 수 있습니다.
- 개인적으로 위 실험이 왜 Q3에 대한 답이 될 수 있는지 명확히 이해하지 못했습니다.
Q4. Can we obtain similar results using non-periodic activation functions instead of periodic ones?
위 그래프는 sin을 포함하여 다양한 activation function 들로 t2v를 구성하여 Event-MNIST를 실험한 결과입니다. sin이 가장 뛰어난 성능을 보이고, 논문에서는 이를 Fourier series와 연관지어 설명합니다.
Q5. Is there value in learning the sine frequencies or can they be fixed
위 그래프는 sin함수의 frequency를 학습한 경우, 동일한 간격으로 고정한 경우, transformer의 positional encoding의 값으로 고정한 경우로 나누어 실험한 결과입니다. frequency를 학습한 경우가 가장 뛰어난 성능을 보였습니다.
Reference
- https://arxiv.org/pdf/1907.05321.pdf
- https://towardsdatascience.com/time2vec-for-time-series-features-encoding-a03a4f3f937e