Pull to refresh

Comments 11

А насколько отличались размеры полученных обучающих выборок и насколько медленнее происходило обучение в зависимости от аугментации?
Размер обучающей выборки возрастает на 20% при добавлении всех типов искажений, время обучения в среднем возрастает на 30%.
На самом деле, эту идею с искажениями надо развить дальше. На каждую эпоху обучения сети искажать её обучающую выборку каждый раз случайным образом. В результате сеть лучше учится (метод отжига) и труднее сваливается в переобучение.
Подобные методы построения обучающей выборки действительно могут улучшать финальное качество распознавания. Если интересна данная тематика, можем написать про это еще статью.
  1. Мне всегда нравилось в качестве одного из преобразований использовать отражение, для симметричных объектов. Типа цифры 8 или 0.
  2. Как показывает эксперимент, радувать обучающую выборку саму по себе неправильно. В том смысле, что вычиcлительных мощностей сразу требуется много, а вот профит маленький. C тем же результатом можно заниматься аугументацией данных прямо во время тренировки модели. И точность повышается и помогает боросться с переобучаемостью, и по времени то же самое. (На одной итерации подаётся изображение, а на следующей это изображение уже повёрнуто, отражено или растянуто.) Примеры:
  3. Аугементация данных — это, безусловно, важно. Но распознавание изображений, это одна из областей, где алгоритмы, сами по себе, уже круты неимоверно. Вы бы не могли бы проверить, ваш подход, на Digit recognizer. Тут надо распознать цифры с широко известного в узких кругах data set MNIST. Прямо их коробки, простенькая cNN мне выдала точность 99%. Достаточно много статей про различные подходу к этим данным, и модель, котора обладает максимальной точностью, что-то в районе 98.8%. Это я к тому, что во многих задачах Нейронные сети со сложной архитекторой замечательно справляются и без дополнительных ухищрений.
  4. Меня всегда интересовало, как можно делать аугументирвоание исходных данных, на задачах, которые к изображениям не относятся, пусть будут данные, которые предостваляет страхования компания, чтобы предсказать, кого надо страховать, а кого невыгодно(набор численных и категорийных данных). Не подскажите ссылку на книжку/ссылку/статью?

Маленькая поправка. «модель, котора обладает максимальной точностью, что-то в районе 98.8%.» следует читать как "… 99.8%"
1. Вы правы.
2. Нам не ясно, что значит «неправильно», и какой эксперимент это показывает. Вычислительные мощности, очевидно, не зависят от порядка применения операций (далее вы сами, противореча себе, написали "… и по времени то же самое"). Размер профита в нашем случае опубликован, статья ровно об этом. Какая цифра вам показалась слишком маленькой? Заранее сделать аугментацию, как мы предлагаем, это (-) потратить много места на диске, (+) получить возможность архивирования удачного варианта раздутия, (+) возможность передать выборку согласно договору, не раскрывая алгоритмов ее создания. Но наша статья — не об этом, а о «профите» от собственно аугментации, вне зависимости от того, на каком этапе она производится.
3. Насколько нам подсказали наши эксперты, большинство победителей (если не все из них) последних лет на MNIST-e использовали раздутие обучающей выборки. Что бы нового мы могли сообщить об этом? В данной публикации мы не предлагаем никакого распознающего алгоритма, мы сосредоточены на выборке. И аугментация, конечно же, известный подход. Нашей целью было показать, насколько хорошо или плохо он работает. При этом раздутие на рукописных символах, очевидно, иное, чем на печатных. Для ниста обычно используются деформации сглаженным случайным полем смещений.
4. Нам тоже интересно, но, к сожалению, мы не являемся специалистами в этой области.
Нам не ясно, что значит «неправильно», и какой эксперимент это показывает. Вычислительные мощности, очевидно, не зависят от порядка применения операций (далее вы сами, противореча себе, написали "… и по времени то же самое"). Размер профита в нашем случае опубликован, статья ровно об этом. Какая цифра вам показалась слишком маленькой?


Прошу прощения, я неточно выразился. Имелось в виду вот что:

Пусть мы хотим увеличить точность нашей модели. И у нас есть исходные данные размера X. Мы хотим увеличить размер данных, добавив правильного шума. И тут, как я понимаю, есть два подхода:
  1. Давайте слегка повернём каждую цифру. Скажем, градусов на 1-10 по и против часовой стрелки. Итого, теперь у нас не X, а X * 21. А давайте теперь каждую из полученных цифр сдвинем влево, вправо, вверх, вниз, пикселей на 1-5. И рамер наших данных сразу X * 21(повороты) * 21(трансляция). Точность нейронной сети, да и любого алгоритма натренированных на этих данных выше, чем натренированных на исходных X. Но в силу того, что размер увеличился более, чем в 400 раз, то и время тренировки существенно увеличится. А ведь можно ещё эти цифры порастягивать, поотражать. Поворачивать на большие или на нецелые углы. Посдвигать не на 5, а на большее число пикселей. Добавить отражений. Поиграть с контрастом. И т.д. В общем мощность множества группы преобразований, а месте с ней и размер обучающих данных очень быстро растёт./li>
    Но можно сделать так: на каждой тренировочной итерации для нейронной сети для каждой(или для случайно выбранной) цифры мы будем применять случайное преобразование из этой группы преобразований, описанных в первом пункте. То есть, с одной стороны наша обучающая выборка не раздувается в миллион раз, её размер остаётся прежним, но на каждой обучающей итерации мы добавляем шум, который увеличивает точность нейронной сети, а заодно слегка помогает от переобучаения. Да, время тренировки также увеличивается, всилу того, что эти преобразования надо осуществлять в реальном времени, но это занимает не так много времени.


  2. Хотя если задача правильно увеличить выборку, не раскрывая алгоритм, то, конечно, кроме как применения различных преобразований, ничего и не придумаешь.
Если Вы посмотрите наш предыдущий комментарий, то увидите, что в примере, мы увеличиваем выборку всего на 20% при добавлении всех типов искажений. 400 — кратного увеличения выборки никто применять не призывает. Отличие нашего метода от описанного Вами второго подхода лишь в том, что мы осуществляем предварительную аугментацию данных. Это позволяет оптимизировать проведение несколько одновременных экспериментов по обучению сетей и эффективно использовать аппаратные ресурсы. К тому же мы не разу не говорили о применении случайных преобразований при создании данных. Применение случайных искажений, а в особенности их комбинаций, сильно усложняет задачу обучения нейронной сети и далеко не всегда приводит к уменьшению ошибки на тестовой выборке.
Sign up to leave a comment.