로짓(Logit)이란? AI가 확률로 바꾸기 전 만드는 원시 점수
TL;DR
로짓(Logit)은 AI 모델이 후보마다 계산한 정규화되지 않은 원시 예측 점수입니다. 분류 모델은 여러 클래스의 로짓을 소프트맥스 같은 함수에 넣어 확률 분포로 바꿀 수 있습니다. 언어 모델도 다음 토큰 후보마다 로짓을 만든 뒤 온도와 샘플링 설정을 반영해 출력 토큰을 고릅니다. 로짓은 음수일 수 있고 합이 1일 필요도 없으므로, 숫자를 그대로 확률이나 신뢰도로 읽으면 안 됩니다.
핵심 3줄 요약
- 핵심 1
로짓은 확률 변환 전 점수입니다. 값의 범위가 정해져 있지 않고 여러 로짓의 합이 1일 필요도 없습니다. - 핵심 2
중요한 것은 후보 사이의 상대적 차이입니다. 소프트맥스는 로짓을 합이 1인 확률 분포로 바꿉니다. - 핵심 3
로짓과 로그프로브는 다릅니다. 로짓은 변환 전 점수이고 로그프로브는 확률에 로그를 취한 값입니다.
이 글에서 다룰 내용
- 로짓의 한 문장 정의
- 이미지 분류와 다음 토큰 선택으로 보는 쉬운 예시
- 로짓이 AI 개발과 디버깅에서 중요한 이유
- 확률, 소프트맥스, 로그프로브, 임베딩과의 차이
- from_logits 설정과 출력 해석 순서
- 로짓을 신뢰도로 오해하지 않기 위한 주의점
- 자주 묻는 질문과 공식 출처
로짓을 한 문장으로 정의하면 무엇인가요?
로짓은 분류 모델이나 언어 모델이 각 후보에 대해 계산한, 확률로 정규화하기 전의 원시 예측 점수입니다.
Google 머신러닝 용어집은 로짓을 분류 모델이 생성하는 정규화되지 않은 원시 예측 벡터로 설명합니다. 다중 분류에서는 이 벡터를 소프트맥스에 넣어 클래스별 확률 벡터로 바꾸는 경우가 많습니다.
여기서 원시 점수라는 표현이 중요합니다. 로짓은 0과 1 사이일 필요가 없습니다. 음수도 가능하고 1보다 큰 값도 가능합니다. 모든 후보의 로짓을 더한 값에도 확률처럼 고정된 의미가 없습니다.
한 줄 정리: 로짓은 모델의 후보별 점수표이고, 확률은 그 점수표를 해석하기 쉬운 형태로 바꾼 결과입니다.
쉬운 예시로 이해해 볼까요?
감자나라ai님이 고양이·강아지·자동차를 구분하는 이미지 모델을 확인한다고 가정해 보겠습니다. 모델이 한 사진에 대해 고양이 2.0, 강아지 1.0, 자동차 -0.5라는 값을 냈다면 이 세 숫자를 로짓으로 볼 수 있습니다.
가장 큰 로짓은 고양이의 2.0이므로 모델은 세 후보 중 고양이를 더 강하게 밀고 있습니다. 그렇다고 2.0을 200% 확률로 읽거나 1.0을 100% 확률로 읽어서는 안 됩니다. 세 점수에 소프트맥스를 적용해야 서로 비교 가능한 확률 분포가 됩니다.
같은 원리는 언어 모델에도 적용됩니다. 챗GPT 같은 언어 모델은 답변을 한 토큰씩 만들 때 어휘 목록의 각 다음 토큰 후보에 로짓을 계산합니다. 그 뒤 온도와 샘플링 방식 등을 반영해 후보 분포를 만들고 다음 토큰을 선택합니다.
쉬운 예시: 로짓이 후보들의 예선 점수라면, 소프트맥스는 그 점수를 전체 합이 1인 확률표로 바꾸는 계산입니다.
AI를 이해하고 개발할 때 왜 중요한가요?
첫째, 모델 출력의 형식을 제대로 읽게 해 줍니다. 배열에 3.2, -1.1, 0.4가 들어 있다고 해서 확률이 잘못된 것은 아닙니다. 문서가 로짓을 반환한다고 설명한다면 아직 정규화 전 단계일 수 있습니다.
둘째, 학습 코드의 손실 계산을 정확히 설정할 수 있습니다. TensorFlow의 범주형 교차 엔트로피는 from_logits로 입력이 로짓인지 확률 분포인지 구분합니다. PyTorch의 CrossEntropyLoss는 각 클래스의 정규화되지 않은 로짓을 입력으로 받습니다. 모델이 이미 소프트맥스를 적용했는지 확인하지 않고 설정을 겹치면 손실 계산과 학습이 달라질 수 있습니다.
셋째, 언어 모델의 다음 토큰 선택 구조를 이해할 수 있습니다. Hugging Face Transformers의 모델 출력 문서는 여러 분류 출력의 로짓을 소프트맥스 전 점수로 설명합니다. 생성 모델에서도 후보 토큰 점수, 온도, 확률과 로그 확률의 관계를 이해하면 디코딩 설정을 덜 막연하게 볼 수 있습니다.
넷째, 디버깅할 위치를 찾기 쉬워집니다. 로짓이 지나치게 크거나 한 후보에만 몰리거나 입력이 달라도 거의 변하지 않는다면 모델, 데이터, 마지막 출력층이나 수치 안정성을 살펴볼 단서가 됩니다. 다만 이상 여부는 모델 구조와 학습 조건을 함께 보고 판단해야 합니다.
핵심 인사이트: 로짓을 알면 모델 출력이 틀린 것인지, 아직 확률로 바꾸지 않은 것인지부터 구분할 수 있습니다.
로짓은 어떻게 확률이 되나요?
1. 모델이 후보마다 원시 점수를 계산합니다
분류 모델은 클래스마다 점수를 하나씩 냅니다. 언어 모델은 다음에 올 수 있는 토큰마다 점수를 만듭니다. 이 값들이 로짓입니다.
2. 필요하면 점수의 크기를 조절합니다
언어 생성에서는 온도 같은 설정이 로짓의 상대적 간격을 조절할 수 있습니다. 낮은 온도는 높은 점수 후보에 더 무게를 싣고, 높은 온도는 분포를 더 평평하게 만드는 데 쓰입니다. 실제 처리 순서는 제품과 라이브러리 구현을 확인해야 합니다.
3. 소프트맥스로 확률 분포를 만듭니다
소프트맥스는 여러 로짓을 각각 0과 1 사이의 값으로 바꾸고 전체 합을 1로 만듭니다. 큰 로짓은 더 큰 확률을 받는 경향이 있지만 결과는 다른 후보의 로짓과 함께 결정됩니다.
4. 규칙에 따라 최종 후보를 고릅니다
가장 높은 확률의 후보를 바로 고를 수도 있고 확률 분포에서 샘플링할 수도 있습니다. 생성형 AI에서는 top-p, top-k, 반복 억제 같은 규칙이 추가될 수 있습니다.
실전 팁: 출력 텐서의 이름만 보지 말고 문서에서 로짓인지, 확률인지, 로그 확률인지와 변환이 어디서 적용되는지를 먼저 확인하세요.
헷갈리는 용어와 무엇이 다른가요?
로짓과 확률
로짓은 정규화 전 원시 점수입니다. 범위가 정해져 있지 않고 합이 1일 필요도 없습니다. 확률은 보통 0과 1 사이이며 가능한 결과의 확률 합이 1이 되도록 해석합니다.
로짓과 소프트맥스
로짓은 소프트맥스에 들어가는 입력입니다. 소프트맥스는 여러 로짓을 클래스별 확률 분포로 바꾸는 함수입니다. 둘은 같은 값이나 같은 단계가 아닙니다.
로짓과 로그프로브
로그프로브는 확률에 로그를 취한 값입니다. API가 제공하는 토큰별 로그프로브는 선택된 토큰과 주변 후보의 가능성을 비교하는 데 쓰입니다. 로짓은 그보다 앞선 원시 점수이며, 모든 서비스가 로짓을 외부에 공개하는 것은 아닙니다.
로짓과 점수(Score)
점수는 문맥에 따라 로짓, 유사도, 랭킹 점수, 확률이나 평가 지표를 모두 가리킬 수 있는 넓은 말입니다. API 응답에 score가 보이면 로짓이라고 추측하지 말고 공식 문서의 정의와 값 범위를 확인해야 합니다.
로짓과 임베딩
임베딩은 단어, 문장, 이미지 같은 정보를 벡터로 표현한 값입니다. 로짓은 모델이 최종 후보를 비교하려고 출력한 점수입니다. 둘 다 숫자 벡터일 수 있지만 목적과 해석이 다릅니다.
비교 정리: 임베딩은 정보를 표현하고, 로짓은 후보에 점수를 매기며, 소프트맥스는 그 점수를 확률로 바꾸고, 로그프로브는 확률을 로그 값으로 나타냅니다.
실전에서는 어떻게 확인하나요?
1. 출력 문서와 텐서 이름을 확인합니다
logits, probabilities, scores, logprobs 중 어떤 필드인지 봅니다. 이름이 비슷해도 공급자마다 의미가 다를 수 있으므로 설명과 값 범위를 함께 읽습니다.
2. 마지막 층과 손실 함수의 역할을 확인합니다
모델이 이미 소프트맥스를 적용하는지, 손실 함수가 내부에서 변환하는지 확인합니다. TensorFlow에서는 from_logits 값을 모델 출력에 맞춰야 합니다. PyTorch의 교차 엔트로피 손실에는 보통 정규화되지 않은 로짓을 전달합니다.
3. 작은 입력으로 모양과 값을 출력합니다
배치 크기, 클래스 수, 토큰 수에 따라 텐서 모양이 어떻게 되는지 확인합니다. 후보 수와 마지막 차원의 크기가 맞는지, NaN이나 무한대가 없는지 살펴봅니다.
4. 확률 변환 뒤 합과 순위를 비교합니다
소프트맥스를 적용했다면 클래스 축의 합이 1에 가까운지 확인합니다. 변환 전후로 가장 높은 후보가 어떻게 보이는지와 온도 설정이 분포에 어떤 차이를 만드는지도 비교합니다.
5. 실제 평가 결과와 함께 봅니다
큰 로짓이나 높은 소프트맥스 값만으로 모델이 맞다고 단정하지 않습니다. 검증 데이터의 정확도, 캘리브레이션, 오류 유형과 업무상 위험을 함께 확인합니다.
실전 체크: 필드 정의, 텐서 모양, 변환 위치, 클래스 축, 손실 함수 설정, 실제 평가 결과가 서로 맞는지 한 흐름으로 점검하세요.
사용할 때 무엇을 주의해야 하나요?
첫째, 로짓을 퍼센트로 읽지 않습니다. 4.0이라는 로짓은 400% 확률도, 4% 확률도 아닙니다.
둘째, 로짓의 절댓값만으로 모델을 비교하지 않습니다. 모델 구조, 학습 방식, 온도와 출력층이 다르면 점수 범위도 달라질 수 있습니다. 같은 입력에 대한 후보 간 관계와 검증 결과가 더 중요합니다.
셋째, 높은 소프트맥스 값도 실제 정답 확률과 같다고 단정하지 않습니다. 모델은 틀린 답에도 높은 값을 줄 수 있습니다. 예측 확률이 실제 정답 빈도와 맞는지는 별도의 캘리브레이션 평가가 필요합니다.
넷째, 소프트맥스를 중복 적용하지 않습니다. 손실 함수가 내부에서 로짓을 변환하는데 모델 출력에도 소프트맥스를 붙이면 의도한 계산과 달라질 수 있습니다. 프레임워크 문서를 기준으로 한 번만 적용되는지 확인합니다.
다섯째, 외부 AI 서비스가 내부 로짓을 제공한다고 가정하지 않습니다. 제품 API는 최종 텍스트, 확률 일부, 로그프로브나 별도의 점수만 보여 줄 수 있습니다. 제공되지 않은 내부 값을 역으로 확정해 설명하면 안 됩니다.
주의: 로짓은 모델 내부 판단을 들여다보는 유용한 중간값이지만, 정답 여부나 신뢰도를 보증하는 인증 점수는 아닙니다.
자주 묻는 질문
Q1. 로짓은 항상 여러 개가 나오나요?
다중 분류와 언어 모델에서는 후보마다 로짓이 있어 벡터 형태가 일반적입니다. 이진 분류는 구현에 따라 로짓 하나를 시그모이드에 넣거나 두 클래스 로짓을 사용할 수 있습니다. 모델 출력 문서를 확인해야 합니다.
Q2. 가장 큰 로짓을 가진 후보가 항상 선택되나요?
최댓값만 고르는 방식이라면 그렇습니다. 생성형 AI가 확률 샘플링을 사용하면 가장 큰 로짓의 후보가 가장 유력해도 다른 후보가 선택될 수 있습니다. 온도와 top-p 같은 설정도 선택 범위에 영향을 줍니다.
Q3. 로짓에 바로 소프트맥스를 적용하면 되나요?
확률 분포가 필요할 때는 자주 그렇게 합니다. 다만 학습 중 사용하는 교차 엔트로피 손실은 수치 안정성을 위해 로짓을 직접 받으며 내부에서 필요한 계산을 처리하기도 합니다. 프레임워크 문서를 먼저 확인하세요.
Q4. 로짓과 로그프로브 중 무엇을 봐야 하나요?
모델 내부 출력층과 학습을 점검한다면 로짓이 유용합니다. 생성 API가 고른 토큰과 상위 후보의 가능성을 살핀다면 로그프로브가 더 직접적입니다. API가 제공하는 필드와 분석 목적에 맞춰 선택해야 합니다.
Q5. 높은 로짓은 모델이 자신 있다는 뜻인가요?
같은 출력 안에서 다른 후보보다 큰 로짓은 그 후보를 더 선호한다는 뜻에 가깝습니다. 하지만 절댓값만으로 실제 정답 가능성이나 모델 간 신뢰도를 비교할 수는 없습니다. 검증 데이터와 캘리브레이션 결과를 함께 봐야 합니다.
출처
마무리
로짓은 AI 모델이 각 후보에 매긴 정규화 전 원시 점수입니다. 소프트맥스 같은 함수가 로짓을 확률 분포로 바꾸며, 로그프로브는 그 확률을 로그 값으로 나타냅니다. 숫자 벡터라는 모습만으로 확률이나 임베딩과 섞어 읽지 않는 것이 중요합니다.
감자나라ai님이 모델 문서나 API 응답에서 로짓을 만나면 세 가지부터 확인해 보세요. 아직 확률 변환 전 값인지, 어느 축의 후보 점수인지, 손실 함수나 디코딩 단계가 어떤 변환을 적용하는지입니다. 이 세 질문을 확인하면 AI 출력 구조와 오류 원인을 훨씬 정확하게 읽을 수 있습니다.
