ReLU, Sigmoid, Softmax

Acrylic·2024년 3월 25일

ReLU, Sigmoid, Softmax를 비교하는 건 무엇이 더 우월하냐가 아니라 무엇이 어떨 때 가장 사용하기 적절한지를 보는 겁니다.

ReLU

x=0인 구간을 제외하고 급격한 선형으로 이루어진 함수(일정 부분을 무시하고 싶을 때 사용)

Sigmoid

ReLU와 달리 곡선으로 이루어진 함수(이진 분류에 사용)

예제

#tensorflow 사용하지 않는 np코드(이것으로 수업함)
# 단계1: 데이터 설정하기
import numpy as np
X = np.array( [ [0,0], [0,1], [1,0], [1,1] ] )  #입력
Y = np.array( [[0], [0], [0], [1]])            #출력

#import tensorflow as tf
w = np.random.normal( size = 2 )          #가중치
b = np.random.normal( size = 1 )          #편향
a = 0.1                                    #학습률
print(w,b)

#단계2: sigmoid함수 정의하고 학습시키기
def sigmoid( x ) :
    return 1/(1+np.exp(-x))

for i in range( 100000 ) :
    error_sum = 0
    for j in range( 4 ) :
        output = sigmoid( np.sum( X[j]*w ) + b)
        error = Y[j][0] - output
        w = w + X[j] * a * error
        b = b + a * error
        error_sum += error
    if i % 1000 == 0 :
        print( i, error_sum )
        
 #단계3: 각각의 입력 값에 따른 출력값 예측하기
for i in range(4) :
    print('X :', X[i], '==> 예측 Y :', sigmoid(np.sum(X[i]*w)+b))

위 코드는 AND 연산을 판별하는 거지만 XOR은 이 코드로 수행할 수 없는 것을 알 수 있습니다.

Softmax

독립 변수가 3개 이상인 걸 분석할 때 미분 가능한 근사치로 만들어 사용하는 함수

profile
프런트엔드 개발자 지망생

0개의 댓글