Нейронная сеть колеблется около 0,5 - PullRequest
0 голосов
/ 26 сентября 2018

Я хотел создать свою собственную нейронную сеть - в основном для удовольствия, но также потому, что Ханская Академия не допускает библиотеки, и я не видел хороших нейронных сетей на сайте.

Информация о нейронной сети:

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

Информация о тренировочных данных:

Я переключаю 0 на 1 и 1 на 0.на графиках показаны потери при попытке изменить 1 на 0. Набор данных выглядит следующим образом:

[{
  inputs: [0],
  outputs: [1]
}, {
  inputs: [1],
  outputs: [0]
}]

Перед каждой итерацией набор данных рандомизируется.

Я собрал нейронную сеть,но при тестировании я столкнулся с интересной проблемой: она колеблется около 0,5 примерно в 3/4-х долях времени.В остальное время 1/4 времени он работает как задумано.Иногда он идет туда, где он должен (примерно четверть времени) (эти графики показывают потери, при этом линия в центре равна 0):

Image showing convergence towards 0

В другой период времени (может быть, 1/20, очень редко), он будет «придерживаться» 0,5, но затем выкинет себя: enter image description here

Или все получится правильно, но затем просто запутаться без причины ( очень редко, почти никогда не бывает): enter image description here

Ив остальное время он останется примерно на уровне 0,5: enter image description here

Я не имею ни малейшего понятия, что является причиной этого (хотя я думаю, что это может быть моей реализацией градиентного спуска,найти в строке 137 программы) или как их исправить.Вы можете найти программу здесь: khanacademy.org / cs / - / 6305674778411008

1 Ответ

0 голосов
/ 26 сентября 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...