@Atlant77

Нейронная сеть, какой должен быть диапазон весов?

Здравствуйте, изучаю нейросеть, такие вопросы возникли, входные параметры должны быть нормализованный в диапазоне от 0 до 1 или от -1 до 1, а какой диапазон чисел должен быть у весов? Скачал какую то библиотеку, посмотрел в ней веса при любом раскладе идут в диапазоне от 0 до 1.

Еще вопрос по поводу весов, как я понимаю выходное значение нейрона должно быть тоже в диапазоне между 0 и 1, но если много нейронов, допустим 1000 (в один нейрон поступает 1000 параметров, допустим с предыдущего слоя), то выходное значение всегда будет зашкаливать и опускается на более менее вменяемое только когда веса имеют значения типа 0.00.... т.е. начинается с одной тысячной, это я что то неправильно делаю или так нормально? просто сколько должно пройти итераций что бы веса с 0.1.. спустились до 0.0001.. допустим.

Можно только пожалуйста простым языком, на пальцах. Большое спасибо.
  • Вопрос задан
  • 2520 просмотров
Пригласить эксперта
Ответы на вопрос 3
@ivodopyanov
NLP, python, numpy, tensorflow
Тип входных и выходных значений зависит от того, какой смысл вы в них вкладываете и от архитектуры сети (в частности, функций активации на выходах нейронов).

При обработке текста, например, часто на вход подается последовательность id'шников слов в предложении - соответственно, это целые числа от 0 до <количество слов в словаре>.
При обработке изображений часто используют функцию активации ReLU, выход которой - неотрицательные числа.

Нормализация на входе бывает полезна, когда изначально диапазон фич сильно отличается друг от друга, но по смыслу они примерно равны, а сами фичи - это вещественные числа (например, если входные данные - это длина сосульки на крыше в миллиметрах и температура на улице в градусах; первая фича имеет порядок сотен-тысяч, вторая - десятки-единицы).

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

"сколько должно пройти итераций что бы веса с 0.1.. спустились до 0.0001.." можно перефразировать как "почему backprop работает медленно и как его ускорить". Это вообще одна из фундаментальных задач в DL. Инициализация весов - один из способов частичного решения. Различные функции активации - другой. Новые архитектуры слоев - третий. Модификация обучающих данных - четвертый. И так далее.
Ответ написан
Комментировать
Arseny_Info
@Arseny_Info
R&D engineer
Ответ написан
Комментировать
angrySCV
@angrySCV
machine learning, programming, startuping
возможно открою для вас Америку, но ни размеры весов, ни диапазон, ни нормализация этих весов не имеют абсолютно никакого значения.
Имеет значение только решающая функция, которая подгоняет ЛЮБЫЕ значения весов на основе обратного распространения ошибки к таким значениям на которых решающая функция реагирует с наименьшим количеством ошибок. А какие именно значения весов - абсолютно без разницы, хоть от 0.01 до 0.02 (с шагом в 0.0000001), или например от -1000000000 до +10000000000, результат будет один и тот же (подстройка веса под требуемую реакцию решающей функции).
Что касается нормализации - это вообще бессмысленная операция, например вы делите например значение "входящего сигнала" со всех нейронов на количество нейронов (и это значение всегда константа). И константа абсолютно никак не влияет на процесс подгонки коэффициента (просто сам коэффициент будет например больше или меньше на эту константу), но как я уже сказал, нас НЕ интересует абсолютное значение коэффициента, нас волнует взамодействие коэффициента и решающей функции.
надеюсь мысль ясна.
напишите свою нейросеть, попытайтесь в ручную коэффициенты посчитать, все сами уведите.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы