20221205월-dkt16
데일리 스크럼
검증 셋을 더 맞추는 작업을 진행함. 태그와 시험을 기준으로 나누는 것은 큰 의미가 없었다. 기존 검증셋을 만드는 방식에는 문제가 있었다.
학습, 테스트 전체 유저의 마지막만 검증하는 것.
Leetcode Weekly Contest
class Solution:
def pivotInteger(self, n: int) -> int:
def sumsum(n):
return n * (n+1) // 2
val = sumsum(n)
for i in range(n//2, n+1):
tmp = sumsum(i)
if val - sumsum(i-1) == sumsum(i):
return i
else: return -1
class Solution:
def appendCharacters(self, s: str, t: str) -> int:
t = [*reversed(t)]
for c in s:
if not t: return 0
if c == t[-1]: t.pop()
return len(t)
피어세션
모든 유저의 마지막을 검증셋으로. 유저와 문항 기준으로 중복 제거. 얼라인이 될 가능성. 여태 중복이 문제였을지도?
어텐션 공부는 트포의 어텐션을 공부하기 위해서. 수식적으로는 어려워보이지만 구현의 영역에서는 쉽다.
dkt에 interaction을 넣는 것은 기본값이다. 다만 하나만. 범주와 수치 임베딩해서 concat해서 넣을 때 들어간다.
SAKT. 트랜스포머의 인코더만 활용하여 로스를 구하는 것.
인터랙션을 쿼리, 현 문제를 키와 밸류. 피쳐를 많이 넣을 수는 없다.
SOTA. 라스트쿼리 트포,
saint. 하나의 정보를 강하게 가져가서 트랜스포머에 낸다. time elapsed, 시험과 시험 사이의 값도 넣음. 각각 피쳐 임베딩하여 사용.
라스트쿼리 트포. 일단 하나에 다 트포에 쑤셔박기. 나온 결과에 포지셔널 해야 하는데 이 자체를 lstm에 넣기.
내일은 gcn. 유저 쪼개기.
attention 이해.
내가 정리하는 실력이 부족하다. 정작 정말 해야할 것에 대한 정리가 제대로 되어 있지 않다. 이런 것을 더 보완해야 한다.
최종 프로젝트.
다음 대회 어떻게 할지. 저번처럼 월화 내에 최대한 강의는 다 섭렵하고 모르는 부분과 추가적으로 공부할 부분을 짚어본다. 아무래도 나도 티스토리만 활용할 것이 아니라 요점 정리가 잘 되는 방식으로 정리를 해야 할 듯.
이번 주말 어떻게 할지. 트랜스포머 공부와 랩업 리포트 작성.
유저 쪼개기. 시퀀스 길이가 길다면 아예 다른 유저로 취급하여 관리.
gcn 강의 복습
ngcf, lightgcn, ultra gcn을 우리는 사용할 수 있다.
손으로 쪼작거리면서 정리하니까 확실히 낫네. 이제 이 논문의 수식들은 다 설명할 수 있을 것 같다.(51) [ENG] Neural Graph Collaborative Filtering 논문 리뷰 - YouTube
왼쪽이 어떻게 오른쪽으로 표현된 건지 이제야 알겠다. 이렇게 해서 이놈은 결국 CF를 만드는 게 전부이다. 물론 여기까지 가지 않고 그냥 각 유저, 아이템 임베딩을 사용할 수도 있을 듯.
이제 어떻게 행렬 연산이 들어가는지 확인해야만 한다.