소프트맥스 회귀
1. 소프트맥스 함수
- 소프트맥스 함수는 선택해야 하는 선택지의 총 개수가 k라고 할 때, k차원의 벡터를 입력받아 각 클래스에 대한 확률을 추정함
예시) 꽃받침 길이, 꽃받침 넓이, 꽃잎 길이, 꽃잎 넓이로부터 setosa, versicolor, virginica라는 3개의 춤종 중 어떤 품종인지를 예측하는 문제
- 소프트맥스를 구하는 식은 아래와 같음
- 어떤 꽃의 꽃받침 길이, 꽃받침 넓이, 꽃잎 길이, 꽃잎 넓이에 대한 정보로 setosa, versicolor, virginica이 될 확률이 각각 0.26, .070, 0.04가 나왔고, 실제 품종이 versicolor이라고 하면 아래의 그림과 같이 표현할 수 있음
- 이와 같이 실제값을 원-핫 인코딩으로 표현할 경우 단어의 유사성은 고려될 수 없다는 문제점을 가짐
2. 비용 함수 - 크로스 엔트로피 함수
- 소프트맥스 회귀에서는 비용함수로 크로스 엔트로피 함수를 사용함
- 크로스 엔트로피 함수는 아래와 같으며, y_j는 실제값 원-핫벡터의 j번쨰 인덱스를 의미하며, p_j는 샘플 데이터가 j번째 클래스일 확률임
- 정확하게 예측한 경우를 생각해보면 -log(1)=0이 됨
- 위의 식에서 k가 2라면 로지스틱 회귀에서 배운 크로스 엔트로피 함수임
3. 소프트맥스 회귀 실습
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
model = Sequential()
model.add(Dense(3, input_dim=4, activation='softmax')) # 출력의 차원 = 3, 입력의 차원 = 4
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) # 오차함수로 크로스 엔트로피 함수 사용
history = model.fit(X_train, y_train, epochs=200, batch_size=1, validation_data=(X_test, y_test))
출처: 유원준/안상준, 딥러닝을 이용한 자연어 처리 입문-1권, p222-p238.
'자연어 처리' 카테고리의 다른 글
[웹 크롤링] selenium을 이용한 웹크롤링 (0) | 2023.05.29 |
---|---|
[딥러닝을 이용한 자연어 처리 입문] 심층신경망 이해하기 (1) | 2023.05.13 |
[딥러닝을 이용한 자연어 처리 입문] 벡터와 행렬 연산 (0) | 2023.04.16 |
[딥러닝을 이용한 자연어 처리 입문] 선형 회귀와 로지스틱 회귀 (0) | 2023.04.16 |
[딥러닝을 이용한 자연어 처리 입문] 머신 러닝 (0) | 2023.04.06 |