Skip to content

Latest commit

 

History

History
304 lines (168 loc) · 5.12 KB

activations.md

File metadata and controls

304 lines (168 loc) · 5.12 KB

활성화 함수의 사용법Usage of activations

활성화 함수는 Activationlayer이나 포워드 패스를 사용하는 모든 층에서 activation 인자로 사용 가능합니다.

from keras.layers import Activation, Dense

model.add(Dense(64))
model.add(Activation('tanh'))

위의 코드는 아래와 동일합니다.

model.add(Dense(64, activation='tanh'))

TensorFlow, Theano, CNTK에서 제공하는 원소별element-wise 연산도 활성화 함수로 사용할 수 있습니다.

from keras import backend as K

model.add(Dense(64, activation=K.tanh))

사용 가능한 활성화 함수

softmax

keras.activations.softmax(x, axis=-1)

Softmax 활성화 함수.

인자

  • x: 입력 텐서.
  • axis: int. Softmax 정규화normalization가 적용되는 축axis.

반환값

Softmax 변환으로 생성된 텐서.
f(x) = exp(x) / sum(exp(x))

오류

  • ValueError: dim(x) == 1인 경우 발생합니다.

elu

keras.activations.elu(x, alpha=1.0)

Exponential Linear Unit(ELU).

인자

  • x: 입력 텐서.
  • alpha: float. x < 0인 경우의 기울기. 기본값은 1.0.

반환값

ELU의 활성값.

  • x > 0인 경우, f(x) = x
  • x < 0인 경우, f(x) = alpha * (exp(x) - 1)

참고


selu

keras.activations.selu(x)

Scaled Exponential Linear Unit(SELU).

SELU는 scale * elu(x, alpha)와 같습니다. alphascale은 미리 정해지는 상수입니다. 가중치weights가 올바르게 초기화되고(lecun_normal 참조) 입력 수가 '충분히 많다'면 alphascale의 값은 입력의 평균과 분산이 연속되는 두 개의 층에서 보존되도록 결정됩니다(참고자료 참조).

인자

  • x: 입력 텐서.

반환값

SELU의 활성값
f(x) = scale * elu(x, alpha)

유의 사항

  • lecun_normal과 함께 사용되어야 합니다.
  • AlphaDropout과 함께 사용되어야 합니다.

참고


softplus

keras.activations.softplus(x)

Softplus 활성화 함수.

인자

  • x: 입력 텐서.

반환값

Softplus의 활성값.
f(x) = log(exp(x) + 1)


softsign

keras.activations.softsign(x)

Softsign 활성화 함수.

인자

  • x: 입력 텐서.

반환값

Softsign의 활성값.
f(x) = x / (abs(x) + 1)


relu

keras.activations.relu(x, alpha=0.0, max_value=None, threshold=0.0)

Rectified Linear Unit(ReLU).

인자의 기본값을 사용하면 원소별로 연산된 max(x, 0)를 반환합니다.

다른 인자를 사용하면 ReLU는 다음과 같습니다.

  • x >= max_value인 경우, f(x) = max_value
  • threshold <= x < max_value인 경우, f(x) = x
  • 나머지 경우, f(x) = alpha * (x - threshold)

인자

  • x: 입력 텐서.
  • alpha: float. x < 0인 경우의 기울기. 기본값은 0.0.
  • max_value: float. 포화 임계값.
  • threshold: float. 활성화가 일어나는 임계값.

반환값

ReLU 변환으로 생성된 텐서.

  • x >= max_value인 경우, f(x) = max_value
  • threshold <= x < max_value인 경우, f(x) = x
  • 나머지 경우, f(x) = alpha * (x - threshold)

tanh

keras.activations.tanh(x)

Hyperbolic Tangent 활성화 함수.

인자

  • x: 입력 텐서.

반환값

Hyperbolic Tangent의 활성값.
f(x) = tanh(x) = (exp(x) - exp(-x)) / (exp(x) + exp(-x))


sigmoid

keras.activations.sigmoid(x)

Sigmoid 활성화 함수.

인자

  • x: 입력 텐서.

반환값

Sigmoid의 활성값.
f(x) = 1 / (1 + exp(-x))


hard_sigmoid

keras.activations.hard_sigmoid(x)

Hard sigmoid 활성화 함수.

Sigmoid 활성화 함수보다 연산 속도가 빠릅니다.

인자

  • x: 입력 텐서.

반환값

Hard sigmoid의 활성값.

  • x < -2.5인 경우, f(x) = 0
  • x > 2.5인 경우, f(x) = 1
  • -2.5 <= x <= 2.5인 경우, f(x) = 0.2 * x + 0.5

exponential

keras.activations.exponential(x)

(밑이 e인) 지수 활성화 함수.

인자

  • x: 입력 텐서.

반환값

Exponential의 활성값. f(x) = exp(x)


linear

keras.activations.linear(x)

선형(즉, 항등) 활성화 함수.

인자

  • x: 입력 텐서.

반환값

변하지 않은 입력 텐서.

고급 활성화 함수에 대하여

간단한 TensorFlow, Theano, CNTK의 활성화 함수보다 더 복잡한 함수들(예: 학습 가능한 파라미터를 가진 활성화 함수)은 고급 활성화 함수의 사용법에서 확인할 수 있으며, keras.layers.advanced_activations 모듈에서 찾을 수 있습니다. PReLULeakyReLU도 여기서 찾을 수 있습니다.