Демистификация математики, лежащей в основе глубокого обучения и сверточных нейронных сетей (CNN)

В последние годы искусственный интеллект стал предметом широких дискуссий, поскольку он способен революционизировать все аспекты нашей жизни, начиная от здравоохранения, образования и даже до повышения безопасности границ. Говоря об ИИ, многие из нас думают о машинном обучении, подмножестве ИИ, которое позволяет компьютерным системам улучшаться за счет опыта и данных [1]. Появилось множество отчетов об использовании машинного обучения для борьбы с COVID-19, в том числе о том, как практикующие врачи используют глубокое обучение для обнаружения и диагностики COVID-19 путем анализа рентгеновских снимков грудной клетки [2].

Я уверен, что многим из нас интересна математика, лежащая в основе таких алгоритмов - как математика влияет на эти алгоритмы и как манипуляции с математическими системами могут давать такие потрясающие результаты наравне с обнаружением COVID-19?

Хотя математические термины, относящиеся к глубокому обучению, такие как «градиентный спуск», «обратное распространение», «матричное умножение» и т. Д., На первый взгляд могут показаться довольно пугающими, не волнуйтесь! Мы разберем эти термины, сначала объяснив цель каждой задачи глубокого обучения и представив концепции, включая инициализацию веса, функции активации, минимизацию потерь за счет градиентного спуска и обратного распространения, чтобы позволить нейронной сети учиться.

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

Если математическая запись вас пугает, не волнуйтесь. Вам не нужно понимать, что означает каждая строка; просто следите за текстом, и, надеюсь, к концу этого поста у вас будет лучшее представление о том, как именно эти, казалось бы, несопоставимые математические концепции объединяются, чтобы стимулировать глубокое обучение и обеспечить обнаружение COVID-19!

Обзор математики глубокого обучения

Цель глубокого обучения - аппроксимировать некоторую функцию f *, где y = f * (X) сопоставляет вход X в категорию y. Обычно мы определяем вход как вектор X ∈ ℝ , где каждая запись xᵢ вектора представляет конкретный характерная черта. Например, характеристиками изображения обычно являются значения пикселей в изображении. Во время обучения нейронная сеть определяет отображение y = f (X; W) и узнает значение параметров W, что дает наилучшее приближение f *. Выходные данные y будут либо 0, либо 1, показывая, является ли пациент COVID-19 отрицательным (0) или положительным (1), y ∈ {0, 1 }.

Чтобы изучить это отображение, мы сначала передаем информацию через нейрон, фундаментальный строительный блок нейронных сетей. Каждый из этих входов x₁, x₂,… xₙ будет инициализирован соответствующим весом w₁, w₂,… wₙ, где W ∈ ℝ . Скалярное произведение X и W затем передается через нелинейную функцию активации g , который дает прогнозируемый результат ŷ. В дополнение к X существует также термин смещения w₀, который позволяет нам смещать функцию активации влево или вправо независимо от входы.

Собирая это вместе,

Эквивалентное представление при суммировании было бы

Поэтому цель глубокого обучения - найти оптимальный набор весов W, который даст отображение y = f (X; W ), который наилучшим образом приближается к f *.

Функция активации

Мы применяем нелинейную функцию активации, потому что XW не ограничено между 0 и 1. Таким образом, мы используйте сигмоидальную функцию, которая преобразует действительное число в скалярный вывод от 0 до 1. После масштабирования y будет определен как:

Еще одна цель функции активации - внести в сеть нелинейности. Это важно, потому что в реальной жизни большинство данных, с которыми мы сталкиваемся, нелинейны, то есть их нельзя отделить прямой линией. Таким образом, функция активации позволяет нелинейное сопоставление между X и y, которое лучше приближает f *.

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

Минимизация потерь

После вычисления y для конкретных входных данных x ⁽ᶦ⁾ и W, как найти оптимальное сопоставление f? Вот здесь-то и появляется «обучающая» часть. Во-первых, мы должны сообщить сети, когда она ошибается. Это делается путем количественной оценки ошибки, известной как потеря, путем взятия прогноза y и его сравнения с истинным ответом, f * (X) . Эмпирические потери J (W) измеряют средние потери по всему набору данных, состоящему из n выборок.

Таким образом, цель «обучения» - найти оптимальные веса W *, которые принесут наименьшие потери и, следовательно, наиболее близкое приближение к f * .

Градиентный спуск

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

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

Итак, как мы можем вычислить градиент через несколько нейронов? Через обратное распространение, использующее цепное правило!

Обратное распространение

Возьмем, например, нейронную сеть с двумя нейронами, расположенными последовательно, x и z₁ с соответствующими весами w₁ и w₂ соответственно. .

Если мы немного изменим w₂, это изменит вывод ŷ. Затем, чтобы вычислить градиент, мы применяем цепное правило как таковое:

