-
Lv2. P-Stage 12Daily 2022. 4. 6. 02:38
오늘은 모델의 설정 값들을 하나씩 바꿔가면서 학습시에 모델 성능이 올라가는지 확인하고 있다.
모델의 크기가 크기도 하고 지속적으로 성능이 떨어지는지 확인하려면 시간이 오래 걸려서(1 Epoch 당 25분 정도, 적어도 5 Epoch 관찰) 생각보다 많은 실험을 해보지는 못했다.
그 중 Evaluation 연산에 필요한 'Dot' 대신에 'Cos' 으로 Cosine similarity을 쓰면 처음 성능이 올라가지만 마찬가지로 훈련을 하면 할 수록 성능이 떨어지는 결과가 나왔다.
남는 시간에 inference 파일을 만들어보고 있는데, CL4SRec에 맞게 모델을 불러 오는 것 부터가 무언가 에러를 일으켰고, 수정하는데 시간이 많이 걸렸다.
여러가지를 수정하고 난 후에도 학습된 모델을 불러와서 추출할 id 값을 지정해줘야 submission file을 출력하는데 이 부분을 가지고 있는 dataset에서 뽑으려면 조금 더 알아봐야 할 것 같다.
오늘 멘토링 시간에는 멘토님이 Transformer에 대해서 코드 하나하나 주석을 달아서 그 파일을 가지고 transformer에 대해서 자세하게 설명해주셨다.
또한 이번 대회가 representation을 어떻게 잘 하는가에서 나뉘기 때문에 AutoEncoder 기반이 학습이 잘 될 것이다.라는 소스를 주셨는데, 멘토링 시간이 끝나고 잠깐 대화를 나누면서 팀원들과 Multi-VAE를 다 같이 한번 공부해보는 것이 어떻겠는가 라는 이야기를 나눴다.
또한 지금 하고 있는 모델이 학습을 하면 할수록 성능이 안좋아 진다는 것을 멘토님께 말씀드렸는데, Loss값을 확인해보시더니 무언가 잘못된 것 아닌가 하는 질문을 주셨고, 깃허브에 모델을 올리면 확인해보겠다는 답변을 주셨다.
Traning Loss가 너무 크게 나와서 내가 무언가 잘못한건가 하고 CL4SRec으로 원래 구현되어있던 무비렌즈 데이터셋을 넣고 학습을 시켜서 비교해봤는데, training loss가 기본적으로 큰 것 같다(저자가 ml-100k는 data_path를 또 바꿔놔서 이거 확인하고 바꿔주느라 시간을 또 소비했다...)
하지만 대회에서 사용하는 데이터는 10만이 넘어가기 때문에 learning rate가 너무 커서 그런건가 싶기도 하다.
이건 바꿔가면서 확인을 해봐야겠다.
오늘의 문제는 17425, 17427번 약수의 합, 약수의 합2 문제이다.
그 중에서 더 어려운 17425번 문제를 다뤄보겠다.
https://www.acmicpc.net/problem/17425
아쉽게도 python으로는 시간초과가 나고, pypy를 사용해서 제출해야 한다.
아이디어는 dp를 사용한 메모이제이션과 약수를 보는 관점의 차이라고 볼 수 있다.
예를 들어서 3까지의 모든 약수의 합을 구할 때 1의 약수를 구하고, 2의 약수를 구하고, 3의 약수를 구하고 더하는 방법도 있겠지만 1은 3까지의 수 중 몇 가지 수의 약수로 포함되는가? 그 다음 2는? 그 다음 3은? 이라고 순차적으로 생각할 수 있다.
조금 더 쉽게 나열해보자면 1은 1,2,3... 의 약수이다. 2는 2,4,6...의 약수이다. 3은 3,6,9...의 약수이다. 4는 4,8,12...의 약수...
무언가 감이 올 듯 말 듯 하다면 6까지의 약수의 합을 구하는 방법은
1은 6번 포함되고(1,2,3,4,5,6)
2는 3번 포함되고(2,4,6)
3은 2번 포함되고(3,6)
4는 1번 포함되고(4)
5도 1번(5)
6도 1번(6)
이므로 1*6+2*3+3*2+4*1+5*1+6*1 = 33이 된다.
즉 i가 1부터 n까지의 약수로 몇 개 포함되는지 알고싶으면 (n//i)개 포함이 되고, 약수의 합이니 i를 곱해주면 된다.
이를 1부터 1000000까지 숫자의 배열에 저장해둔 다음 dp로 누적합을 구현한 배열을 만들어서 출력해주면 된다.
'Daily' 카테고리의 다른 글
Lv2. P-Stage 14 (0) 2022.04.08 Lv2. P-Stage 13 (0) 2022.04.07 Lv2. P-Stage 11 (0) 2022.04.05 Lv2. P-Stage 09 (0) 2022.04.01 Lv2. P-Stage 08 (0) 2022.03.31