dynamic-programming

2 개의 포스트

LLM 기반 여행 계획 최적화 (새 탭에서 열림)

대규모 언어 모델(LLM)은 사용자의 주관적인 취향과 정성적인 목표를 이해하는 데 탁월하지만, 개장 시간이나 이동 시간 같은 정량적인 제약 조건을 정밀하게 계산하는 데에는 한계가 있습니다. 이를 해결하기 위해 구글 리서치는 LLM이 초기 계획을 수립하고, 최적화 알고리즘이 실제 데이터를 기반으로 실행 가능성을 검증 및 조정하는 하이브리드 여행 계획 시스템을 개발했습니다. 이 시스템은 사용자의 의도를 최대한 반영하면서도 논리적으로 완벽한 일정을 생성하는 것을 목표로 합니다. **LLM과 최적화 알고리즘의 결합 구조** * 시스템은 먼저 제미나이(Gemini) 모델을 사용하여 사용자의 쿼리에 최적화된 초기 여행 계획을 생성하며, 여기에는 활동 목록, 권장 소요 시간, 중요도 등이 포함됩니다. * 생성된 초기 계획은 검색 백엔드를 통해 확보한 최신 영업시간 및 이동 시간 데이터와 결합되어 '그라운딩(Grounding)' 과정을 거칩니다. * LLM이 제안한 활동이 실행 불가능할 경우를 대비하여, 검색 시스템은 유사한 성격의 대체 활동들을 병렬적으로 추출하여 최적화 알고리즘에 전달합니다. **2단계 최적화 프로세스** * **일일 일정 최적화:** 첫 번째 단계에서는 개별 날짜 내의 활동 순서를 결정합니다. 동적 계획법(Dynamic Programming)을 활용하여 활동의 유사도와 실행 가능성을 점수화하며, 영업시간 미준수나 동선 오류가 있는 일정에는 0점을 부여하여 제외합니다. * **전체 일정 배분:** 두 번째 단계에서는 여러 날에 걸친 활동들이 겹치지 않도록 전체 경로를 구성합니다. 이는 컴퓨터 과학에서 '가중치 세트 패킹(Weighted Set Packing)' 문제로 분류되는 NP-완전(NP-complete) 문제로, 계산 복잡도가 매우 높습니다. * **지역 탐색 휴리스틱:** 복잡한 계산을 효율적으로 처리하기 위해 초기 일정에서 활동 위치를 조금씩 바꾸며 전체 점수를 높여가는 '지역 탐색 휴리스틱(Local search heuristics)'을 적용하여 최종 수렴된 최적의 일정을 도출합니다. **실제 적용 사례 및 효과** * **정성적 요구사항 충족:** "사람이 적고 덜 알려진 박물관"을 찾는 쿼리에서 일반 검색 시스템은 유명 박물관을 포함하는 오류를 범했으나, LLM 기반 시스템은 사용자의 의도를 정확히 파악하여 숨겨진 명소들로만 일정을 구성했습니다. * **물류적 실행 가능성 확보:** LLM이 샌프란시스코 여행 계획 시 도시를 가로지르는 비효율적인 동선을 제안하더라도, 최적화 알고리즘이 지리적 근접성을 고려하여 활동 순서를 재배치함으로써 현실적인 동선을 완성했습니다. 이러한 하이브리드 접근 방식은 AI의 유연한 이해 능력과 알고리즘의 엄격한 논리력을 결합하여 사용자에게 실질적으로 도움이 되는 도구를 제공합니다. 향후 이 기술은 여행 계획뿐만 아니라 복잡한 제약 조건이 얽힌 다양한 스케줄링 및 물류 최적화 분야에 광범위하게 활용될 수 있을 것으로 기대됩니다.

Piecewise regression: When one line simply isn’t enough (새 탭에서 열림)

