공짜 데이터를 실시간 생성
작은 dataset 을 키우는 가장 싼 방법 — 사진을 더 모으는 대신, 매 epoch 마다 각 사진을 살짝 다르게 (뒤집고, 돌리고, 줌하고, 색 바꿔) 보여줘. 모델이 똑같은 입력을 두 번 못 봐서 training set 을 통째로 외우질 못해. 대신 네가 진짜 원하는 invariance 를 배우게 강제돼 — 고양이는 좀 기울어져도, 밝아져도, 가운데서 벗어나도 여전히 고양이.
학습 때 ON, inference 때 OFF
꼭 몸에 새길 동작 — Random* layer 는 training=True 일 때만 발동해. fit() 중엔 랜덤성을 주입하고, predict() / evaluate() 때는 입력을 손 안 대고 그대로 통과시켜. 정확히 원하는 거야 — augmentation 은 *학습* 을 어렵게 만들려는 거지, 채점할 이미지를 어지럽히려는 게 아니거든. 그냥 layer 라서 따로 Sequential block 에 쌓아서 아무 model 에나 끼워넣을 수 있어.
강도는 데이터에 맞춰
만능 설정 같은 건 없어. 약하게 시작 (rotation 0.05, zoom 0.05), validation accuracy 오르는 거 보면서 점점 세게. 실패 모드는 over-augmentation — 변형이 너무 과해서 *training* accuracy 마저 정체되면, 모델이 못 배울 만큼 task 를 어렵게 만든 거야. 물러나. 현실에도 맞춰 — RandomFlip("horizontal") 은 고양이엔 좋아도 손글씨 숫자엔 틀려 (뒤집힌 2 는 2 가 아니니까).