Примечание: это статья из 4 частей, и вы можете найти другие статьи по этим ссылкам (часть 1, это, часть 3, часть 4). Я также собрал их в небольшой буклет, доступный через amazon, если вам нужна физическая копия. Пожалуйста, свяжитесь со мной, если у вас есть отзывы об улучшении, и предоставьте эту информацию всем.

В прошлой статье мы рассмотрели некоторые основы обработки изображений с помощью OpenCV и основы работы с изображениями DICOM. В этой статье мы поговорим об основах глубокого обучения через призму сверточных нейронных сетей. В следующей статье мы воспользуемся набором данных по раку легких Kaggle, рассмотрим ключевые элементы, которые нужно искать на DICOM-изображении рака легких, и воспользуемся услугами Kera’s для разработки модели для прогнозирования рака легких.

Базовые сверточные нейронные сети (CNN)

Чтобы понять основы CNN, нам нужно понять, что такое свертка.

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

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

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

Джереми Ховард в своем MOOC объясняет свертку с помощью таблицы Excel, которая является отличным способом понять основы. Рассмотрим 2 матрицы f и g. Результатом свертки f и g является третья матрица Conv layer 1, заданная скалярным произведением двух матриц. Скалярное произведение двух матриц представляет собой скаляр, как показано ниже. Отличный источник математических функций можно найти здесь.

Давайте использовать excel, как предлагает Джереми, наша входная матрица - это функция f (), а матрица скользящего окна - это функция фильтра g (). Скалярное произведение - это сумма-произведение двух матриц в Excel, как показано ниже.

Давайте расширим это до изображения алфавита «А». Как известно, любое изображение состоит из пикселей. Итак, наша входная матрица f - это «A». Мы выбираем нашу функцию скользящего окна в качестве случайной матрицы g. Затем запутанный результат для скалярного произведения этой матрицы показан ниже. Отправьте мне сообщение, если вы хотите получить копию этого листа Excel.

Что такое сверточные нейронные сети (CNN)?

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

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

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

Фильтры или ядра. Как показано на рисунке из RiverTrail ниже, фильтр или ядро ​​перемещается в каждую позицию изображения и вычисляет новый пиксель как взвешенную сумму пикселей, над которыми он перемещается. В нашем примере с Excel, приведенном выше, наш фильтр - g, перемещается по входной матрице f.

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

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

Уровень активации:

Функции активации можно разделить на 2 категории: насыщенные и ненасыщенные.

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

  1. Первый - решить так называемый «градиент взрыва / исчезновения».
  2. Второй - увеличить скорость схождения.

Сигмоид. принимает ввод с действительным знаком и сжимает его до диапазона [0,1].

σ (x) = 1 / (1 + ехр (−x))

tanh: принимает ввод с действительным знаком и сжимает его до диапазона [-1, 1].

tanh (x) = 2σ (2x) - 1

ReLU

ReLU расшифровывается как Rectified Linear Unit. Это максимальная функция (x, 0) с входом x, например. матрица из свернутого изображения. Затем ReLU устанавливает все отрицательные значения в матрице x равными нулю, а все остальные значения остаются постоянными. ReLU вычисляется после свертки и, следовательно, является нелинейной функцией активации, такой как tanh или sigmoid. Это было впервые обсуждено Джеффом Хинтоном в его статье о природе.

ELU

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

Утечки ReLU

В отличие от ReLU, в котором отрицательная часть полностью отброшена, дырявый ReLU присваивает ему ненулевой наклон. Активация Leaky Rectified Linear впервые представлена ​​в акустической модели (Maas et al., 2013). Математически мы имеем

где ai - фиксированный параметр в диапазоне (1, + бесконечность).

Параметрическое выпрямленное линейное устройство (PReLU)

PReLU можно рассматривать как вариант Leaky ReLU. В PReLU наклоны отрицательной части являются данными, полученными в результате обучения, а не заранее заданными. Авторы утверждали, что PReLU является ключевым фактором превосходства на человеческом уровне по задаче классификации ImageNet (Русаковский и др., 2015). Это то же самое, что и дырявый ReLU, за исключением того, что ai изучается при обучении через обратное распространение.

Рандомизированный линейный блок с утечкой и выпрямлением (RReLU)

Рандомизированный выпрямленный линейный блок (RReLU) также является вариантом Leaky ReLU. В RReLU наклон отрицательных частей рандомизируется в заданном диапазоне при обучении, а затем фиксируется при тестировании. Изюминкой RReLU является то, что в процессе обучения aji - это случайное число, выбираемое из равномерного распределения U (l, u). Формально имеем:

Ниже показано сравнение между ReLU, Leaky ReLU, PReLU и RReLU.

Шумные функции активации

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

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

Целью уровня объединения является постепенное уменьшение пространственного размера матрицы, чтобы уменьшить количество параметров и вычислений в сети, и, следовательно, также контролировать переоснащение. Уровень объединения работает независимо на каждом глубинном срезе ввода и изменяет его размер в пространстве, используя операцию MAX или Average. Наиболее распространенная форма - это объединяющий слой с фильтрами размера 2x2, применяемыми с шагом 2 субдискретизации каждого среза глубины на входе на 2 по ширине и высоте, отбрасывая 75% активаций. В этом случае каждая операция MAX будет принимать не более 4 чисел (небольшая область 2x2 на некотором срезе глубины). Размер глубины остается неизменным. В более общем смысле, уровень объединения:

Примечание. Здесь мы сдвигаем наше окно 2 x 2 на 2 ячейки (также называемое «шагом») и берем максимальное значение в каждой области.

Уровень пакетной нормализации:

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

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

Подробности о пакетной нормализации можно найти здесь или проверить MOOC Джереми.

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

Полностью подключенный слой - это традиционный многослойный персептрон, который использует функцию активации softmax в выходном слое. Термин Полностью связанный означает, что каждый нейрон предыдущего слоя связан с каждым нейроном следующего слоя. Функция softmax является обобщением логистической функции, которая сжимает K -мерный вектор произвольных реальных значений до K -мерного вектора реальных значений в диапазон (0, 1), который в сумме дает 1.

Активация Softmax обычно используется на последнем полностью подключенном уровне для получения вероятностей, поскольку она перемещает значения между 0 и 1.

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

Благодарности:

  1. МООК Джереми Ховарда (course.fast.ai)
  2. Http://www.wildml.com/2015/11/understanding-convolutional-neural-networks-for-nlp/
  3. Https://medium.com/towards-data-science/linear-algebra-cheat-sheet-for-deep-learning-cd67aba4526c
  4. Https://ujjwalkarn.me/2016/08/11/intuitive-explanation-convnets/
  5. Https://medium.com/technologymadeeasy/the-best-explanation-of-convolutional-neural-networks-on-the-internet-fbb8b1ad5df8
  6. Http://image-net.org/challenges/posters/JKU_EN_RGB_Schwarz_poster.pdf