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

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

Наше обсуждение здесь будет сосредоточено на задачах сегментации биомедицинских изображений, где мы используем набор программных инструментов в Zetane Engine для проверки внутренних компонентов сложных нейронных сетей. Для случаев, связанных с моделью U-Net и компьютерной томографией легких, вы можете провести те же визуальные аудиты, показанные здесь, с помощью бесплатного Zetane Viewer для визуализации моделей машинного обучения и обученной модели U-Net, обе доступны в нашей Галерее модели . Мы в Zetane Systems разработали движок, чтобы помочь нам лучше понять пресловутые алгоритмы черного ящика при создании решений искусственного интеллекта для промышленных процессов. Одной из целей этих проектов было оценить, как мы можем упростить общие задачи в машинном обучении, анализируя визуальные эффекты таких элементов, как карты функций и тензорные гистограммы. До этого проекта мы не были уверены в преимуществах, которые эти визуальные методы могут дать для оптимизации моделей глубокого обучения. Мы были приятно удивлены полезностью и полезностью этого нового подхода, поэтому мы стремимся повысить осведомленность профессионалов в области машинного обучения о наших наблюдениях. Эти тематические исследования также направлены на то, чтобы зажечь сердечную дискуссию о том, как эксперты в области науки о данных и машинного обучения могут еще больше улучшить описанные здесь методы и как вы лучше всего их применяете в своих повседневных рабочих процессах.

Прежде чем углубиться в наше разоблачение, отметим, что любой может провести подробную визуальную оценку, показанную здесь, используя различные программные инструменты и умелое кодирование на Python. Мы решили использовать Zetane Engine из практических соображений, поскольку это программное обеспечение содержит стандартные функции для оценки процесса обучения и производительности во время тестирования, а также дизайна, реализации и элементов для отладки в архитектуре модели - все в одном цифровом рабочем пространстве. Чтобы ознакомиться с рабочим пространством и отображением в нем нейронных сетей, рассмотрите это короткое обучающее видео.

Часть 1) Поиск слабых мест в наборе данных

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

  • Правильно ли задана форма входных данных и связанных тензоров?
  • Правильно ли отрегулированы высота и ширина изображений?
  • Не скомпрометировали ли мы данные при изменении размера изображения с помощью общих библиотек обработки изображений?
  • Правильно ли мы нормализовали данные?
  • Должны ли значения интенсивности входного изображения быть в диапазоне [0, 1], [-1, 1] или [0, 255]?
  • Шаг предварительной обработки сработал так, как должен?
  • Следует ли ожидать определенного распределения данных для входных данных?
  • Генератор данных работает правильно? Хорошо ли работает реализованное увеличение данных?

Мы сделали вышеупомянутые оценки, связанные с данными, с помощью Zetane Engine. Это включало проверку распределения данных и статистических показателей (таких как минимальное, максимальное, среднее и стандартное отклонение) с помощью нескольких щелчков мыши (см. Рисунок 1 для примера отображаемой статистики из несвязанного проекта). Затем мы сосредоточились на визуализации данных 3D, 4D и 5D, чтобы найти возможные отклонения.

Чтобы заложить основу для основного проекта, включающего сегментирование компьютерной томографии легочной ткани для диагностики заболеваний, связанных с COVID-19, мы начали с проверки наших возможностей, используя более простой набор данных, состоящий из рентгеновских изображений легких; мы стремились обучить модель U-Net [1], чтобы отделить типичную легочную ткань от легочных патологий. Эта задача сегментации оказалась довольно простой, и мы получили оценку Dice 0,97, что было лучшим результатом для анализируемого набора данных. Если это незнакомо нашим читателям, оценка в кости - это общий показатель для оценки задач сегментации, определяемый как 2 (A∪B) / A∩B, где A и B - истинная истина и прогнозируемые маски, соответственно. Оценка 1 в кости означает полное выравнивание масок, а 0 означает отсутствие перекрытия между масками. Получив самые современные результаты с этим набором данных, мы предположили, что производительность нашей модели является первоклассной. Дальнейшее изучение показало, что наши предположения ошибочны.

Быстрый способ выявить предвзятость в нашем наборе данных

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

Вооружившись этим пониманием, мы очистили набор данных, удалив теги, и повторно обучили модель с этими улучшенными изображениями (методы рисования удаляли теги, как и ожидалось). Мы предположили, что удаление тегов поможет модели переориентировать на соответствующие текстуры и узоры в рентгеновских лучах. В среднем эта задача оптимизации действительно улучшила оценку Dice на 1%. Для горстки изображений было идентифицировано более двух объектов с использованием старой модели. Благодаря нашей новой и улучшенной модели у нас были лучшие результаты с точки зрения количества обнаруженных объектов в наборе данных. Типичный результат показан на рисунке 3. Обратите внимание на более богатую, менее искаженную и более широкую гистограмму для данной карты функций в новой модели.

Часть 2) Почему мои данные выглядят странно?

Переходя ко второй части нашего проекта, наши усилия были направлены на разработку модели для автоматизации идентификации компьютерной томографии легких, которые содержат поражения, вызванные COVID-19. Набор данных состоял из трехмерных компьютерных томографов в формате Nifti (этот формат файлов типичен для медицинских изображений). Используя библиотеки, предназначенные для обработки и визуализации медицинских изображений, мы проанализировали данные, выполнили типичные задачи предварительной обработки (обрезка и нормализация) и реализовали модель EfficientNet [2] для проведения сегментации. К нашему разочарованию, получившаяся модель показала плохие результаты. Что пошло не так?

