AI 하드웨어·소프트웨어 스택

소프트맥스 함수 exp(xi)/Σexp(xj)를 계산할 때 각 xi에서 최댓값을 뺀 뒤 계산하는 경우가 많은 이유로 올바른 것은 무엇인가?

  1. A계산 결과를 근삿값으로 바꾸어 빠르게 하기 위해
  2. B최대 요소를 반드시 0으로 만들기 위해
  3. C결과는 그대로이면서 exp 값이 너무 커져 오버플로(무한대가 됨)하는 것을 막을 수 있기 때문
정답과 해설 보기

정답: C. 결과는 그대로이면서 exp 값이 너무 커져 오버플로(무한대가 됨)하는 것을 막을 수 있기 때문

exp는 급격히 커지는 함수여서, 예를 들어 FP16에서는 x가 11 정도를 넘으면 exp(x)가 표현 가능한 최댓값을 넘어 버립니다. 모든 x에서 같은 상수 m을 빼면 분자와 분모가 모두 exp(-m)배가 될 뿐 결과는 변하지 않습니다. 최댓값을 빼면 지수가 0 이하가 되어 exp 값이 1 이하로 수렴하므로 오버플로하지 않습니다. 낮은 정밀도로 계산하는 AI에서 특히 중요한 기법이며 고속 어텐션 구현에서도 사용됩니다.

  • A. 결과는 정확히 같습니다.
  • B. 최대 요소의 출력이 가장 커지며 0이 되지 않습니다.
  • C. 정답입니다. 분자와 분모에 같은 계수가 곱해질 뿐입니다.
이 분야 연습하기 분야로 돌아가기

AI 하드웨어·소프트웨어 스택의 다른 문제

  1. 대규모 언어 모델의 추론을 빠르게 하는 '투기적 디코딩'의 발상으로 올바른 것은 무엇인가?
  2. 추천 시스템 모델 등에서 사용되는 큰 임베딩 테이블의 조회가 AI 하드웨어에서 다루기 어려운 이유로 올바른 것은 무엇인가?
  3. AI 소프트웨어 스택을 사용자에 가까운 위쪽 층에서 하드웨어에 가까운 아래쪽 층으로 나열한 것으로 올바른 것은 무엇인가?
  4. 신경망의 '학습'과 '추론'의 차이로 올바른 것은 무엇인가?
  5. 학습에 필요한 메모리가 같은 모델의 추론보다 훨씬 커지는 이유로 해당하지 않는 것은 무엇인가?