что такое свертка данных

Что такое свертка данных

Использован релиз 3.0.60

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

Перед сверткой обязательно создайте резервную копию базы данных (этап входит в процедуру свертки) на случай, если процедура свертки закончится неудачно и потребуется восстановить данные. Также в будущем может потребоваться сформировать отчеты по прошлым «отрезанным» периодам. В этом случае для восстановления архива (копии) создайте новую базу. Как это сделать, см. в ответе на вопрос «Как в «1С:Бухгалтерии 8″ (ред. 3.0) восстановить копию информационной базы до свертки?».

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

Свертку может выполнить только пользователь с правами «Администратор». Если с программой одновременно работают несколько пользователей, им необходимо завершить работу и выйти из программы.

Перед выполнением свертки информационной базы рекомендуется:

Для проведения свертки информационной базы (рис. 1):

Откройте журнал операций, все документы прошлых периодов (до свертки) в нем помечены на удаление, кроме документов по учету ОС и НДС. Чтобы проверить, у каких документов не установлены пометки на удаление, нажмите кнопку «Реестр документов», установите период, за который выполнялась свертка базы. Нажмите кнопку «Показать настройки», затем кнопку «Добавить», выберите «Пометка на удаление», вид – сравнение «равно» и значение «нет». Сформируется реестр с объектами, которые не помечены на удаление.

Для окончательного удаления из базы объектов, помеченных на удаление, отройте раздел «Администрирование» и перейдите по ссылке «Удаление помеченных объектов».

Смотрите также

Источник

Как сделать свертку базы 1С 8.3 Бухгалтерия

Зачем делать свертку базы в 1С

Для начала немного теоретических данных.

В программе 1С:Предприятие 8 можно работать в двух режимах:

Информация, предоставленная ниже, актуальна только для файлового режима.

Для начала стоит знать, что в случае файлового размещения программа имеет существенные ограничения по размерам файлов. Это значит, что размер одной таблицы не должен быть больше 4 Гб, иначе программа просто перестанет запускаться, а при приближении к указанному порогу начнет заметно «тормозить». Таким образом свертка позволит существенно уменьшить размер таблиц и повысить производительность базы данных. В первую очередь это касается регистра бухгалтерии, как наиболее «тяжелой» из всех таблиц.

В чем заключается операция свертки базы данных:

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

Как делать свертку базы в 1С

В программе в разделе Администрирование открываем раздел Обработка свертки:

что такое свертка данных. kak sdelat svertku bazy 1s 1. что такое свертка данных фото. что такое свертка данных-kak sdelat svertku bazy 1s 1. картинка что такое свертка данных. картинка kak sdelat svertku bazy 1s 1. Использован релиз 3.0.60

что такое свертка данных. kak sdelat svertku bazy 1s 2. что такое свертка данных фото. что такое свертка данных-kak sdelat svertku bazy 1s 2. картинка что такое свертка данных. картинка kak sdelat svertku bazy 1s 2. Использован релиз 3.0.60

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

что такое свертка данных. kak sdelat svertku bazy 1s 3. что такое свертка данных фото. что такое свертка данных-kak sdelat svertku bazy 1s 3. картинка что такое свертка данных. картинка kak sdelat svertku bazy 1s 3. Использован релиз 3.0.60

что такое свертка данных. kak sdelat svertku bazy 1s 4. что такое свертка данных фото. что такое свертка данных-kak sdelat svertku bazy 1s 4. картинка что такое свертка данных. картинка kak sdelat svertku bazy 1s 4. Использован релиз 3.0.60

Здесь выскакивает ошибка. Не пугаемся и делаем перезапуск программы.

что такое свертка данных. kak sdelat svertku bazy 1s 5. что такое свертка данных фото. что такое свертка данных-kak sdelat svertku bazy 1s 5. картинка что такое свертка данных. картинка kak sdelat svertku bazy 1s 5. Использован релиз 3.0.60

Ситуация снова повторяется, но это так и надо. Теперь делаем копию вручную и переходим в конфигуратор:

что такое свертка данных. kak sdelat svertku bazy 1s 6. что такое свертка данных фото. что такое свертка данных-kak sdelat svertku bazy 1s 6. картинка что такое свертка данных. картинка kak sdelat svertku bazy 1s 6. Использован релиз 3.0.60

что такое свертка данных. kak sdelat svertku bazy 1s 7. что такое свертка данных фото. что такое свертка данных-kak sdelat svertku bazy 1s 7. картинка что такое свертка данных. картинка kak sdelat svertku bazy 1s 7. Использован релиз 3.0.60

Выбираем место хранения копии и присваиваем ей имя:

что такое свертка данных. kak sdelat svertku bazy 1s 8. что такое свертка данных фото. что такое свертка данных-kak sdelat svertku bazy 1s 8. картинка что такое свертка данных. картинка kak sdelat svertku bazy 1s 8. Использован релиз 3.0.60

Видим такое сообщение:

что такое свертка данных. kak sdelat svertku bazy 1s 9. что такое свертка данных фото. что такое свертка данных-kak sdelat svertku bazy 1s 9. картинка что такое свертка данных. картинка kak sdelat svertku bazy 1s 9. Использован релиз 3.0.60

Снова возвращаемся в обработку свертки и снимаем признак создания копии снимаем. Нажимаем кнопку Далее:

что такое свертка данных. kak sdelat svertku bazy 1s 10. что такое свертка данных фото. что такое свертка данных-kak sdelat svertku bazy 1s 10. картинка что такое свертка данных. картинка kak sdelat svertku bazy 1s 10. Использован релиз 3.0.60

В следующем окне выбираем год или период, на начало которого производится свертка. При этом очень желательно Установить дату запрета, ранее которой в базе уже ничего не вводилось. Что касается списка организаций, то свертку можно делать как по всему списку, так и по его отдельным пунктам:

что такое свертка данных. kak sdelat svertku bazy 1s 11. что такое свертка данных фото. что такое свертка данных-kak sdelat svertku bazy 1s 11. картинка что такое свертка данных. картинка kak sdelat svertku bazy 1s 11. Использован релиз 3.0.60

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

что такое свертка данных. kak sdelat svertku bazy 1s 12. что такое свертка данных фото. что такое свертка данных-kak sdelat svertku bazy 1s 12. картинка что такое свертка данных. картинка kak sdelat svertku bazy 1s 12. Использован релиз 3.0.60

Далее программа выводит на экран список документов Операция. Эти документы будут созданы для внесения в них остатков (где они есть) по всем статьям бухгалтерского учета на начало периода.
Двигаемся дальше.

что такое свертка данных. kak sdelat svertku bazy 1s 13 1. что такое свертка данных фото. что такое свертка данных-kak sdelat svertku bazy 1s 13 1. картинка что такое свертка данных. картинка kak sdelat svertku bazy 1s 13 1. Использован релиз 3.0.60

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

что такое свертка данных. kak sdelat svertku bazy 1s 14. что такое свертка данных фото. что такое свертка данных-kak sdelat svertku bazy 1s 14. картинка что такое свертка данных. картинка kak sdelat svertku bazy 1s 14. Использован релиз 3.0.60

На всякий случай таким же образом следует проверить таблицу сверки по регистрам накопления и сведений:

что такое свертка данных. kak sdelat svertku bazy 1s 15. что такое свертка данных фото. что такое свертка данных-kak sdelat svertku bazy 1s 15. картинка что такое свертка данных. картинка kak sdelat svertku bazy 1s 15. Использован релиз 3.0.60

Следующее окно программы предупреждает о начале процедуры удаления документов до Даты запрета (в данном случае это 2016 год). Подтверждаем операцию.

что такое свертка данных. kak sdelat svertku bazy 1s 16. что такое свертка данных фото. что такое свертка данных-kak sdelat svertku bazy 1s 16. картинка что такое свертка данных. картинка kak sdelat svertku bazy 1s 16. Использован релиз 3.0.60
что такое свертка данных. kak sdelat svertku bazy 1s 17. что такое свертка данных фото. что такое свертка данных-kak sdelat svertku bazy 1s 17. картинка что такое свертка данных. картинка kak sdelat svertku bazy 1s 17. Использован релиз 3.0.60

После того как документы удалены на экран выводится сообщение об успешно произведенной свертке.

что такое свертка данных. kak sdelat svertku bazy 1s 18. что такое свертка данных фото. что такое свертка данных-kak sdelat svertku bazy 1s 18. картинка что такое свертка данных. картинка kak sdelat svertku bazy 1s 18. Использован релиз 3.0.60

Стоит обратить внимание на один важный момент: по причине того, что движение по большинству регистров накопления в части НДС и регистров сведений остались в базе, то и первичные документы, предшествующие их создание, тоже сохранились в системе. Пусть это никого не смущает, ведь нашей целью было добиться «облегчения» регистра бухгалтерии и нам это удалось.

Источник

Руководство для начинающих по сверточным нейронным сетям (CNNs)

Дата публикации Feb 15, 2019

Что такое свертка?

что такое свертка данных. 0 348154 833395. что такое свертка данных фото. что такое свертка данных-0 348154 833395. картинка что такое свертка данных. картинка 0 348154 833395. Использован релиз 3.0.60

Например, есть изображение Эйлин Коллинз, а матрица над красной стрелкой используется в качестве свертки для обнаружения темных краев. В результате мы видим изображение, на котором выделены только темные края.