데이터독(Datadog)은 단일 선형 회귀로 설명하기 어려운 복잡한 시계열 데이터를 효과적으로 모델링하기 위해 자동화된 분절 회귀(Piecewise Regression) 알고리즘을 도입했습니다. 이 알고리즘은 수동 개입 없이 데이터의 추세가 변하는 분절점(Breakpoint)과 최적의 구간 개수를 스스로 찾아내며, 수많은 시계열 데이터를 초당 수백 건씩 처리할 수 있는 효율성을 갖추고 있습니다. 결과적으로 모델의 오차를 최소화하면서도 불필요하게 많은 구간을 생성하지 않는 균형 잡힌 데이터 해석을 가능하게 합니다. **자동화된 분절 회귀의 목표** * **분절점 및 구간 개수 자동 탐색:** 사람이 직접 추세가 변하는 지점을 지정할 수 없으므로, 알고리즘이 스스로 최적의 분절 위치와 데이터에 적합한 구간의 개수(1개부터 n개까지)를 결정해야 합니다. * **연속성 제약 배제:** 각 구간의 끝점과 다음 구간의 시작점이 반드시 연결되어야 한다는 제약을 두지 않음으로써 모델링의 유연성을 확보했습니다. * **확장성 확보:** 대규모 시계열 데이터 세트에서 실시간에 가까운 속도로 회귀 분석을 수행할 수 있어야 합니다. **최적 모델 탐색의 과제** * **탐색 공간의 복잡성:** 시계열을 구간으로 나누는 모든 경우의 수를 계산하는 것은 지수 함수적으로 비용이 증가하며, 동적 계획법(Dynamic Programming)조차 실무에서는 너무 느릴 수 있습니다. * **오차와 단순함의 균형:** 구간이 많아질수록 오차는 줄어들지만 과적합(Overfitting) 위험이 커지며, 구간이 너무 적으면 데이터의 유의미한 변화를 포착하지 못하는 상충 관계를 해결해야 합니다. **그리디(Greedy) 알고리즘 기반의 해결책** * **초기 상태 설정:** 먼저 전체 데이터 포인트($n$)를 $n/2$개의 아주 작은 구간으로 나누어 최소자승법(OLS) 회귀를 수행합니다. 이 단계는 오차는 거의 없지만 극도로 과적합된 상태에서 시작합니다. * **반복적 병합:** 인접한 두 구간을 하나로 합쳤을 때 전체 오차 증가량이 가장 적은 쌍을 찾아 하나로 병합합니다. 이 과정을 데이터가 단 하나의 구간이 될 때까지 반복합니다. * **상태 저장:** 병합 과정 중 특정 '중단 기준'을 만족하기 직전의 상태들을 기록해 두었다가, 최종적으로 가장 적절하다고 판단되는 시점의 모델을 선택합니다. **중단 기준(Stopping Criteria) 및 최적화** * **상대적 오차 증가량 감시:** 현재 병합으로 인한 오차 증가량이 이전의 어떤 병합보다도 클 때를 잠재적인 중단 시점으로 고려합니다. * **3% 임계값 적용:** 데이터가 원래 하나의 직선에 가까운 경우 너무 일찍 병합을 멈추는 것을 방지하기 위해, 병합으로 인한 오차 증가가 전체 단일 회귀 오차의 3% 미만일 때는 병합을 계속 진행하도록 설계되었습니다. * **최종 모델 선택:** 위 기준들을 바탕으로 급격한 오차 상승이 발생하기 직전, 즉 데이터의 특징을 가장 잘 설명하면서도 일반화된 상태의 구간 구조를 최종 결과물로 반환합니다. 이러한 탐욕적 병합 방식은 계산 복잡도를 낮추면서도 실무에서 신뢰할 수 있는 수준의 시계열 추세 분석을 제공하며, 특히 데이터의 급격한 변화나 패턴 전환을 자동으로 감지해야 하는 모니터링 시스템에 매우 적합합니다.