머신러닝 & 딥러닝/기초 이론

[머신러닝/딥러닝 기초] 9. 항등 함수와 소프트맥스 함수

by seokii 2022. 2. 15.
728x90
반응형

신경망과 신경망의 구조

https://seokii.tistory.com/69

 

[머신러닝/딥러닝 기초] 8. 신경망과 신경망의 구조

활성화 함수 https://seokii.tistory.com/67 [머신러닝/딥러닝 기초] 7. 퍼셉트론에서 신경망으로 가는 핵심: 활성화 함수란? 퍼셉트론의 한계와 다층 퍼셉트론 https://seokii.tistory.com/56 6. 퍼셉트론의 한계..

seokii.tistory.com

지난 글에서 신경망과 신경망의 구조에 대해서 간단하게 정리를 했습니다.

이번 글에서는 신경망의 출력층에서 사용하는 활성화 함수에 대해서 정리하겠습니다.

 

항등 함수와 소프트맥스 함수

신경망은 분류와 회귀 문제 모두에 적용할 수 있습니다.

다만 어떤 문제를 해결하느냐에 따라서 출력층에서 사용하는 활성화 함수가 달라집니다.

일반적으로 회귀에는 항등 함수를, 분류에는 소프트맥스 함수를 사용합니다.

그렇다면 항등 함수와 소프트맥스 함수는 무엇일까요?

 

항등 함수(identity function)는 입력을 그대로 출력하는 함수입니다.

항등이란 말 뜻 그대로 입력과 출력이 같다는 것을 의미합니다.

따라서, 신경망의 출력층에서 항등 함수를 사용하면 입력 신호가 그대로 출력 신호가 됩니다.

다음은 항등 함수의 처리에 대한 신경망 그림입니다.

 

 

소프트맥스 함수(softmax function)는 분류 문제에서 사용되는 활성화 함수입니다.

보통 다중 클래스 분류 문제에서 주로 사용됩니다.

소프트맥스 함수의 식은 다음과 같습니다.

$$y_{k}=\dfrac{e^{a_{k}}}{\sum ^{n}_{i=1}e^{a_{i}}}$$

(\(e\)는 자연상수, \(n\)은 출력층의 뉴런 수, \(y_{k}\)는 \(k\)번째 출력을 의미)

소프트맥스 함수를 그림으로 나타내면 다음과 같습니다.

그림처럼 소프트맥스 함수의 출력은 모든 입력 신호로부터 화살표를 받습니다.

출력층의 각 노드가 모든 입력 신호에서 영향을 받기 때문입니다.

 

소프트 맥스 함수 구현

import numpy as np

a = np.array([0.3, 2.9, 4.0])

exp_a = np.exp(a) # 지수 함수
print(f'exp_a -> {exp_a}')

sum_exp_a = np.sum(exp_a) # 지수 함수의 합
print(f'sum_exp_a -> {sum_exp_a}')

y = exp_a / sum_exp_a
print(f'y -> {y}')

 

exp_a -> [ 1.34985881 18.17414537 54.59815003]
sum_exp_a -> 74.1221542101633
y -> [0.01821127 0.24519181 0.73659691]

결과를 보시면 소프트맥스 함수의 출력은 0에서 1.0 사이의 실수 입니다.

또한, 소프트맥스 함수 출력의 총합은 1입니다.

출력 총합이 1이 된다는 성질은 소프트맥스 함수의 중요한 특징입니다.

이 성질로 인해 소프트맥스 함수의 출력을 확률로 해석할 수 있습니다.

예를 들면, 위의 코드에서 각 클래스의 확률은 0.018.., 0.245..., 0.736... 이므로 3번째 클래스로 분류할 수 있는 것입니다. 소프트맥스 함수를 사용하면서 문제를 확률적으로 대응할 수 있게 되는 것입니다.

 

 

728x90
반응형

댓글