Дальнейшая проверка модели в движке еще раз показала, что проблема возникла из-за наших входных данных; Выглядело это, мягко говоря, очень странно (рис. 4). Это было особенно удивительно, поскольку отображение данных в формате Python и визуализация с использованием простых методов построения графиков не показывали ничего необычного. Это довольно загадочно!

Дальнейшие исследования показали, что мы упустили заголовок изображений Nifti, которые содержат важную информацию о размере вокселей, преобразовании, системе координат и других факторах, которые ставили под угрозу процедуру предварительной обработки. Мы могли видеть правильные изображения в формате Python, потому что информация заголовка была принята во внимание при построении данных изображения. Преобразование изображений в массивы было другой историей: эта важная информация заголовка была потеряна в процессе, что привело к неправильному отображению изображений. Преобразование данных в стандартные массивы NumPy и повторение этапа предварительной обработки решили проблему и сэкономили нам много времени. Эврика!

Часть 3) Лучший метод оценки архитектуры нейронных сетей

При проектировании новой модели очень важно убедиться, что ваше концептуальное планирование архитектуры модели эквивалентно тому, что вы обучаете реальной модели; это особенно важно, когда мы реализуем глубокую нейронную сеть с множеством пропускаемых соединений и остаточных блоков. Во время данного процесса проектирования копирование и вставка предыдущего слоя или блока слоев - отличный способ сэкономить время; однако, когда вы постоянно забываете изменить и настроить все необходимые параметры для скопированных слоев, особенно входных данных. Использование фреймворков глубокого обучения - один из способов подтвердить правильность архитектуры модели. Чтобы развернуть, в Keras мы можем использовать метод model.summary () для печати структуры модели. Тем не менее, такие отпечатки по-прежнему сложно понять и оценить структуру нейронной сети на основе текстовых изображений в распечатке. Другой распространенный подход к проверке архитектуры нейронной сети - это рисование сетевой архитектуры вручную с помощью простых инструментов графического дизайна или даже ручки и бумаги. И чертежи, и распечатки слишком подвержены ошибкам.

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

  • Правильно ли подключены все слои?
  • Мы использовали правильные функции активации?
  • Мы забыли подключить определенный слой к остальной нейронной сети?

Следующие наглядные пособия являются иллюстративными. На рисунке 5 показана архитектура нейронной сети U-Net в Zetane Engine; обратите внимание на очевидную U-образную архитектуру. При увеличении масштаба для более детального изучения мы можем получить доступ к соединениям каждого уровня сети. Например, на рисунке 6 более подробно показан фрагмент модели ResNet [3]. Здесь мы можем легко проверить связи между различными уровнями, функции активации, пакетную нормализацию, конкатенацию и многое другое.

Часть 4) Мертвые нейроны легко обнаружить

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

Когда выбранная нами нейронная сеть для предыдущей задачи сегментации COVID-19 не работала так хорошо, как мы надеялись, мы решили продолжить исследование нашей модели. Наша модель состояла из структуры пирамиды признаков в качестве основы с несколькими двунаправленными слоями признаков в качестве секции декодера. После аудита входных и выходных данных для внутренних сверточных слоев мы поняли, что данные не проходят через некоторые ветви сети. Искусственные нейроны в этих ветвях оказались «мертвыми» (рис. 8). Добавление пакетной нормализации ко всем слоям, чтобы гарантировать, что входные данные для всех слоев нормализованы и не искажены, предложило решение. Другой вариант решения этой проблемы - использовать другие виды функций активации, отличные от ReLu, такие как ELU или дырявый Relu.

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

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

Часть 5) Более пристальный взгляд на тензорные метрики

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

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

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

Визуальные эффекты предоставляют разнообразную информацию и рекомендации для упрощения задач в глубоком обучении.

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

  • Подготовка данных
  • Оптимизация предварительной обработки
  • Оптимизация структуры модели (например, добавление ворот внимания, пропуск соединений и т. Д.)
  • Анализ активации слоя (например, определение асимметрии)
  • Оптимизация гиперпараметров
  • Анализ ошибок
  • Визуализация и атрибуция функций с использованием методов объяснимости
  • Учебно-методический осмотр
  • Обрезка модели
  • Предварительно обученный анализ модели

Мы обсудим дальнейшие темы из приведенного выше списка в следующих статьях членов Zetane, так что следите за будущими статьями. А пока мы рекомендуем вам попробовать эти методы оптимизации в своих собственных проектах; Вы можете начать бесплатную пробную версию Zetane Engine сегодня, чтобы получить доступ к подробным визуальным эффектам ваших данных и моделей. Мы хотели бы видеть ваши результаты и просим вас присылать их по адресу [email protected] или размещать резюме своей работы в разделе комментариев ниже.

Цитируемые работы

[1] Роннебергер, Олаф, Филипп Фишер и Томас Брокс. «U-net: сверточные сети для сегментации биомедицинских изображений». Международная конференция по медицинской обработке изображений и компьютерному вмешательству. Спрингер, Чам. (2015).

[2] Тан, Минсин, и Куок В. Ле. «Efficientnet: переосмысление масштабирования модели для сверточных нейронных сетей». Препринт arXiv arXiv: 1905.11946 (2019).

[3] Хе, Кайминг и др. «Глубокое остаточное обучение для распознавания изображений». Материалы конференции IEEE по компьютерному зрению и распознаванию образов. (2016).