Re[4]: дообучить сеть
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 13.11.20 09:01
Оценка: 40 (4)
Здравствуйте, Sharov, Вы писали:

S>Все никак руки не дойдут спросить на одс, спрошу тут: что значит "дообучить" сеть?


В принципе так. В общем, техника называется transfer learning.

Если сказать более общно, но классическое машинное обучение делилось на 2 части: какие признаки выбрать и какой классификатор на них обучить. Это может быть Haar features + AdaBoost, LBP + AdaBoost, HOG + SVM, Integral Channel features + Random forest — великое множество всего. Раньше поиском фич в больших конторах занимались отдельные люди, другие работали над классификаторами. Фурье, вейвлеты, фильтры Габора — всё это годилось для получения фич. Надо сказать, что и сейчас многое годится и используется для нейросетей в том числе.

Теперь про нейросети. Мы считаем, что обученная на большом датасете сеть учится не столько распознавать объекты, сколько очень эффективно выделять значимые особенности, в частности картинок — фичи. Собственно, именно этим и ценны нейросети: мы можем сами не знать, что наиболее важно для распознавания, а сети выучиваются этому. Классификацией занимается, например, последний полносвязный слой. Далее для распознавания лицо/не лицо, мы выкидываем этот последний слой и заменяем его своим с двумя выходами. И начинаем учить уже исключительно на картинках с лицами и без них. При этом остальную сеть можно считать уже хорошо обученной на выделение всех необходимых особенностей лиц в том числе, веса замораживаются и не меняются во время этого финального обучения. Как показывается практика, в большинстве случаев такой подход оказывается робастней, чем обучение исключительно на целевом датасете. Почему? отому что чаще всего на картинки похожи на то, что было на том же ImageNet. Если же совсем не похожи, то уже начинается пляска.

Но этот подход таит в себе и слабость нейросетей, о которой говорил Вжик2, но почему-то считая это тайной нейросетей. Слабость — неустойчивость классифифкации к небольшим изменениям входных данных: небольшой невидимый глазу шум, влияние небольших деталей на результат распознавания, излишнаяя привязка к текстуре и т.д.
Получается, что камера, снимающая ночью, добавляет много самых разных шумов и ничего не распознаётся. Получается, что рыба распознаётся только тогда, когда она находится в руках, что леопардовый диван превращается в леопарда, а представитель негроидной расы становится гориллой, правильный макияж или футболка с узором препятствуют распознаванию лиц и т.д. Какая в этом тайна? Я хз. Исследователи исследуют сеть, выясняют что творится внутри сетки, визуализируют промежуточные слои, визуализируют, какие нейроны проходят с большим весом на тех или иных снимках и т.д. Далее придумывают новые аугментации, расширяют в правильном направлении датасет, придумываются новые лоссы — причина всегда выясняется и придумывается сособ решения.
Из последних достижений в этом направлении можно отметить GAN'ы, которые могут использоваться не только для генерации картинок, но и для повышения робастности сетей.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.