여러 개의 확률을 정리하는 소프트맥스 함수
소프트맥스 함수(Softmax Function)
는 여러 개의 숫자를 확률처럼 변환하는 함수입니다.
이전 수업에서 배운 시그모이드 함수(Sigmoid Function)
는 하나의 숫자를 0과 1 사이의 값으로 변환했지만, 소프트맥스 함수는 여러 개의 숫자를 모두 더했을 때 합이 1이 되도록 조정합니다.
이와 같은 특징 덕분에 다중 클래스 분류(Multi-Class Classification) 문제에서 자주 사용됩니다.
입력 이미지: 고양이 사진
출력 확률:
고양이: 0.80 (80%)
강아지: 0.15 (15%)
토끼: 0.05 (5%)
이처럼 소프트맥스 함수는 모델이 예측한 값을 확률 형태로 변환하여 가장 가능성이 높은 클래스를 선택할 수 있도록 합니다.
소프트맥스 함수의 동작 방식
소프트맥스 함수는 다음 수식으로 정의됩니다.
각 숫자()를 지수 함수()로 변환한 후, 모든 값의 합으로 나누어 확률 값으로 만듭니다.
이렇게 하면 전체 확률의 합이 항상 1이 됩니다.
입력: [2.0, 1.0, 0.1]
출력: [0.65, 0.24, 0.11] (확률의 합 = 1)
입력값이 클수록 더 높은 확률을 가지며, 작은 값은 더 낮은 확률이 됩니다.
소프트맥스 함수의 장점
소프트맥스 함수는 다중 클래스 분류 문제에서 결과를 해석하기 쉽게 만들어 줍니다.
모든 출력을 확률 값으로 변환하여 가장 가능성이 높은 클래스를 쉽게 선택할 수 있습니다.
또한, 모델이 얼마나 확신을 가지고 예측하는지 직관적으로 이해할 수 있습니다.
소프트맥스 함수의 한계
소프트맥스 함수는 각 클래스의 확률을 상대적인 값으로 변환하기 때문에, 특정 클래스의 확률이 다른 클래스에 의해 영향을 받을 수 있습니다.
즉, 한 클래스의 확률이 커지면 다른 클래스의 확률이 줄어드는 특징이 있습니다.
또한, 예측값이 극단적으로 크거나 작으면 한쪽 값이 1에 가깝고 나머지는 거의 0이 되어 학습이 어려울 수도 있습니다.
이를 해결하기 위해 출력값을 적절히 조정하는 기법이 필요합니다.
소프트맥스 함수는 머신러닝에서 다중 클래스 분류를 수행할 때 필수적인 도구입니다.
다음 수업에서는 지금까지 배운 활성화 함수를 한눈에 비교해 보겠습니다.
다음 내용이 궁금하다면?
코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!