뒤로
권예영
권예영 ·

SoftMax 함수

신경망 Activation Function – "SoftMax"

신경망에서 뉴런의 활성 함수(activation function)로 주로 sigmoid 함수를 사용한다.

sigmoid 함수를 사용하는 이유는 [Part II, Neural Networks] 3, Basic Theory에서 살펴본 것처럼, 단순하게 step function이나 linear function을 사용할 때보다 훨씬 많은 일을 할 수 있기 때문이다. sigmoid 함수는 입력단이나 hidden layer에 주로 사용 되며, 출력단에서도 사용 된다.

하지만, 실제 신경망의 응용에서는 출력단에 SoftMax 함수를 더 많이 사용 하며, 특히 분류기(classifier) 관련 application은 SoftMax 함수를 쓰면 훨씬 좋다.

이번 class에서는 SoftMax 함수에 대해 살펴볼 예정이다.

SoftMax에 대한 정의

SoftMax는 수식으로 정리하면 아래 식과 같다.

σ(z)j=ezj∑k=1Kezkfor j=1,...,K\sigma(z)_j = \frac{e^{z_j}}{\sum_{k=1}^{K} e^{z_k}} \quad \text{for } j = 1, ..., Kσ(z)j​=∑k=1K​ezk​ezj​​for j=1,...,K

위 식은 K-차원을 갖는 벡터 zzz를 (0,1) 범위를 갖는 σ(z)\sigma(z)σ(z)로 치환시키는 것과 같다. 자세히 보면, 확률 분포와 같다는 것을 알 수가 있으며, logistic regression이라고도 불린다.

위 식을 좀 더 살펴보자.

ZkZ_kZk​에 대해 편미분을 실시하면, j=kj = kj=k일 때는 양수이고, j≠kj \neq kj=k일 때는 음수가 된다. 즉, ZkZ_kZk​를 증가시키면 해당 뉴런의 출력값 σ(z)\sigma(z)σ(z)는 증가하고, 다른 뉴런의 출력값은 감소하게 되는 성질을 갖게 된다.

위 성질은 강화 학습(reinforcement learning)에 매우 유용하다. 강화 학습([Part 1, Machine Learning] 4. Reinforcement Learning을 참고)이라는 학습 결과에 대한 상과 벌을 보상(reward)으로 학습을 진행한다는 개념이기 때문에 SoftMax의 개념과 맞아떨어진다고 볼 수 있다.

이 수식은 어떤 의미를 가질까? 그리고 sigmoid를 사용할 때와 어떤 차이가 있는 걸까?

Sigmoid를 사용하면, 해당 뉴런으로 들어오는 입력들과 바이어스에 의해 출력이 결정이 된다.

하지만 SoftMax를 사용하면, 해당 뉴런으로 들어오는 입력들과 바이어스에 의해 출력이 결정이 되는 구조는 비슷하지만, 다른 뉴런의 출력값과의 상대적인 비교를 통해 최종 출력값이 결정된다는 점이 다르다.

이것을 전문 용어로는 “non-locality”라고 부른다.

SoftMax의 수식을 살펴보면 알 수 있는 것처럼, 모든 뉴런의 출력값들의 합하면 ‘1이 되기 때문에 평균화(normalization)의 효과를 얻게 된다.

그렇기 때문에 문자 인식이나 숫자 인식과 같은 분류를 목적으로 하는 신경망의 최종단에 SoftMax 함수를 쓰면, 해당 값이 나올 확률을 알 수가 있으며, 가장 큰 값이 나오는 쪽으로 분류가 될 수 있다.

또한 특정 항목의 변화가 최종 출력에 어떤 영향을 끼치는지를 바로 파악 가능한 효과도 덤으로 얻을 수 있다.

이번 class에서는 신경망의 활성 함수로 사용하는 SoftMax 함수의 개념과 이것에 대해 살펴보았다. 다음 class에서는 신경망의 학습의 시간 및 질을 결정하는 Hyper-parameter에 대해 살펴볼 예정이다.

1. 다중 클래스 분류 문제에서의 SoftMax 사용

