Список функций стоимости, используемых в нейронных сетях, наряду с приложениями

133

Какие функции общих затрат используются при оценке производительности нейронных сетей?

подробности

(не стесняйтесь пропустить остальную часть этого вопроса, мое намерение здесь состоит в том, чтобы просто дать пояснение по обозначению, которое ответы могут использовать, чтобы помочь им быть более понятными для широкого читателя)

Я думаю, что было бы полезно иметь список общих функций затрат, а также несколько способов их использования на практике. Так что, если другие заинтересуются этим, я думаю, что вики-сообщество, вероятно, является лучшим подходом, или мы можем снять его, если это не по теме.

нотация

Итак, для начала я бы хотел определить обозначение, которое мы все используем при их описании, чтобы ответы хорошо соответствовали друг другу.

Это обозначение из книги Нильсена .

Нейронная сеть с прямой связью - это множество слоев нейронов, соединенных вместе. Затем он принимает на входе, что вход «течет» через сеть, а затем нейронная сеть возвращает выходной вектор.

Более формально, назовите активацией (он же выход) нейрона j t h в слое i t h , где a 1 j является элементом j t h во входном векторе.aJяJTчасяTчасaJ1JTчас

Затем мы можем связать вход следующего слоя с его предыдущим с помощью следующего отношения:

aJязнак равноσ(ΣК(весJКяaКя-1)+бJя)

где

- функция активации,σ

- вес отнейрона k t h вслое ( i - 1 ) t h донейрона j t h вслое i t h ,wjkikth(i1)thjthith

- смещениенейрона j t h вслое i t h , иbjijthith

представляет значение активациинейрона j t h вслое i t h .ajijthith

Иногда мы пишем чтобы представить k ( w i j ka i - 1 k ) + b i j , другими словами, значение активации нейрона перед применением функции активации.zjik(wjkiaki1)+bji

введите описание изображения здесь

Для более кратких обозначений мы можем написать

ai=σ(wi×ai1+bi)

Чтобы использовать эту формулу для вычисления выхода сети прямой связи для некоторого входа , установите a 1 = I , а затем вычислите a 2 , a 3 , ..., a m , где m - количество слоев.IRna1=Ia2a3am

Введение

Функция стоимости - это мера того, «насколько хорошо» нейронная сеть работает в отношении заданной обучающей выборки и ожидаемого результата. Это также может зависеть от таких переменных, как вес и отклонения.

Функция стоимости - это одно значение, а не вектор, потому что она оценивает, насколько хорошо нейронная сеть работает в целом.

В частности, функция стоимости имеет вид

C(W,B,Sr,Er)

где - это веса нашей нейронной сети, B - смещения нашей нейронной сети, S r - вход одной обучающей выборки, а E r - желаемый выход этой обучающей выборки. Обратите внимание, что эта функция также потенциально может зависеть от y i j и z i j для любого нейрона j в слое i , потому что эти значения зависят от W , B и S r .WВSrEryjizjijiWBSr

В обратном распространении функция стоимости используется для вычисления ошибки нашего выходного слоя, , черезδL

.

δjL=CajLσ(zji)

Который также может быть записан как вектор через

.

δL=aCσ(zi)

Мы предоставим градиент функций стоимости в терминах второго уравнения, но если кто-то хочет доказать эти результаты самостоятельно, рекомендуется использовать первое уравнение, потому что с ним легче работать.

Требования к функции стоимости

Для использования в обратном распространении функция стоимости должна удовлетворять двум свойствам:

1: функция стоимости должна быть записана как среднееC

C=1nxCx

функции перерасхода для отдельных примеров обучения, x .Cxx

Это позволяет нам вычислить градиент (относительно весов и смещений) для одного примера обучения и запустить Gradient Descent.

2: Функция затрат не должно зависеть от любых значений активации нейронной сети , кроме выходных значений в L .CaL

Технически функция стоимости может зависеть от любого или z i jajizji . Мы просто налагаем это ограничение, чтобы можно было использовать обратное распространение, потому что уравнение для нахождения градиента последнего слоя является единственным, которое зависит от функции стоимости (остальные зависят от следующего слоя). Если функция стоимости зависит от других уровней активации, кроме выходного, обратное распространение будет недопустимым, поскольку идея «обратного хода» больше не работает.

Кроме того, функции активации должны иметь выход для всех j . Таким образом, эти функции затрат должны быть определены только в этом диапазоне (например, 0ajL1j справедливо, поскольку нам гарантированоa L j0).ajLajL0

