기존 이미지에서 새로운 학습 사례 만들기
작은 데이터셋을 보완하는 경제적인 방법은 사진을 더 모으는 대신 매 에포크마다 조금씩 다른 모습으로 보여 주는 거야. 뒤집기, 회전, 확대, 색 변화가 반복될 때 모델은 같은 입력을 그대로 외우기 어려워지고, 과제에 필요한 불변성을 배우게 돼. 고양이는 조금 기울거나 밝기가 달라지고 중앙에서 벗어나도 여전히 고양이라는 사실 말이야.
학습할 때만 켜지고 추론할 때는 꺼져
Random* 레이어는 training=True일 때만 무작위 변환을 적용해. fit() 중에는 입력을 다양하게 만들지만 predict()와 evaluate()에서는 원본을 그대로 통과시켜. 증강의 목적은 학습 과제를 어렵게 만드는 것이지 평가 입력을 흔드는 것이 아니기 때문이야. 일반 레이어처럼 별도의 Sequential 블록에 쌓아 어떤 모델에도 붙일 수 있어.
변형 강도는 데이터의 의미에 맞춰
모든 과제에 통하는 설정은 없어. 회전 0.05, 확대 0.05처럼 약하게 시작하고 검증 정확도를 보며 점차 높여. 변형이 지나쳐 학습 정확도까지 정체되면 모델이 배울 수 없을 만큼 과제를 어렵게 만든 거야. 실제 세계에서 의미가 보존되는지도 확인해야 해. RandomFlip("horizontal")은 고양이 사진에는 알맞지만, 뒤집힌 2를 같은 숫자로 볼 수 없는 손글씨 숫자에는 맞지 않아.