Функции активации с помощью BrainScript
Sigmoid(), Tanh(), ReLU(), Softmax(), LogSoftmax(), Hardmax()
Функции нелинейной активации для нейронных сетей.
Sigmoid (x)
Tanh (x)
ReLU (x)
Softmax (x)
LogSoftmax (x)
Hardmax (x)
Параметры
x
: аргумент для применения нелинейности к
Возвращаемое значение
Результат применения нелинейности. Тензорная форма выходных данных совпадает с формой входных данных.
Описание
Это популярные функции активации нейронных сетей.
Все эти элементы, кроме Softmax()
семейства, Hardmax()
применяются по элементу.
Обратите внимание, что для эффективности при использовании критерия перекрестной энтропии обучения часто желательно не применять операцию Softmax в конце, а вместо этого передавать входные данные Softmax в CrossEntropyWithSoftmax()
Операция Hardmax()
определяет элемент с наибольшим значением и представляет его расположение в виде одно-горячего вектора или тензора.
Используется для выполнения классификации.
Выражение других нелинейных выражений в BrainScript
Если необходимая нелинейная степень не является одной из указанных выше, она может быть компонуема как выражение BrainScript. Например, утечка ReLU с наклоном 0,1 для отрицательной части может быть написана как
LeakyReLU (x) = 0.1 * x + 0.9 * ReLU (x)
Softmax вдоль осей
Семейство Softmax особенно в том, что оно включает в себя вычисление знаменателя. Этот знаменатель вычисляется по всем значениям входного вектора.
Однако в некоторых сценариях входные данные являются тензором с рангом>1, где оси должны обрабатываться отдельно.
Рассмотрим, например, входной тензор фигуры [10000 x 20]
, в которой хранится 20 различных распределений, каждый столбец представляет распределение вероятности отдельного входного элемента.
Таким образом, операция Softmax должна вычислять 20 отдельных знаменателей.
Эта операция не поддерживается встроенными (Log)Softmax()
функциями, но может быть реализована в BrainScript с помощью операции уменьшения по элементу следующим образом:
ColumnwiseLogSoftmax (z) = z - ReduceLogSum (axis=1)
ReduceLogSum()
Здесь вычисляет (журнал) знаменатель, в результате чего тензор с измерением 1 для уменьшенной оси; [1 x 20]
в приведенном выше примере. Вычитание этого из вектора [10000 x 20]
входных данных является допустимой операцией, как обычно, 1
автоматическое "широковещательное", то есть дублирующееся для сопоставления входного измерения.
Пример
Простая MLP,которая выполняет 10-сторонняя классификация 40-мерных векторов признаков:
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)