ReLU, Sigmoid, Softmax를 비교하는 건 무엇이 더 우월하냐가 아니라 무엇이 어떨 때 가장 사용하기 적절한지를 보는 겁니다.
x=0인 구간을 제외하고 급격한 선형으로 이루어진 함수(일정 부분을 무시하고 싶을 때 사용)

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은 이 코드로 수행할 수 없는 것을 알 수 있습니다.
독립 변수가 3개 이상인 걸 분석할 때 미분 가능한 근사치로 만들어 사용하는 함수
