Спасибо за пост! Читается очень увлекательно, прям не оторваться, хоть я совсем мало понимаю в LDA и прочем.
Немного вопросов, если позволите.
— После того, как выбрали только топовые слова и резко сократили словарь и документы, LDA все равно не получается делать? Почему?
— А как потом это все используется собственно в таргетинге? Вот есть эти «темы», порожденные словами, как они используются дальше?
О, тогда можно разговаривать. Я перечитал все комментарии в после, но все равно не понял деталей, как оно работает.
Вот есть первый уровень, на вход прходят иозбражение, голые пиксели.
На выход он должен выдать X,Y, ориентацию и масштаб для каждого знака в номере.
Как он это делает конкретно и как обучается? «В итоге вышло 700000 гипотез» — как они формируются, как тренируются, и какие из них идут на следующий уровень во время собственно распознавания?
Далее есть второй уровень, куда приходит видимо картинка и некоторые гипотезы из прошлого уровня.
Она проверяет все возможные проективные преобразования и запоминает что в зависиости от чего?
Я вроде описываю мотивацию — хотелось архитектуру компактнее, мужики исследовали разные идеи как это сделать — делать convolutions меньше, уменьшать размерность, придумать что-то вместо FC layers. А оказалось, оно очень неплохо работает! Я думаю, такой блок получили большим количеством последовательных экспериментов.
Про второе — видимо, потому что большое количество параметров в FC layers избыточны (как показывает работа по Deep Compression, например). Последние inception blocks уже очень толстые и про свертки в них можно думать как применяющиеся ко всей картинке FC layers, только в окрестности каждого пикселя. И вот идея в том, чтобы усреднить такой вход в гриде 7x7 и сказать, что это финальные фичи. Опять же, почему конкретно это работает это нынче сложный в deep learning вопрос. Пока получается только эмпирически
Такой момент. Вы проводили только обучение или еще и валидацию на картинках, которые модель раньше не видела?
Вот те картинки выше — это на тренировочных или на валидационных?
Нет, не только. Количество параметров и то, как происходят вычисления, разные. Отличие то же, что и у convolutional vs fully connected layers в принципе
Предыдущий комментарий по делу. Я дополню тем, каждый нейрон FC layer получает на вход все 14x14x152, а conv 1x1 — только 152, но прогоняется для каждого "пикселя" 14x14 независимо
Например, некий layer выдает матрицу активаций 14x14x152 и она дается на вход 1x1 convolution. На выходе может быть, например, 14x14x64 — то есть, те же размеры по вертикали и горизонтали, но меньшая глубина. У такого 1x1 conv будем 152*64 параметра, и он просто сделает линейное преобразование для каждого многомерного "пикселя", коих 14x14.
О да, я тоже полон сомнений. В случае нелинейных моделей и других датасетов все может легко развалиться. Тем более, попробовать просто, а что-то никто не рапортует об успехах.
Прежде всего, спасибо за обсуждение — пришлось таки прочитать статью :)
Насколько я понимаю, этот график из секции про экспериментальное подтверждение тезиса, что с ростом глубины сети время тренировки в количестве эпох выходит на константу. Она у них довольно высокая, потому что они выбрали значение главной моды маленьким, а время схождения от нее зависит квадратично.
В следующей секции они сначала исследуют возможность делать unsupervised pretraining на input set, который мол получает начальные значения с модой близкой к 1, поэтому сходится гораздо быстрее. Про это у них дальше картинка:
И далее сноска:
(as a technical point: note that learning times under greedy pre-training initialization in Fig. 6A are faster than those obtained in Fig. 4 by explicitly choosing a point on the decoupled submanifold, because there
the initial mode strength was chosen to be small (u = 0.001) whereas greedy pre-training finds a composite
mode strength closer to 1)
Что видимо как раз отвечает на обсуждаемый нами вопрос.
Далее они предлагают вместо дорогой процедуры pretraining использовать тупо ортогональные матрицы для весов (что отличается от depoupled conditions, если я не путаю, потому что decoupled conditions зависят от атупута тоже), и они сходятся тоже с константой скоростью, видимо у них тоже мода хорошая.
Ок, но она же вроде из секции до init conditions? Т.е. supposedly они при получении этого графика ее не применяли. А дальше там те же графики, что и на скрине, который я привел выше.
Немного вопросов, если позволите.
— После того, как выбрали только топовые слова и резко сократили словарь и документы, LDA все равно не получается делать? Почему?
— А как потом это все используется собственно в таргетинге? Вот есть эти «темы», порожденные словами, как они используются дальше?
Вот есть первый уровень, на вход прходят иозбражение, голые пиксели.
На выход он должен выдать X,Y, ориентацию и масштаб для каждого знака в номере.
Как он это делает конкретно и как обучается? «В итоге вышло 700000 гипотез» — как они формируются, как тренируются, и какие из них идут на следующий уровень во время собственно распознавания?
Далее есть второй уровень, куда приходит видимо картинка и некоторые гипотезы из прошлого уровня.
Она проверяет все возможные проективные преобразования и запоминает что в зависиости от чего?
Про второе — видимо, потому что большое количество параметров в FC layers избыточны (как показывает работа по Deep Compression, например). Последние inception blocks уже очень толстые и про свертки в них можно думать как применяющиеся ко всей картинке FC layers, только в окрестности каждого пикселя. И вот идея в том, чтобы усреднить такой вход в гриде 7x7 и сказать, что это финальные фичи. Опять же, почему конкретно это работает это нынче сложный в deep learning вопрос. Пока получается только эмпирически
О, кто-то прочитал внимательно, круто!
Такой момент. Вы проводили только обучение или еще и валидацию на картинках, которые модель раньше не видела?
Вот те картинки выше — это на тренировочных или на валидационных?
Ну да, как можно нанимать человека, который делает модель без кросс-валидации и сразу ей показывает весь датасет и оверфитит.
Нет, не только. Количество параметров и то, как происходят вычисления, разные. Отличие то же, что и у convolutional vs fully connected layers в принципе
Предыдущий комментарий по делу. Я дополню тем, каждый нейрон FC layer получает на вход все 14x14x152, а conv 1x1 — только 152, но прогоняется для каждого "пикселя" 14x14 независимо
Так уж живем
Например, некий layer выдает матрицу активаций 14x14x152 и она дается на вход 1x1 convolution. На выходе может быть, например, 14x14x64 — то есть, те же размеры по вертикали и горизонтали, но меньшая глубина. У такого 1x1 conv будем 152*64 параметра, и он просто сделает линейное преобразование для каждого многомерного "пикселя", коих 14x14.
О да, я тоже полон сомнений. В случае нелинейных моделей и других датасетов все может легко развалиться. Тем более, попробовать просто, а что-то никто не рапортует об успехах.
Прежде всего, спасибо за обсуждение — пришлось таки прочитать статью :)
Насколько я понимаю, этот график из секции про экспериментальное подтверждение тезиса, что с ростом глубины сети время тренировки в количестве эпох выходит на константу. Она у них довольно высокая, потому что они выбрали значение главной моды маленьким, а время схождения от нее зависит квадратично.
В следующей секции они сначала исследуют возможность делать unsupervised pretraining на input set, который мол получает начальные значения с модой близкой к 1, поэтому сходится гораздо быстрее. Про это у них дальше картинка:
И далее сноска:
Что видимо как раз отвечает на обсуждаемый нами вопрос.
Далее они предлагают вместо дорогой процедуры pretraining использовать тупо ортогональные матрицы для весов (что отличается от depoupled conditions, если я не путаю, потому что decoupled conditions зависят от атупута тоже), и они сходятся тоже с константой скоростью, видимо у них тоже мода хорошая.