44,45일차 간단한 회고

밀리지 말아야지 말아야지 했는데 주말까지도 미뤘군요. 그래도 어찌저찌 기록한다는데에 의의를 둡니다.

조금 늦게 써서 완벽하게 기억이 나지는 않네요. 힘들더라도 간단히 써놓을 걸 합니다.

44일 목요일에는 U+ 대회에 집중했습니다. DKT 대회 내 베이스라인 코드에서 LightGCN 모델을 사용하는 것에 착안해 U+ 대회에도 적용해보기로 했습니다.

LightGCN은 임베딩 벡터를 잘 만들어준다는 특징이 있어 다른 모델 적용 전 많이 사용한다고 합니다.

간단한 MF 모델을 사용해 유저와 아이템 별 임베딩 벡터를 만들어 보려 했으나 다양한 이슈 때문에 실패했는데요. 라이브러리를 통해 간단히 사용할 수 있는 LightGCN을 사용해 임베딩 벡터를 뽑아내보았습니다.

이 과정에서 가상환경 버전 이슈가 있어서 시간을 참 많이 쓴 것 같네요. 멘탈이 흔들릴 정도였습니다.. ㅠㅠ.

LightGCN을 밑바닥에서 구현해본 경험을 얻진 못했지만 영문으로 된 라이브러리 문서를 보고 영어를 읽는 능력이 뛰어나진 못하지만 이전보다 많이 성장한 것 같네요.

이를 바탕으로 임베딩 레이어를 꺼냈습니다. 확실히 학습이 잘 되는건지 의문이였던 MF 모델 대비 완성형이라 그런가 임베딩 벡터가 나름 변수를 대변하는 모양새로 보입니다.

하지만 EDA 가설이 틀린건지 valid에도 그렇고 실제 리더보드에 제출할 때도 그렇고 많이 떨어지네요. 다른 방법을 찾아봐야겠습니다.

다음으로 45일차입니다. 시퀀셜 모델에 대한 베이스라인을 다시 되돌아봤습니다.

이해가 될 듯 말듯 한데 요소가 3개 있는 칼럼에 대해서도 임베딩 레이어 크기를 동일하게 주는 점이 제가 생각하는 직관과 벗어났습니다.

임베딩 벡터는 원핫인코딩으로 표현할 경우 희소행렬이 된다는 문제점 때문에 사용한다고 생각하는데요. 요소가 3개인 경우 굳이 이렇게 진행하는 것이 의미가 있을까 생각합니다. 어짜피 임베딩 벡터를 키워도 3개 종류의 값 밖에 나오지 않으니깐요.

이에 대해 다른 칼럼과의 균등한 영향력을 행사하기 위한다는 답변과 명확하게 정의하기 보단 데이터의 구성마다 다르기 때문에 실험을 통해 확인해보는 것이 필요하다고 합니다.

답변해주신 조교님처럼 확실하진 않아도 실험 전 어떻게 흘러갈 것이다 라는 직관을 이번 대회를 통해 얻었으면 좋겠습니다.

또 모델을 보면서 느낀 것은 내가 생각하는 모델의 학습 방향성과 실제 모델 구성이 다를 수도 있겠다는 생각을 했씁니다.

사실 밀린 일기처럼 쓰는데 제가 저번주에 많이 힘들었나봅니다. 2개의 대회를 같이 치르는데 일정이 빠듯하긴 합니다. 그래도 두 마리 토끼를 다 놓칠수는 없으니 조금 더 힘내보죠. 화이팅!