REACT, 바다의 pH를 탄소부터 다시 쌓아 올린 복원
희박한 관측에서 표층 pH를 복원할 때 왜 직접 예측이 화학을 깨뜨리는지, 그리고 REACT가 수송과 보정과 화학 디코딩을 나눠 14.7퍼센트와 24.0퍼센트 개선을 만든 과정을 따라갑니다.
원문 논문 보기
arXiv에 공개된 REACT, Physically and Chemically Consistent Reconstruction of Marine Active Tracers, arXiv 식별자 2610.03888은 희박한 관측에서 전 지구 표층 pH를 복원하는 방법을 다룹니다. 이 연구가 내세우는 주장은 한 문장으로 정리되는데, pH를 직접 예측하지 말고 용존무기탄소를 담은 잠재 상태를 먼저 물리적으로 옮긴 뒤에 화학 평형으로 pH를 풀어내야 오차와 정합성을 함께 잡을 수 있다는 것입니다. 원문 링크는 제목 아래에 걸어 두었습니다.
이 논문을 처음 펼쳤을 때 저는 관측 이야기가 아니라 변수 설정에서 멈칫했습니다. 안녕하세요, 패트릭입니다. 평소에 저는 모델 구조보다 문제 정의가 먼저라고 자주 말하는데요. 이번에는 그 문제 정의가 유난히 또렷했습니다. 바닷물 pH는 우리가 알고 싶은 값이지만, 정작 바다에 실려 움직이는 저장량은 용존무기탄소라는 대목이었죠. 그렇다면 그동안 pH 지도를 직접 그리던 방식은 무엇을 놓치고 있었던 걸까요. 오늘은 그 질문을 처음부터 따라가 보겠습니다.
바닷물 한 컵의 숫자를 전 지구 지도로 넓히면 무슨 일이 생길까
여러 사람이 각자 다른 위치에서 바닷물을 한 컵씩 떠서 pH를 잰다고 상상해 보시죠. 컵 안의 숫자는 확실합니다. 그런데 그 몇 개의 숫자로 전 지구 바다 표면의 pH 지도를 그리려면, 컵과 컵 사이의 넓은 빈칸을 메워야 합니다. 배가 지나간 항로 주변에는 점이 촘촘하지만, 남반구 중위도나 겨울철 고위도에는 관측이 듬성듬성합니다. 그래서 복원이라는 말은 관측을 그대로 옮기는 일이 아니라, 빈칸을 물리적으로 말이 되게 채우는 일에 가깝습니다.
왜 이 빈칸 채우기가 까다로울까요. 바다는 가만히 있지 않기 때문입니다. 표층 해류가 물을 옆으로 밀고, 소용돌이가 섞고, 바람이 표면을 저어 섞습니다. 어제 측정한 값이 오늘 같은 위치에 그대로 있지 않습니다. 그런데 많은 복원 모델은 이 움직임을 배경 지식으로만 슬쩍 쓰고, 실제로는 관측된 pH 값들 사이를 매끈하게 잇는 데 집중합니다. 매끈하게 잇는 것 자체는 나빠 보이지 않죠. 문제는 그 매끈함이 물리적인 이동 경로와 어긋날 수 있다는 데 있습니다.
저는 이 대목에서 해양 산성화 모니터링이라는 목적을 다시 떠올렸습니다. 우리가 pH 지도를 그리는 이유는 단순히 예쁜 지도를 얻기 위해서가 아닙니다. 바다가 대기 중 이산화탄소를 얼마나 흡수하고 있는지, 산성화가 어디서 얼마나 빠르게 진행되는지, 그리고 그 변화가 탄소 순환과 어떻게 맞물리는지를 읽어내기 위해서죠. 그렇다면 지도 한 장의 오차가 작아 보이는 것만으로는 부족합니다. 그 지도가 탄소 저장량의 이동과 화학 관계에도 맞아야 합니다. 여러분도 모델 평가표를 볼 때 pH 오차 한 줄만 보신 적이 있으실 텐데요. 이 논문은 바로 그 습관에 질문을 던집니다.

