Numpilot
손안의 수치해석/4부 AI로 넓히기

틀린 답을 걸러내는 설계 — 신뢰의 문제

26 / 30
2026-08-18 · 읽는 데 10분

4부에서 가장 중요한 편

21편에서 이렇게 적었다. “빠른 답을 얻는 방법보다, 그 답을 믿을 수 있게 만드는 방법이 이 프로젝트의 성패를 가른다.”

이 편이 그 이야기다.

24편에서 FNO의 위험을 확인했다. 항상 답을 내고, 모르겠다고 말하지 않고, 얼마나 틀렸는지 알 수 없다. 그리고 20편에서 만든 검증 중 상당 부분이 적용되지 않는다.

그러면 무엇으로 방어하는가.

방어선 1: 물리 법칙으로 채점한다

살아남은 검증이 물리적 일관성이었다. 이건 예측된 답에도 그대로 적용된다.

에너지 보존. 예측된 온도 분포에서, 경계를 통해 들어온 열과 나간 열을 각각 계산한다. 차이가 크면 그 답은 물리를 위반한다.

최대·최소 위치. 열원보다 뜨거운 점이 안쪽에 생겼는가.

단조성. 열원에서 멀어질수록 온도가 낮아지는 구조가 유지되는가. 국소적으로 이상한 봉우리가 생겼는가.

부드러움. 열전달의 답은 대체로 부드럽다. 급격한 계단이 나타나면 예측 오류일 가능성이 높다.

이 검사들의 좋은 점은 정답이 필요 없다는 것이고, 계산이 싸다는 것이다. 예측 후 즉시 돌릴 수 있다.

그리고 22편에서 차용한 아이디어가 여기서 쓰인다. PINN이 학습 중에 물리 위반을 벌점으로 쓰듯, 우리는 사용 시점에 그것을 검사 기준으로 쓴다.

방어선 2: 학습 범위를 아는가

두 번째 방어선은 조금 다른 성격이다. 입력이 학습한 영역 안에 있는지 판단한다.

신경망이 위험해지는 것은 주로 학습 범위 밖에서다. 본 적 있는 조건에서는 대체로 잘 맞고, 처음 보는 조건에서 엉뚱해진다.

그러면 “이 조건이 학습 영역 안인가”를 판단할 수 있으면 큰 도움이 된다.

방법이 몇 가지 있다.

단순 범위 검사. 각 조건 값이 학습 데이터의 범위 안에 있는지 본다. 두께가 학습 범위를 벗어났다면 표시한다. 단순하지만 효과적이다.

조합의 이례성. 각 값은 범위 안이지만 그 조합이 학습 데이터에 없었을 수 있다. 두께는 흔하고 재료도 흔한데, 그 둘의 조합이 처음인 경우.

모델의 불확실성 추정. 여러 모델을 학습시켜 같은 입력에 각각 예측하게 하고, 그 답들이 서로 얼마나 다른지 본다. 학습이 잘 된 영역에서는 모델들이 비슷하게 답하고, 낯선 영역에서는 서로 다르게 답한다.

세 번째가 가장 유용하지만 가장 비싸다. 여러 모델을 돌려야 하므로 속도 이득이 줄어든다. 그래서 실용적으로는 첫 두 개를 기본으로 쓰고, 애매할 때 세 번째를 쓴다.

방어선 3: 전통 계산과 대조한다

세 번째가 가장 확실하다. 24편에서 이야기한 구조다.

결정 시점에 전통 솔버로 다시 계산한다.

사용자가 열 번 시도하는 동안은 FNO로 즉시 답한다. 그리고 사용자가 “이 조건으로 가겠다”고 판단한 순간, 검증된 방법으로 다시 계산해서 비교한다.

이 구조에는 세 가지 이점이 있다.

① 최종 판단의 근거가 검증된 계산이다. 실제 설계 결정에 쓰이는 숫자는 전통 계산에서 나온다. FNO는 탐색을 도운 것뿐이다.

② FNO의 성능이 자동으로 감사된다. 사용자가 결정할 때마다 예측과 실계산이 비교된다. 그 차이가 기록되면, 모델의 실제 정확도를 실사용 데이터로 계속 측정할 수 있다.

이건 25편에서 말한 데이터 순환의 한 부분이다. 사용이 곧 검증이 된다.

③ 어긋남이 조건 범위를 알려준다. 특정 영역에서 예측이 계속 어긋나면, 그 영역의 학습이 부족하다는 뜻이다. 다음 학습에 그 영역을 보강한다.

무엇을 못 걸러내나

정직하게 한계를 정리하자. 세 방어선을 다 통과해도 남는 것이 있다.

① 물리적으로 그럴듯하지만 부정확한 답.

에너지가 보존되고, 최대값이 제자리에 있고, 부드럽다. 그런데 값이 20% 틀렸다. 이건 물리 검사로 안 걸린다. 물리 법칙은 답의 대략적 구조를 제약하지만 정확한 값을 특정하지 않는다.

② 학습 범위 안에서의 오류.

범위 검사를 통과했어도 그 안에서 틀릴 수 있다. 특히 학습 데이터가 그 영역에서 희소했다면.

③ 학습 데이터 자체의 오류.

FNO가 배운 답은 전통 솔버가 만든 것이다. 그 솔버가 틀렸다면 FNO는 틀린 것을 정확히 배운다. 19편에서 정리한 근사들이 그대로 전승된다.

이건 근본적인 문제다. 우리 시스템의 정확도 상한은 전통 솔버의 정확도이고, 그건 19편의 타협들에 묶여 있다.

그래서 무엇을 약속할 수 있나

이 한계들을 안고 사용자에게 무엇을 말할 수 있는지가 실제 문제다.

19편에서 정리한 비대칭이 여기서도 유효하다.

  • “안전하다”는 결론 — 보수적 근사 + 물리 검사 통과. 상당히 신뢰할 수 있다
  • “위험하다”는 결론 — 확인이 필요하다. 과하게 나온 것일 수 있다
  • 정확한 값 — 약속하지 않는다

그리고 FNO를 쓰는 경우에는 한 층이 더 붙는다.

  • 탐색 중의 답 — 방향 참고용. 정확도를 약속하지 않는다
  • 결정 시점의 답 — 전통 계산 결과. 19편의 한계 안에서 신뢰

이 구분을 화면에 표시한다. 20편에서 만든 신호등에 항목이 하나 추가되는 것이다. “이 답은 예측입니다” / “이 답은 계산되었습니다”.

신뢰를 설계한다는 것

이 편을 마무리하며 관점을 하나 정리하고 싶다.

AI를 쓰는 시스템에서 신뢰는 모델의 정확도로 확보되지 않는다. 정확도는 평균적인 성질이고, 사용자가 마주치는 것은 개별 사례다. 평균 95% 정확한 모델이 지금 이 답에서 틀렸을 수 있다.

그래서 신뢰는 구조로 만들어야 한다.

  • 틀릴 수 있음을 전제하고
  • 틀렸을 때 걸러내는 장치를 두고
  • 걸러지지 않을 수 있음을 알리고
  • 중요한 결정은 검증된 경로로 넘긴다

이 네 줄이 2부에서 정리한 DSL 원칙과 구조가 같다. 많이 결정하되 전부 보여준다. 여기서는 많이 예측하되 전부 검사한다가 된다.

같은 태도가 조건 설계(2부), 계산 검증(3부), AI 예측(4부)에 반복해서 적용된 것이다. 그게 우연이 아니라, 이 프로젝트 전체가 하나의 판단 위에 서 있기 때문이다.

도구의 가치는 얼마나 정확한지가 아니라, 얼마나 자기 오류를 드러내는지에 있다.

다음 편에서 4부를 마무리하며, 지금까지의 기술을 어떤 순서로 실제로 확장할 것인지 정리한다.


다음 편 예고 — 단계적 확장 로드맵: 검증된 솔버에서 AI 해석으로. 무엇을 먼저 하고 무엇을 나중에 할지, 그 판단 기준을 정리한다.