Обратите внимание, что изображение является двухмерным с шириной и высотой. Если изображение цветное, считается, что оно имеет еще одно измерение для цвета RGB. По этой причине 2D-свертки обычно используются для черно-белых изображений, а 3D-свертки используются для цветных изображений.

Свертка в 2D

Давайте начнем с (4 x 4) входного изображения без заполнения, и мы используем (3 x 3) сверточный фильтр для получения выходного изображения.

что такое свертка данных. 0 127318 321200. что такое свертка данных фото. что такое свертка данных-0 127318 321200. картинка что такое свертка данных. картинка 0 127318 321200. Использован релиз 3.0.60

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

что такое свертка данных. 0 11679 967803. что такое свертка данных фото. что такое свертка данных-0 11679 967803. картинка что такое свертка данных. картинка 0 11679 967803. Использован релиз 3.0.60

Математически это (2 * 1) + (0 * 0) + (1 * 1) + (0 * 0) + (1 * 0) + (0 * 0) + (0 * 0) + (0 * 1) + (1 * 0) = 3

Затем вы повторяете тот же шаг, перемещая фильтр на один столбец. И вы получите второй выход.

что такое свертка данных. 0 521625 67982. что такое свертка данных фото. что такое свертка данных-0 521625 67982. картинка что такое свертка данных. картинка 0 521625 67982. Использован релиз 3.0.60

Обратите внимание, что вы переместили фильтр только на один столбец. Размер шага, когда фильтр скользит по изображению, называетсяшаг, Здесь шаг равен 1. Эта же операция повторяется, чтобы получить третий вывод. Размер шага больше 1 всегда уменьшает размер изображения. Если размер равен 1, размер изображения останется прежним.

что такое свертка данных. 0 702408 98152. что такое свертка данных фото. что такое свертка данных-0 702408 98152. картинка что такое свертка данных. картинка 0 702408 98152. Использован релиз 3.0.60

Наконец, вы получаете окончательный результат.

что такое свертка данных. 0 278507 449109. что такое свертка данных фото. что такое свертка данных-0 278507 449109. картинка что такое свертка данных. картинка 0 278507 449109. Использован релиз 3.0.60

Мы видим, что размер выходного изображения меньше размера входного изображения. На самом деле это верно в большинстве случаев.

Свертка в 3D

Свертка в 3D такая же, как и в 2D, за исключением того, что вы выполняете двумерную работу 3 раза, потому что есть 3 цветовых канала.

что такое свертка данных. 0 260603 403341. что такое свертка данных фото. что такое свертка данных-0 260603 403341. картинка что такое свертка данных. картинка 0 260603 403341. Использован релиз 3.0.60

Обычно ширина вывода уменьшается, как и размер вывода в 2D-случае.

что такое свертка данных. 0 295511 299165. что такое свертка данных фото. что такое свертка данных-0 295511 299165. картинка что такое свертка данных. картинка 0 295511 299165. Использован релиз 3.0.60

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

что такое свертка данных. 0 518210 152305. что такое свертка данных фото. что такое свертка данных-0 518210 152305. картинка что такое свертка данных. картинка 0 518210 152305. Использован релиз 3.0.60

Мы можем применить больше отступов!

что такое свертка данных. 0 748611 493785. что такое свертка данных фото. что такое свертка данных-0 748611 493785. картинка что такое свертка данных. картинка 0 748611 493785. Использован релиз 3.0.60

Как только вы закончите, вот как будет выглядеть результат:

что такое свертка данных. 0 516023 70530. что такое свертка данных фото. что такое свертка данных-0 516023 70530. картинка что такое свертка данных. картинка 0 516023 70530. Использован релиз 3.0.60

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

что такое свертка данных. 0 232781 6904. что такое свертка данных фото. что такое свертка данных-0 232781 6904. картинка что такое свертка данных. картинка 0 232781 6904. Использован релиз 3.0.60

Выходной канал сверток называетсякарта объектов, Он кодирует наличие или отсутствие и степень присутствия обнаруживаемой функции. Обратите внимание, что, в отличие от 2D-фильтров, каждый фильтр подключается ккаждыйвходной канал. (вопрос? что означает, что каждый фильтр подключается к каждому входному каналу в отличие от 2D?) Это означает, что они могут вычислять сложные функции. Первоначально, глядя на каналы R, G, B, а затем, глядя на комбинации изученных особенностей, таких как различные ребра, формы, текстуры и семантические особенности.

Перевод-инвариантная

Другим интересным фактом является то, что CNN несколько устойчивы к трансляции, такой как немного сдвигаемое изображение, которое будет иметь карту активации, аналогичную той, которая была перед сдвигом. Это связано с тем, что свертка является детектором признаков, и если она обнаруживает темный край и изображение перемещается вниз, темные края не будут обнаруживаться, пока свертка не будет перемещена вниз.