숫자는 맞는데 화학이 틀렸다면 그 지도를 믿을 수 있을까
그렇다면 pH를 직접 복원하는 방식은 어디서 어긋날까요. 답은 pH라는 변수의 성격에 있습니다. 기존의 많은 블랙박스 복원이나 물리 유도 복원은 수동 추적자를 염두에 두고 설계됐습니다. 수동 추적자란, 복원하려는 변수 자체가 이동하는 저장량과 같은 경우를 말합니다. 온도나 염분처럼, 측정한 값이 그대로 흘러간다고 가정해도 크게 어색하지 않은 변수들이 여기에 가깝죠. 그래서 관측된 값을 물리 흐름에 태워 옮기면 복원이 곧 보존이 됩니다.
그런데 pH는 다릅니다. pH는 능동 탄산염 추적자입니다. 우리가 예측하고 싶은 목표는 pH이지만, 실제로 보존되면서 이동하는 탄소 저장량은 용존무기탄소, 즉 DIC이기 때문입니다. pH는 DIC와 알칼리도, 온도와 염분, 그리고 대기와의 교환 같은 조건이 얽혀서 정해지는 진단량에 가깝습니다. 같은 DIC라도 주변 조건이 달라지면 pH가 달라지고, 같은 pH라도 그 뒤에 있는 탄소량은 다를 수 있습니다. 이 관계를 무시하고 pH 값 자체를 옮기면 어떤 일이 생길까요. 지도 위의 pH 숫자는 관측과 비슷해 보이지만, 그 숫자들이 가리키는 탄소량은 어딘가에서 생겨나거나 사라진 셈이 됩니다.
논문이 지적하는 장면이 바로 여기입니다. pH 오차만 보면 점수가 좋은데, 탄산염 닫힘 관계와 무발생원 조건에서의 탄소 보존을 따져보면 어긋나는 경우가 생긴다는 것이죠. 탄산염 닫힘이란, pH와 DIC와 관련 화학 변수들이 서로 모순 없이 맞물려야 한다는 조건입니다. 무발생원 탄소 보존이란, 생물 활동이나 대기 교환 같은 발생원이 없는 구간에서는 탄소 총량이 흐름에 따라 그대로 옮겨가야 한다는 조건이고요. 직접 pH를 잇는 모델은 이 두 조건을 볼 의무가 없습니다. 그래서 숫자는 맞는데 화학이 틀린 지도가 나올 수 있습니다. 여러분이 운영자라면 어느 쪽을 더 걱정하시겠습니까. 당장의 오차 숫자가 작아 보이는 쪽일까요, 아니면 탄소 수지가 맞는 쪽일까요. 저는 후자라고 봅니다. 오차는 나중에 다듬을 수 있지만, 화학이 깨진 지도는 산성화 진단 자체를 흐리니까요.
탄소를 먼저 옮기고 pH는 나중에 푼다는 발상은 어디서 왔을까
REACT라는 이름이 가리키는 태도는 이름 그대로 다시 반응시킨다는 뜻이 아니라, 복원의 순서를 다시 짠다는 데 있습니다. 연구진은 pH를 곧바로 맞히는 대신, 탄소 우선 접근을 택했습니다. 먼저 탄소 저장량을 담은 잠재 상태를 만들고, 그 상태를 물리 흐름에 태워 옮기고, 생물과 대기가 흔드는 부분을 따로 보정한 뒤에, 마지막에 화학 평형으로 pH를 풀어낸다는 것이죠. 순서가 바뀌는 것이 아니라 순서가 나뉘는 것이며, 이렇게 나누면 각 단계가 지켜야 할 약속이 분명해집니다. 이동 단계는 보존을 지키고, 보정 단계는 발생원을 설명하고, 디코딩 단계는 화학을 지키는 식으로요.
일상적인 비유를 하나 들어볼까요. 이사할 때 상자에 물건을 담아 옮기고, 새집에서 꺼내 정리하는 과정을 생각해 보시죠. 상자째 옮기는 동안에는 물건이 늘어나거나 줄면 안 됩니다. 새집에서 꺼낼 때는 방 구조에 맞게 배치해야 하고요. REACT의 발상도 비슷합니다. 탄소라는 내용물은 상자에 담아 그대로 옮기고, pH라는 배치는 마지막 방의 구조, 즉 화학 평형에 맞게 꺼낸다는 것이죠. 직접 pH를 옮기던 기존 방식은 배치도만 들고 이사를 다니는 셈이었습니다. 배치도는 예쁘지만, 정작 상자 속 물건이 맞는지 알 수 없죠.
제가 이 논문에서 가장 흥미롭게 본 부분은 바로 이 분리입니다. 많은 물리 유도 AI가 물리식을 손실함수 한 귀퉁이에 얹는 방식으로 타협하는데요. REACT는 구조 자체를 나눠서 각 모듈이 다른 책임을 지게 했습니다. 수송은 수송답게, 보정은 보정답게, 화학은 화학답게 말이죠. 이렇게 나누면 실패했을 때 어디가 문제인지도 짚기 쉬워집니다. pH가 어긋났다면 디코딩 문제인지, 탄소 총량이 어긋났다면 수송 문제인지, 계절에 따라 어긋난다면 보정 문제인지 압니다. 저희가 새로운 AI 아키텍처를 볼 때도 숫자만 보지는 않습니다. 실제로 무엇이 나뉘었고, 그 나눔이 디버깅과 운영에서 어떤 길을 열어주는지를 함께 보는데요. 그런 눈으로 보면 이 분리는 점수 이상의 가치가 있습니다.

