컴퓨터과학/딥러닝

시그모이드 함수란? 딥러닝의 시그모이드 활성화 함수 구현방법

InfHo 2023. 1. 20. 23:31

목차

     

    개요

    시그모이드 함수는 신경망에서 일반적으로 사용되는 활성화 함수입니다. 

    입력을 0과 1 사이의 값으로 매핑하며, 이는 특정 클래스에 속하는 입력의 확률로 해석될 수 있습니다. 

    시그모이드 함수는 다음과 같이 정의됩니다.

    시그모이드(x) = 1 / (1 + e^(-x))

    여기서 x는 함수에 대한 입력이고 e는 자연 로그의 밑입니다. 이 함수는 실제 입력 값을 가져와서 0과 1 사이의 값으로 매핑합니다. 

    함수의 출력은 확률 값입니다. 여기서 값 0은 확률 0%에 해당하고 값 1은 100% 확률에 해당합니다. 

     

     

    시그모이드-함수-그래프
    시그모이드 함수

     

    특징

    시그모이드 함수는 "S" 모양 곡선을 가지며, 이는 모델이 출력에 대해 확률적 예측을 할 수 있도록 해주기 때문에 이진 분류 문제에 유용합니다. 시그모이드 함수는 또한 미분 가능한 출력을 생성하며, 이는 경사 하강법과 같은 최적화 알고리즘을 사용하여 모델을 훈련하는 데 유용합니다.

    시그모이드 함수에는 몇 가지 단점이 있습니다. 예를 들어 입력이 크면(양수 또는 음수) 기울기가 매우 작아질 수 있으며 이는 기울기 소실 문제로 알려져 있습니다. 또한 시그모이드 함수의 출력이 0이나 1에 가까우면 기울기가 0에 가까워 최적화 과정이 느려진다. 이러한 이유로 대부분의 경우, 특히 네트워크에 여러 계층이 있는 경우 ReLU 또는 tanh와 같은 다른 활성화 기능이 선호됩니다.

     

    [컴퓨터과학/딥러닝] - ReLU함수란 무엇인가? ReLU 활성화 함수 특징과 구현방법

     

    구현

    import math
    
    def sigmoid(x):
        return 1 / (1 + math.exp(-x))

     

    이 함수는 단일 입력 x를 사용하고 여기에 시그모이드 함수를 적용합니다. 

    이 함수를 사용하여 단일 뉴런 또는 전체 계층의 출력을 계산할 수 있습니다.

    또한 numpy와 같은 미리 빌드된 라이브러리를 사용하여 보다 효율적이고 편리하게 시그모이드 기능을 구현할 수 있습니다. 

    다음은 numpy를 사용하여 시그모이드 함수를 구현하는 방법의 예입니다.

     

    import numpy as np
    
    def sigmoid(x):
        return 1 / (1 + np.exp(-x))

     

    이 함수는 또한 입력의 시그모이드를 반환하지만 이제 numpy 배열을 입력으로 전달할 수도 있으며 함수는 배열의 모든 요소에 요소별로 시그모이드를 적용합니다.

     

    https://jkcb.tistory.com/category/%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B3%BC%ED%95%99/%EB%94%A5%EB%9F%AC%EB%8B%9D

     

    '컴퓨터과학/딥러닝' 카테고리의 글 목록

    모든 분야의 정보를 담고 있는 정보의 호텔입니다. 주로 컴전기입니다.

    jkcb.tistory.com