ground truth машинное обучение
Sagemaker – Exploring Ground truth labeling | ML
In this article, we are exploring the ground truth labelling and how it is helpful in reducing the burden of labelling datasets on developers.
Attention reader! Don’t stop learning now. Get hold of all the important Machine Learning Concepts with the Machine Learning Foundation Course at a student-friendly price and become industry ready.
Amazon sagemaker Ground truth:
Ask any machine learning expert “What is the majority task that consumes a whole lot of time in the machine learning part?” And first, they will say preparing and cleaning datasets and secondly labelling them accurately that fits the models. So, in general labelling, the datasets consume 70% of the time and it would take more if the model you are feeding this dataset is sensitive enough. Amazon Ground truth provides the labelling service in which it not only just does the labelling but also creates the files that are required for the models to understand. Ground truth provides three services namely
Customers can also bring their custom labelling tasks. So, how in the first place we are going to provide input data and what kind of output format that we can expect from ground truth?
Code: Labelling job looks like which was performed on a bird image.
What is the difference between «ground truth» and «ground-truth labels»?
I’m aware that the ground-truth of the example at the top left-hand corner of the image below is «zero»
However, I am confused about the meaning of the terms ground truth and ground-truth labels. What is the difference between them?
Could someone give a hint of it?
2 Answers 2
These two terms could easily refer to the same thing, depending on the context. For example, a lazy person could easily say something like this
We compute the loss/error between the prediction (of the model) and the ground truth.
Here, the ground-truth refers to the «officially correct» label (categorical or numerical) for a given input with which you compute the prediction. So, in this case, ground-truth would be a synonym for a ground-truth label.
However, in general, ground-truth refers to anything, not just labels, that are correct or true (hence the name), so it could be used more generally. For instance, you could say something like this
We assume that the ground-truth underlying probability distribution from which the data is sampled is a Gaussian.
However, in this case, you could also leave out the ground-truth part, as it’s more or less implied by the fact that you’re assuming something.
So, the difference between the two is that «ground-truth» can be used more generally to refer to anything that is «true».
Ground Truth
‘Ground truth’ is that data or information that you have that is ‘true’ or assumed to be true. That means that you have high or perfect knowledge of what it is. For example, in your image of numbers, you know that the first row are zeros, the second row are ones, the third are twos, and so on. You have 10 rows of data, each row is of a different class or category. Each class has 16 samples. Ground truth data is used to train machine learning or deep learning models. The example you provided is from the Modified National Institute of Standards and Technology (MNIST) database which is commonly used for building image classifiers for handwritten digits.
Ground Truth Labels
The ‘ground-truth labels’ are the names you choose to give them. You may choose to label the classes as ‘0’, ‘1’, ‘2’, etc., or as ‘zero’, ‘one’, ‘two’, etc. Maybe you think in Greek. If so label them as ‘μηδέν’, ‘ένα’, ‘δύο’, etc.
СОДЕРЖАНИЕ
Этимология
Оксфордский словарь английского языка (УО «земля истина») регистрирует использование слова «Groundtruth» в смысле «фундаментальной истины» из поэмы Генри Эллисона «Сибирская ссылка Сказка», опубликованной в 1833 году.
Статистика и машинное обучение
Дистанционное зондирование
Более конкретно, наземная истина может относиться к процессу, в котором « пиксель » на спутниковом изображении сравнивается с тем, что есть на самом деле (в настоящее время), чтобы проверить содержание «пикселя» на изображении (отмечая что понятие «пиксель» несколько некорректно). В случае классифицированного изображения это позволяет осуществлять контролируемую классификацию, чтобы помочь определить точность классификации, выполняемой программным обеспечением дистанционного зондирования, и, следовательно, минимизировать ошибки в классификации, такие как ошибки совершения и ошибки упущения.
Наземная проверка обычно выполняется на месте, выполняя наземные наблюдения и измерения различных свойств характеристик ячеек наземного разрешения, которые изучаются на цифровом изображении, полученном с помощью дистанционного зондирования. Он также включает в себя получение географических координат ячейки разрешения на местности с помощью технологии GPS и сравнение их с координатами исследуемого «пикселя», предоставленными программным обеспечением дистанционного зондирования, чтобы понять и проанализировать ошибки определения местоположения и то, как они могут повлиять на конкретное исследование.
Абсолютная достоверность важна при первоначальной контролируемой классификации изображения. Когда идентичность и расположение типов земного покрова известны благодаря сочетанию полевых работ, карт и личного опыта, эти области известны как учебные площадки. Спектральные характеристики этих областей используются для обучения программного обеспечения дистанционного зондирования с использованием решающих правил для классификации остальной части изображения. Эти правила принятия решений, такие как классификация максимального правдоподобия, классификация параллелепипедов и классификация минимальных расстояний, предлагают различные методы классификации изображения. Дополнительные наземные контрольные точки позволяют удаленному датчику создавать матрицу ошибок, которая подтверждает точность используемого метода классификации. Различные методы классификации могут иметь разный процент ошибок для данного проекта классификации. Важно, чтобы удаленный датчик выбирал метод классификации, который лучше всего работает с количеством используемых классификаций, обеспечивая при этом наименьшее количество ошибок.
Ошибки комиссии
Ошибки упущения
Географические информационные системы
В ГИС пространственные данные моделируются как поле (как в растровых изображениях дистанционного зондирования ) или как объект (как в представлении векторной карты ). Они моделируются из реального мира (также называемого географической реальностью ), как правило, с помощью картографического процесса (показано).
Военное использование
Военный сленг США использует «наземную истину» для обозначения фактов, составляющих тактическую ситуацию, в отличие от разведывательных отчетов, планов миссий и других описаний, отражающих конативные или основанные на политике проекции военно-промышленного комплекса. Этот термин появляется в названии документального фильма о войне в Ираке «Абсолютная правда» (2006), а также в военных публикациях, например, в « Звездно-полосатых» высказываниях: «Полосы решили выяснить, в чем заключалась основная правда в Ираке».
Глубокое обучение для новичков: тонкая настройка нейронной сети
Введение
В прошлый раз мы рассмотрели модель сверточной нейронной сети и показали, как при участии простого, но эффективного метода регуляризации под названием dropout можно быстро достичь точности 78.6%, используя фреймворк для построения сетей глубокого обучения Keras.
Теперь вы обладаете базовыми навыками, необходимыми для применения глубокого обучения к большинству интересных задач (исключение составляет задача обработки нелинейных временных рядов, рассмотрение которой выходит за рамки этого руководства и для решения которой обычно предпочительней рекуррентые нейронные сети (RNN). Завершающая часть этого руководства будет содержать то, что очень важно, но часто упускается в подобных статьях — приемы и хитрости тонкой настройки модели, чтобы научить ее обобщать лучше, чем та базовая модель, с которой вы начали.
Эта часть руководства предполагает знакомство с первой и второй статьями цикла.
Настройка гиперпараметров и базовая модель
Обычно процесс разработки нейронной сети начинается с разработки какой-либо простой сети, либо непосредственно применяя те архитектуры, которые уже успешно применялись для решения подобных задач, либо используя те гиперпараметры, которые раньше уже давали неплохие результаты. В конечном итоге, надеемся, мы достигнем такого уровня производительности, который послужит хорошей отправной точкой, после которой мы можем попробовать поизменять все зафиксированные параметры и извлечь из сети максимальную производительность. Этот процесс обычно называют настройкой гиперпараметров, потому что он включает изменение компонентов сети, которые должны быть установлены до начала обучения.
Хотя описанный здесь метод может дать более ощутимые преимущества на CIFAR-10, из-за относительной сложности быстрого создания прототипа на нем в отсутствие графического процессора мы сосредоточимся на улучшении его производительности на MNIST. Конечно, если ресурсы позволяют, я призываю вас опробовать подобные методы на CIFAR и своими глазами увидеть, насколько они выигрывают по сравнению со стандартным подходом CNN.
Отправной точкой для нас будет служить исходная CNN, представленная ниже. Если какие-то фрагменты кода кажутся вам непонятными, предлагаю ознакомиться с предыдущими двумя частями этого цикла, где описаны все базовые принципы.
Как видно, наша модель достигает точности 99.12% на тестовом множестве. Это немного лучше, чем результаты MLP, рассмотренной в первой части, но нам еще есть куда расти!
В данном руководстве мы поделимся способами улучшения таких “базовых” нейронных сетей (не отступая от архитектуры CNN), а затем оценим прирост производительности, который мы получим.
-регуляризация
В предыдущей статье мы рассказывали, что одной из основных проблем машинного обучения является проблема переобучения (overfitting), когда модель в погоне за минимизацией затрат на обучение теряет способность к обобщению.
Как уже говорилось, существует простой способ держать переобучение под контролем — метод dropout.
Но есть и другие регуляризаторы, которые можно применить к нашей сети. Возможно, самый популярный из них — -регуляризация (также называемая сокращением весов, англ. weight decay), которая использует более прямой подход к регуляризации, чем dropout. Обычно первопричиной переобучения является сложность модели (в смысле количества ее параметров), слишком высокая для решаемой задачи и имеющегося обучающего множества. В некотором смысле, задача регуляризатора — понизить сложность модели, сохранив количество ее параметров.
-регуляризация выполняется посредством наложения штрафов (penalising) на веса с наибольшими значениями, минимизируя их
-норму с использованием параметра λ — коэффициент регуляризации, выражающий предпочтение минимизации нормы относительно минимизации потерь на обучающем множестве. То есть, для каждого веса ω мы прибавляем к целевой функции
слагаемое
(множитель ½ используется для того, чтобы градиент этого слагаемого по параметру ω равнялся λω, а не 2λω — для удобства применения метода обратного распространения ошибки).
Обратите внимание, что крайне важно правильно выбрать λ. Если коэффициент слишком мал, то эффект от регуляризации будет ничтожен, если же слишком велик — модель обнулит все веса. Здесь мы возьмем λ = 0.0001; чтобы добавить этот метод регуляризации в нашу модель, нам понадобится еще один импорт, после чего достаточно всего лишь добавить параметр W_regularizer к каждому слою, где мы хотим применять регуляризацию.
Инициализация сети
Один из моментов, который мы упустили из виду в предыдущей статье — принцип выбора начальных значений весов для слоев, составляющих модель. Очевидно, что этот вопрос очень важен: установка всех весов в 0 будет серьезным препятствием для обучения, так как ни один из весов изначально не будет активен. Присваивать весам значения из интервала ±1 — тоже обычно не лучший вариант — на самом деле, иногда (в зависимости от задачи и сложности модели) от правильной инициализации модели может зависеть, достигнет она высочайшей производительности или вообще не будет сходиться. Даже если задача не предполагает такой крайности, удачно выбранный способ инициализации весов может значительно влиять на способность модели к обучению, так как он предустанавливает параметры модели с учетом функции потерь.
Здесь я приведу два наиболее интересных метода.
Метод инициализации Завьера (Xavier) (иногда — метод Glorot’а). Основная идея этого метода — упростить прохождение сигнала через слой во время как прямого, так и обратного распространения ошибки для линейной функции активации (этот метод также хорошо работает для сигмоидной функции, так как участок, где она ненасыщена, также имеет линейный характер). При вычислении весов этот метод опирается на вероятностное распределение (равномерное или нормальное) с дисперсией, равной , где
и
— количества нейронов в предыдущем и последующем слоях соответственно.
Метод инициализации Ге (He) — это вариация метода Завьера, больше подходящая функции активации ReLU, компенсирующая тот факт, что эта функция возвращает нуль для половины области определения. А именно, в этом случае
Чтобы получить требуемую дисперсию для инициализации Завьера, рассмотрим, что происходит с дисперсией выходных значений линейного нейрона (без составляющей смещения), предполагая, что веса и входные значения не коррелируют и имеют нулевое матожидание:
Из этого следует, что, чтобы сохранить дисперсию входных данных после прохождения через слой, необходимо, чтобы дисперсия была . Мы можем применить этот же аргумент при обратном распространении ошибки, чтобы получить
. Так как обычно мы не можем удовлетворить обоим этим требованиям, мы выбираем дисперсию весов как их среднее:
, что на практике, как правило, работает прекрасно.
Батч-нормализация (batch normalization)
Батч-нормализация — метод ускорения глубокого обучения, предложенный Ioffe и Szegedy в начале 2015 года, уже процитированный на arXiv 560 раз! Метод решает следующую проблему, препятствующую эффективному обучению нейронных сетей: по мере распространения сигнала по сети, даже если мы нормализовали его на входе, пройдя через внутренние слои, он может сильно исказиться как по матожиднию, так и по дисперсии (данное явление называется внутренним ковариационным сдвигом), что чревато серьезными несоответствиями между градиентами на различных уровнях. Поэтому нам приходится использовать более сильные регуляризаторы, замедляя тем самым темп обучения.
С помощью этих статистических характеристик мы преобразуем функцию активации таким образом, чтобы она имела нулевое матожидание и единичную дисперсию на всем батче:
где ε >0 — параметр, защищающий нас от деления на 0 (в случае, если среднеквадратичное отклонение батча очень мало или даже равно нулю). Наконец, чтобы получить окончательную функцию активации y, нам надо убедиться, что во время нормализации мы не потеряли способности к обобщению, и так как к исходным данным мы применили операции масштабирования и сдвига, мы можем позволить произвольные масштабирование и сдвиг нормализованных значений, получив окончательную функцию активации:
Где β и γ — параметры батч-нормализации, которым системы можно обучить (их можно оптимизировать методом градиентного спуска на обучающих данных). Это обобщение также означает, что батч-нормализацию может быть полезно применять непосредственно к входным данным нейронной сети.
Этот метод в применении к глубоким сверточным сетям почти всегда успешно достигает своей цели — ускорить обучение. Более того, он может случить отличным регуляризатором, позволяя не так осмотрительно выбирать темп обучения, мощность -регуляризатора и dropout (иногда необходимость в них совсем отпадает). Регуляризация здесь — следствие того факта, что результат работы сети для определенного примера больше не детерминировано (он зависит от всего батча, в рамках которого данный результат получен), что упрощает обобщение.
И наконец, хотя авторы метода рекомендуют применять батч-нормализацию до функции активации нейрона, последние исследования показывают, что если не полезнее, то по крайней мере так же выгодно использовать ее после активации, что мы и сделаем в рамках этого руководства.
Расширение обучающего множества (data augmentation)
В то время как описанные выше методы касались в основном тонкой настройки самой модели, бывает полезно изучить варианты настройки данных, особенно когда речь идет о задачах распознавания изображений.
Представим, что мы обучили нейронную сеть распознавать рукописные цифры, которые были примерно одного размера и были аккуратно выровнены. Теперь давайте представим, что случится, если кто-то даст этой сети на тестирование слегка сдвинутые цифры разного размера и наклона — тогда ее уверенность в правильном классе резко упадет. В идеале хорошо бы уметь так обучать сеть, чтобы она оставалась устойчивой к подобным искажениям, но наша модель может обучаться только на основе тех образцов, которые мы ей предоставили, при том что она проводит в некотором роде статистический анализ обучающего множества и экстраполирует его.
К счастью, для этой проблемы существует решение, простое, но эффективное, особенно на задачах по распознаванию изображений: искусственно расширьте обучающие данные искаженными версиями во время обучения! Это означает следующее: перед тем, как подать пример на вход модели, мы применим к нему все трансформации, которые сочтем нужными, а потом позволим сети напрямую наблюдать, какой эффект имеет применение их к данным и обучая ее “хорошо вести себя” и на этих примерах. Например, вот несколько примеров сдвинутых, масштабированных, деформированных, наклоненных цифр из набора MNIST.
Здесь мы будем использовать случайные горизонтальные и вертикальные сдвиги. ImageDataGenerator также предоставляет нам возможность выполнять случайные повороты, масштабирование, деформацию и зеркальное отражение. Все эти трансформации также стоит попробовать, кроме разве что зеркального отражения, так как в реальной жизни мы вряд ли встретим развернутые таким образом рукописные цифры.
Ансамбли (ensembles)
Одна интересная особенность нейронных сетей, которую можно заметить, когда они используются для распределения данных на более чем два класса — это то, что при различных начальных условиях обучения им легче дается распределение по одним классам, в то время как другие приводят в замешательство. На примере MNIST можно обнаружить, что отдельно взятая нейронная сеть прекрасно умеет отличать тройки от пятерок, но не учится правильно отделять единицы от семерок, в то время как с деля с другой сетью обстоят наоборот.
С этим несоответствием можно бороться с помощью метода статистических ансамблей — место одной сети постройте несколько ее копий с разными начальными значениями и вычислите их средний результат на одних и тех же входных данных. Здесь мы будем строить три отдельных модели. Различия между ними можно легко представить в виде диаграммы, построенной также в Keras.
Ранняя остановка (early stopping)
Опишу здесь еще один метод в качестве введения в более широкую область оптимизации гиперпараметров. Пока что мы использовали валидационное множество данных исключительно для контроля за ходом обучения, что, без сомнения, не рационально (так как эти данные не используются в конструктивных целях). На самом же деле валидационное множество может служить базой для оценки гиперпараметров сети (таких, как глубина, количество нейронов/ядер, параметры регуляризации и т.д.). Представьте, что сеть прогоняется с различными комбинациями гиперпараметров, а затем решение принимается на основе их производительности на валидационном множестве. Обратите внимание, что мы не должны знать ничего о тестовом множестве до того как окончательно определимся с гиперпараметрами, так как иначе признаки тестового множества непроизвольно вольются в процесс обучения. Этот принцип также известен как золотое правило машинного обучения, и нарушалось во многих ранних подходах.
Возможно, самый простой способ использования валидационного множества — настройка количества “эпох” (циклов) с помощью процедуры, известной как ранняя остановка — просто остановите процесс обучения, если за заданное количество эпох (параметр patience) потери не начинают уменьшаться. Так как наш набор данных относительно невелик и насыщается быстро, мы установим patience равным пяти эпохам, а максимальное количество эпох увеличим до 50 (вряд ли это число когда-либо будет достигнуто).
Просто покажите мне код
После применения шести вышеописанных приемов оптимизации, код нашей нейронной сети будет выглядеть следующим образом.
Наша модель после обновления достигает точности 99.47% на тестовом наборе данных, а это значительный прирост по сравнению с начальной производительностью 99.12%. Конечно, для такого маленького и относительно простого набора данных, как MNIST, выгода не кажется столь значительной. Применив те же приемы к задаче распознавания CIFAR-10, при наличии необходимых ресурсов, вы сможете получить более ощутимое преимущество.
Предлагаю вам дальше поработать с этой моделью: в частности, попытайтесь использовать валидационные данные не только для приема ранней остановки, но еще и для оценки размерности и количества ядер, размеров скрытых слоев, стратегий оптимизации, функций активации, количества сетей в ансамбле, и сравните результаты с лучшими из лучших (в момент написания этого поста лучшая модель достигала точности 99.79% на MNIST).
Заключение
В данной статье мы рассмотрели шесть приемов для тонкой настройки нейронных сетей, описанных в предыдущих постах:
-регуляриация
Инициализация
Батч-нормализация
Расширение обучающего множества
Метод ансамблей
Ранняя остановка
И успешно применили их к глубокой сверточной сети, построенной в Keras, что позволило достигнуть значительного увеличения точности на MNIST и заняло менее 90 строк кода.
Это была завершающая статья цикла. Прочесть предыдущие две части можно здесь и здесь.
Надеюсь, полученные вами знания станут тем стимулом, который в сочетании с необходимыми ресурсами позволит вам стать наикрутейшими инженерами сетей глубокого обучения.
wunderfund.io — молодой фонд, который занимается высокочастотной алготорговлей. Высокочастотная торговля — это непрерывное соревнование лучших программистов и математиков всего мира. Присоединившись к нам, вы станете частью этой увлекательной схватки.
Мы предлагаем интересные и сложные задачи по анализу данных и low latency разработке для увлеченных исследователей и программистов. Гибкий график и никакой бюрократии, решения быстро принимаются и воплощаются в жизнь.