Здесь рассматривается 1D свертка, потому что она обычно недостаточно объяснена, но имеет значительные преимущества.

что такое свертка данных. 0 774163 981479. что такое свертка данных фото. что такое свертка данных-0 774163 981479. картинка что такое свертка данных. картинка 0 774163 981479. Использован релиз 3.0.60

Они используются для уменьшения глубины (количества каналов). Ширина и высота в этом случае не изменяются. Если вы хотите уменьшить горизонтальные размеры, вы должны использовать объединение, увеличить шаг свертки или не добавлять отступы. 1D свертки вычисляет взвешенную сумму входных каналов или функций, которые позволяютвыбор определенных комбинаций функций, которые полезны 1D свертка сжимается, потому что есть только один, он имеет тот же эффект

объединение

Max-Pooling

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

что такое свертка данных. 0 262966 936729. что такое свертка данных фото. что такое свертка данных-0 262966 936729. картинка что такое свертка данных. картинка 0 262966 936729. Использован релиз 3.0.60

Средний-Pooling

Это то же самое, что и max-pooling, за исключением того, что оно усредняет окна, а не выбирает максимальное значение.

что такое свертка данных. 0 897794 670456. что такое свертка данных фото. что такое свертка данных-0 897794 670456. картинка что такое свертка данных. картинка 0 897794 670456. Использован релиз 3.0.60

Общая настройка

Для реализации CNN наиболее успешная архитектура использует один или несколько стеков уровней свертки + пул с повторной активацией, за которыми следует плоский слой, а затем один или два плотных слоя.

что такое свертка данных. 0 68030 44075. что такое свертка данных фото. что такое свертка данных-0 68030 44075. картинка что такое свертка данных. картинка 0 68030 44075. Использован релиз 3.0.60

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

Вот пример типичной сети CNN в Керасе.

что такое свертка данных. 0 871323 713451. что такое свертка данных фото. что такое свертка данных-0 871323 713451. картинка что такое свертка данных. картинка 0 871323 713451. Использован релиз 3.0.60

Вот результат, когда вы делаете model.summary ()

что такое свертка данных. 0 360165 847949. что такое свертка данных фото. что такое свертка данных-0 360165 847949. картинка что такое свертка данных. картинка 0 360165 847949. Использован релиз 3.0.60

Давайте разберем эти слои и посмотрим, как мы получим эти номера параметров.

Conv2d_1

что такое свертка данных. 0 298854 289720. что такое свертка данных фото. что такое свертка данных-0 298854 289720. картинка что такое свертка данных. картинка 0 298854 289720. Использован релиз 3.0.60

Размер фильтра (3 x 3) * глубина ввода (1) * количество фильтров (32) + смещение 1 / фильтр (32) = 320. Здесь глубина ввода равна 1, поскольку она используется для черно-белых данных MNIST. Обратите внимание, что по умолчанию в тензорном потоке к каждому слою свертки добавлено смещение.

Max_pooling2d_1

что такое свертка данных. 0 577636 367295. что такое свертка данных фото. что такое свертка данных-0 577636 367295. картинка что такое свертка данных. картинка 0 577636 367295. Использован релиз 3.0.60

Слои пула не имеют параметров

Conv2d_2

что такое свертка данных. 0 2879 269451. что такое свертка данных фото. что такое свертка данных-0 2879 269451. картинка что такое свертка данных. картинка 0 2879 269451. Использован релиз 3.0.60

Размер фильтра (3 x 3) * глубина ввода (32) * количество фильтров (64) + смещение, 1 на фильтр (64) = 18496

Flatten_1

что такое свертка данных. 0 282900 883153. что такое свертка данных фото. что такое свертка данных-0 282900 883153. картинка что такое свертка данных. картинка 0 282900 883153. Использован релиз 3.0.60

Размещает том над ним в массив.

что такое свертка данных. 0 50747 733247. что такое свертка данных фото. что такое свертка данных-0 50747 733247. картинка что такое свертка данных. картинка 0 50747 733247. Использован релиз 3.0.60

Dense_1

что такое свертка данных. 0 402947 70724. что такое свертка данных фото. что такое свертка данных-0 402947 70724. картинка что такое свертка данных. картинка 0 402947 70724. Использован релиз 3.0.60

Входной размер (128) * Выходной размер (10) + Одно смещение на выходной нейрон (10) = 1290

Резюме

источники

Этот учебник основан на лекциях из курса прикладного глубокого обучения в Колумбийском университетеДжошуа Гордон, Потрясающие 3d изображения изМартин Горнер,

Источник

3D ML. Часть 5: Свертки на графах

что такое свертка данных. . что такое свертка данных фото. что такое свертка данных-. картинка что такое свертка данных. картинка . Использован релиз 3.0.60

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

Наверное вы уже догадались, что речь сегодня пойдет о сверточных операторах на графах.