이걸 그냥 물리 유도 모델이라고 부르면 왜 아쉬울까
여기서 한 가지 오해를 미리 걷어낼 필요가 있습니다. REACT를 두고 또 하나의 물리 유도 신경망이라고만 부르면, 이 연구가 겨냥한 지점이 흐려집니다. 물리 유도라는 말은 요즘 워낙 넓게 쓰이기 때문입니다. 어떤 모델은 미분방정식 잔차를 손실에 얹고, 어떤 모델은 경계조건을 소프트 제약으로 넣고, 어떤 모델은 그냥 물리 변수 이름을 입력에 넣어놓고도 물리 유도라고 말합니다. 그런데 REACT가 겨냥한 문제는 손실 가중치 조절로 풀리는 종류가 아닙니다. 변수 자체를 잘못 잡았을 때 생기는 구조적 어긋남이기 때문이죠.
수동 추적자용 모델을 pH에 그대로 쓰는 것은, 사람의 키를 재야 하는데 그림자의 길이를 재는 것과 비슷합니다. 그림자도 키와 관계가 있으니 대충은 맞습니다. 해가 높을 때는 꽤 정확해 보이기도 하죠. 그런데 해가 기울면 그림자가 길어지면서 키 추정이 엇나갑니다. 여기서 해에 해당하는 것이 바로 화학 조건입니다. 온도와 알칼리도와 대기 교환이 바뀌면 pH와 DIC의 관계가 미끄러지는데, 그림자만 재는 모델은 그 미끄러짐을 볼 방법이 없습니다. 그래서 REACT는 그림자를 더 정교하게 재는 대신, 키를 직접 옮기고 그림자는 나중에 그리는 쪽을 택했습니다.
그렇다면 REACT는 물리를 쓰지 않는다는 뜻일까요. 전혀 아닙니다. 오히려 물리를 더 좁고 단단한 곳에 썼습니다. 잠재 탄소 상태를 옮길 때 보존형 이류 확산 솔버를 쓰고, 화학으로 풀어낼 때 탄산염 평형을 강제한다는 점에서 물리와 화학의 약속을 구조로 못 박았죠. 손실함수에 부탁하는 수준이 아니라, 지나가는 길 자체를 그렇게 만든 셈입니다. 저는 이 차이를 꽤 크게 봅니다. 부탁은 가중치에 따라 어길 수 있지만, 길은 어기기 어렵기 때문입니다. 물론 이렇게 길을 고정하면 모델의 자유도가 줄어듭니다. 그런데 그 자유도 감소가 오히려 복원의 신뢰를 만든다면, 우리는 그 교환을 받아들여야 하지 않을까요.
보이지 않는 탄소 상자를 해류에 태워 옮긴다는 것은 무슨 뜻일까
이제 메커니즘을 천천히 따라가 보겠습니다. 첫 단계는 잠재 탄산염 상태를 만드는 일입니다. 잠재 상태라는 말이 어렵게 들리지만, 뜻은 단순합니다. 관측에서 곧바로 pH를 읽는 대신, 그 관측 뒤에 있을 탄소 저장량을 담은 중간 표현을 만든다는 것이죠. 이 중간 표현은 DIC라는 실제 저장량을 의식하면서 설계됐습니다. 관측이 있는 곳에서는 관측과 맞아야 하고, 관측이 없는 곳에서는 물리 흐름을 타고 자연스럽게 이어져야 합니다.
다음으로 이 잠재 상태를 보존형 이류 확산 솔버로 옮깁니다. 이류란 해류에 실려 옆으로 이동하는 것이고, 확산이란 소용돌이와 혼합으로 번져가는 것입니다. 보존형이라는 수식어는 이 과정에서 총량이 어긋나지 않게 셈한다는 뜻입니다. 셈법이 보존형이 아니면, 수치 오차만으로도 탄소가 조금씩 생겨나거나 사라집니다. 좁은 만에서 하루 이틀 돌리는 실험이라면 그 오차가 눈에 안 띌 수도 있습니다. 그런데 전 지구 표층을 긴 시간에 걸쳐 복원하면 작은 샘이 모여 큰 어긋남이 됩니다. 그래서 연구진은 이 대목을 학습으로 때우지 않고 솔버로 고정했습니다. 학습이 잘하면 좋지만, 못해도 최소한의 약속은 지키게 만든 것이죠.
여기서 재미있는 질문이 생깁니다. 왜 굳이 잠재 공간에서 옮길까요. DIC 관측 자체가 충분했다면 DIC를 직접 옮기면 됩니다. 하지만 현실의 바다는 pH 관측도 희박하고 DIC 관측은 더 희박합니다. 그래서 REACT는 관측 가능한 단서들에서 탄소 상태를 추론한 뒤, 그 추론된 상태를 옮기는 쪽을 택했습니다. 추론이 들어갔다는 점에서 불확실성이 남지만, 적어도 옮기는 동안에는 보존이라는 약속이 지켜집니다. 저는 여기서 멈칫하면서도 고개를 끄덕였습니다. 완벽한 관측을 기다리느라 복원을 미룰 수는 없으니, 불확실한 추론과 단단한 수송을 조합하는 것이 현실적인 절충이기 때문입니다. 여러분이 현장에 있다면, 관측이 더 쌓일 때까지 기다리시겠습니까, 아니면 지금 있는 단서로 가장 말이 되는 지도를 만드시겠습니까. 저는 후자를 택할 것 같습니다. 다만 그 지도가 어디까지 믿을 만한지는 함께 적어야겠죠.

