Я новичок в области нейронных сетей, и мне хотелось бы узнать разницу между сетями Deep Belief и сверточными сетями. Кроме того, существует ли глубокая сверточная сеть, которая представляет собой комбинацию глубоких убеждений и сверточных нейронных сетей?
Это то, что я собрал до сих пор. Пожалуйста, поправьте меня, если я ошибаюсь.
Для проблемы классификации изображений Сети глубокого убеждения имеют много уровней, каждый из которых обучается с использованием жадной стратегии на уровне слоев. Например, если мой размер изображения составляет 50 x 50, и я хочу, чтобы Deep Network с 4 слоями, а именно
- Уровень ввода
- Скрытый слой 1 (HL1)
- Скрытый слой 2 (HL2)
- Уровень вывода
Мой входной слой будет иметь 50 x 50 = 2500 нейронов, HL1 = 1000 нейронов (скажем), HL2 = 100 нейронов (скажем) и выходной слой = 10 нейронов, для обучения весов (W1) между Input Layer и HL1, я использую AutoEncoder (2500 - 1000 - 2500) и изучаю W1 размером 2500 x 1000 (это неконтролируемое обучение). Затем я передаю все изображения через первые скрытые слои, чтобы получить набор функций, а затем использовать другой автокодер (1000 - 100 - 1000), чтобы получить следующий набор функций и, наконец, использовать слой softmax (100 - 10) для классификации. (только обучение весов последнего слоя (HL2 - выход, который является слоем softmax) - это контролируемое обучение).
(Я мог бы использовать RBM вместо autoencoder).
Если та же проблема была решена с использованием сверточных нейронных сетей, то для 50х50 входных изображений я бы разработал сеть, используя только 7 x 7 патчей (скажем). Мои слои будут
- Входной уровень (7 x 7 = 49 нейронов)
- HL1 (25 нейронов для 25 различных функций) - (слой свертки)
- Объединяющий слой
- Выходной уровень (Softmax)
И для изучения весов я беру 7 x 7 патчей из изображений размером 50 x 50 и прокладываю вперед по сверточному слою, поэтому у меня будет 25 различных карт характеристик каждого размера (50 - 7 + 1) x ( 50 - 7 + 1) = 44 х 44.
Затем я использую окно с текстом 11x11 для объединения рук, поэтому вы получите 25 карт возможностей размера (4 x 4) для вывода слоя объединения. Я использую эти карты функций для классификации.
При изучении весов я не использую стратегию уровня слоя, как в Deep Belief Networks (Unsupervised Learning), но вместо этого использую контролируемое обучение и одновременно изучаю вес всех слоев. Правильно ли это или есть ли другой способ узнать веса?
Я правильно понял?
Итак, если я хочу использовать DBN для классификации изображений, я должен изменить размеры всех моих изображений до определенного размера (скажем, 200x200) и иметь много нейронов во входном слое, тогда как в случае CNN я тренируюсь только на меньшем патч ввода (скажем, 10 x 10 для изображения размером 200x200) и сверните полученные уроки по всему изображению?
Получают ли DBN лучшие результаты, чем CNN, или это зависит от набора данных?
Спасибо.