SoftMax 함수는 다중 클래스 분류(multiclass classification) 문제에서, 모델이 여러 클래스 중에서 하나를 선택해야 할 때 사용됩니다. 예를 들어:

  • 이미지 분류: 고양이, 개, 새 등의 여러 클래스 중에서 주어진 이미지가 어떤 클래스에 속하는지 예측하는 문제.

  • 자연어 처리: 문장의 감정을 분류할 때 긍정, 부정, 중립과 같은 여러 클래스 중 하나를 선택하는 문제.

이러한 경우, SoftMax 함수는 로짓(logit) 값을 확률로 변환하여 각 클래스에 속할 확률을 계산합니다.

2. SoftMax가 작동하는 방식

  1. 로짓 값 계산:

    • 신경망이나 머신러닝 모델의 마지막 출력층에서 각 클래스에 대한 로짓 값(출력값)이 계산됩니다. 이 값들은 정규화되지 않은 상태이며, 클래스에 속할 가능성을 나타냅니다.

    • 예를 들어, 모델이 어떤 이미지에 대해 고양이, 개, 새의 로짓 값을 각각 [2.0, 1.0, 0.1]로 계산했다고 가정해봅시다.

  2. SoftMax 함수 적용:

    • SoftMax 함수는 이 로짓 값들을 확률로 변환합니다. 각 클래스에 대한 확률은 아래 수식처럼 계산됩니다:

    σ(z)j=ezj∑k=1Kezk\sigma(z)_j = \frac{e^{z_j}}{\sum_{k=1}^{K} e^{z_k}}σ(z)j​=∑k=1K​ezk​ezj​​

    • 예를 들어, 고양이, 개, 새에 대한 확률을 계산하면 각각의 확률 값이 나옵니다. 이 값들은 항상 0과 1 사이의 값이며, 모든 확률 값의 합은 1이 됩니다.

      • 고양이 확률: e2.0e2.0+e1.0+e0.1\frac{e^{2.0}}{e^{2.0} + e^{1.0} + e^{0.1}}e2.0+e1.0+e0.1e2.0​

      • 개 확률: e1.0e2.0+e1.0+e0.1\frac{e^{1.0}}{e^{2.0} + e^{1.0} + e^{0.1}}e2.0+e1.0+e0.1e1.0​

      • 새 확률: e0.1e2.0+e1.0+e0.1\frac{e^{0.1}}{e^{2.0} + e^{1.0} + e^{0.1}}e2.0+e1.0+e0.1e0.1​

    계산 결과로 고양이가 예를 들어 0.7, 개가 0.2, 새가 0.1이라는 확률을 얻을 수 있습니다.

  3. 결정:

    • 최종적으로 SoftMax 함수가 계산한 확률 값 중에서 가장 높은 확률을 가진 클래스를 모델이 예측 값으로 선택합니다.

    • 위 예시에서 고양이가 70% 확률로 가장 높으므로, 모델은 "이 이미지는 고양이다"라고 예측합니다.

3. 모델 학습에서의 역할

SoftMax 함수는 주로 모델의 출력 값에 적용되지만, 모델 학습 과정에서도 중요한 역할을 합니다.

  1. 크로스 엔트로피 손실 함수와 결합:

    • SoftMax 함수는 크로스 엔트로피 손실 함수(Cross-Entropy Loss)와 함께 자주 사용됩니다.

    • 모델이 예측한 확률과 실제 클래스 간의 차이를 측정하여 모델이 얼마나 정확한지 평가하는데 사용됩니다.

    • 예를 들어, 실제 정답이 고양이(즉, [1, 0, 0]의 벡터)이고, 모델의 SoftMax 출력이 [0.7, 0.2, 0.1]이라면, 이 둘의 차이를 계산하여 손실을 구합니다. 이를 통해 모델은 예측이 얼마나 정확한지 평가되고, 그에 따라 가중치 업데이트를 통해 성능을 향상시킵니다.

  2. 다중 클래스 문제 해결:

    • SoftMax는 여러 클래스 중 하나를 선택해야 할 때 매우 유용합니다. 모든 클래스에 대한 확률을 계산한 후 가장 가능성이 높은 클래스를 선택하기 때문에, 분류 문제에서 효율적으로 사용됩니다.