Серия 3D ML на Хабре:

Репозиторий на GitHub для данной серии заметок.

Заметка от партнера IT-центра МАИ и организатора магистерской программы “VR/AR & AI” — компании PHYGITALISM.

Откуда брать информацию и на чем практиковаться?

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

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

С наиболее общего ракурса, тема сверток на графах хорошо освещена в обзорной статье “Representation Learning on Graphs: Methods and Applications” [1]. Методам машинного обучения на графах посвящены целые университетские спецкурсы, наиболее известным из которых является Stanford CS224W: Machine Learning with Graphs. По мотивам этого курса есть разбор от русскоязычного сообщества исследователей Sberloga, в котором есть записи обсуждения лекций, примеры кода, разбор разных аспектов теории и практики и многое другое. Также стоит отметить вот эту статью с хабра от ODS, в которой упоминается о схожем сообществе для разбора стенфордского курса и заодно изложены несколько основных подходов к получению скрытых представлений графов (т.н. эмбеддинги).

В более сжатом виде есть несколько серий заметок на эту тему на Medium:

Для области 3D ML методы и алгоритмы, основанные на извлечении информации из графовых структур, являются важным подспорьем. Объекты интереса — это зачастую полигональный меш, который сам по себе является пространственным графом (см. например работу [15]), или облако точек, которое также можно мыслить как графовую структуру, если соединять между собою точки в облаке по определенным правилам (см. например работу [14]). Про различные виды сверток на графах, применительно к задачам 3D ML, можно прочитать в нашем обзоре про алгоритмы семантической сегментации облака точек.

С точки зрения инструментов, в основном исследователи в данной области пользуются либо собственноручно написанными библиотеками, либо библиотеками, которые первоначально предназначались для работы с графами в предметной области (например библиотека python rdkit или python NetworkX). На наш взгляд, наиболее удобной библиотекой для построения собственных глубоких архитектур на основе графовых сверток является PyTorch Geometric (на странице с документацией можно найти различные примеры графовых датасетов, методов их обработки и загрузки, и различных сверточных слоев). В репозитории библиотеки TensorFlow Graphics также можно найти пример “Semantic mesh segmentation”, в котором, с помощью встроенных в библиотеку сверточных операторов, конструируют небольшую глубокую архитектуру для решения задачи семантической сегментации меша. Рекомендуем всем начинающим 3D ML исследователям самостоятельно разобрать описанные выше примеры.

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

Граф как неевклидова структура

что такое свертка данных. image loader. что такое свертка данных фото. что такое свертка данных-image loader. картинка что такое свертка данных. картинка image loader. Использован релиз 3.0.60
Рис.1 Пример из статьи [2]: левые изображения демонстрируют, что стандартная свертка (Euclidean CNN) будет по разному обрабатывать данные в зависимости от типа поверхности к которой ее применяют, что, в свою очередь, мотивирует к созданию геометрических сверток (Geometric CNN, правые изображения).

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

Более формально, общие свойства евклидовых и неевклидовых данных были описаны в обзорной статье “Geometric deep learning: going beyond Euclidean data” [2] (всем познающим 3D ML, на наш взгляд, обязательно к ознакомлению).

Кратко перечислим свойства евклидовых данных:

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

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

что такое свертка данных. image loader. что такое свертка данных фото. что такое свертка данных-image loader. картинка что такое свертка данных. картинка image loader. Использован релиз 3.0.60
Рис.2 Слева: изображение из датасета MNIST; справа: граф построенный по пикселям данного изображения. (см. работу [3]).

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

Как создать граф на изображении ниже:

что такое свертка данных. image loader. что такое свертка данных фото. что такое свертка данных-image loader. картинка что такое свертка данных. картинка image loader. Использован релиз 3.0.60

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

В качестве примера можно рассмотреть свертку, определяемую матрицей что такое свертка данных. 3dc1824522d553df13e27402f4218915. что такое свертка данных фото. что такое свертка данных-3dc1824522d553df13e27402f4218915. картинка что такое свертка данных. картинка 3dc1824522d553df13e27402f4218915. Использован релиз 3.0.60. Пусть в узлах нашей решетки хранятся некоторые числовые значения, например, интенсивность цвета пикселя записанные в матрицу — что такое свертка данных. 81a5c058a6759dffa5fc37a4adfbebc0. что такое свертка данных фото. что такое свертка данных-81a5c058a6759dffa5fc37a4adfbebc0. картинка что такое свертка данных. картинка 81a5c058a6759dffa5fc37a4adfbebc0. Использован релиз 3.0.60. Применение свертки обычно выражено в виде скалярного произведения (dot product) матрицы фильтра на матрицу значений в узлах сетки (это может быть подграф всей сети), совпадающую по размерам с фильтром (см. рисунок ниже). Хороший и подробный туториал по применению сверток к изображениям содержится в статье “A guide to convolution arithmetic for deep learning” [4].

