2024년 5월 15일 모빌아이 블로그에 올라온 글을 살펴봅니다.
모빌아이 블로그에 인상적인 글이 올라왔습니다. 모빌아이는 세계 최고 수준의 자율주행 기술을 개발하고 있습니다. 인텔의 자회사이며, 이스라엘에 위치합니다. 과거 테슬라의 자율주행 파트너였고, 현재 다수의 완성차 회사와 ADAS, 자율주행 솔루션을 개발하고 있습니다. 과거 자율주행 레벨 1 수준에서도 모빌아이는 세계 최고수준으로 평가받았습니다. 최근 자율주행 회의론과 재고 증가로 주가 폭락을 겪고 있지만 모든 면에서 업계 최고 수준의 회사임은 틀림 없습니다. 모빌아이가 힘들면 다른 회사는 더 힘들다는 뜻이겠죠. 지금이 자율주행의 겨울이라고 생각됩니다. 자율주행의 다층 퍼셉트론격 이론이 등장한다면 그 주인공은 모빌아이가 아닐까요?
업계 최고의 회사인 만큼 모빌아이 연구자들의 시각이 트렌드를 선도하는 경우가 많습니다. 이 글도 그런 사례가 아닐까 싶네요. 이 글은 자율주행 시스템을 기반으로 쓰여졌지만 대부분의 AI 모델이 비슷한 경로를 따를 것이라는 점에서 잘 살펴봐야겠습니다.
Monolithic Systems VS. Compound AI Systems(CAIS)
우선 LLM과 자율주행에서 과거와 현재의 시스템이 어떻게 데이터를 처리하는지, 그 시스템을 어떻게 부르는 지 알아보겠습니다.
초기 ChatGPT(3.5)와 테슬라의 FSD 시스템은 데이터 입력부터 결과 출력까지 단일 모델이 모든 과정을 처리합니다. 즉 광자가 센서를 때릴 때 부터 조향 판단까지 End-To-End(E2E) 신경망으로 연결되는 것이죠. 이를 'Monolithic Systems'라고 합니다.
하지만 최신 ChatGPT(4o)는 계산을 위해 파이썬 스크립트를 사용하고, 결과를 자연어로 변환합니다. 즉 각각의 모듈이 특정 역할을 수행하며 'Glue Code'로 연결되는 것입니다. 이를 'Compound AI Systems(CAIS)'라고 합니다.
간단한 예를 살펴볼까요?
3566*3566=12,716,356입니다. 에니악은 물론 암산으로도 가능한 사칙연산입니다.
하지만 초기 ChatGPT는 틀린 답을 내놓습니다. 당시 ChatGPT는 결국 State Machine에 불과하기 때문에 해결에 여러 단계가 필요한 연산을 처리하지 못했습니다.
하지만 ChatGPT 최신 모델은 (4o) 먼저 질문을 짧은 파이썬 스크립트로 변환하고 계산을 수행 후, 스크립트의 출력을 자연어로 출력합니다. 과거 모델과 달리 개별 모듈을 사용하고, 각 하위 시스템 간 통신을 원활히 하는 'Glue Code'가 사용되는 것입니다.
그리고 이를 '복합 AI 시스템, Compound AI System, CAIS'라고 합니다. CAIS는 새로운 접근 방식은 아니지만 가장 최신 버전의 ChatGPT에서 사용되고 있습니다.
Bias-Variance Trade-Off, 편향-분산 상충관계
이제 통계학과 머신러닝에서의 Bias-Variance Trade-Off와 연관지어 E2E와 CAIS 간의 차이를 살펴보겠습니다.
편향-분산 트레이드오프는 머신러닝에서 모델의 복잡성-에러(오차) 간의 상충관계, 균형을 설명하는 개념입니다. Bias와 Variance는 통계학도라면 4년 내내 지겹도록 들어왔을 개념이지만 어느새 가물가물하므로 다시 한 번 정리하자면,
Bias(편향)은 모델의 예측과 실제 값 간 차이를 나타내는 에러입니다. 모델이 간단하거나 Under Fitting 되었을 때 발생하는 에러로, 예측값이 실제 값 주변에서 일관적으로 편향되어 있을 수 있습니다. 편향값이 높으면 데이터의 패턴을 충분히 학습하지 못해 단순한 예측을 합니다.
Variance(분산)은 모델의 예측이 훈련 데이터에 대해 민감하게 변하는 정도를 나타냅니다. 모델이 복잡하고 Over Fitting 되었을 때 발생하는 에러로, 훈련 데이터에 존재하는 노이즈까지 학습해 새로운 데이터에 대한 예측이 불안정해질 수 있습니다.
그 관계를 정리하면 아래와 같습니다.
모델 복잡성 ↑, 편향 ↓, 분산 ↑
모델 복잡성 ↓, 편향 ↑, 분산 ↓
참고로 모델이 복잡하다는 것은, 모델이 더 많은 파라미터를 가지며 데이터의 미세한 패턴까지 학습할 수 있다는 뜻입니다.
좋은 머신러닝 모델은 그 복잡성을 적절히 조절해 편향과 분산 사이의 균형을 찾아야 합니다. 이를 통해 언더피팅과 오버피팅 사이의 균형을 유지하고 새로운 데이터에 대한 예측의 정확성과 일반화 능력을 극대화합니다.
다시 편향-분산 균형 이슈로 돌아옵니다. '근사치 오류'라고도 하는 편향은 모델이 현실의 완전한 다양성을 온전히 반영하지 못한다는 것을 의미합니다. 그리고 '일빈화 오류'라고도 하는 분산은 모델이 관찰된 데이터에 과적합하고 새로운 데이터에 일반화하지 못하는 것을 의미합니다.
모델의 총 에러는 근사 에러와 일반화 에러의 합이므로 충분히 작은 에러에 도달하려면 두 오차를 모두 섬세하게 제어해야 합니다. 학습된 모델을 특정 모델군에서 가져오도록 제한하여 일반화 오차를 줄일 수 있지만, 선택한 모델군이 현실의 완전한 다양성을 충분히 반영하지 못할 경우 편향이 발생할 수 있으므로 두 개념 사이에는 상충관계가 있습니다.
이런 배경을 바탕으로, 자율주행 시스템을 구성하는 두 접근 방식을 공식화 할 수 있습니다.
CAIS의 경우, 일반화 오류를 줄이기 위해 의도적으로 자율주행 시스템에 구조적 제한을 가합니다. 이로 인해 약간의 편향이 발생합니다.
예를 들어, '광자(Photon)'에서 차량을 둘러싼 현실 모델인 'Sensing State(위치, 측정값, 도로 구조물, 운전 가능한 경로, 장애물 등 = FSD 이용 차량 혹은 현대기아 HDA 작동 시 디스플레이에 나타나는 화면을 생각하면 됩니다.)'로 이동하고 거기서 제어 결정을 내릴 때 편향(bias)이 발생합니다. 이 편향이 발생하는 이유는 Sensing State가 현실을 최대한 반영하기에 충분히 풍부하지 않을 수 있으므로(본문에서는 "sensing state might not be rich enough to reflect reality to its fullest" 라고 표현합니다.) 시스템의 용량이 제한되기 때문입니다. 즉 모델의 복잡도를 상대적으로 낮게 가져간다는 의미입니다.
E2E의 경우, Sensing State를 건너뛰고 대신 들어오는 비디오를 차량 제어 결정에 직접 매핑하므로 앞서 언급한 'Sensing State Abstraction'이 발생하지 않습니다. E2E는 일반화 오류가 더 크기 때문에 이 단점을 방대한 양의 데이터로 보완합니다. 때문에 이 방식은 컴퓨팅 파워와 스토리지에 많은 비용이 필요합니다. 즉 모델의 복잡도가 상대적으로 높다는 의미입니다.
정리하자면, E2E 방식은 모든 코너케이스를 점진적으로 제거할 목적으로 시스템 학습을 위한 대량의 데이터를 통해 편차를 줄이며 편향이 없는 시스템을 정의합니다. CAIS 방식은 Sensing State 및 Driving Policy의 추상화(abstraction)로 인해 시스템이 내장된 편향(built-in bias)을 갖고 출발합니다. 적은 데이터를 사용하니 모델 복잡도가 줄어들면서 편향이 발생할 수 밖에 없겠죠. 그러면서 높은 수준의 퓨전 Glue Code를 사용해 별도의 하위 시스템에 공급되는 데이터를 통해 분산(variance)를 줄입니다. 이 시스템의 각 하위 시스템에 필요한 데이터의 양은 E2E 방식(= Monolithic systems)에 필요한 데이터의 양보다 현저히 적습니다.
다시 말하면, E2E 방식은 데이터 양으로 일반화 오류를 줄이려 하지만 대규모 데이터와 컴퓨팅 자원이 필요합니다. CAIS 방식은 시스템 아키텍쳐에 제한을 가하고 sensing state와 개별 하위 시스템 간 고차원 데이터 융합을 통해 일반화 오류를 줄이지만 이에 따른 편향이 존재합니다.
악마는 디테일에 있다
편향(bias) 측면을 먼저 살펴봅시다.
그렇다고 E2E 방식에 편향이 없는 것은 아닙니다. 신경망은 자동차의 온보드 컴퓨터에 상주하기 때문에 임베디드 컴퓨팅이 갖는 단점을 마찬가지로 가질 수 밖에 없습니다. 컴퓨팅 자원과 스토리지가 제한되기 때문입니다. 이는 E2E 방식에 편향이 발생하는 이유가 됩니다.
그리고 잘 설계된 CAIS 방식의 근사 에러는 과도하게 크지 않습니다. (= 즉 모델이 현실의 완전한 다양성을 생각보다 잘 반영합니다.) Waymo가 그 예시입니다. Waymo가 정확히 어떤 방법을 사용해 편향을 줄이는 지는 설명되어있지 않아 더 알아봐야겠네요. 아무튼 잘 설계된 CAIS 방식의 경우 몇 추상화를 스킵하는 방법으로 편향을 더욱 줄일 수 있다고 합니다. 예를 들어, Sensing State Abstraction을 건너 뛰는 것입니다.
이제 분산(variance) 측면입니다.
앞서 CAIS 방식에서 추상화와 여러 하위 시스템의 고차원 데이터 융합을 통해 분산을 줄인다고 했습니다. 그리고 E2E 방식은 더 많은 데이터를 통해 분산을 줄인다고도 했습니다. 하지만 이 과정은 좀 더 면밀히 살펴볼 필요가 있습니다.
'Mean Time Between Failures(MTBF)' 개념을 가져오겠습니다. 통계학도라면 익숙한 포아송 분포를 통해 계산되는 개념입니다. 이는 시스템 또는 구성 요소가 고장나기까지 작동하는 평균 시간을 나타냅니다. 시스템의 안전성을 측정하기 위해 사용됩니다. (Eyes-Off 방식의 자율주행 시스템에서 고장은 운전자가 개입해야 하는 상황, Critical Intervention을 의미합니다.)
모빌아이가 완성차 업체와 맺은 계약에서 MTBF 목표는 107시간의 주행입니다.
참고로, 테슬라의 최신 FSD V12.3.6에 대한 공개 데이터4에 따르면 약 300마일(480km)마다 치명적 간섭(Critical Intervention = 운전자가 개입해야 하는 상황)이 발생합니다. MTBF로 환산하면 약 10시간의 주행 당 치명적 간섭이 발생하는 것입니다. 이는 모빌아이의 목표인 107시간의 10배에 달하는 수치입니다. 10시간마다 운전자가 개입해야 하는 자율주행 시스템을 8,000달러에 팔아먹는 테슬라의 위대함을 다시 한 번 느낄 수 있네요. 그나마도 최근 12,000달러에서 8,000달러로 인하한 가격입니다.
아무튼, MTBF를 106시간까지 도달하는 데 성공했고 107시간에 도달하고 싶다고 합시다. 얼마나 많은 데이터를 수집해야 할까요?
롱테일의 특성을 가져와야 합니다. 롱테일이란 파레토 분포에서 대부분의 사건이 중심에 위치해있고 극단적인 사건들이 드물게 긴 꼬리, 롱테일에 위치해있다 하여 생긴 개념입니다. 구체적으로 도로에 매일 한 시간씩 운행되는 차량이 100만 대이고 문제의 데이터가 이벤트 기반(즉, 운전자의 개입 = critical intervention 이 발생하면 이벤트 전후의 일정 시간을 기록해 추가 훈련을 위해 완성차 업체에 전송하는 방식, Dash Cam 블랙박스의 충격 녹화 등과 비슷한 개념)이라고 가정하겠습니다. 이벤트는 '코너 케이스'이고 롱테일의 문제는 이 코너 케이스가 어떻게 분포되는가 하는 것입니다.
B = Set of bad corner cases 인 시나리오를 사용하겠습니다. Heavy tail distribution으로 B = {b_1,...,b_{1000}} 이고 b_i가 발생할 확률이 i마다 10^-9인 경우입니다. (= 0.000000001) 참고로 무거운 꼬리 분포는 비가우시안 분포 중 극단값이 발생할 확률이 매우 높고, 이상치가 더 자주 발생하는 경우를 말합니다.
코너 케이스가 발견되면 신경망을 재훈련하고 새로운 코너 케이스를 만들지 않고 해당 코너 케이스를 수정할 수 있다고 가정하더라도, P(B)= 10^-7 (= 0.0000001) 이 되도록 약 900개의 코너 케이스를 없애야 합니다. MTBF가 106이므로 하루에 하나의 코너 케이스가 발생합니다. 이 작업을 완료하려면 3년이 필요합니다. 이 페이스로 안전한 자율주행을 개발하려면 우리 세대 내에는 불가능할 겁니다.
중요한 점은, 롱테일이 어떻게 구조화되는지 아무도 모른다는 것입니다. 앞서 제시한 케이스보다 더 좋을 수도, 더 나쁠 수도 있습니다. 사실 많이 좋아져 봐야 희망적인 숫자가 보이진 않습니다.
이렇듯, CAIS 방식이 안전한 자율주행을 만드는 데 충분하다는 선례는 존재하지만 (Waymo를 말합니다.) 반복 데이터 엔진만으로 편차(variance)를 줄이는 것이 안전한 자율주행을 만든다는 선례는 아직 없습니다.
따라서 E2E 방식의 데이터 파이프라인을 고수하는 것은 위험하고 무모할 수 있습니다.
분산을 줄이기 위해 E2E 방식에서 무엇을 더 해야할까?
이를 이해하기 위해 두 가지 질문을 고찰해보겠습니다.
1.
테슬라 FSD의 디스플레이에 왜 Sensing State가 있을까요?
E2E 방식은 '광자에서 제어로' 바로 직행하며, sensing state를 만들 필요 자체를 생략합니다.
그런데 왜 sensing state를 표시해줄까요?
그저 운전자에게 '시스템이 보는 것'을 알리기 위해서만 존재하는 것일까요?
혹은 다른 은밀한 목적이 있을까요?
2.
테슬라가 Luminar로부터 2,000개의 라이다를 구매한 이유는 무엇일까요?
아마 지도학습(Supervised Learning)을 위한 실측 데이터(Ground Truth, GT)를 생성하기 위한 것으로 추정됩니다.
그런데 그 이유는 무엇일까요?
이 두 질문은 서로 관련이 있습니다.
백본과 두 개의 헤드로 구성된 E2E 신경망을 생각해봅시다. (하나는 차량 제어 출력용, 하나는 sensing state 출력용.)
'Computer Vision' 카테고리의 다른 글
대형차의 위험에 대비할 수 있도록 업데이트된 테슬라 FSD 11.4.9 (0) | 2024.02.14 |
---|---|
Convex Optimization 이란 무엇인가? (0) | 2024.01.20 |
3D Gaussian Splatting이란? 볼륨 렌더링과 스플래팅 개념 중심으로 (0) | 2024.01.12 |
3D Gaussian Splatting 이란 무엇인가? (0) | 2024.01.11 |
Matrix Decomposition, 행렬 분해란 무엇인가? (1) | 2024.01.07 |