기술 회고

[기술 회고] 데이터 부족 환경에서의 LSTM 진행 예측

sybear02 2026. 7. 27. 13:36

데이터 부족 환경에서의 LSTM 진행 예측

이 글은 현장실습에서 실측 시계열이 거의 없는 상태로 진행 예측을 붙이려 했을 때, LSTM을 어떻게 다뤘는지 정리한 기술 회고다. Segmentation·라벨링·규칙 엔진 본편은 별도 글로 분리해 두었고, 여기에서는 시계열·LSTM 쪽만 남긴다.

프로젝트와 동작 원리

파이프라인 후단에는 “지금 관측된 상태”뿐 아니라, 이후 어떻게 진행될지를 보조로 보는 구간이 있었다. 이미지·속성 쪽 모델이 fact를 뽑고 규칙 엔진이 해석한 뒤, 시계열이 있으면 LSTM으로 진행을 예측하는 흐름을 염두에 두었다.

LSTM은 이전 시점의 상태를 기억해 다음 구간을 추정하는 시계열 모델이다. 다만 학습·검증이 되려면 시간 축이 있는 실측 시퀀스가 필요하다. 이번 구간의 병목도 모델 구조보다, 그 시퀀스 데이터가 거의 없다는 점이었다.

무엇이 문제였나

진행 예측을 LSTM으로 붙이려 해도, 쓸 만한 실측 시계열 데이터셋이 거의 없었다. 하이퍼파라미터를 만져도 진도가 나기 어려웠고, “모델이 안 된다”고만 보면 다음이 막혔다. 실제로 막혀 있던 지점은 학습·검증 가능한 형태의 시계열이 없다는 점이었다.

정답이 부족한 구간을 사람이 보완할 수는 있었지만, 그것으로 곧바로 현업 성능을 주장하기는 어려웠다. 데이터가 없으면 실험이 안 되고, 시뮬레이션만으로 숫자를 올리면 검증의 의미가 흐려진다. 그래서 “파이프가 도는지”와 “현장 성능을 보장하는지”를 처음부터 분리해서 봐야 했다.

실제로 어떻게 우회·구성했나

시뮬레이션으로 학습 루프부터 열기

실측이 부족한 상태에서는 진행 규칙을 가정한 시뮬레이션 데이터 생성 스크립트를 먼저 만들었다. 목적은 현업 정확도 확정이 아니라, LSTM 학습·테스트 코드가 입력부터 출력까지 한 바퀴 도는지 확인하는 것이었다. 시퀀스 길이, 배치, train/test 진입점을 고정해 두고, 데이터가 나중에 들어와도 같은 파이프에 꽂을 수 있게 준비하는 쪽에 가깝다.

LSTM 학습·테스트 코드

시뮬레이션 시퀀스를 입력으로 LSTM 기반 진행 예측의 학습/테스트 코드를 구성했다. 실측이 충분해지기 전에는 이 코드를 “성능 경쟁용”이 아니라 “시계열 모듈의 인터페이스와 실패 지점을 드러내는 장치”로 봤다. 입력이 비거나 길이가 짧을 때, 예측 결과를 후속 리포트에 어떻게 넘길지 같은 연결 이슈가 모델 자체보다 먼저 보였다.

한계를 지표처럼 다루기

시뮬레이션으로 맞춘 수치는 현업 성능을 대신하지 않는다. 그래서 정량 검증이 어렵다는 한계를 문서에 명시해 두고, 데모·통합 검증과 성능 주장을 구분했다. 데이터가 부족한 구간에서 할 수 있는 일은 “완벽한 예측기”를 만드는 것이 아니라, 나중에 실측이 쌓였을 때 바로 학습을 이어갈 수 있는 자리를 남겨 두는 일이었다.

정답이 비는 구간은 사람이 진행 예상 영역을 표시해 보완하는 보조 도구와도 맞춰 두었다. 자동 예측을 대체한다기보다, 라벨이 없는 상태를 방치하지 않기 위한 우회였다.

정리

데이터 부족 환경에서 LSTM으로 한 일의 핵심은 화려한 시계열 아키텍처가 아니었다. 실측이 없으니 시뮬레이션으로 학습 루프를 열고, LSTM 학습/테스트 코드를 파이프라인에 붙일 수 있게 준비했으며, “파이프 동작”과 “현업 성능 보장”을 섞지 않으려 했다. 모델이 안 된다고 멈추기보다, 학습 가능한 시퀀스가 없다는 문제 정의로 바꾼 경험이 남았다.

다음에 다시 한다면 실측 시계열 스키마와 최소 샘플 수, 시뮬레이션 가정의 문서화를 더 먼저 두고, 실측이 들어오는 순간 train/valid 분할 기준을 바로 적용할 수 있게 체크리스트로 남겨 두고 싶다.

관련 경험 시기: 모바일앱개발협동조합 현장실습 (2025.09~12)
같이 보면 좋은 글: 현장실습 다중 모델 파이프라인과 규칙 기반 후속 추론 / 현장실습 라벨링 도구 제작과 마스크 데이터 파이프라인