[실험] Continuous Embedding #45
JAEWOOSUN
started this conversation in
Experiments
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Continuous Embedding
Description: Embedding에 시간에 따른 Weighted Sum을 했을 때
시작일: 2021년 6월 1일
실험자: 재우 선
제안자: 재우 선
종료일: 2021년 6월 2일
진행상황: 완료
카테고리: Modeling
문제 정의
연속적인 Feature의 경우(시간, interaction, question popularity, question difficulty) 그 값 하나만 embedding해서 넣게되면 아무 의미가 없다. 따라서 주변 값도 영향을 미칠 수 있게 embedding하자!
해결 아이디어
Riiid 4위 solution에는 Continuous Embedding 방식이 존재함
(ref. https://www.kaggle.com/c/riiid-test-answer-prediction/discussion/210171)
즉, 연속적인 feature들을 사용할 때
원래 뽑아내야하는 중심값
과주변값
들의 weighted sum을 해서 사용하는 방식Embedding의 weight matrix에서 일정한 가중치(Window function)을 가지고와서 weighted sum을 수행해서 embedding vector를 만들어 주는 방식
이렇게 하면 그 값 자체로는 아무 의미 없는 값(연속적인 값)들에 대해 주변 값들의 정보를 넣어줘서 embedding함으로써 새로운 feature를 만들어 낼 수 있음
진행 상황
1. 문제상황
2.
modeling_embedding.py
3.
modeling_embedding.py
→__init__
num_points
는 hidden dimensions size (여기서는args.max_sequence_len
으로 통일)minval
은 value가 가질 수 있는 최소값maxval
은 value가 가질 수 있는 최댓값window_type
은 사용할ㄹ window_functionself.points
는 0~args.max_seq_len
값을 하나씩 줌 (예상으로는 postional encoding처럼 사용하는 방식)4.
modeling_embedding.py
→ window type 함수들_hann_window
사용)5.
modeling_embedding.py
→forward
input
의 dimension 값을 하나 늘려준 후self.points
로 빼줌 (위치를 표시하는 dimension으로 예상)w
를 다시 한 번window_func
에 넣음input
의 embedding과w
와의 합성곱 수행6.
model.py
→ Class LSTM →__init__
7. Bert 모델, LSTMAttn 모두 적용
결과
평가
Beta Was this translation helpful? Give feedback.
All reactions