4. SoftMax의 장점

  1. 확률 기반 해석: SoftMax 함수는 결과를 확률 값으로 변환해주므로, 예측이 얼마나 신뢰할 수 있는지 해석할 수 있습니다. 예를 들어, 모델이 0.9라는 높은 확률로 특정 클래스를 예측했다면, 이는 매우 신뢰할 수 있는 예측임을 의미합니다.

  2. 다중 클래스 분류에 적합: 여러 클래스를 분류해야 하는 문제에서 SoftMax는 각 클래스에 속할 확률을 계산하여, 가장 가능성이 높은 클래스를 선택할 수 있도록 도와줍니다.

  3. 정규화: SoftMax는 출력값을 정규화하여 모든 확률의 합이 1이 되도록 합니다. 이를 통해 클래스 간 비교를 할 수 있습니다.

5. 실제 사용 예시

  • 이미지 분류: CNN(Convolutional Neural Networks) 같은 이미지 분류 모델에서 마지막 출력층에 SoftMax를 사용하여 고양이, 개, 자동차 등 여러 클래스를 분류합니다.

  • 자연어 처리(NLP): 텍스트에서 감정을 분류하거나, 문장의 주제를 분류하는 문제에서도 SoftMax를 사용하여 각 클래스에 속할 확률을 계산합니다.

결론:

SoftMax 함수는 다중 클래스 분류 문제에서 모델이 여러 클래스 중 하나를 선택할 확률을 계산하는 데 사용됩니다. 이 함수는 모델의 예측값을 확률로 변환하여, 가장 높은 확률을 가진 클래스를 예측 결과로 선택하게 합니다. 머신러닝에서 모델이 분류 문제를 학습하고 예측할 때, SoftMax는 예측 값의 확률 기반 해석을 가능하게 하고, 이를 통해 더 나은 성능을 끌어낼 수 있습니다.


SoftMax 함수가 강화 학습(Reinforcement Learning)과 잘 맞는 이유는, 확률 기반의 행동 선택과 탐험과 활용 간의 균형을 효과적으로 조절하는 특성 때문입니다. 이를 구체적으로 설명하겠습니다.

1. 강화 학습에서의 행동 선택:

강화 학습에서는 에이전트가 환경에서 행동을 선택하고, 그에 따라 보상(reward)을 받아 학습하는 과정이 진행됩니다. 이때, 에이전트는 가능한 여러 행동(action) 중에서 하나를 선택해야 하는데, SoftMax는 이러한 상황에서 각 행동의 선택 확률을 계산하는 데 유용합니다.

SoftMax 함수가 강화 학습에 적합한 이유:

확률 기반의 행동 선택: SoftMax는 각 행동에 대해 확률 분포를 생성합니다. 즉, 각 행동에 부여된 값(보상 예상값 또는 Q-값)을 바탕으로 행동을 선택하는 확률을 계산해줍니다. 이렇게 확률적으로 행동을 선택하는 것은 강화 학습에서 매우 중요한데, 이는 에이전트가 항상 가장 높은 보상만을 추구하는 것이 아니라 다양한 행동을 탐색할 수 있게 해줍니다.

2. 탐험(Exploration)과 활용(Exploitation)의 균형:

강화 학습의 중요한 목표 중 하나는 탐험(Exploration)과 활용(Exploitation) 사이의 균형을 맞추는 것입니다.

탐험(Exploration): 에이전트는 새로운 행동을 시도하고, 이를 통해 아직 알지 못하는 환경을 학습해야 합니다.

활용(Exploitation): 에이전트는 이미 학습한 정보를 바탕으로 가장 큰 보상을 줄 수 있는 최적의 행동을 선택해야 합니다.

SoftMax 함수는 이 두 가지 요구를 균형 있게 조절해줄 수 있습니다. 탐험과 활용의 균형이 중요한 이유는, 에이전트가 항상 최대 보상을 주는 행동만을 선택하면 새로운 행동을 시도하지 않게 되고, 반대로 항상 새로운 행동만을 시도하면 보상이 높은 행동을 충분히 활용하지 못하게 되기 때문입니다.

SoftMax의 역할:

보상의 차이에 따라 확률적으로 행동 선택: SoftMax는 보상이 큰 행동에 더 높은 확률을 부여하면서도, 보상이 낮은 행동에도 일정 확률을 부여합니다. 즉, 항상 최선의 행동만 선택하는 것이 아니라, 때로는 새로운 행동을 시도할 확률도 부여하게 됩니다.