생물이 숨 쉬고 공기가 섞이는 부분을 어떻게 따로 잡을까
바다가 단순히 물을 옮기기만 했다면 이야기는 여기서 끝났을 텐데요. 문제는 그다음입니다. 탄소는 옮겨지는 동안에도 계속 변합니다. 식물플랑크톤이 광합성으로 탄소를 흡수하고, 호흡과 분해로 다시 내놓고, 대기와 바다가 이산화탄소를 주고받습니다. 이런 과정은 흐름과 별개로 탄소 총량을 바꾸는 발생원입니다. 그래서 REACT는 두 번째 모듈로 소스 모듈을 두었습니다. 비보존적인 탄소 순환 변화를 따로 잡는 장치죠. 수송이 상자를 그대로 옮기는 일이라면, 소스 모듈은 옮기는 동안 상자 안에 물건이 들어오고 나가는 것을 기록하는 일에 가깝습니다.
이 분리가 왜 좋을까요. 발생원을 수송과 섞어버리면, 모델은 흐름이 빠른지 발생원이 센지 구분하지 못합니다. 예를 들어 어느 해역의 탄소가 늘었다고 해 봅시다. 해류가 탄소 많은 물을 몰고 왔을 수도 있고, 그 자리에서 생물 활동이 줄어서 탄소가 쌓였을 수도 있습니다. 두 원인은 겉보기에 같은 증가지만, 처방은 전혀 다릅니다. 흐름 때문이라면 옆 해역의 지도를 함께 봐야 하고, 생물 때문이라면 계절과 수온과 영양염을 봐야 하죠. 소스 모듈을 따로 두면 이런 구분이 가능해집니다. 흐름으로 설명되는 부분은 솔버가 가져가고, 흐름으로 설명되지 않는 나머지는 소스 모듈이 맡는 식으로요.
마지막 단계는 화학 디코딩입니다. 옮기고 보정한 탄소 상태에서 탄산염 평형에 맞춰 pH를 풀어내는 과정이죠. 이 단계가 있다는 것은 pH 숫자가 마음대로 튈 수 없다는 뜻입니다. 탄소 상태와 주변 조건이 정해지면, 화학 관계가 허용하는 pH 범위가 정해집니다. 디코더는 그 범위 안에서만 답을 내놓습니다. 그래서 pH 오차를 줄이려다가 화학을 깨는 지름길이 막힙니다. 저는 이 대목이 운영 관점에서 특히 마음에 들었습니다. 밤사이 바람이 바뀌고 아침에 수온 전선이 움직여도, 화학 디코더가 있는 한 pH 지도는 적어도 화학적으로 말이 되는 범위 안에 머물기 때문입니다. 물론 디코더가 완벽하다는 뜻은 아닙니다. 평형 가정이 깨지는 국지적 과정이 있을 수 있고, 알칼리도 추론이 어긋나면 pH도 함께 미끄러집니다. 그런데 그런 실패는 적어도 화학 관계 위에서 드러나니, 어디를 고쳐야 할지 짚을 수 있습니다. 실패가 설명 가능하다는 것은 현장에서 큰 장점입니다.
조각을 하나씩 뺐을 때 어디가 먼저 무너질까
그렇다면 이 세 조각은 정말로 각자 일을 하고 있을까요. 논문은 제거 실험으로 답합니다. 수송 솔버를 빼거나, 소스 모듈을 빼거나, 화학 제약을 풀었을 때 성능이 어떻게 달라지는지를 본 것이죠. 결과의 방향은 분명했습니다. 어느 하나를 빼도 pH 오차와 화학 정합성 오차가 함께 나빠졌고, 특히 시간 규모를 달리했을 때 그 차이가 더 또렷해졌다고 합니다. 저는 이 대목보다 그 뒤의 구조가 더 중요하다고 봅니다. 성능이 좋아졌다는 사실 자체보다, 좋아진 이유가 각 모듈의 책임과 맞아떨어진다는 점이 말이죠.
생각해 보면 제거 실험은 오답 노트와 비슷합니다. 잘 풀리는 문제를 자랑하는 대신, 어디를 빼면 틀리는지를 보여주니까요. 수송을 빼면 탄소 총량이 흔들리고, 소스를 빼면 계절 변화나 생물 신호를 놓치고, 화학 디코딩을 풀면 pH 숫자는 비슷해 보여도 화학 관계가 어긋납니다. 이런 식으로 실패가 갈라지면, 다음 개선이 쉬워집니다. 저는 논문을 읽을 때 이 갈라짐이 있는지를 꼭 봅니다. 모든 모듈을 한꺼번에 넣었을 때만 좋아지고, 빼면 어디가 아픈지 모른다면, 그 구조는 운에 기대고 있을 가능성이 크기 때문입니다.
여기서는 조금 조심해서 읽을 필요가 있습니다. 시뮬레이션 데이터에서 확인된 개선이라는 조건을 잊으면 안 됩니다. 시뮬레이션은 바닷속 과정을 비교적 깨끗하게 통제할 수 있지만, 실제 바다는 시뮬레이션에 없는 잡음과 빠진 과정을 갖고 있습니다. 알칼리도 분포가 시뮬레이션과 다르거나, 연안 과정이 거칠게 표현됐다면, 시뮬레이션에서의 개선폭이 그대로 이어지지 않을 수 있습니다. 논문이 보고한 pH 정규화 오차 14.7퍼센트 감소와 화학 정합성 오차 24.0퍼센트 감소는 가장 좋은 기준선과 견준 값인데요. 두 숫자를 나란히 놓고 보면 의미가 또렷해집니다. pH 오차 개선보다 화학 정합성 개선이 더 컸다는 것은, 이 방법이 숫자 맞히기보다 관계 맞히기에 더 크게 기여했다는 뜻이기 때문입니다. 저는 그래서 두 번째 숫자를 더 오래 기억하려 합니다. 첫 번째 숫자가 눈에 띄는 성과라면, 두 번째 숫자는 그 성과가 우연이 아니라는 증거에 가깝습니다.

