[Искусственный интеллект, Машинное обучение] Deep Learning: как это работает? Часть 2
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Часть 1 тут.
В этой статье вы узнаете:
— Что такое CNN и как это работает
— Что такое карта признаков
— Что такое max pooling
— Функции потерь для различных задач глубокого обучения
Небольшое вступление
Данный цикл статей нацелен на то, чтобы дать интуитивное понимание того, как работает глубокое обучение, какие есть задачи, архитектуры сетей, почему одно лучше другого. Здесь будет мало конкретных вещей в духе «как это реализовать». Если вдаваться в каждую деталь, то материал станет слишком сложным для большинства аудитории. Про то, как работает граф вычислений или про то, как работает обратное распространение через сверточные слои уже написано. И, главное, написано куда лучше, чем я бы объяснил.
В предыдущей статье мы обсуждали FCNN — что это и какие есть проблемы. Решение тех проблем лежит в архитектуре сверточных нейронных сетей.
Convolutional Neural Networks(CNN)
Сверточная нейронная сеть. Выглядит примерно так (архитектура vgg-16):
Какие отличия от полносвязной сети? В скрытых слоях теперь происходит операция свертки.
Так выглядит свертка (same convolution):
Просто берем изображение(пока что — одноканальное), берем ядро свертки(матрицу), состоящее из наших обучаемых параметров, «накладываем» ядро(обычно оно 3х3) на изображение, производим поэлементное умножение всех значений пикселей изображения, попавших на ядро. Затем все это суммируется(еще нужно добавить параметр bias — смещение), и мы получаем какое-то число. Это число является элементом выходного слоя. Двигаем это ядро по нашему изображению с каким-то шагом(stride) и получаем очередные элементы. Из таких элементов строится новая матрица, на нее же применяется(после применения к ней функции активации) следующее ядро свертки. В случае, когда входное изображение трехканальное, ядро свертки тоже трехканальное — фильтр :)
Но здесь не все так просто. Те матрицы, которые мы получаем после свертки, называются картами признаков (feature maps), потому что хранят в себе некие признаки предыдущих матриц, но уже в неком другом виде. На практике применяют сразу несколько фильтров для свертки. Это делается для того, чтобы «вынести» как можно больше фич на следующий слой свертки. С каждым слоем свертки наши признаки, которые были во входном изображении, представляются все более в абстрактных формах.
Еще пара замечаний:
-После свертки наш feature map становится меньше (по ширине и высоте). Иногда, чтобы слабее уменьшать ширину и высоту, или вовсе ее не уменьшать(same convolution), используют метод zero padding — заполнение нулями «по контуру» входной feature map
-После самого последнего сверточного слоя в задачах классификации и регрессии используют несколько fully-connected слоев
Почему это лучше, чем FCNN
-У нас теперь может быть меньше обучаемых параметров между слоями
-Теперь мы, извлекая признаки из изображения, учитываем не только какой-то отдельный пиксель, но и пиксели возле него(выявление неких паттернов на изображении)
Max pooling
Выглядит это так:
Мы «скользим» по нашей feature map фильтром и выбираем только самые важные(в плане входящего сигнала, как некоторого значения) признаки, уменьшая размерность feature map. Есть еще average(weighted) pooling, когда мы усредняем значения, попавшие в фильтр, но на практике более применим именно max pooling.
-У этого слоя нет обучаемых параметров
Функции потерь
Мы подаем на вход сети X, доходим до выхода, вычисляем значение функции потерь, выполняем алгоритм обратного распространения ошибки — именно так учатся современные нейронные сети(пока речь только об обучении с учителем — supervised learning).
В зависимости от задач, которые решают нейронные сети, используются разные функции потерь:
-Задача регрессии. В основном используют функцию средней квадратичной ошибки (mean squared error — MSE).
-Задача классификации. В основном используют кросс-энтропию (cross-entropy loss).
Другие задачи мы пока не рассматриваем — об этом будет в следующих статьях.
А почему именно такие функции для таких задач? Тут нужно въезжать в maximum likelihood estimation и математику. Кому интересно — я писал об этом тут.
Заключение
Также хочу обратить внимание на две вещи, используемые в архитектурах нейронных сетей, в том числе и сверточных, — это dropout(можно почитать тут) и batch normalization. Настоятельно рекомендую ознакомиться.
В следующей статье разберем архитектуры CNN, поймем почему одна лучше другой :)
===========
Источник:
habr.com
===========
Похожие новости:
- [Будущее здесь, Читальный зал] Лучше, чем люди. Новая точка отсчета
- [GitHub, Машинное обучение] Data Science блог с помощью fastpages
- [Python, Visual Studio, Microsoft Azure, Машинное обучение] Расширьте возможности машинного обучения Azure с помощью расширения VS Code (перевод)
- [Беспроводные технологии, Искусственный интеллект, Транспорт, Урбанизм] Когда город умный: опыт мегаполисов (продолжение)
- [Машинное обучение, Разработка под Arduino, DIY или Сделай сам, Транспорт] Умная перчатка для велосипедистов (перевод)
- [Машинное обучение] Deep Learning: как это работает? Часть 1
- [Алгоритмы, Будущее здесь, Машинное обучение, Транспорт] Беспилотный комбайн Ростсельмаш для сбора бутылок?
- [Искусственный интеллект, Накопители, Разработка мобильных приложений, Здоровье, Софт] VeChain Has Introduced Blockchain-Based Healthcare Data Management Platform At Cyprus Hospital
- [Машинное обучение, MySQL, Python] Machine Learning CPython library 'VKF'
- [Python, SQL, Аналитика мобильных приложений, Машинное обучение] Бесплатная Академия Аналитиков Авито для начинающих
Теги для поиска: #_iskusstvennyj_intellekt (Искусственный интеллект), #_mashinnoe_obuchenie (Машинное обучение), #_mashinnoe_obuchenie (машинное обучение), #_kompjuternoe_zrenie (компьютерное зрение), #_glubokoe_obuchenie (глубокое обучение), #_iskusstvennyj_intellekt (
Искусственный интеллект
), #_mashinnoe_obuchenie (
Машинное обучение
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 23-Ноя 02:37
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Часть 1 тут. В этой статье вы узнаете: — Что такое CNN и как это работает — Что такое карта признаков — Что такое max pooling — Функции потерь для различных задач глубокого обучения Небольшое вступление Данный цикл статей нацелен на то, чтобы дать интуитивное понимание того, как работает глубокое обучение, какие есть задачи, архитектуры сетей, почему одно лучше другого. Здесь будет мало конкретных вещей в духе «как это реализовать». Если вдаваться в каждую деталь, то материал станет слишком сложным для большинства аудитории. Про то, как работает граф вычислений или про то, как работает обратное распространение через сверточные слои уже написано. И, главное, написано куда лучше, чем я бы объяснил. В предыдущей статье мы обсуждали FCNN — что это и какие есть проблемы. Решение тех проблем лежит в архитектуре сверточных нейронных сетей. Convolutional Neural Networks(CNN) Сверточная нейронная сеть. Выглядит примерно так (архитектура vgg-16): Какие отличия от полносвязной сети? В скрытых слоях теперь происходит операция свертки. Так выглядит свертка (same convolution): Просто берем изображение(пока что — одноканальное), берем ядро свертки(матрицу), состоящее из наших обучаемых параметров, «накладываем» ядро(обычно оно 3х3) на изображение, производим поэлементное умножение всех значений пикселей изображения, попавших на ядро. Затем все это суммируется(еще нужно добавить параметр bias — смещение), и мы получаем какое-то число. Это число является элементом выходного слоя. Двигаем это ядро по нашему изображению с каким-то шагом(stride) и получаем очередные элементы. Из таких элементов строится новая матрица, на нее же применяется(после применения к ней функции активации) следующее ядро свертки. В случае, когда входное изображение трехканальное, ядро свертки тоже трехканальное — фильтр :) Но здесь не все так просто. Те матрицы, которые мы получаем после свертки, называются картами признаков (feature maps), потому что хранят в себе некие признаки предыдущих матриц, но уже в неком другом виде. На практике применяют сразу несколько фильтров для свертки. Это делается для того, чтобы «вынести» как можно больше фич на следующий слой свертки. С каждым слоем свертки наши признаки, которые были во входном изображении, представляются все более в абстрактных формах. Еще пара замечаний: -После свертки наш feature map становится меньше (по ширине и высоте). Иногда, чтобы слабее уменьшать ширину и высоту, или вовсе ее не уменьшать(same convolution), используют метод zero padding — заполнение нулями «по контуру» входной feature map -После самого последнего сверточного слоя в задачах классификации и регрессии используют несколько fully-connected слоев Почему это лучше, чем FCNN -У нас теперь может быть меньше обучаемых параметров между слоями -Теперь мы, извлекая признаки из изображения, учитываем не только какой-то отдельный пиксель, но и пиксели возле него(выявление неких паттернов на изображении) Max pooling Выглядит это так: Мы «скользим» по нашей feature map фильтром и выбираем только самые важные(в плане входящего сигнала, как некоторого значения) признаки, уменьшая размерность feature map. Есть еще average(weighted) pooling, когда мы усредняем значения, попавшие в фильтр, но на практике более применим именно max pooling. -У этого слоя нет обучаемых параметров Функции потерь Мы подаем на вход сети X, доходим до выхода, вычисляем значение функции потерь, выполняем алгоритм обратного распространения ошибки — именно так учатся современные нейронные сети(пока речь только об обучении с учителем — supervised learning). В зависимости от задач, которые решают нейронные сети, используются разные функции потерь: -Задача регрессии. В основном используют функцию средней квадратичной ошибки (mean squared error — MSE). -Задача классификации. В основном используют кросс-энтропию (cross-entropy loss). Другие задачи мы пока не рассматриваем — об этом будет в следующих статьях. А почему именно такие функции для таких задач? Тут нужно въезжать в maximum likelihood estimation и математику. Кому интересно — я писал об этом тут. Заключение Также хочу обратить внимание на две вещи, используемые в архитектурах нейронных сетей, в том числе и сверточных, — это dropout(можно почитать тут) и batch normalization. Настоятельно рекомендую ознакомиться. В следующей статье разберем архитектуры CNN, поймем почему одна лучше другой :) =========== Источник: habr.com =========== Похожие новости:
Искусственный интеллект ), #_mashinnoe_obuchenie ( Машинное обучение ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 23-Ноя 02:37
Часовой пояс: UTC + 5