Передача обучения, зачем удалять последний скрытый слой? - PullRequest
0 голосов
/ 24 июня 2018

Часто при чтении блогов о трансферном обучении говорится - удалите последний слой или удалите последние два слоя.То есть удалить выходной слой и последний скрытый слой.

Так что, если обучение переносу подразумевает также изменение функции стоимости, например, от кросс-энтропии до среднего квадрата ошибки, я понимаю, что вам нужно изменить последний выходной слойот слоя 1001 значений softmax до слоя Dense (1), который выводит число с плавающей точкой, но:

  1. зачем также менять последний скрытый слой?
  2. с какими весами инициализируются два последних новых слоя при использовании Keras и одной из предопределенных моделей CNN с весами imagenet?Он инициализирован или 0 инициализирован?

Ответы [ 2 ]

0 голосов
/ 25 июня 2018
  1. В Keras для Inception v3 последний скрытый слой также удаляется, если вы хотите изменить выходной слой.По умолчанию последним скрытым слоем является globalAveragePooling, но в зависимости от проблемной области может быть предпочтен либо globalAveragePooling, либо globalMaxPooling
  2. По умолчанию Keras инициализирует плотные слои с помощью универсального инициализатора Glorot, также называемого универсальным инициализатором Xavier.
0 голосов
/ 24 июня 2018

Зачем удалять слои?

Если вы только пытаетесь изменить функцию стоимости, вы не проводите обучение по определению большинства людей.Обучение передаче - это прежде всего перемещение в новую область приложения.Таким образом, для изображений, беря идентификатор / детектор собаки и передавая его как идентификатор / детектор птицы, а не догадчик возраста / веса собаки.(Или взять ваш 1001 детектор объектов общего назначения и использовать его только для просмотра отснятого материала с камеры безопасности и т. Д.)

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

Это обусловлено наблюдением, что более ранние функции ConvNet содержат более общие функции (например, детекторы контуров или детекторы цветных пятен), которые должны быть полезны для многих задач, но более поздние слои ConvNet становятсяпостепенно уточняются детали классов, содержащихся в исходном наборе данных.

из: http://cs231n.github.io/transfer-learning/

Вот несколько других объяснений: https://machinelearningmastery.com/transfer-learning-for-deep-learning/

https://medium.com/nanonets/nanonets-how-to-use-deep-learning-when-you-have-limited-data-f68c0b512cab

Чем должны быть инициализированы новые слои?

В исходном вопросе вы задали вопрос «Он инициализирован или 0 инициализирован?».Опять же, я думаю, что это скорее инженерный вопрос, потому что есть доказательства того, что некоторые вещи работают лучше, чем другие, но я не знаю, что есть общепризнанное доказательство, гарантирующее оптимальную работу одного над другим.За исключением того, что не инициализируйте все к нулю.Это определенно неправильно, как вы можете видеть в первом посте, на который я ссылаюсь ниже .Также имейте в виду, что это просто инициализация.Поэтому, даже если мои знания немного устарели, все, что вам стоит, это некоторые дополнительные эпохи обучения порочным откровенным неудачам или ненужным ответам.В зависимости от вашей проблемы это может быть большая или небольшая стоимость, которая будет определять, сколько времени вы потратите на изучение вариантов и опробование некоторых в небольшом масштабе.

http://andyljones.tumblr.com/post/110998971763/an-explanation-of-xavier-initialization

https://datascience.stackexchange.com/questions/13061/when-to-use-he-or-glorot-normal-initialization-over-uniform-init-and-what-are/13362

https://stats.stackexchange.com/questions/229885/whats-the-recommended-weight-initialization-strategy-when-using-the-elu-activat

...