시간을 늘리고 관측을 듬성듬성 흩뜨려도 버틸까
실제 바다의 관측은 예쁘게 놓여 있지 않습니다. 배가 다니는 길에 몰려 있고, 계절에 따라 비었다 찼다 하며, 어떤 해에는 특정 해역이 통째로 비기도 합니다. 그래서 복원 모델의 진짜 시험은 평균 오차가 아니라, 시간 규모와 관측 밀도가 바뀌어도 약속을 지키는지입니다. 논문은 이 지점에서 시간 규모에 걸친 강건함을 봤다고 밝히고 있습니다. 짧은 변동과 긴 추세를 함께 다뤄도 구조가 흔들리지 않는다는 것이죠. 저는 이 문장을 읽고 곧바로 현장의 달력을 떠올렸습니다. 봄철 대증식 시기와 겨울 혼합 시기, 엘니뇨와 라니냐 해처럼 탄소 신호의 성격이 달라지는 구간에서도 같은 파이프라인이 버티는지, 그게 궁금했기 때문입니다.
왜 시간 규모가 중요할까요. 짧은 시간에서는 흐름이 지배적이고, 긴 시간에서는 발생원과 화학 조건의 변화가 쌓이기 때문입니다. 며칠짜리 복원이라면 해류만 잘 옮겨도 그럴듯해 보입니다. 그런데 몇 달, 몇 년으로 늘리면 생물 펌프와 대기 교환이 누적되면서 pH와 DIC의 관계 자체가 미끄러집니다. 직접 pH를 잇는 모델은 이 미끄러짐을 매번 새로 외워야 합니다. 반면 REACT처럼 수송과 발생원과 화학을 나눈 모델은 각 시간 규모에 맞는 부품이 따로 대응합니다. 짧은 규모는 솔버가, 긴 규모의 드리프트는 소스 모듈과 화학 디코더가 맡는 식으로요. 그래서 시간 규모 실험은 단순한 추가 검증이 아니라, 이 구조가 왜 이렇게 나뉘어야 했는지를 보여주는 무대입니다.
관측이 듬성듬성하다는 점도 같은 맥락에서 읽힙니다. 점이 적을수록 모델은 빈칸을 상상으로 채워야 하고, 상상이 틀어질수록 화학 어긋남이 커집니다. 그런데 화학 디코더가 있으면 상상의 범위가 좁아집니다. 아무리 빈칸이 넓어도 화학이 허용하는 범위 안에서만 pH를 내놓기 때문입니다. 물론 빈칸이 너무 넓어지면 탄소 상태 추론 자체가 흔들립니다. 그때는 화학이 맞아도 위치가 틀릴 수 있죠. 그래서 저는 이 강건함 결과를 이렇게 읽습니다. REACT가 희박함을 없애준다는 뜻이 아니라, 희박한 상황에서도 적어도 화학적으로 말이 안 되는 답은 내놓지 않게 해준다는 뜻으로요. 여러분이 산성화 경보를 울려야 하는 입장이라면, 이 차이는 작지 않습니다. 틀릴 수는 있어도 말이 되는 방향으로 틀리는 것과, 말이 안 되는 방향으로 틀리는 것은 대응이 전혀 다르니까요.

