Я начинаю эту серию блогов, следуя книге доктора Адриана Роузброка Глубокое обучение компьютерному зрению с помощью Python. У автора есть очень интуитивно понятный и полезный сайт pyimagesearch. Я учусь по этой книге.

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

«Когда вы слышите термин «глубокое обучение», просто подумайте о большой глубокой нейронной сети. Глубокий обычно относится к количеству слоев, поэтому этот популярный термин был принят в прессе». сказал Джефф Дин

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

История

Все началось в 1943 году, когда МакКаллох и Питтс создали первую модель нейронной сети, бинарный классификатор. Он разделил входные данные на два класса. Кибернетика, коннекционизм были одними из первых терминов, использованных для обозначения поля, которое позже получило признание как искусственные нейронные сети (ИНС). Первая модель не была автономной, для ее обучения требовалось вмешательство человека. Позже, в 1950-х годах, появился алгоритм Perceptron с возможностью автоматического обучения, опубликованный Rosenblatt.

Алгоритм Стохастический градиентный спуск (SGD) для обучения сетей основан на публикации Розенблатта. Мински и Пейперт завершили эту область исследований в 1969 году на десятилетие, аргументируя это отсутствием вычислительных ресурсов, неспособностью сетей решать нелинейные задачи и отсутствием помеченного набора данных.

Нейронная сетьначала путешествие по алгоритму обратного распространения. Публикации Werbos (1974), Rumelhart (1986) и LeCun (1998) позволили создать многоуровневую нейронную сеть с прямой связью. Позже эти модели стали универсальными аппроксиматорами, достаточно мощными для моделирования любой задачи. Последний термин для нейронных сетейглубокое обучение. Сверточные нейронные сети (CNN), разработанныеLeCun (1988), впервые создали систему распознавания рукописных символов. Он классифицировал персонажей, автоматически изучая данные.

Машинное обучение

Искусственный интеллект (ИИ) – это область информатики, которая развивает интеллект машин, позволяя им принимать решения так же, как это делают люди.

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

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

Типы обучения

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

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

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

Компьютерное зрение

Этот домен позволяет машинам визуально понимать мир. Компьютер не воспринимает изображения так, как это делаем мы. Чтобы решить эту проблему, были созданы некоторые ручные алгоритмы, которые извлекали признаки (числа, понятные компьютеру). Эти функции передавались моделям, где они классифицировали изображения. Можно думать об этих функциях как о цвете, текстуре и т. д. изображения, но в машинопонятной форме. Затем модель может различать/идентифицировать объекты/классы, такие как (стул и столы).

Локальные бинарные паттерны (LBP), FAST, Harris, SIFT, SURF и Histogram of Gradients (HoG) – это некоторые средства извлечения признаков для различных целей, которые в сочетании с Linear SVM дали отличные результаты. . У них были ограничения, небольшое изменение контрастности или яркости могло сильно повлиять на производительность.

С появлением CNN требования к фазе выделения признаков также были автоматизированы. Эти сети способны извлекать функции, изучать закономерности и классифицировать объекты, просто обучаясь на данных. Они подстраиваются под проблему.

Нейронная сеть

Типичный перцептрон изображен выше. X определяет функции, числа, как обсуждалось ранее. W — веса, они определяют, какая функция важнее для принятия решения. Входные данные умножаются на веса и суммируются. Эта сумма передается функции активации, которая является просто отображением. В случае шага любое значение больше 0 равно 1, иначе 0.

Резюме

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