BrainScript를 사용하는 활성화 함수

Sigmoid(), Tanh(), ReLU(), Softmax(), LogSoftmax(), Hardmax()

신경망에 대한 비선형 활성화 함수입니다.

Sigmoid (x)
Tanh (x)
ReLU (x)
Softmax (x)
LogSoftmax (x)
Hardmax (x)

매개 변수

  • x: 비선형성을 적용할 인수입니다.

반환 값

비선형성을 적용한 결과입니다. 출력의 텐서 모양은 입력과 동일합니다.

Description

이들은 신경망의 인기 있는 활성화 기능입니다. 패밀리를 Softmax() 제외한 모든 항목이 Hardmax() 요소에 적용됩니다.

효율성을 위해 크로스 엔트로피 학습 조건을 사용하는 경우 끝에 Softmax 연산을 적용하지 않고 대신 Softmax의 입력 을 에 전달하는 것이 바람직합니다. CrossEntropyWithSoftmax()

Hardmax() 작업은 값이 가장 높은 요소를 결정하고 해당 위치를 원 핫 벡터/텐서로 나타냅니다. 분류를 수행하는 데 사용됩니다.

BrainScript에서 기타 비선형성 표현

필요한 비선형성이 위 중 하나가 아닌 경우 BrainScript 식으로 구성할 수 있습니다. 예를 들어 음수 부분에 대해 기울기 0.1의 새는 ReLU를 다음과 같이 작성할 수 있습니다.

LeakyReLU (x) = 0.1 * x + 0.9 * ReLU (x)

축을 따라 소프트맥스

Softmax 제품군은 분모의 계산을 포함한다는 측면에서 특별합니다. 이 분모는 입력 벡터의 모든 값에 대해 계산됩니다.

그러나 일부 시나리오에서는 입력이 순위>1의 텐서이며 축을 별도로 처리해야 합니다. 예를 들어 20개의 서로 다른 분포를 저장하는 셰이프 [10000 x 20] 의 입력 텐서에서 각 열은 고유 입력 항목의 확률 분포를 나타냅니다. 따라서 Softmax 작업은 20개의 개별 분모를 계산해야 합니다. 이 작업은 기본 제공 함수에서 (Log)Softmax() 지원되지 않지만 다음과 같이 요소 축소 작업을 사용하여 BrainScript에서 실현할 수 있습니다.

ColumnwiseLogSoftmax (z) = z - ReduceLogSum (axis=1)

여기서는 ReduceLogSum() 분모(로그)를 계산하여 위 예제에서 축소된 축 [1 x 20] 에 대해 차원 1이 있는 텐서가 생성됩니다. -dimensional 입력 벡터에서 [10000 x 20]이것을 빼는 것은 유효한 작업입니다. 평소와 1 같이 입력 차원과 일치하도록 자동으로 "브로드캐스트"됩니다.

예제

40차원 기능 벡터의 10방향 분류를 수행하는 간단한 MLP:

features = Input{40}
h = Sigmoid (ParameterTensor{256:0} * features + ParameterTensor{256})
z = ParameterTensor{10:0}  * h * ParameterTensor{10}   # input to Softmax
labels = Input{10}
ce = CrossEntropyWithSoftmax (labels, z)