보상의 차이가 크다면, 확률이 더 명확하게 나뉘고, 보상의 차이가 적다면 모든 행동이 선택될 확률이 고르게 분포됩니다.

예를 들어, 두 행동이 각각 80점과 70점의 보상을 줄 수 있다면, 80점이 더 자주 선택되겠지만 70점도 일정한 확률로 선택될 수 있습니다. 이를 통해 다양한 행동을 탐험할 수 있는 기회를 제공합니다.

3. Q-값과 SoftMax의 결합:

강화 학습에서 사용되는 대표적인 알고리즘 중 하나인 Q-러닝에서는 각 행동에 대한 Q-값(행동의 기대 보상)이 계산됩니다. SoftMax는 이 Q-값을 확률로 변환하여 에이전트가 행동을 선택할 때 사용합니다.

Q-값이 클수록 해당 행동이 선택될 확률이 커집니다. 하지만, Q-값이 낮은 행동도 0이 아닌 확률로 선택될 수 있어 탐험의 기회를 제공합니다.

이는 Epsilon-Greedy와 같은 방식과는 차이가 있습니다. Epsilon-Greedy는 일정 확률로 무작위 행동을 선택하는 반면, SoftMax는 각 행동의 Q-값에 따라 확률적으로 선택을 수행합니다. 즉, 보상의 크기에 따른 비례적 선택을 유도하므로, 탐험과 활용의 균형을 더 세밀하게 조정할 수 있습니다.

4. 보상에 대한 민감도 조절:

SoftMax 함수는 행동의 선택 확률을 계산할 때 온도 매개변수(temperature parameter)를 사용해 행동 선택에 대한 민감도를 조절할 수 있습니다.

온도 매개변수 τ\tauτ (temperature)는 SoftMax 함수의 분모에 영향을 줍니다. 이를 통해 에이전트가 탐험과 활용 사이에서 더 자유롭게 선택할 수 있게 도와줍니다.

τ\tauτ 값이 크면, 모든 행동의 확률이 비슷하게 분포되며 탐험이 많이 일어납니다.

τ\tauτ 값이 작으면, 보상이 큰 행동에 더 높은 확률이 부여되어 활용이 많이 일어납니다.

따라서, SoftMax 함수는 강화 학습에서 온도 매개변수를 통해 에이전트가 탐험과 활용 간의 균형을 유연하게 맞출 수 있도록 돕습니다.

5. 정리:

SoftMax 함수는 강화 학습에서 확률적으로 행동을 선택하는 데 유용합니다. 이는 항상 최적의 행동만을 선택하지 않고, 새로운 행동을 탐색할 기회도 제공해줍니다.

탐험과 활용의 균형을 유지할 수 있게 하여, 에이전트가 학습 과정에서 최적의 성능을 발휘할 수 있도록 합니다.

온도 매개변수를 사용하여 에이전트의 행동 선택에 대한 민감도를 조절할 수 있으며, 보상의 크기에 따라 각 행동의 선택 확률을 차별화할 수 있습니다.

이러한 이유로 SoftMax 함수는 강화 학습에서 매우 효과적으로 작동하며, 다양한 행동을 탐색하면서도 보상이 큰 행동을 적절히 활용할 수 있는 기회를 제공합니다.


문자 인식 및 숫자 인식에서의 사용:

문자 인식이나 숫자 인식과 같은 문제에서는 여러 가지 가능한 문자나 숫자 중 하나를 선택해야 합니다.

예를 들어, 손글씨 숫자 인식 문제에서는 '0'부터 '9'까지의 숫자 중 하나를 인식해야 합니다. SoftMax 함수는 각 숫자에 대해 확률을 계산하고, 가장 높은 확률을 가진 숫자를 최종 결과로 선택하게 합니다.


0과 1사이에서 상대적인 분포로 최대한 확률높은 선택지를 나타낸다.

다른 선택지를 배제하지 않고 확률적인 분포로 조정이 가능하기에 또한 상대비교적 특징때문에(각각의 선택지가 서로에게 영향을 준다) 강화학습과의 시너지가 좋다. (다양한 행동을 탐색하고 실험하며 상벌로 파악할 수 있기 때문에)

1

댓글

로그인 후 댓글을 남길 수 있습니다.

아직 댓글이 없습니다.