что такое свертка данных. image loader. что такое свертка данных фото. что такое свертка данных-image loader. картинка что такое свертка данных. картинка image loader. Использован релиз 3.0.60

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

Операторы, вроде скалярного произведения, рассмотренного выше, относят к классу агрегирующих функций — методов сохранения информации о многих объектах в одном (в данном случае, результатом свертки является одно число, полученное из 9 исходных). Другим способом агрегировать информацию является использование т.н. pooling операций в сверточных сетях. Здесь важно заметить, что такие операции инвариантны к перестановке пикселей, в отличие от скалярного произведения рассмотренного выше, поскольку в общем случае

что такое свертка данных. fefe568bdb3e271101379aadba66e5ad. что такое свертка данных фото. что такое свертка данных-fefe568bdb3e271101379aadba66e5ad. картинка что такое свертка данных. картинка fefe568bdb3e271101379aadba66e5ad. Использован релиз 3.0.60

Кстати, рассмотрение изображений как регулярных графовых сетей приводит к интересному результату. Мы можем рассматривать иное разбиение изображения на составные части нежели исходные пиксели, например каким-либо способом объединять группы пикселей в т.н. “суперпиксели” и строить свертки нерегулярной структуры над ними. Про такой подход к обработке изображений можно прочитать в данной заметке.

что такое свертка данных. image loader. что такое свертка данных фото. что такое свертка данных-image loader. картинка что такое свертка данных. картинка image loader. Использован релиз 3.0.60
Рис.3 Пример построение суперпикселей разного разрешения на изображении из работы [5].

Теперь попробуем обобщить свертки на нерегулярные графы. Здесь мы столкнемся со следующей проблемой: граф в общем виде — совокупность двух множеств (вершины — что такое свертка данных. 836e59247dee9dc566df40f0f1d606e8. что такое свертка данных фото. что такое свертка данных-836e59247dee9dc566df40f0f1d606e8. картинка что такое свертка данных. картинка 836e59247dee9dc566df40f0f1d606e8. Использован релиз 3.0.60, и связи между этими вершинами — что такое свертка данных. 560bd97f235311a36dff00db005e6ab5. что такое свертка данных фото. что такое свертка данных-560bd97f235311a36dff00db005e6ab5. картинка что такое свертка данных. картинка 560bd97f235311a36dff00db005e6ab5. Использован релиз 3.0.60), а множества — инвариантный к перестановке элементов тип данных. Это значит, что мы можем случайным образом перемешать вершины графа (с учетом соответствующего перемешивания связей) и при этом сам граф останется прежним, но как было отмечено выше — свертка зависит от порядка элементов.

Поскольку не существует какой-то канонической расстановки вершин произвольного графа, требуется определить операцию свертки так, чтобы она не зависела от этой расстановки. Наиболее популярные способы определить свертку на графе — использование операторов на основе усреднения (averaging) [6] или суммирования (summation) [7] по всем соседям рассматриваемой вершины, с последующим умножением на матрицу весов что такое свертка данных. 6e5abb15e29d1257aebb0838e6251398. что такое свертка данных фото. что такое свертка данных-6e5abb15e29d1257aebb0838e6251398. картинка что такое свертка данных. картинка 6e5abb15e29d1257aebb0838e6251398. Использован релиз 3.0.60. Таким образом, мы агрегируем всех соседей вместе с самой вершиной и проецируем граф через свертку в пространство другой размерности. Про различные виды агрегирующих операторов на графах можно прочитать в статье [8].

Рассмотрим для лучшего понимания граф состоящий из 5 вершин на изображении ниже (рис.4). Применяя агрегирующий оператор на основе суммирования для вершины что такое свертка данных. 7cb39bf8533702fe2493051aaf08d564. что такое свертка данных фото. что такое свертка данных-7cb39bf8533702fe2493051aaf08d564. картинка что такое свертка данных. картинка 7cb39bf8533702fe2493051aaf08d564. Использован релиз 3.0.60получим новое значение признака этой вершины:

что такое свертка данных. 013fc9ec66d8ff348ccd4684598145bd. что такое свертка данных фото. что такое свертка данных-013fc9ec66d8ff348ccd4684598145bd. картинка что такое свертка данных. картинка 013fc9ec66d8ff348ccd4684598145bd. Использован релиз 3.0.60

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

что такое свертка данных. image loader. что такое свертка данных фото. что такое свертка данных-image loader. картинка что такое свертка данных. картинка image loader. Использован релиз 3.0.60
Рис.4 Пример нерегулярных графов и схематичное изображение соседей рассматриваемых вершин что такое свертка данных. 7cb39bf8533702fe2493051aaf08d564. что такое свертка данных фото. что такое свертка данных-7cb39bf8533702fe2493051aaf08d564. картинка что такое свертка данных. картинка 7cb39bf8533702fe2493051aaf08d564. Использован релиз 3.0.60.

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

