Изучите концепции сверток и объединения в этом руководстве Джошуа Экрота, доцента информатики в Университете Стетсона.

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

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

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

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

Методы глубокого обучения

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

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

Несколько факторов способствовали резкому росту глубокого обучения за последние пять лет. Теперь доступны большие общедоступные наборы данных, такие как ImageNet, которые содержат миллионы помеченных изображений, охватывающих тысячи категорий, и проект Mozilla Common Voice, содержащий образцы речи. Такие наборы данных удовлетворяют основному требованию для глубокого обучения - много обучающих данных. Графические процессоры перешли на глубокое обучение и кластеры, а также сосредоточились на играх. Это помогает сделать возможным крупномасштабное глубокое обучение.

Усовершенствованные программные фреймворки, выпущенные с открытым исходным кодом и быстро улучшающиеся, также доступны каждому. К ним относятся TensorFlow, Keras, Torch и Caffe. Для набора данных ImageNet используются глубокие архитектуры, позволяющие достичь самых современных результатов, такие как Inception-v3. Эта сеть фактически имеет около 24 миллионов параметров, и большое сообщество исследователей и разработчиков программного обеспечения быстро переводит исследовательские прототипы в программное обеспечение с открытым исходным кодом, которое каждый может загрузить, оценить и расширить.

Свертки и объединение

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

Свертка

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

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

Свертка - это ядро. На этом изображении применено ядро ​​3 x 3. Каждое ядро ​​содержит несколько весов. Ядро перемещается по изображению и вычисляет взвешенную сумму пикселей ядра, каждый из которых умножается на соответствующие веса ядра:

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

Вы можете увидеть, как изображение по-разному трансформируется в зависимости от веса. Крайнее правое изображение выделяет края, что часто бывает полезно для идентификации объектов. Шаг помогает понять, как ядро ​​скользит по изображению. Следующая диаграмма представляет собой пример шага 1 x 1:

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

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

В таких случаях перекрытия не происходит, потому что размер ядра совпадает с размером шага.

Однако с границами изображения нужно обращаться по-другому. Для этого вы можете использовать отступы. Это помогает избежать расширения ядра за границу. Padding состоит из дополнительных пикселей, которые всегда равны нулю. Они не вносят вклад в взвешенную сумму. Заполнение позволяет весам ядра покрывать каждую область изображения, в то же время позволяя ядрам предполагать, что шаг равен 1. Ядро производит один результат для каждой области, которую оно покрывает.

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

Использование квадратных изображений - это общепринятая практика. Ядра и шаги используются для простоты. Это помогает сосредоточиться только на одном измерении, которое будет одинаковым для ширины и высоты. На следующей диаграмме изображено ядро ​​3 x 3 с шагом (3, 3):

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

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

Объединение

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

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

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

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

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

Джошуа Экрот преподает интеллектуальный анализ и анализ больших данных, искусственный интеллект (ИИ) и разработку программного обеспечения в Университете Стетсона. Он также имеет докторскую степень в области искусственного интеллекта и когнитивных наук, специализируясь на абдуктивных рассуждениях и мета-рассуждениях.