Python을 활용한 천체물리학 및 AI: Kepler 데이터와 Vision Transformers를 이용한 Earth 2.0 탐사
요약
Kepler 우주 망원경의 광도 데이터를 활용하여 외계 행성을 식별하는 AI 분류기 구축 방법을 다룹니다. Python과 1D Vision Transformers를 사용하여 시계열 데이터 내의 미세한 행성 횡단 신호를 노이즈로부터 분리하는 과정을 설명합니다.
핵심 포인트
- Kepler 데이터를 활용한 시계열 기반 외계 행성 분류 모델 구축
- 1D Vision Transformers를 이용한 천체물리학적 신호 분석
- 위상 접기(Phase Folding) 기술을 통한 주기적 신호 증폭 및 노이즈 상쇄
- 항성 플레어 및 도구적 노이즈 등 위양성(False Positive) 문제 해결의 중요성
또 다른 지구를 찾는 일은 단순히 망원경을 가진 천문학자들만의 업무가 아닙니다. 이는 데이터 과학자 (Data Scientist)의 날카로운 지성이 필요한 거대한 데이터 도전 과제입니다. Kepler 우주 망원경이 2009년 임무를 시작한 이후, 우리는 드물고 수동적인 발견의 시대에서 페타바이트 단위의 데이터 범람 시대로 전환되었습니다. Kepler는 15만 개의 별을 동시에 관측하며 산더로미 같은 광도 데이터 (photometric data)를 생성했습니다.
이제 과제는 데이터를 '찾는' 것이 아니라, 데이터를 '분류하는' 것입니다. 수십억 개의 신호 중에서 어떻게 도구적 노이즈 (instrumental noise), 항성 플레어 (stellar flares), 또는 복잡한 천체물리학적 허위 양성 (astrophysical false positives)으로부터 실제 거주 가능한 구역의 행성을 구별해낼 수 있을까요?
우리의 캡스톤 프로젝트 (capstone project)의 이번 장에서는 **AI 외계 행성 사냥꾼 (AI Exoplanet Hunter)**을 구축할 것입니다. 우리는 Python, 시계열 분석 (time-series analysis), 그리고 최첨단 1D Vision Transformers를 활용하여 Kepler 데이터에서 행성을 식별할 수 있는 강력한 분류기 (classifier)를 구축할 것입니다.
도전 과제: 우주의 건초더미에서 바늘 찾기
AI 솔루션을 이해하기 위해서는 먼저 물리학과 노이즈를 이해해야 합니다.
횡단 방식 (Transit Method) & 보안 카메라 비유
Kepler는 횡단 광도 측정 (Transit Photometry) 방식을 사용합니다. 4년 동안 15만 개의 상점 창문(별)을 향해 설치된 거대한 보안 카메라 시스템을 상상해 보세요.
- 별 (The Star): 끊임없이 빛이 들어오는 창문.
- 광도 곡선 (The Light Curve): 시간에 따른 밝기를 기록하는 비디오 피드.
- 행성 횡단 (The Planet Transit): 사람이 창문 앞을 잠시 지나가면서 밝기가 아주 미세하게 떨어지는 현상 (종종 단 0.01%에서 1%에 불과함).
- 노이즈 (The Noise): 그림자 (항성 흑점, starspots), 반사 (도구적 드리프트, instrumental drift), 그리고 새 (항성 플레어, stellar flares).
원시 데이터는 플럭스 (flux) 측정값의 **시계열 (Time Series)**입니다. 이는 본질적으로 노이즈가 많습니다. 실제 신호는 노이즈 바닥 (noise floor) 깊숙이 묻혀 있습니다.
위상 접기 (Phase Folding): 신호 증폭기
원시 광도 곡선은 혼란스럽습니다. 미세하고 주기적인 횡단 신호를 가시화하기 위해, 우리는 **위상 접기 (Phase Folding)**라고 불리는 기술을 사용합니다.
행성은 주기적으로 궤도를 돕니다. 만약 오늘 횡단 (transit)이 발생했다면, 정확히 한 공전 주기 (P) 후에 다시 발생합니다. 위상 접기 (Phase folding)는 P를 "접는 길이 (wrapping length)"로 사용하여 수년에 걸친 전체 광도 곡선 (light curve)을 수학적으로 자기 자신에게 겹쳐 놓습니다.
Phase = (t - T0) / P (mod 1)
만약 주기를 정확하게 추측한다면, 개별적인 모든 횡단 저하 (transit dips)가 완벽하게 정렬되어 신호는 강화되고 무작위 노이즈 (random noise)는 평균화되어 상쇄됩니다. 그 결과, 횡단이 위상 0을 중심으로 날카로운 U자형 골 (U-shaped trough)로 나타나는 단일화된 정규화 곡선 (normalized curve)이 만들어집니다.
위양성(False Positive)의 난제
위상 접기를 사용하더라도, AI는 "위양성 (False Positive)" 문제를 해결해야 합니다. 다음 세 가지 주요 신호 유형이 모델을 혼란스럽게 만듭니다.
- 진성 외계행성 (True Exoplanets, TPE): 얕은 U자형 저하.
- 식쌍성 (Eclipsing Binary Stars, EB): 서로를 공전하는 두 개의 별. 이들은 깊은 저하와 뚜렷한 이차 식 (secondary eclipse) (작은 별이 큰 별 뒤로 지나갈 때)을 생성합니다.
- 배경 식쌍성 (Background Eclipsing Binaries, BEB): 가장 위험한 위양성. 멀리 떨어진 쌍성이 목표 별의 빛에 의해 희석되기 때문에 얕은 행성 횡단처럼 보입니다.
AI가 성공하기 위해서는 저하의 형태학 (morphology) (모양)을 살펴봐야 합니다.
AI 솔루션: 1D Vision Transformers
역사적으로 우리는 단순한 통계나 CNN을 사용해 왔습니다. 하지만 CNN은 주 저하 (primary dip)에서 멀리 떨어진 희미한 이차 식을 포착하는 것과 같은 장기 의존성 (long-range dependencies) 문제를 겪습니다.
여기에서 **Vision Transformers (ViTs)**가 등장합니다. 우리가 NLP에서 Transformer를 탐구한 적이 있지만 (Book 12), 자기 주의 집중 (Self-Attention) 메커니즘은 1D 시계열 데이터 (time-series data)로 완벽하게 전이될 수 있습니다.
우리는 위상 접기된 광도 곡선을 하나의 "문장"으로 취급합니다. Transformer는 시퀀스의 모든 지점이 다른 모든 지점과 상호작용할 수 있게 합니다. 이를 통해 모델은 다음과 같은 전역적 구조 (global structure)를 학습합니다.
- "이것은 U자형(행성)인가, 아니면 V자형(쌍성)인가?"
- "위상 0.5에 이차 저하가 존재하는가?"
이는 단순히 더 높은 정확도를 제공할 뿐만 아니라, 어텐션 맵 (attention maps)을 통해 AI가 광도 곡선의 정확히 어느 부분을 "보고" 있는지 보여줌으로써 **해석 가능성 (interpretability)**을 제공합니다.
Python 구현: 데이터 수집 및 정제 (Data Acquisition & Cleaning)
Transformer를 학습시키기 전에, 먼저 데이터를 수집하고 정제해야 합니다. 우리는 Kepler/TESS 데이터의 표준 툴킷인 lightkurve 라이브러리를 사용할 것입니다.
파트 1: 데이터 로딩 및 정규화 (Data Loading and Normalization)
이 스크립트는 원시 데이터(raw data)를 로드하고, 품질이 낮은 플래그(bad quality flags)를 제거하며, 트랜싯 신호(transit signal)를 분리하기 위해 광도 곡선(light curve)의 추세(detrend)를 제거하는 방법을 보여줍니다.
import numpy as np
import pandas as pd
import lightkurve as lk
...
파트 2: 프로덕션 환경에서의 안전한 데이터 접근 (Secure Data Access in Production)
Jupyter Notebook에서 프로덕션 파이프라인(production pipeline)으로 전환할 때는 API 키를 하드코딩(hardcode)할 수 없습니다. 우리는 자격 증명(credentials)을 안전하게 관리하기 위해 **환경 변수 (Environment Variables)**를 사용합니다. 이 스크립트는 보안 토큰을 사용하여 데이터를 가져오는 전문적인 워크플로우를 시뮬레이션합니다.
import os
import lightkurve as lk
import logging
...
결론 (Conclusion)
강력한 데이터 파이프라인을 1D Vision Transformers와 같은 고급 딥러닝 (Deep Learning) 아키텍처와 결합함으로써, 우리는 외계 행성 탐사를 자동화할 수 있습니다. 이러한 접근 방식은 단순한 신호 탐지를 넘어 항성 이벤트(stellar events)의 복잡한 형태학 (morphology)을 이해하는 단계로 나아가며, AI가 새로운 지구와 쌍성(binary star)의 그림자를 효과적으로 구분하도록 학습시킵니다.
함께 논의해 봅시다
- 형태학 (Morphology) vs. 지표 (Metrics): 복잡한 위양성 (false positives)을 탐지하는 데 있어, 신호의 "모양"을 이해하는 Transformer의 능력이 전통적인 통계적 지표(예: 트랜싯 깊이)보다 더 가치 있다고 생각하시나요?
- 데이터 보안 (Data Security): 여러분의 데이터 과학 프로젝트에서는 민감한 API 키를 처리하기 위해 환경 변수나 구성 관리 (configuration management)를 어떻게 구현하셨나요?
os.environ.get()만으로 충분하다고 느끼셨나요, 아니면python-dotenv와 같은 다른 도구를 사용하시나요?
여기서 시연된 개념과 코드는 전자책인 Astrophysics & AI: Building Research Agents for Astronomy, Cosmology, and SETI에 제시된 포괄적인 로드맵에서 직접 가져온 것입니다. 해당 전자책은 여기에서 확인하실 수 있습니다. Python, TypeScript, Swift, C#을 활용한 다른 50권의 Programming & AI 전자책은 여기에서 확인해 보세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기