Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
В популярных фреймворках машинного обучения TensorFlow и PyTorch при инициализации весов нейросети используются случайные числа. В этой статье мы попытаемся разобраться, почему для этих целей не используют ноль или какую-нибудь константу.Интересно, можно инициализировать не случайными числами, а оптимальным набором, кот. сократит время обучения? Очевидно, если сеть с исходными случайными весами обучить распознаванию одного изображения, а затем полученные веса присвоить другой такой же сетке, и обучить ее тому же изображение, то обучение должно завершить намного быстрее, чем в первом случае. В более общей постановке, какую процедуру обработки над обучающей выборкой нужно произвести, чтобы получить из нее оценки оптимального набора весов, присвоить их, и тем самым сократить время обучения на ней? Скорее всего такие процедуры оптимизации исходных весов существуют, постановка вопроса достаточно очевидная.
Обучить нейронку со случайными весами а потом передать эти веса во вторую такую же нейронку и обучить вторую.
Не совсем понимаю, чем это отличается от банально двух эпох обучения одной нейронки на одной картинке?
Можно подобрать сид рандома, при котором сходимость лучше, если вы об этом. Веса не обязаны быть каждый раз новыми при каждом прогоне - тогда потеряется контроль над ситуацией. Но можно инициализировать одним и тем же случайным набором из раза в раз во время настройки.
Если я правильно понял вашу идею, то Вы только что изобрели fine-tuning :)
Если я правильно понял вашу идею, то Вы только что изобрели fine-tuning :)Не… передрали у природы) впрочем, как и сама идея ИНС была передрана.
Простоя идея такой процедуры состоит в сложение всех изображений из обучающей выборки и усреднения цветов пикселей, или использования другой подходящей статистики.
Почему инициализировать веса нейронной сети одинаковыми значениями (например, нулями) – это плохая идея