소프트맥스(Softmax) 계층에서 지수 함수를 사용하는 이유는 다중 클래스 분류 문제에서 클래스별 확률을 계산하기 위해서입니다.
다중 클래스 분류에서 소프트맥스 함수는 입력 벡터를 확률 분포로 변환하는 역할을 합니다. 소프트맥스 함수는 각 클래스에 대한 점수(또는 로짓)를 입력으로 받아 해당 클래스에 대한 확률을 출력합니다. 이때, 지수 함수(exp)를 사용하는 이유는 다음과 같습니다.
양수화: 지수 함수를 사용하면 음수 값을 양수로 변환할 수 있습니다. 음수 점수가 있는 경우 이를 양수로 변환하여 계산하는 것이 중요합니다.
비선형성: 소프트맥스 함수는 비선형 함수입니다. 비선형 함수를 사용하는 이유는 모델이 더 복잡한 관계를 학습할 수 있게 하기 위해서입니다. 선형 함수인 경우 각 클래스의 점수에 대한 상대적인 차이가 유지되지 않을 수 있습니다.
정규화: 소프트맥스 함수는 지수 함수의 특성을 이용하여 입력 벡터를 정규화합니다. 소프트맥스 함수는 각 클래스의 점수를 지수 함수를 통해 증폭시키고, 모든 클래스의 점수의 합으로 나누어 확률로 변환합니다. 이를 통해 각 클래스에 대한 확률이 0과 1 사이에 있으며, 전체 클래스에 대한 확률의 합은 1이 됩니다. 이는 확률적 해석이 가능하도록 합니다.
소프트맥스 함수의 로그를 취하는 이유: 로그 변환의 수치적 안정성: 소프트맥스 함수의 분모에는 모든 클래스의 지수 함수 값의 합이 있습니다. 이 값이 매우 크거나 작은 경우, 컴퓨터에서는 수치적인 불안정성이 발생할 수 있습니다. 로그 변환은 지수 함수의 값을 로그 스케일로 변환하여 이러한 수치적 안정성을 개선합니다.
로그 용이성: 로그 변환은 곱셈 연산을 덧셈 연산으로 변환할 수 있습니다. 로그를 취한 후의 값을 더하면 원래 값을 곱한 것과 동일한 결과를 얻을 수 있습니다. 이는 계산의 효율성과 수치적 안정성을 높여줍니다.
로그 함수의 역할:
손실 함수 계산: 로그 함수는 주로 크로스 엔트로피 손실 함수와 함께 사용됩니다. 소프트맥스 함수의 출력과 실제 클래스 레이블 사이의 차이를 측정하기 위해 로그 변환을 수행합니다. 이를 통해 모델의 손실을 계산하고, 손실을 최소화하는 방향으로 모델을 학습시킵니다.
모델 성능 평가: 로그 함수는 모델의 예측 결과와 실제 레이블 간의 차이를 계산하는 데 사용됩니다. 예를 들어, 정확도(accuracy)를 계산할 때 로그 함수가 사용될 수 있습니다.
따라서, 소프트맥스 계층에서 지수 함수를 사용하는 것은 다중 클래스 분류 문제에서 클래스별 확률을 계산하기 위해 필요한 과정입니다.