Метод обратного распространения — это вычислительно эффективный способ получения производных, только и всего. Им можно вычислять как градиенты, так и якобианы, гессианы и их аппроксимации, причем для самых разных целевых функций, первого и второго порядка.
В упомянутом вами алгоритме Левенберга-Марквардта, а равно и в других популярных градиентных алгоритмах обучения нейронных сетей производные по весам вычисляются именно с помощью backpropagation! Поэтому его описание не может отклонить читателей от движения по направлению к новому и светлому. )
Нет, EKF используется в качестве алгоритма оптимизации, по сути действует как квази-Ньютоновский метод. Кроме указанных ссылок есть еще книжка чисто на эту тему: S. Haykin, «Kalman filtering and neural networks», 2001.
Да уж, без сверточных сетей действительно никуда. Спасибо за статью и ссылки. Да, она написана для новичков — и поэтому за деревьями не всегда сразу видно лес (а он есть). Вообще, критиковать всегда намного легче, чем писать ))
Еще раз перечитал, более внимательно — хочу извиниться перед автором и забрать назад свое раздражение по поводу «неглубокости» алгоритма, извините за каламбур. Действительно, это имеет отношение к Deep Learning поскольку а) здесь используются автоенкодеры для поиска информативных частей картинки, которые используются как признаки и б) вручную формируется иерархичность, глубина иерархии определяется размером визуальных слов-признаков.
Спасибо за хорошее видео по биологическим экспериментам с кошками!
По поводу самой статьи — честно говоря, ожидал большего.
1. Из прочтения названия и начала статьи возникло ощущение, что нам расскажут, как сделать метод распознавания кошек от собак средствами Deep Learning с качеством 98% на хорошей выборке (Kaggle). Этого не произошло, и это главное разочарование.
2. Обучение алгоритма происходит в этих строках
«learning = MiniBatchDictionaryLearning(n_components=49)
features = learning.fit(data).components_»
Что конкретно здесь происходит? Каким способом идет подстройка модели к словарю? Про это можно и нужно рассказать.
3. Алгоритм сопоставления визуальных слов и векторов признаков (features) на их основе имеет примерно такое же отношение к Deep Learning, как колесо и трактор. У трактора есть колесо, но совершенно необязательно, что любой механизм с колесом — это трактор. То, что картинку можно представить как суперпозицию других картинок, которые формируют базис — это очень старая вообще идея, возникшая задолго до Deep Learning. Это и eigenfaces и эпитомы и много что еще.
4. Вообще, главная «фишка» глубокого обучения состоит в том, что эти самые «визуальные слова» или «признаки» получаются автоматически во время процедуры «предобучения» (pre-training). То есть, визуальные слова-признаки — это не какие попало нарезанные куски одной картинки, а картинки, которые сгенерировались в итоге предобучения без учителя, суть которого — восстанавливать исходные изображения для задачи «бутылочное горлышко» с помощью алгоритмов RBM, Stacked Autoencoders или других алгоритмов.
Спасибо за статью, написано хорошо и понятно. Но хотелось бы посмотреть результаты на правильном бенчмарке — насколько ваш препроцессинг (выглядит он убедительно) хорош по сравнению со state-of-the-art подходами.
P.S. A не пробовали гуглить — может быть, существует публичная база/бенчмарк в интернете по детектированию штрихкодов?
С нетерпением жду продолжения и исходников, когда диплом будет защищен!
В упомянутом вами алгоритме Левенберга-Марквардта, а равно и в других популярных градиентных алгоритмах обучения нейронных сетей производные по весам вычисляются именно с помощью backpropagation! Поэтому его описание не может отклонить читателей от движения по направлению к новому и светлому. )
habrahabr.ru/post/221137/
Желаю успехов!
По поводу самой статьи — честно говоря, ожидал большего.
1. Из прочтения названия и начала статьи возникло ощущение, что нам расскажут, как сделать метод распознавания кошек от собак средствами Deep Learning с качеством 98% на хорошей выборке (Kaggle). Этого не произошло, и это главное разочарование.
2. Обучение алгоритма происходит в этих строках
«learning = MiniBatchDictionaryLearning(n_components=49)
features = learning.fit(data).components_»
Что конкретно здесь происходит? Каким способом идет подстройка модели к словарю? Про это можно и нужно рассказать.
3. Алгоритм сопоставления визуальных слов и векторов признаков (features) на их основе имеет примерно такое же отношение к Deep Learning, как колесо и трактор. У трактора есть колесо, но совершенно необязательно, что любой механизм с колесом — это трактор. То, что картинку можно представить как суперпозицию других картинок, которые формируют базис — это очень старая вообще идея, возникшая задолго до Deep Learning. Это и eigenfaces и эпитомы и много что еще.
4. Вообще, главная «фишка» глубокого обучения состоит в том, что эти самые «визуальные слова» или «признаки» получаются автоматически во время процедуры «предобучения» (pre-training). То есть, визуальные слова-признаки — это не какие попало нарезанные куски одной картинки, а картинки, которые сгенерировались в итоге предобучения без учителя, суть которого — восстанавливать исходные изображения для задачи «бутылочное горлышко» с помощью алгоритмов RBM, Stacked Autoencoders или других алгоритмов.