숫자 너머에 있는 운영의 문제를 생각해 볼 차례입니다
실제 시스템 관점에서 보면 다음 질문이 바로 생깁니다. 이 구조를 매일 돌아가는 운영 파이프라인에 올리면 무엇이 달라질까요. 먼저 좋아지는 쪽을 짚어보겠습니다. pH를 직접 외우는 모델은 새로운 계절이나 새로운 해역이 들어올 때마다 다시 학습하거나 심하게 흔들릴 수 있습니다. 외운 패턴이 깨지기 때문입니다. 반면 REACT는 물리와 화학이 구조로 박혀 있어서, 처음 보는 조건에서도 최소한의 선을 지킵니다. 해류장이 바뀌면 솔버 입력이 바뀌고, 수온이 바뀌면 화학 디코딩 조건이 바뀌면서, pH 답도 함께 따라갑니다. 다시 말해, 환경이 바뀌었을 때 모델이 빈손으로 서 있지 않습니다. 물리와 화학이라는 손잡이가 남는 것이죠.
하지만 비용 이야기도 해야 합니다. 보존형 솔버를 매 스텝 돌리는 것은 공짜가 아닙니다. 전 지구 격자를 매일, 매달 굴리면 계산량과 메모리 이동이 쌓입니다. 잠재 상태를 옮기고 소스 모듈을 얹고 화학 디코딩을 거치는 파이프라인은 단일 네트워크 한 번으로 끝내는 방식보다 손이 많이 갑니다. 학습이 아니라 추론에서의 부담이 매번 따라다닌다는 뜻이죠. 그 부담이 어느 정도인지는 논문의 시뮬레이션 결과만으로 가늠하기 어렵습니다. 격자 해상도를 올리거나 연안을 세밀하게 보면 비용 곡선이 달라질 수 있기 때문입니다. 그래서 저는 이 방법을 두고 가볍다거나 무겁다고 단정하지 않으려 합니다. 구조가 분명한 만큼 비용이 어디서 생기는지도 분명하니, 해상도와 주기에 맞춰 손익을 따지면 된다고 봅니다.
또 하나 짚을 점은 입력의 품질입니다. 화학 디코딩이 힘을 내려면 DIC뿐 아니라 알칼리도와 온도, 염분 같은 조건이 함께 맞아야 합니다. 이 조건들이 어긋나면 디코더는 바른 화학 위에서 바르지 않은 답을 내놓습니다. 마치 정확한 문법으로 틀린 사실을 말하는 것과 비슷하죠. 그래서 운영에서는 pH 지도 하나만 보지 말고, 중간 산출물인 탄소 상태와 조건 변수들도 함께 모니터링해야 합니다. 어디서부터 어긋났는지를 알아야 고칠 수 있으니까요. 저는 이런 모니터링 지점이 명확한 구조를 좋아합니다. 숫자가 나빠졌을 때 원인을 찍을 곳이 있다는 것은, 야간 당직자의 마음을 지켜주는 장치이기도 합니다.
다음 파도를 타기 전에 무엇이 남았을까
제가 앞으로 보고 싶은 것은 실제 바다에서의 검증입니다. 시뮬레이션에서 14.7퍼센트와 24.0퍼센트라는 개선을 봤다면, 다음에는 실제 희박 관측에서도 같은 방향이 나오는지 보고 싶습니다. 특히 연안과 용승 해역처럼 평형 가정이 흔들리기 쉬운 곳, 그리고 겨울철 고위도처럼 관측이 비는 곳에서의 거동이 궁금합니다. 시뮬레이션이 깨끗하게 통제된 운동장이라면, 실제 바다는 바람 불고 비 오는 운동장이기 때문입니다. 그 운동장에서도 수송과 보정과 화학이라는 나눔이 통하는지, 통하지 않는다면 어디서부터 어긋나는지를 보는 것이 다음 순서라고 봅니다.
또 하나 보고 싶은 것은 발생원 모듈의 해석 가능성입니다. 소스 모듈이 잡아낸 비보존 변화가 실제 생물 생산이나 대기 교환의 계절성과 맞아떨어지는지, 아니면 단순히 잔차를 쓸어 담는 검은 상자에 머무는지를 알고 싶습니다. 만약 소스 모듈의 출력이 봄철 대증식 시기에 음의 탄소 아노말리로, 겨울 혼합 시기에 다른 부호로 나타난다면, 그 모듈은 오차 흡수기를 넘어 과정 진단기로 읽힐 수 있습니다. 반대로 시기와 해역에 상관없이 들쭉날쭉하다면, 구조는 좋아도 해석은 아직 멀었다고 봐야겠죠. 저는 후자여도 실망하지 않으려 합니다. 복원이 먼저 말을 되게 하고, 해석이 그다음에 따라오는 순서도 충분히 가치 있기 때문입니다.