Конструируем сверточный слой для графов

Сначала вспомним, как конструируется полносвязный слой в классической полносвязной архитектуре (В качестве примера будем держать в голове классификацию рукописных цифр из MNIST). Пусть что такое свертка данных. d01311affa1a657e515bc10362fd8a96. что такое свертка данных фото. что такое свертка данных-d01311affa1a657e515bc10362fd8a96. картинка что такое свертка данных. картинка d01311affa1a657e515bc10362fd8a96. Использован релиз 3.0.60— вектор значений на что такое свертка данных. 30fb6814eea0091044df0e5de33dfbc2. что такое свертка данных фото. что такое свертка данных-30fb6814eea0091044df0e5de33dfbc2. картинка что такое свертка данных. картинка 30fb6814eea0091044df0e5de33dfbc2. Использован релиз 3.0.60-ом слое, что такое свертка данных. cecc10a488460381d7b5eb1424fdd688. что такое свертка данных фото. что такое свертка данных-cecc10a488460381d7b5eb1424fdd688. картинка что такое свертка данных. картинка cecc10a488460381d7b5eb1424fdd688. Использован релиз 3.0.60— матрица весов что такое свертка данных. 30fb6814eea0091044df0e5de33dfbc2. что такое свертка данных фото. что такое свертка данных-30fb6814eea0091044df0e5de33dfbc2. картинка что такое свертка данных. картинка 30fb6814eea0091044df0e5de33dfbc2. Использован релиз 3.0.60-го слоя. Тогда линейный полносвязный линейный слой может быть записан в виде:

что такое свертка данных. 85970bf0d41b7408bae5d767b413189d. что такое свертка данных фото. что такое свертка данных-85970bf0d41b7408bae5d767b413189d. картинка что такое свертка данных. картинка 85970bf0d41b7408bae5d767b413189d. Использован релиз 3.0.60

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

Теперь давайте попробуем ввести в эту формулу множитель, который описывал бы топологию данных (в нашем случаи — графа). Для этого мы будем использовать матрицу смежности — что такое свертка данных. 493c1c008018df9bed4910321f29ff00. что такое свертка данных фото. что такое свертка данных-493c1c008018df9bed4910321f29ff00. картинка что такое свертка данных. картинка 493c1c008018df9bed4910321f29ff00. Использован релиз 3.0.60. Ниже приведен пример неориентированного графа и его матрицы смежности. Обратите внимание, что различные варианты нумерации вершин графа приводят к различным матрицам смежности.

что такое свертка данных. image loader. что такое свертка данных фото. что такое свертка данных-image loader. картинка что такое свертка данных. картинка image loader. Использован релиз 3.0.60
Рис.5 Неориентированный граф из 5 вершин и его матрица смежности (голубой цвет — 0, желтый — 1) для двух вариантов нумерации вершин графа.

Давайте определим матрицу смежности для регулярной сети, соответствующей растровому изображению размера что такое свертка данных. 759f0ee072519c256abb7bc7068a5f5f. что такое свертка данных фото. что такое свертка данных-759f0ee072519c256abb7bc7068a5f5f. картинка что такое свертка данных. картинка 759f0ee072519c256abb7bc7068a5f5f. Использован релиз 3.0.60в примере с MNIST. Для этого этого воспользуемся стандартными приемами из numpy:

В данном случае, матрица dist — матрица смежности для полносвязного графа с что такое свертка данных. bdd5e8355caa22888d0d4231538dc5f9. что такое свертка данных фото. что такое свертка данных-bdd5e8355caa22888d0d4231538dc5f9. картинка что такое свертка данных. картинка bdd5e8355caa22888d0d4231538dc5f9. Использован релиз 3.0.60вершинами, матрица что такое свертка данных. 493c1c008018df9bed4910321f29ff00. что такое свертка данных фото. что такое свертка данных-493c1c008018df9bed4910321f29ff00. картинка что такое свертка данных. картинка 493c1c008018df9bed4910321f29ff00. Использован релиз 3.0.60— матрица смежности с учетом пространственной близости (здесь используется эвристическое соображение о том, что близлежащие пиксели должны сильнее коррелировать друг с другом чем те, что лежат на расстоянии). Этот способ определять матрицы смежности для задач, связанных с обработкой изображений, — популярный, но далеко не единственный (см. альтернативы в работах [2, 9]).