Phylliida
источник
3
Это сайт вопросов и ответов, и формат этого поста не очень подходит для этого. Вероятно, вы должны поместить большую часть контента в ответ и оставить только вопрос (например, что такое список функций стоимости, используемых в NN?).
Роджер Фан
Хорошо, это лучше? Я думаю, что определения важны, иначе ответы станут неопределенными для тех, кто не знаком с терминологией, которую использует автор.
Филиллида
Но что, если другой ответ использует другое обозначение или терминологию?
Роджер Фан
3
Идея состоит в том, что все используют здесь одну и ту же терминологию, и если она отличается, мы конвертируем ее в это, поэтому ответы «соответствуют» друг другу. Но я полагаю, я мог бы удалить этот кусок, если вы не думаете, что он полезен.
Филиллида
1
Я просто думаю, что детали, в которые входит вопрос, на самом деле не нужны или не актуальны. Это кажется немного чрезмерным и ограничивающим, но это только я.
Роджер Фан

Ответы:

85

Вот те, кого я понимаю до сих пор. Большинство из них работают лучше всего, когда заданы значения от 0 до 1.

Квадратичная стоимость

Также известный как среднеквадратичная ошибка , максимальная вероятность и суммарная квадратичная ошибка , это определяется как:

CMST(W,B,Sr,Er)=0.5j(ajLEjr)2

Градиент этой функции стоимости по отношению к выходу нейронной сети и некоторому образцу :r

aCMST=(aLEr)

Стоимость кросс-энтропии

Также известный как отрицательная логарифмическая вероятность Бернулли и бинарная перекрестная энтропия

CCE(W,B,Sr,Er)=j[Ejr ln ajL+(1Ejr) ln (1ajL)]

Градиент этой функции стоимости по отношению к выходу нейронной сети и некоторому образцу :r

aCCE=(aLEr)(1aL)(aL)

Экспоненциальная стоимость

Это требует выбора некоторого параметра который, по вашему мнению, даст вам желаемое поведение. Обычно вам просто нужно поиграть с этим, пока все не заработает.τ

CEXP(W,B,Sr,Er)=τ exp(1τj(ajLEjr)2)

exp(x)ex

Градиент этой функции стоимости по отношению к выходу нейронной сети и некоторому образцу rr

aC=2τ(aLEr)CEXP(W,B,Sr,Er)

CEXPCEXP

Расстояние Хеллингера

CHD(W,B,Sr,Er)=12j(ajLEjr)2

01

Градиент этой функции стоимости по отношению к выходу нейронной сети и некоторому образцу rr

aC=aLEr2aL

Расхождение Кульбака – Лейблера

Также известен как информационное расхождение , информационное усиление , относительная энтропия , KLIC или дивергенция KL (см. Здесь ).

DKL(PQ)=iP(i)lnP(i)Q(i)

DKL(PQ)QPP=EiQ=aLajiEji

CKL(W,B,Sr,Er)=jEjrlogEjrajL

P=EiQ=aL

Градиент этой функции стоимости по отношению к выходу нейронной сети и некоторому образцу rr

aC=EraL

Обобщенная дивергенция Кульбака – Лейблера

От сюда .

CGKL(W,B,Sr,Er)=jEjrlogEjrajLj(Ejr)+j(ajL)

Градиент этой функции стоимости по отношению к выходу нейронной сети и некоторому образцу rr

aC=aLEraL

Расстояние Итакура - Сайто

Также отсюда .

CGKL(W,B,Sr,Er)=j(EjrajLlogEjrajL1)

Градиент этой функции стоимости по отношению к выходу нейронной сети и некоторому образцу rr

aC=aLEr(aL)2

((aL)2)j=ajLajL(aL)2aL

Phylliida
источник
Спасибо, что поделились, вы также можете рассмотреть следующие вопросы: github.com/torch/nn/blob/master/doc/criterion.md
Яннис Ассаэль
2
у вас есть небольшая ошибка в знаменателе производной кросс-энтропии, оно должно быть a*(1-a)неa*(1+a)
Amro
1
Также было бы здорово показать функцию потери пинбола, чтобы минимизировать квантили ошибок, а не среднюю ошибку. Очень используется в системах поддержки принятия решений.
Рикардо Крус
где я могу посмотреть графики для них?
Coiso
1
20

У меня нет репутации, чтобы комментировать, но в последних 3 градиентах есть ошибки знака.

C=jEjlog(Ej/aj)=jEjlog(Ej)Ejlog(aj)dC=jEjdlog(aj)=j(Ej/aj)dajaC=Ea
Эта же ошибка знака появляется в расхождении обобщенного KL.

C=j(Ej/aj)log(Ej/aj)1=j(Ej/aj)log(Ej)+log(aj)1dC=j(Ej/aj2)daj+dlog(aj)=j(1/aj)daj(Ej/aj2)daj=j(ajEj)/aj2dajaC=aE(a)2
откровенный
источник