그래서 바다는 우리에게 무엇을 묻고 있을까
처음 REACT를 펼쳤을 때의 질문으로 돌아와 보겠습니다. pH를 직접 그리는 대신 탄소를 먼저 옮겨야 한다는 발상은 결국 무엇을 말할까요. 저는 이렇게 읽었습니다. 보고 싶은 값이 곧 옮겨야 할 값은 아니라는 것, 그리고 빨리 맞히는 것보다 맞게 이어지는 것이 먼저라는 것입니다. pH 숫자를 하나 더 맞히는 것보다, 탄소 저장량이 어디서 와서 어디로 가는지, 그 과정에서 생물과 공기가 무엇을 더하고 뺐는지, 그리고 마지막에 화학이 그 결과를 어떻게 pH로 읽는지를 순서대로 세우는 일이 더 단단한 지도라는 것이죠.
이 관점은 해양 산성화를 넘어 다른 능동 추적자에도 이어질 수 있습니다. 예측하고 싶은 값과 보존되는 값이 어긋나는 문제는 바다뿐 아니라 대기 화학이나 생지화학 순환에서도 흔하기 때문입니다. 매번 직접 예측으로 때울 수도 있지만, 그때마다 화학이 깨지는 대가를 치릅니다. REACT가 보여준 것은 그 대가를 치르지 않는 한 가지 설계도입니다. 옮길 것은 옮기고, 변하는 것은 따로 잡고, 풀어낼 것은 화학으로 푼다는 아주 단순한 순서 말이죠. 단순해 보이지만, 막상 구조로 옮기기는 쉽지 않습니다. 그래서 저는 이 단순함을 높이 샀습니다.
그렇다면 사람의 역할은 무엇일까요. 모델이 pH 지도를 그려주는 시대에도, 어떤 변수를 옮기고 어떤 관계를 끝까지 지킬지를 정하는 일은 여전히 우리의 몫입니다. 바다는 매일 탄소를 실어 나르고, 생물은 숨 쉬고, 공기는 섞입니다. 그 움직임을 숫자로만 보지 않고 탄소의 여정으로 읽어내는 Train이 필요하고, 그 Train을 구조로 옮기는 선택이 필요합니다. 다음에 pH 지도 한 장을 보게 된다면, 저는 오차 숫자 옆에 이런 질문을 함께 적어두고 싶습니다. 이 지도의 탄소는 어디서 와서 어디로 갔을까, 그리고 그 여정의 화학은 맞는 걸까하고요.