Если бы вместо этого мы изменили w₁, мы бы выполнили следующее:

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

После вычисления градиента, как нам решить, насколько большой шаг нужно сделать в направлении, противоположном градиенту? Это определяется скоростью обучения n. Установка скорости обучения чрезвычайно важна при обучении нейронных сетей, потому что малая скорость обучения будет сходиться чрезвычайно медленно и может застрять в ложных локальных минимумах, в то время как большая скорость обучения может выйти за пределы и никогда не сойтись. Поэтому мы не используем фиксированную скорость обучения, а вместо этого используем адаптивную скорость обучения, которая «адаптируется» к ландшафту потерь в зависимости от факторов, включая скорость обучения, размер конкретных весов и т. Д.

Сверточные нейронные сети (CNN)

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

При работе с данными изображения, такими как рентгеновские снимки, лучше рассматривать ввод X как матрицу размером b x h , потому что именно так изображение представляется компьютеру - в виде двумерной матрицы чисел. Если мы передадим X как вектор значений пикселей (который является одномерным), мы потеряем всю пространственную информацию, доступную в исходном изображении. Таким образом, мы настраиваем исходную архитектуру нейронной сети на сверточную нейронную сеть (CNN), которая сохраняет пространственную структуру в качестве входных данных. Это делается путем подключения участков входного изображения к каждому нейрону таким образом, чтобы каждый нейрон был подключен только к одной области входа. Входное изображение подвергается нескольким сверточным слоям, которые состоят из сначала операции свертки, затем функции активации и, наконец, операции объединения, все из которых будут подробно описаны ниже.

Слой свертки

Сначала ядро ​​перемещается по входному изображению размером b x h. Ядра - это матрицы размером bₖ x hₖ (где bₖb и hₖh), которые содержат веса W, при этом ядро ​​размером bₖ x hₖ будет иметь bₖ x hₖ разный вес. Мы применяем это же ядро ​​к каждому патчу bₖ x hₖ на входе, начиная с верхнего левого угла и переходя к следующему патчу через скользящее окно.

Ядро извлекает из изображения особенности, которые могут сообщить сети о диагнозе пациента. Эти особенности извлекаются с помощью операции свертки, которая включает поэлементное умножение каждого пикселя в фильтре на фрагмент bₖ x hₖ входного изображения. Затем мы суммируем все значения для каждого скользящего действия, чтобы получить результат этого слоя. Изображение, подвергшееся свертке, называется картой характеристик.

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

Уровень объединения

После операции свертки карта признаков проходит через функцию активации. При нелинейном выводе карта функций затем объединяется, что уменьшает размер изображения. Мотивация этого состоит в том, чтобы позволить нейронной сети изучить функции, которые инвариантны к небольшим переводам входных данных. Это важно, потому что не все рентгеновские снимки могут быть сделаны в одной и той же точной ориентации. Небольшие различия в положении пациента при выполнении рентгеновского снимка или даже небольшие различия, которые существуют между разными сканерами, могут привести к немного разным результатам сканирования. Таким образом, объединение в пул позволяет нейронной сети быть инвариантной к этим крошечным различиям и, таким образом, делает ее более применимой для более широкого диапазона сканирований. Это делается путем сохранения только максимального значения в этом конкретном фрагменте изображения, известного как maxpooling. Возьмем, к примеру, исходное изображение размером 4х4. В каждом фрагменте изображения 2x2 наибольшее значение (выделено жирным шрифтом) будет составлять новую карту функций, как показано ниже:

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

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

Полностью связанный слой

После выполнения maxpooling последним этапом является подключение карты функций к полностью связанному слою, состоящему из нескольких нейронов. Сверточные слои (свертка, активация, объединение) предоставляют значимые и инвариантные функции, которые были извлечены из изображения, а последний полностью связанный слой изучает нелинейную функцию, которая сопоставляет извлеченные функции с y, диагноз пациента. Окончательная карта объектов после нескольких сверточных слоев, скажем размером b1 x h1 x k, будет сведена в одномерный вектор признаков I ∈ ℝ ˡ ˣ ʰ ˡ ˣ , аналогично X ∈ ℝⁿ, с которым мы столкнулись ранее. I будет иметь свой собственный набор соответствующих весов, и мы вычисляем скалярное произведение I и W с последующей функцией нелинейной активации для получения окончательного прогноза y.

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

Заключение

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

А пока давайте все будем в безопасности и здоровы ~

использованная литература

[1] Гудфеллоу И., Бенжио Ю. и Курвиль А. (2016). Глубокое обучение. Пресса MIT.

[2] Пол, Х. Ю., Ким, Т. К., и Лин, К. Т. (2020). Обобщение классификатора туберкулеза с глубоким обучением для рентгенограмм грудной клетки COVID-19: новые приемы для старого алгоритма ?. Журнал визуализации грудной клетки, 35 (4), W102-W104.