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