Pull to refresh

Comments 11

В популярных фреймворках машинного обучения TensorFlow и PyTorch при инициализации весов нейросети используются случайные числа. В этой статье мы попытаемся разобраться, почему для этих целей не используют ноль или какую-нибудь константу.
Интересно, можно инициализировать не случайными числами, а оптимальным набором, кот. сократит время обучения? Очевидно, если сеть с исходными случайными весами обучить распознаванию одного изображения, а затем полученные веса присвоить другой такой же сетке, и обучить ее тому же изображение, то обучение должно завершить намного быстрее, чем в первом случае. В более общей постановке, какую процедуру обработки над обучающей выборкой нужно произвести, чтобы получить из нее оценки оптимального набора весов, присвоить их, и тем самым сократить время обучения на ней? Скорее всего такие процедуры оптимизации исходных весов существуют, постановка вопроса достаточно очевидная.

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

Обучить нейронку со случайными весами а потом передать эти веса во вторую такую же нейронку и обучить вторую.

Не совсем понимаю, чем это отличается от банально двух эпох обучения одной нейронки на одной картинке?

первые слои можно инициализировать весами, скопировав их из нейронной-сети классификатор (она по уму может быть заметно меньше целевой) на основе данных входного вектора.

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

Если я правильно понял вашу идею, то Вы только что изобрели fine-tuning :)

Благодарю за ответы. Идея комента состояла несколько в другом, она во втором абзаце, но чтобы понять о чем речь нужно посмотреть источники по ссылке. Эволюция решала подобную задачу для несравненно более сложного случая, чем сейчас решают специалисты по глубокому обучению для ИНС. Искала способ своеобразного «предобучения» функционала нейронных сетей растущего мозга плода, полезного, с точки зрения выживания, сразу после рождения. Например, распознавание лиц или дискриминация численности объектов, хотя бы приближенная. Однако нет возможности в геноме задать значения весов всех синапсов, как из-за их количества, так неопределенности их локализации в развивающихся сетях мозга. Эволюционное решение состояло в генерации определенной спонтанной активности направленной от формирующихся органов чувств, например, нейронов сетчатки глаз, по восходящим путям мозга к корковым отделам. Своеобразный встроенный «эмулятор реальности» в растущем мозге) Схематически это выглядит так:
Заголовок спойлера
При этом происходит дополнительная эпигенитическая подстройка под текущее состояние среды в которой мать вынашивает ребенка (структуре питания, условиям проживания — температурным, уровню освещенности, и тп).

Как реализовать аналог такой схемы для предобучения ИНС, например, классификатора изображений? Действительно разными методами повторного обучения, как и предлагается в ответах. Но как проделать это без повторного обучения? Эволюция выработала схему генерации оптимальной активности самими структурами мозга, а не повторяет всю эволюционной историю для каждого нового плода. Это равносильно некоторой процедуре обработки обучающей выборки, на выходе кот. получаются оценки весов ИНС. Они присваиваются сетке, и тогда ее обучение может производиться только на подмножестве обучающей выборке. При этом результат обучения должен быть не хуже, чем для обучения на всей выборке. Но время обучения должно уменьшается. Вопрос в затратах на такую процедуру, если он невелики, то должен быть выигрыш в весьма затратных процессах обучения ИНС. Простоя идея такой процедуры состоит в сложение всех изображений из обучающей выборки и усреднения цветов пикселей, или использования другой подходящей статистики. Получившимся результирующим изображением (аналогом спонтанной активности в мозге плода) обучаем сеть, и тем самым присваиваем ей оптимальные начальные значения весов определяемые обучающей выборкой, а не случайными. Затем как обычно производится обучение на обучающей выборке меньшей по числу, чем исходной, использованной в процедуре оценки.

emidovd98
Если я правильно понял вашу идею, то Вы только что изобрели fine-tuning :)
Не… передрали у природы) впрочем, как и сама идея ИНС была передрана.
Простоя идея такой процедуры состоит в сложение всех изображений из обучающей выборки и усреднения цветов пикселей, или использования другой подходящей статистики.

Я так делаю в своей kNN. И дело там в том, что инициализировав сеть случайными весами, она потом не «сойдётся», не обучится. Инициализировать нужно кусками из пространства реального мира. Спонтанные вспышки света на сетчатке как затравка ей тоже подойдут.
это не должно работать, веса внутри не напрямую будут копировать куски реальности, а через комбинацию значений (несколько нейронов задают пороговые значения для одного входа), это как пытаться печатать бинарно jpeg файл, на котором фотография вывески и надеяться что принтер распечатает эту надпись
Извините, но я вас не понял. Я дал ссылку на рабочий проект, а не идею. Реальные изображения это ничтожная часть гиперпространства. Если точки kNN инициализировать случайным образом, а не в пространстве реальных изображений, то бродить они могут очень долго. Если же вы говорите про многослойные ИНС, то я бы не стал их недостатки проецировать на мозг.
вы написали без подробностей, каким именно весам какие значения присваиваются? как выбирать изображения из обучающей выборки и каким именно весам присваивать значения цветов пикселов? нужно ли эти данные нормировать? у вас сеть классификатор? как соответствует в результате полученные классы выбираемым изображениям?
А должен был? Не пойму к чему упрёки. Ваши вопросы тянут на отдельную статью. Я же просто заметил phenik, что его догадки имеют место быть в моей биоподобной kNN, и даже ссылку на место, с которого надо копать ответы, приложил.
Sign up to leave a comment.

Articles