Энтропийная регуляризация искрового многослойного классификатора персептрона - PullRequest
0 голосов
/ 03 февраля 2019

Используя оптимизатор LBFGS в spark-ml, мы бы хотели поэкспериментировать с термином энтропийной регуляризации.

Функция стоимости LBFGS (класс LBFGS.CostFun) просто возвращает значение функции стоимости и ее градиент.Функция потерь вычисляется в коде Spark LBFGS как

    val regVal = updater.compute(w, Vectors.zeros(n), 0, 1, regParam)._2
    loss = lossSum / numExamples + regVal

Градиентная часть вместе с регуляризацией выглядит следующим образом:

// The following gradientTotal is actually the regularization part of gradient.
          // Will add the gradientSum computed from the data with weights in the next step.
          val gradientTotal = w.copy
          axpy(-1.0, updater.compute(w, Vectors.zeros(n), 1, 1, regParam)._1, gradientTotal)

          // gradientTotal = gradientSum / numExamples + gradientTotal
          axpy(1.0 / numExamples, gradientSum, gradientTotal)

К сожалению, в Spark энтропийное средство обновления не реализовано какНасколько я знаю (их всего четыре: ANNUpdater, SimpleUpdater, L1 Updater, L2 Updater).

Кто-нибудь знает о существующей реализации Entropic Updater для Spark?В конце концов, в худшем случае мы могли бы написать это сами - добавить термин энтропийного наказания к части потерь (как регул), однако, как это повлияет на градиент?Может ли кто-нибудь представить, как энтропийный термин / уравнение / код, определенный над вектором весов w, как:

entropy

повлияет на градиенты?

...