서치해도 잘 없길래 걍 써봄.
사용 계기
1. 내 모델이랑 SlowFast를 비교해야한다. pre-training 없이 작은 데이터셋에서 비교하는중.
2. 근데 내 환경에서 slowfast 성능이 너무 구리다. ResNet이랑 비슷하거나 더 안나오기도 한다. ㄱ-?
3. learning scheduler가 달랐지!
혹시나해서 내 모델과 slowfast 모두 pleatau를 사용하도록 실험도 해봤지만, 그냥 둘다 underfitting 될 뿐이었다.
튜닝을 하라면 하겠지만 일단 slowfast 성능 영끌이 필요한 관계로, 바로 half cosine을 찾기 시작했다.
조사
SlowFast 논문
- half cosine scheduler를 사용했다고 언급. SGDR 논문을 인용하면서.
- 이 스케줄러의 base_lr = 1.6로 했다고 하며, restart 안 밝힘.
- linear warm up도 사용하였다고 밝힘. 초반 8k epochs 동안. '초반' 8k요?
SlowFast 코드
- 뭘 가져다 쓰는 게 아니라 그냥 수식을 써놨다. 코사인 어쩌구 계산해서 그거. 직접 계산한다.
torch scheduler
- CosineAnnealingWarmRestarts()가 SGDR을 구현했다며 인용하였음
- 하이퍼 파라미터들 셋팅해야하는데, 자기들 맘대로 변수명을 써놨으면서 변수명이랑 표기한 수식이랑 다름
- 아니 그러면 각각이 무슨 역할 하는지 알 수가 없잖아요
- 이걸 사용하는 예시 코드도 찾기 힘들다. 하이퍼 파라미터 셋팅 참고하려고 했는데 ㄱ-
케라스에서도 같은 이름의 스케줄러가 있다는걸 얼핏 봄
실험
Model
- SlowFast
- 근데 공식코드 아니고 깃허브 딴데서 긁어옴. Non-Local Block 쓰지 않도록.
1. Base lr 0.1, restart=3으로 두고 실험.
=> 에폭마다 성능이 지 마음이다.
20% 30% 40% 다시 20% 이따구로 200에폭 내내 반복한다.
[2020/12/04] 연구팀 다른 분 : lr 너무 큰거 아니에요?
slowfast 논문은.. 더 크게.. 했는뎁...
암튼 일단 낮춰봄.
2. Base lr 0.01, restart=3으로 두고 실험.
현재 66에폭, 잘 돌아가고 있다.
성능이 오르락 내리락 큰 폭으로 하는건 같은데, 꾸준히 고점의 성능이 증가하는 모양새이다.
음, 적당한건 좋은데 너무 잘나오지는 말렴. 내 모델이 더 좋아야하니까.
[20201207] 추가
restart=3으로 하는 게 아니었다!
- restart는 에폭 횟수였음. 3개의 에폭마다 lr을 다시 끌어올리는 주기가 반복되는 것.
- 나는 200에폭을 돌렸으니 restart=5, 10 뭐 이런걸로 설정했어야한다.
- 아무튼 validation accuracy가 3에폭 주기로 오르락내리락 하는데, 이 스케줄러 조금 괜찮을 것 같다.
best accuracy만 보면 성능이 올랐다. 아마 restart만 잘 조정한다면 최종accuracy 기준으로도 괜찮겠지.
3. Base lr 0.01, restart=5으로 두고 실험.
이제 돌리러 가야지.
'AIML 분야 > 다른 연구 분야' 카테고리의 다른 글
[서베이 & ideation] Scene Text Recognition (OCR) + Visual Feature로 representation learning을 한다? (0) | 2022.10.06 |
---|---|
NVAE: A Deep Hierarchical Variational Autoencoder 읽기 (0) | 2021.03.10 |
Implicit Regularization in Tensor Factorization (0) | 2021.03.04 |
[20201223] Journal Club - DL based multi-organ segmentation (0) | 2020.12.23 |
Filter Response Normalization Layer (FRN) 논문 대략 읽기 (0) | 2020.12.17 |
댓글