@atomnato

Как подобрать начальные входные весовые коэффициенты (веса) для нейронной сети?

Вопрос в следующем: я только начал изучать нейронные сети и для меня стало непонятно по какому методу подбираются начальные веса для нейронной сети. Буду благодарен если в ответе дополнительно приведете пример.
  • Вопрос задан
  • 92 просмотра
Пригласить эксперта
Ответы на вопрос 2
Maksim_64
@Maksim_64
Data Analyst
Ну это инженерное решение, тут единственного правильного подхода нет. Случайная выборка, как от 0 до 1 например или случайная выборка от -1 до 1. Или по формулам разным Случайная выборка осуществляется из равномерного распределения или из нормального.

В общем вот маленькая статья что бы не повторятся, там от простой выборки и до выборок по формулам в зависимости от функции активации, заодно там и пару коротеньких примеров на python имеется.
Ответ написан
Комментировать
@rPman
Веса инициализируют случайно, в каких то случаях нужно смотреть, какая функция стоит у нейрона (какую операцию проводишь после умножения вектора входов слоя на матрицу весов), нужно смотреть, какой интервал значений ожидается после нее и на следующем слое (0..1 или -1..1 или 0..inf), причем допускаю что возможны конфигурации сетей, в которых на разных слоях эти пороговые значения разные (хотя на практике лучше нормализовать до 1 так или иначе). Это нужно чтобы первоначальное наполнение для нейронной сети имело смысл, тупой пример, если все веса инициализировать такими значениями что значения на выходе всех нейронов станет одним значением (близким к 1 например) то такая сеть скорее всего не сможет обучиться.

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

Отличный пример, нейронную сеть, обрабатывающую изображения, можно предварительно пропустить через попытку обучить простую нейронную сеть, на вход и выход которой подаются одни и те же данные - изображение, но размерность одного из внутренних слоев заметно ниже входа, т.е. попытка заставить нейронную сеть рисовать по исходному изображению то же самое, но описывая это изображение вектором меньшей размерности, пример такой топологии - бутылочное горлышко.
spoiler
lir-_pezkp2bcrdvp9bvwoomcvs.png
Т.е. в данном случае такую сеть обучить будет проще чем под вашу задачу (и данные для нее проще собрать, ведь не нужно искать смысл в них, только закономерности), так вот первые слои этой предварительной нейронной сети можно в последствии скопировать в целевую нейронную сеть, дозаполнив остальные веса случайными значениями.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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