AI VIDEO BRIEFING

베이지안 신경망과 변분추론: 파이토치에서 예측 불확실성을 구하고 모델이 모르겠다고 말하게 하는 방법

일반 신경망이 내놓는 점 추정의 한계를 날씨 예보 사례로 설명하고, 가중치를 분포로 바꾸는 변분추론의 원리와 이를 파이토치 학습 코드에 몇 줄로 적용하는 방법, 계산 비용을 줄이는 최적화까지 정리했다.

모델이 '모르겠다'고 말하게 하기: 변분추론으로 신경망에 불확실성 붙이기 영상 대표 이미지

핵심 메시지

  • 보통의 신경망은 입력을 넣으면 값 하나만 내놓기 때문에 그 예측을 얼마나 믿어야 하는지에 대한 정보가 구조적으로 없다.
  • 변분추론은 가중치를 고정된 숫자 대신 분포로 두고 그 평균과 표준편차를 학습해, 출력도 분포로 나오게 만드는 방법이다.
  • 맑음 확률이 51퍼센트이고 비 확률이 49퍼센트라는 사실을 알 수 있으면, 예보가 맑음이어도 우산을 챙기는 판단이 가능해진다.
  • 발표자 팀이 만든 오픈소스 라이브러리를 쓰면 기존 파이토치 학습 코드에 임포트를 포함해 네 줄만 더해 베이지안 학습으로 바꿀 수 있다.
  • 예측 하나를 얻으려 모델을 여러 번 통과시켜야 해 비용이 크지만, 샘플끼리 상호작용이 없으므로 벡터화로 병렬 처리할 수 있다.

쉽게 이해하기

발표자는 불확실성 정량화와 날씨 예보 AI를 함께 연구하는 박사후연구원이다. 그는 요즘 휴대폰에 뜨는 일기예보 중 일부는 이미 AI가 만든 것일 수 있다는 점을 짚으면서도, 기술이 좋아진 지금도 예보가 틀리는 일은 여전하다고 말한다. 맑다고 했는데 비를 맞고 서 있는 상황이 그것이다.

문제는 예보가 틀렸다는 사실 자체보다, 모델이 자기 예측을 얼마나 확신하는지 말해주지 않는다는 데 있다. 일반적인 신경망은 입력을 가중치와 섞어 값 하나를 내놓는 점 추정 구조라 불확실성이 들어설 자리가 없다. 만약 맑음이 아슬아슬한 차이로 앞섰고 비 확률이 49퍼센트였다는 것을 알았다면, 사용자는 우산을 챙기는 다른 결정을 내렸을 것이다.

변분추론의 발상은 단순하다. 가중치를 하나의 숫자가 아니라 분포로 두고, 그 평균과 표준편차 같은 매개변수를 학습한다. 그러면 출력도 분포가 되고 신뢰 구간을 얻을 수 있다. 다만 어떤 분포를 쓸지 고르고 어떤 근사를 하고 있는지 인지해야 하는 등 뒤에 붙는 수학이 만만치 않아, 알아채기 어려운 실수가 끼어들기 쉽다는 것이 발표자의 경험이다.

그래서 연구팀은 그 실수들을 미리 겪고 바로잡아 라이브러리로 묶었다. 기존 파이토치 코드에서는 모델을 정의하고 손실 함수를 정하고 학습 루프에 데이터로더와 함께 넣는 흐름이 전부인데, 여기에 임포트를 포함해 네 줄만 추가하면 된다. 자동 변환 함수가 학습 대상 가중치를 분포의 매개변수로 바꿔주고, 과제 유형을 고르고, 분포와 정답을 비교하는 손실 함수로 교체하는 식이다.

결과물은 기온 예보에 오차 막대가 붙은 형태다. 수요일까지는 예보를 신뢰할 만하지만 그 뒤로는 폭이 넓어지고 평균보다 추울 수도 있다는 정보가 함께 나온다. 이런 오차 막대는 가중치 분포에서 여러 번 샘플링해 같은 입력을 반복 통과시켜 출력 앙상블을 만드는 방식으로 얻는데, 순전파를 여러 번 반복해야 해 비용이 크다는 단점이 있다.

주요 인사이트

  • 샘플들은 순전파 과정에서 서로 영향을 주지 않는다. 그래서 순차 처리 대신 벡터화 매핑으로 한 번에 계산하는 것이 자연스럽고, 라이브러리는 이 최적화를 사용자에게 드러내지 않고 내부에서 처리한다.
  • 전체 모델을 베이지안으로 바꿀 필요는 없다. 레이어 단위로 직접 쌓을 수 있고 레이어 이름까지 기본 파이토치와 거의 같게 맞춰 두어, 모델 마지막에 베이지안 레이어 두 개만 붙여 불확실성을 얻는 식의 절충도 쉽게 시도할 수 있다.
  • 분포를 직접 지정할 수 있다는 점도 실용적이다. 예를 들어 기온처럼 절대영도 아래로 내려갈 수 없는 값이라면 좌우 대칭 분포 대신 양수만 갖는 비대칭 분포를 쓰는 것이 타당하고, 이런 선택을 직접 구현할 수 있다.
  • 발표자는 적용 대상을 날씨에 한정하지 않는다. 전력 수요 예측이나 금융처럼 결정에 걸린 것이 큰 분야라면, 모델이 '모르겠다'고 말할 수 있게 만드는 편이 낫다는 것이 권고의 요지다.
  • 분류 문제에서는 표준 신경망도 클래스별 확률을 내놓기 때문에 사정이 다르다. 이 경우 앙상블을 만들어 클래스 확률을 평균 내는 방식이 흔한데, 발표자는 그렇게 하면 앙상블의 퍼짐 자체를 버리게 된다는 점이 아쉽다는 개인적 견해를 덧붙인다.

자주 묻는 질문

변분추론은 구체적으로 무엇을 바꾸는가?

신경망의 가중치를 고정된 숫자에서 확률 분포로 바꾸고, 학습 대상도 그 분포의 평균과 표준편차 같은 매개변수가 된다. 그 결과 모델의 출력이 값 하나가 아니라 분포가 되어 신뢰 구간을 함께 얻을 수 있다.

기존 학습 코드를 많이 고쳐야 하나?

발표에 따르면 임포트를 포함해 네 줄이면 된다. 자동 변환 함수로 가중치를 분포 매개변수로 바꾸고, 과제 유형을 지정하고, 분포와 정답을 비교하는 전용 손실 함수를 쓰는 것이 전부다. 분산 데이터 병렬 학습도 대체로 그대로 쓸 수 있다고 설명한다.

계산 비용은 얼마나 늘어나나?

출력 앙상블을 얻으려면 가중치 분포에서 여러 번 샘플링해 같은 입력을 여러 번 통과시켜야 하므로 비용이 늘어난다. 다만 샘플끼리 순전파 중에 상호작용하지 않기 때문에 벡터화해 병렬로 계산하는 최적화가 적용된다.

원문과 출처

이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.

YouTube 원본 영상 보기 ↗

관련 AI 소식

#베이지안신경망#불확실성#파이토치#머신러닝#날씨예측