감성분석과 문서분류

Python을 이용해 텍스트에 나타난 감성과 의견을 분석하고, 문서를 카테고리에 따라 분류합니다.


수강중

5. 소프트맥스 함수

동영상이 없는 텍스트 강의 자료입니다.

소프트맥스 함수

소프트맥스(softmax)는 로지스틱 함수를 일반화한 것으로서 여러 개의 카테고리가 있을 때 사용합니다. 둘의 차이를 한 번 알아보겠습니다. 먼저 텐서플로를 불러옵니다.

import tensorflow as tf

로지스틱 함수와 소프트맥스 함수의 출력 결과를 간단한 예시로 알아보겠습니다. 먼저 x1x2를 아래와 같이 정의합니다.

x1 = [1.0, 2.0, 3.0]

로지스틱 함수 또는 시그모이드 함수는 주어진 각각의 입력을 0~1 사이의 값으로 변환합니다.

y_sigmoid = tf.nn.sigmoid(x1).numpy()
y_sigmoid
array([0.7310586 , 0.880797  , 0.95257413], dtype=float32)

위 출력결과에서 기존 1.0, 2.0, 3.0가 0~1 사이 값으로 변환되었습니다. 그러나 그 합은 1보다 클 수도, 작을 수도 있습니다.

y_sigmoid.sum()
2.5644298

소프트맥스 역시 주어진 입력을 0~1사이의 값으로 변환합니다.

y_softmax = tf.nn.softmax(x1).numpy()
y_softmax
array([0.09003057, 0.24472848, 0.66524094], dtype=float32)

소프트맥스에서 출력의 합은 1이 됩니다.

y_softmax.sum()
1.0

따라서 둘 중에 하나로 분류할 경우에는 하나의 입력을 로지스틱 함수에 넣어 하나의 출력을 얻습니다. 이 출력은 0~1사이의 값이므로 둘 중에 어느 한쪽일 확률로 해석할 수 있습니다.

여러 개 중의 하나로 분류할 경우에는 카테고리와 같은 수의 입력을 소프트맥스 함수에 넣습니다. 각각의 출력은 0~1 사이이며, 모두 더하면 1이 되므로 출력을 각 카테고리에 해당하는 확률로 해석할 수 있습니다.