Как стимулировать принятие рисков в нейронной сети feedfoward? - PullRequest
1 голос
/ 22 марта 2020

Я совершаю свое первое настоящее погружение в нейронные сети и пытаюсь построить классическую c «сеть идентификации номеров» без каких-либо внешних баз данных. После некоторого начального тестирования я столкнулся с проблемой того, что моя сеть поддерживает все веса невероятно низкими, так что выходные данные практически равны нулю. Я понимаю, почему это происходит (каждый раз, когда программа получает 9 из 10 правильных выходных данных!), Но, очевидно, это то, что я должен препятствовать этому.

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

1 Ответ

0 голосов
/ 24 марта 2020

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

метки * -log (сигмоид (логиты)) * pos_weight + (1 - метки) * -log (1 - сигмовидная (логиты))

...