что такое свертка данных. image loader. что такое свертка данных фото. что такое свертка данных-image loader. картинка что такое свертка данных. картинка image loader. Использован релиз 3.0.60
Рис.6 Слева-направо: матрица смежности в форме расстояний между пикселями, матрица смежности в форме пространственной близости, подграф полносвязного графа рассматриваемого изображения что такое свертка данных. 759f0ee072519c256abb7bc7068a5f5f. что такое свертка данных фото. что такое свертка данных-759f0ee072519c256abb7bc7068a5f5f. картинка что такое свертка данных. картинка 759f0ee072519c256abb7bc7068a5f5f. Использован релиз 3.0.60.

Теперь, на основе матрицы смежности что такое свертка данных. 493c1c008018df9bed4910321f29ff00. что такое свертка данных фото. что такое свертка данных-493c1c008018df9bed4910321f29ff00. картинка что такое свертка данных. картинка 493c1c008018df9bed4910321f29ff00. Использован релиз 3.0.60, мы сможем сконструировать т.н. нормированную матрицу смежности что такое свертка данных. 3cfb3b9f9d415324b4e46396d5c0912f. что такое свертка данных фото. что такое свертка данных-3cfb3b9f9d415324b4e46396d5c0912f. картинка что такое свертка данных. картинка 3cfb3b9f9d415324b4e46396d5c0912f. Использован релиз 3.0.60. Ее можно сконструировать разными способами, но два наиболее популярных подхода следующие:

В итоге, после выбора способа нормализации матрицы смежности, мы сможем сконструировать линейный полносвязный слой вида:

что такое свертка данных. e6c4bfe990c2db1c8576b69755994b73. что такое свертка данных фото. что такое свертка данных-e6c4bfe990c2db1c8576b69755994b73. картинка что такое свертка данных. картинка e6c4bfe990c2db1c8576b69755994b73. Использован релиз 3.0.60

Если к результату матричного умножения в правой части применить нелинейную функции активации, то мы сконструируем нелинейный полносвязный слой.

Можно написать достаточно простой код на основе операторов PyTorch, чтобы увидеть разницу в реализации обычного полносвязного слоя и полносвязного слоя с графовой сверткой:

Полный код для данного примера можно найти в оригинальном репозитории здесь. Кстати, если вы попытаетесь сравнить качество обучения на MNIST для обычной и для графовой модели, вы обнаружите, что качество отличается несущественно. Это происходит по той причине, что для данного конкретного датасета, связи между пикселями в рукописных цифрах и так очень сильны, но что более важно, оператор что такое свертка данных. 3b4f711d41c5fffd594eec93a0b67880. что такое свертка данных фото. что такое свертка данных-3b4f711d41c5fffd594eec93a0b67880. картинка что такое свертка данных. картинка 3b4f711d41c5fffd594eec93a0b67880. Использован релиз 3.0.60здесь есть не что иное, как Гауссовский фильтр, поэтому такая архитектура графовой сети приводит фактически к тому, что у нас есть обычная сверточная нейронная сеть с фиксированным Гауссовским фильтром. Чтобы сверточная архитектура на регулярных графах работала лучше, можно применить ряд трюков, которые описаны в работах [10, 11, 12].

что такое свертка данных. image loader. что такое свертка данных фото. что такое свертка данных-image loader. картинка что такое свертка данных. картинка image loader. Использован релиз 3.0.60
Рис.7 Гауссовский фильтр, использовавшийся в нейронной сети, описанной выше (слева) и результат его применения к изображению (справа).

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

что такое свертка данных. image loader. что такое свертка данных фото. что такое свертка данных-image loader. картинка что такое свертка данных. картинка image loader. Использован релиз 3.0.60
Рис.8 2D-фильтр нейронной сети, описанной выше, с центром в красной точке. Усреднение (слева, точность 92,24%), обучение на основе координат (посередине, точность 91,05%), обучение на основе координат с некоторыми трюками (справа, точность 92,39%).

Можно заметить, что фильтр, который мы только что обучили (в середине), выглядит странно. Это связано с тем, что задача довольно сложная, поскольку мы оптимизируем две модели одновременно: модель, которая предсказывает разделяющую поверхность для групп пикселей, и модель, предсказывающая класс цифры. Чтобы узнать лучшие фильтры (например, тот, что справа), нам нужно применить некоторые другие приемы, которые можно найти в работе [13].

Выводы

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

что такое свертка данных. image loader. что такое свертка данных фото. что такое свертка данных-image loader. картинка что такое свертка данных. картинка image loader. Использован релиз 3.0.60
Рис.9 Граф работ по конструированию GNN архитектур из туториала Бориса Князева “Anisotropic, Dynamic, Spectral and Multiscale Filters Defined on Graphs”.

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

Тем из вас, кому стало интересно как же расшифровывается формула с обложки, рекомендуем к ознакомлению статью [6].

Для всех кому интересно углубиться в тему сверток на графах, рекомендуем прочитать оставшиеся два туториала в серии заметок Бориса Князева на Medium.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *