Заметки про CS
105 subscribers
68 links
Заметки на компьютерно-научную тематику, в основном CV и ML
Download Telegram
Свёрточные нейронные сети на графах с быстрыми локализованными спектральными фильтрами.

arXiv:1606.09375

Снова про свёрточные сети на графах. Однако в отличии от того, что разбирали в прошлый раз, у нас задача не перекидывать разметку с одних вершин на другие, а, например, классифицировать сигнал на графе. Если сравнивать со свёрточными сетями на изображениях, предыдущую задачу можно было бы сравнить с задачей семантической сегментации, когда часть изображения уже отсегментирована, и на базе этого знания надо доразметить оставшуюся часть. А сегодня мы разберём аналог классической задачи - классификации изображения. Собственно, авторы и проверяют свой подход на классическом датасете MNIST, представив изображения в виде графа и тренируя сетку для классификации. Авторы выложили код, реализующий идеи статьи, что сильно помогает в понимании работы.

Читать дальше...
Пространственно-временные свёрточные сети на графах. Фреймворк глубокого обучения для предсказания дорожного трафика

arXiv:1709.04875

Уже разбирали статью про предсказание дорожного трафика, там для решения использовались обычные свёрточные слои и рекуррентные сети (LSTM), но задача в этой статье была относительно простой, за счёт того, что пробки надо было предсказывать на дороге, которая по сути своей представляла некий коридор, т.е. на ней не было перекрёстков и боковых входящих-исходящих дорог. Собственно, поэтому и можно было использовать обычные одномерные свёрточные слои. В данной статье авторы рассматривают более сложные дорожные сети, которые могут быть представлены в виде графов.

В данном случае используются те наработки по свёрточным сетям на графах, с которыми мы сталкивались в статьях: раз и два.

Читать дальше...
Двойная свёрточная сеть на графе для полуавтоматической классификации

2018-04

Разбирали статью про полуавтоматическое обучение, в статье описывалась сеть с помошью которой, имея разметку для части вершин графа, можно продолжить эту разметку на непомеченные вершины. В новой статье предлагается улучшить решение этой задачки путём добавления еще одного слагаемого в штрафную функцию. Это слагаемое описывает связь между вершинами графа, основанную на положительной точечной взаимной информации (positive pointwise mutual information) и помогает улучшить глобальную согласованность разметки.

Читать дальше...
struc2vec. Представление вершин графа на основе структурной идентичности

arXiv:1704.03165

Авторы предлагают новый подход к представлению вершин графа в виде элементов некоторого векторного пространства. При этом вектора, представляющие структурно похожие вершины, близки в смысле обычной метрики векторного пространства.

На самом деле, построение функции, вкладывающей вершины графа в некоторое векторное пространство, неоднократно обсуждалось в различных статьях, например, мы разбирали node2vec подход. Есть варианты такого вложения при помощи нейронных сетей. Однако, эти подходы опираются на локальную структуру графа, т.е. две вершины получат близкое представление в виде векторов, если они близки в графе. Это хорошо в случае, когда выполняется предположение о наличии свойства групповой эквивалентности (homophily) вершин, но именно структурная эквивалентность двух вершин, далёких в графе в таком представлении не улавливается.

В качестве примера мы можем рассмотреть, например, граф представляющий связи работников некоторого (достаточно большого) завода. Подходы типа node2vec позволяют получить векторное представление вершин при котором, близкими будут вектора, соответствующие работникам одного цеха, а новый подход, должен позволить выявить структурные особенности, т.е. близкими в нём будут вектора начальников цехов, а вектора обычных работников (независимо от цеха) составят в векторном пространстве другой кластер.

Читать дальше...
Передача знаний в нейронной сети

arXiv:1503.02531

Статья рассказывает про передачу знаний (knowledge distillation) от уже наученной сети (обычно большой и сложной) к сети необученной (обычно существенно меньших размеров). Исходную большую и сложную сеть называют учителем, а маленькую - учеником.

На самом деле можно рассматривать эту задачу двояко. Во-первых, как способ натренировать малую сеть лучше, чем она сможет это сделать просто на исходном датасете. Здесь работает то, что большая сеть может уловить сходство разных классов и передать эти знания малой сети, которая такие тонкости не заметит. Действительно, если мы решили классифицировать котиков, собачек, птиц и самолеты, то возможно нам будет полезно, что котики могут быть похожи на собак, а вот на самолеты совсем нет, и если большая сеть это "знает" и сможет рассказать малой, то это важно. Потому что малая, возможно, сама из датасета этому научиться не сможет.

Во-вторых, случаются ситуации, когда большая сеть натренирована, но датасет на котором она тренировалась по каким-то причинам не доступен (очень большой, очень под копирайтом и т.п.), зато есть какой-то неразмеченный набор объектов тех же классов с помощью которого, можно передать знания от большой сети к малой.

Читать дальше...
Улучшение передачи знаний с использованием ассистента учителя

arXiv:1902.03393

В прошлый раз разбирался с передачей знаний от большой нейронной сети (учителя) к маленькой нейронной сети (ученику). В статье, разбираемой сегодня, авторы выдвигают идею, которую можно описать примерно следующим образом: слишком умный учитель не может хорошо обучить слишком слабого ученика, поэтому такому учителю нужен ассистент. Т.е. передача знаний от большой нейронной сети к очень маленькой, будет идти лучше, если мы вначале натренируем промежуточную сеть: ассистента учителя (teacher assistent) в которую передадим знания от учителя, а уже эта средняя сеть будет использоваться для тренировки совсем малой нейронной сети-ученика.

Учитель, ассистент и ученик, изображение из статьи

Читать дальше...
Глубокое взаимное обучение

arXiv:1706.00384

Разобрал уже два варианта knowledge distillation в первом случае данные передавались от очень большой сети (учителя) к маленькой (ученику) напрямую, а во втором обучение происходило через посредника - сетку среднего размера (помошника учителя). Авторы статьи, рассматриваемой сегодня, предлагают подход, который они назвали глубокое взаимное обучение (deep mutual learning (DML)): несколько небольших сеток обучаются одновременно обмениваясь между собой знаниями во время обучения.

Возникает вопрос почему такое взаимное обучение должно привести к хорошим результатам (лучшим, чем просто обучение отдельной нейронной сети)? Авторы обосновывают это тем, что все малые сетки с каждым шагом тренировки должны всё лучше и лучше интерполировать вероятности принадлежности подаваемого на вход объекту одному из классов, но при этом вероятности остальных классов у каждой из сетей будут распределены по разному (поскольку обучение стартует с разных начальных весов, даже если структура сетей одинакова), и обмениваясь вот этой информацией сети и дообучают друг друга.

Читать дальше...
Согласование современной практики машинного обучения и компромисса между смещением и дисперсией.

arXiv:1812.11118

Сегодня разберём статью, посвященную классической проблеме статистического обучения: компромисса смещения-дисперсии (bias-variance trade-off), рассматриваемую в приложении к современным методам машинного обучения. Оказывается, что классическая интуиция в подборе модели - модель должна быть не слишком простой, чтобы суметь описать структуру данных (т.е. не должно произойти "недообучения"), но и не слишком сложной, чтобы не переобучиться на тренировочные данные и суметь обобщиться - так вот эта интуиция для современных моделей, таких как нейронные сети - не работает.

Нейронные сети представляют из себя весьма богатые модели и зачастую обучаются до такой степени, что на тренировочных данных ошибки практически отсутствуют, такая ситуация в классической интерпретации рассматривалась бы как переобучение, однако, такие переобученные сети показывают высокую точность и на тестовых данных.

В данной статье, авторы предлагают концепцию двойного спуска (double descent): если изобразить зависимость ошибки на тестовых данных от сложности модели в виде кривой, то в левой части такого графика мы имеем классическую U кривую - при увеличении сложности модели ошибка вначале уменьшается, а затем начинает расти. Однако, если продолжить увеличивать сложность модели, то ошибка на тестовых данных, с некоторого момента, вновь начинает спадать - получается второй спуск.

Читать дальше...
Глубокий двойной спуск - где большие модели и большие данные вредят.

arXiv:1912.02292

В прошлый раз смотрели статью, которая разбирала проблему компромисса смещения-дисперсии (bias-variance trade-off) и вводила понятие двойного спуска. В этой статье на конкретных примерах было показано, что вместо выбора модели сбалансированной между недообученностью и переобученностью сложности, как это обычно предлагается в классическом машинном обучении, можно "переусложнить" модель добившись нулевой или близкой к нулю ошибки на тренировочных данных и при этом получить на тестовых данных результаты лучше чем в сбалансированном варианте.

Новая статья продолжает копать в том же направлении. Авторы показывают, что не только усложнение (увеличение числа параметров) модели приводит ко второму спаду, но и увеличение числа эпох тренировки. В статье вводится понятие эффективной сложности модели, которое объединяет в себе и сложность модели и длительность тренировки.

Так же авторы показывают, что эффект пика и двойного спуска, крайне ярко проявляется при зашумленности тестовых данных, а переусложнение модели позволяет с зашумленностью бороться.

Читать дальше...
Можно ли дважды натренировать одну и ту же нейронную сеть? Исследование воспроизводимости и двойного спуска с точки зрения границы решения

arXiv:2203.08124

В статье предлагается интересный способ визуализации результатов работы нейронной сети, который позволяет получить представление о границах, разделяющих разные классы (по предсказанию сети). На базе этого способа авторы сравнивают конфигурацию границ классов для сетей различных архитектур, оценивают устойчивость сети одной и той же архитектуры при тренировки с разными начальными весами. Наконец, смотрят как меняется конфигурация областей классов, когда сложность сети меньше, близка и больше интерполяционного порога, что возвращает нас к ситуации двойного спуска

Читать дальше...
Управляемая совместная тренировка для попиксельного полуконтролируемого обучения.

arXiv:2008.05258

После появления нейронных сетей особенно глубоких, основная проблема "где найти размеченный датасет для решаемой задачи?". Особенно остро такая проблема стоит во всевозможных задачах компьютерного зрения. И если для детектирования и классификации изображений разметка датасета штука крайне недешевая, то для семантической сегментации, удаления шума и прочих удалений отражений разметка датасета может стоить просто дико дорого.

Поэтому приходится каким-то образом ловчить и приспосабливаться. Можно, например, генерировать синтетический датасет (это хорошо получается, если учесть развитие всевозможных игровых движкоd), и тренировать сетку на нем, одновременно, решая задачу domain adaptation, согласуя синтетические данные с реальными.

Другой подход - это так называемое полуконтролируемое обучение (semi-supervised learning). В этом случае разметку имеет не весь датасет, а только его часть, но неразмеченные данные также используются в процессе обучения. Этот метод широко используется в задачах классификации. Однако, для пиксельных задач: семантической сегментации, удаления шума, улучшение ночных фотографий и т.п., подходы применяемые в классификации не применимы.

Сегодня разберем статью, в которой автор предлагают SSL методику для решения пиксельных задач.

Читать дальше...
Нормализация в нейронных сетях.

В своё время мы разбирались с batch normalization, заметив, что ее использование приносит большую пользу при тренировке. В этот раз попробуем собрать вместе несколько (все, которые мне известны на данный момент) вариантов нормализации признаков.

Читать дальше...
Не удержусь прорекламировать:

https://arxiv.org/pdf/2402.09092.pdf

Отличная статья - 100 страниц различных функций активации, начиная с сигмоиды и гиперболического тангеса и до всевозможной экзотики. Все это со ссылками на статьи, где эти функции предлагались.

Отличный получился справочник.
Feature Pyramid Networks for Object Detection

arXiv:1612.03144

Статье уже 8 лет, т.е. по нынешним быстробегущим временам написана была давным давно. Однако, техника, описанная в статье применяется в разных местах до сих пор. Собственно, чего бы ей не применяться, если по сути это тот же классический подход, который использовался при решении задачи детектирования объектов во времена, когда сверточные сети еще не завоевали мир, а в ходу были вручную придуманные признаки.

Читать дальше...
Dropout в нейронных сетях.

Сегодня поговорим об одном методе борьбы с переобучением нейронных сетей. Статья [1], где этот метод был впервые описан вышла в 2012 году, и рассказывала о Dropout в применении к обычным нейронным сетям (т.е. состоящим из полносвязных слоёв). Рецепт выглядел достаточно просто: давайте на каждом шаге тренировки случайным образом выключать часть нейронов, однако, результаты получались очень не плохие.

В дальнейшем, методика развивалась, как в сторону уточнений вида: "какой процент нейронов отключать на каждом этапе тренировки?" или "какие именно нейроны выключать с большей вероятностью?". Так и в сторону применения данной методики не только к полносвязным слоям, но и к свёрточным или рекуррентным сетям.

Читать дальше...
Dimensionality Reduction by Learning an Invariant Mapping

Это базовая статья 2006 года по contrastive loss.

В статье решается задача представления многомерных данных (например, изображений) на многообразии малой размерности. Для этого авторы конструируют новый метод, который они назвали Dimensionality Reduction by Learning an Invariant Mapping (DrLIM), заявляя для этого метода следующие свойства:

Читать дальше...
Noise-contrastive estimation. A new estimation principle for unnormalized statistical models

В статье авторы предлагают метод восстановления параметров распределения по выборке. Особо погружаться интереса нет, хочется пробежаться по верхам и ознакомится с методикой, потому что ей много где пользуются.

Читать дальше...
Colorful Image Colorization

arXiv:1603.08511

Статья про то как раскрашивать черно-белые изображения. Очевидно, что никакого однозначного решения тут нет, т.е. трава обычно зеленая, а небо голубое, но, например, машина может быть практически любого цвета хоть желтого, хоть розового. Часто задачу раскрашивания решают в полуавтоматическом режиме, т.е. человек "натыкивает" точки с цветами, а алгоритм продолжает эти цвета на всё изображение. Авторы предлагают полностью автоматическое решение.

Читать дальше...
Unsupervised Visual Representation Learning by Context Prediction

arXiv:1505.05192

В статье представлен способ претренировки свёрточной нейронной сети, на неразмеченном датасете из изображений. Основная задача авторов, получить такие начальные веса свёрточной сети, которые позволят в дальнейшем натренировать уже конкретную сеть для классификации или детектирования лучше, чем если начинать просто со случайных весов.

Читать дальше...
Multi-Dimensional Recurrent Neural Networks

arXiv:0705.2011

Мы достаточно подробно обсуждали рекуррентные нейронные сети. Однако, все они рассматривались применительно к последовательности (одномерной) элементов. Сегодня разберем статью, где предлагается добавить измерений входному набору.

Читать дальше...