Задача о "многоруком бандите" (часть 1)
Задача является модельной для понимания конфликта между exploitation (применение, эксплуатация) и exploration (изучение, исследование).
Читать дальше...
Задача является модельной для понимания конфликта между exploitation (применение, эксплуатация) и exploration (изучение, исследование).
Читать дальше...
Задача о "многоруком бандите" (часть 2)
Продолжим разбираться с многоруким бандитом. Разберем способ оценки математического ожидания в случае когда распределение случайной величины меняется со временем, а также посмотрим как влияет на жадную стратегию выбор начальной оценки математического ожидания награды.
Читать дальше...
Продолжим разбираться с многоруким бандитом. Разберем способ оценки математического ожидания в случае когда распределение случайной величины меняется со временем, а также посмотрим как влияет на жадную стратегию выбор начальной оценки математического ожидания награды.
Читать дальше...
Сверточная нейронная сеть OverFeat
OverFeat - модель сверточной нейронной сети, описанная в [1], которая предназначена для того, чтобы одновременно (т.е. одной сетью) решать три задачи: детектировать объект, классифицировать его и уточнять положение на снимке (detection, recognition, and localization).
Читать дальше...
OverFeat - модель сверточной нейронной сети, описанная в [1], которая предназначена для того, чтобы одновременно (т.е. одной сетью) решать три задачи: детектировать объект, классифицировать его и уточнять положение на снимке (detection, recognition, and localization).
Читать дальше...
👍1
Задача о "многоруком бандите" (часть 3)
Разберем еще одну стратегию решения задачи о "многоруком бандите".
Читать дальше...
Разберем еще одну стратегию решения задачи о "многоруком бандите".
Читать дальше...
Spatial Pyramid Pooling структура в свёрточной нейронной сети
Любая свёрточная нейронная сеть, применяемая для классификации объектов, структурно легко разделяется на две части. Первая состоит из свёрточных (convolution) и объединяющих (pooling) слоёв (сюда же все нелинейности, LRN, batch normalization и т.п.) и по исходной картинке формирует трёхмерную матрицу особенностей (features). Вторая часть сети является классификатором, который, взяв набор особенностей, выдаёт класс объекта на изображении (вернее вектор sofmax с вероятностями для каждого класса).
Статья [1] предлагает использовать spatial pyramid pooling слой между свёрточной частью и классификатором, чтобы иметь возможность классифицировать изображения произвольных размеров (в разумных пределах).
Читать дальше...
Любая свёрточная нейронная сеть, применяемая для классификации объектов, структурно легко разделяется на две части. Первая состоит из свёрточных (convolution) и объединяющих (pooling) слоёв (сюда же все нелинейности, LRN, batch normalization и т.п.) и по исходной картинке формирует трёхмерную матрицу особенностей (features). Вторая часть сети является классификатором, который, взяв набор особенностей, выдаёт класс объекта на изображении (вернее вектор sofmax с вероятностями для каждого класса).
Статья [1] предлагает использовать spatial pyramid pooling слой между свёрточной частью и классификатором, чтобы иметь возможность классифицировать изображения произвольных размеров (в разумных пределах).
Читать дальше...
Выделения объектов для семантической сегментации при помощи "состязательного стирания".
Задача семантической сегментации изображения заключается в том, чтобы назначить каждому пикселю этого изображения некоторый класс из заранее заданных. Например, определить какие пиксели на изображении относятся к человеку, какие к сидящему у этого человека на коленях коту, а какие к некоему заднику (background) и не могут быть классифицированы. Современный подход к решению этой задачи, как собственно и многих других, заключается в применении свёрточных нейронных сетей. Этот подход показывает прекрасные результаты. Проблема, однако, как и всегда в случае применения нейронных сетей заключается в необходимости получить значительные объемы, размеченных для тренировки, данных. При этом в случае семантической сегментации, трудоёмкость задачи разметки крайне высока. Потому что для каждого изображения надо сформировать попиксельную маску классов.
Читать дальше...
Задача семантической сегментации изображения заключается в том, чтобы назначить каждому пикселю этого изображения некоторый класс из заранее заданных. Например, определить какие пиксели на изображении относятся к человеку, какие к сидящему у этого человека на коленях коту, а какие к некоему заднику (background) и не могут быть классифицированы. Современный подход к решению этой задачи, как собственно и многих других, заключается в применении свёрточных нейронных сетей. Этот подход показывает прекрасные результаты. Проблема, однако, как и всегда в случае применения нейронных сетей заключается в необходимости получить значительные объемы, размеченных для тренировки, данных. При этом в случае семантической сегментации, трудоёмкость задачи разметки крайне высока. Потому что для каждого изображения надо сформировать попиксельную маску классов.
Читать дальше...
"Мягкое" подавление немаксимумов
При детектировании, классически используется связка из двух подходов сдвигающегося окна (sliding window) и подавления немаксимумов ( non-maximum suppression). Последнее время, большое распространения для решения задачи детектирования получили свёрточные нейронные сети, в которых сдвигающееся окно не применяется, но и при использовании CNN на определенном этапе работы алгоритма возникает необходимость в подавление немаксимумов, поскольку обычно генерируется достаточно большое количество дублей для каждого объекта на снимке. В рассматриваемой статье [1] как раз и предлагается усовершенствование алгоритма подавления немаксимумов.
Читать дальше...
При детектировании, классически используется связка из двух подходов сдвигающегося окна (sliding window) и подавления немаксимумов ( non-maximum suppression). Последнее время, большое распространения для решения задачи детектирования получили свёрточные нейронные сети, в которых сдвигающееся окно не применяется, но и при использовании CNN на определенном этапе работы алгоритма возникает необходимость в подавление немаксимумов, поскольку обычно генерируется достаточно большое количество дублей для каждого объекта на снимке. В рассматриваемой статье [1] как раз и предлагается усовершенствование алгоритма подавления немаксимумов.
Читать дальше...
R-CNN, Fast R-CNN, Faster R-CNN etc.
Возвращаемся к задаче детектирования объектов на изображении. Один из подходов к решению данной задачи был рассмотрен, когда разбирали сеть OverFeat. В данном тексте разберем конструкцию, которая впервые была предъявлена в статьях [1] и [2], а затем усовершенствована в статьях [3] и [4].
Читать дальше...
Возвращаемся к задаче детектирования объектов на изображении. Один из подходов к решению данной задачи был рассмотрен, когда разбирали сеть OverFeat. В данном тексте разберем конструкцию, которая впервые была предъявлена в статьях [1] и [2], а затем усовершенствована в статьях [3] и [4].
Читать дальше...
Генеративно-состязательная сеть
Генеративно-состязательная сеть (Generative adversarial network) это методика обучения пары моделей:
генеративной $G$, которая по случайному шуму генерирует данные, подчинённые некоторому вероятностному распределению, и
дискриминативной $D$, которая приписывает, поступающим на её вход данным, вероятность того, что они получены из тренировочного датасета или сгенерированы моделью $G$.
Т.е. модель $G$ обучается таким образом, чтобы максимизировать вероятность того, что $D$ ошибётся. А модель $D$ тренируется отличать подмену реальных данных от тех, которые сгенерировала сеть $G$. Таким образом мы получаем как бы игру для двух игроков.
Читать дальше...
Генеративно-состязательная сеть (Generative adversarial network) это методика обучения пары моделей:
генеративной $G$, которая по случайному шуму генерирует данные, подчинённые некоторому вероятностному распределению, и
дискриминативной $D$, которая приписывает, поступающим на её вход данным, вероятность того, что они получены из тренировочного датасета или сгенерированы моделью $G$.
Т.е. модель $G$ обучается таким образом, чтобы максимизировать вероятность того, что $D$ ошибётся. А модель $D$ тренируется отличать подмену реальных данных от тех, которые сгенерировала сеть $G$. Таким образом мы получаем как бы игру для двух игроков.
Читать дальше...
MNIST, нейронные сети и свёрточные нейронные сети
Про обычные и свёрточные нейронные сети. Почему свёрточные нейронные сети хороши для работы с изображениями. И немного о датасете MNIST.
Читать дальше...
Про обычные и свёрточные нейронные сети. Почему свёрточные нейронные сети хороши для работы с изображениями. И немного о датасете MNIST.
Читать дальше...
Алгоритмы оптимизации типа градиентного спуска
При тренировки нейронной сети применяются различные алгоритмы оптимизации, большинство из них являются усовершенствованием стохастического градиентного спуска, хочется иметь их все (про которые я знаю) на одной странице.
Читать дальше...
При тренировки нейронной сети применяются различные алгоритмы оптимизации, большинство из них являются усовершенствованием стохастического градиентного спуска, хочется иметь их все (про которые я знаю) на одной странице.
Читать дальше...
Mask R-CNN
Разберём статью [1], в которой описана сеть, решающая задачу сегментации экземпляра объекта (object instance segmentation). Авторы предлагают сеть, которую они назвали Mask R-CNN. Mask R-CNN берёт за основу Faster R-CNN и добавляет к ней дополнительную ветвь. Эта ветвь на выходе должна выдать маску объекта в дополнение к ограничивающему прямоугольнику и классу.
Читать дальше...
Разберём статью [1], в которой описана сеть, решающая задачу сегментации экземпляра объекта (object instance segmentation). Авторы предлагают сеть, которую они назвали Mask R-CNN. Mask R-CNN берёт за основу Faster R-CNN и добавляет к ней дополнительную ветвь. Эта ветвь на выходе должна выдать маску объекта в дополнение к ограничивающему прямоугольнику и классу.
Читать дальше...
Tensorflow
Tensorflow - это набор инструментов машинного обучения с открытым исходным кодом.
Читать дальше...
Tensorflow - это набор инструментов машинного обучения с открытым исходным кодом.
Читать дальше...
TensorFlow
An end-to-end open source machine learning platform for everyone. Discover TensorFlow's flexible ecosystem of tools, libraries and community resources.
Tensorflow (часть вторая)
Продолжаем разбираться с Tensorflow. Будем смотреть на вспомогательные операции, которые позволяют усложнить граф вычислений таким образом, чтобы поток данных мог идти по разным путям, в зависимости от содержимого этих данных. Но начнем мы с операции, которая позволит нам логировать сам процесс выполнения вычислений в графе.
Читать дальше...
Продолжаем разбираться с Tensorflow. Будем смотреть на вспомогательные операции, которые позволяют усложнить граф вычислений таким образом, чтобы поток данных мог идти по разным путям, в зависимости от содержимого этих данных. Но начнем мы с операции, которая позволит нам логировать сам процесс выполнения вычислений в графе.
Читать дальше...
Batch Normalization. Основы.
Batch Normalization - одна из тех методик (или даже Tips&Tricks), которая существенно упростила тренировку, а следовательно и использование нейронных сетей в различных задачах. Понятно, что взлет ракетой нейронных сетей, за последние 5+ лет, обязан в основном серьёзному увеличению возможностей железок. Но удалось бы добиться такого рапространия нейронных сетей, и особенно глубоких нейронных сетей без batch normalization?
Главные наблюдаемые достоинства batch normalization это ускорение тренировки (в смысле уменьшения количества итераций для получения нужного качества) и некая допускаемая вольность в подборе параметров: и инициализации весов сети, и learning rate и других метапараметров обучения. Таким образом ценность batch Normalization для нейронных сетей сложно преувеличить, а значит есть смысл разобраться: что это такое и откуда проистекает польза при применении.
Читать дальше...
Batch Normalization - одна из тех методик (или даже Tips&Tricks), которая существенно упростила тренировку, а следовательно и использование нейронных сетей в различных задачах. Понятно, что взлет ракетой нейронных сетей, за последние 5+ лет, обязан в основном серьёзному увеличению возможностей железок. Но удалось бы добиться такого рапространия нейронных сетей, и особенно глубоких нейронных сетей без batch normalization?
Главные наблюдаемые достоинства batch normalization это ускорение тренировки (в смысле уменьшения количества итераций для получения нужного качества) и некая допускаемая вольность в подборе параметров: и инициализации весов сети, и learning rate и других метапараметров обучения. Таким образом ценность batch Normalization для нейронных сетей сложно преувеличить, а значит есть смысл разобраться: что это такое и откуда проистекает польза при применении.
Читать дальше...