NeuroPro | нейронные сети |
|
Начало Новости Услуги Нейронные сети Программы Статьи Заметки Ссылки Вопросы и ответы Об авторе / контакты |
Роль ноу-хау в эффективности создания и применения нейронных сетейСнова буду повторять уже сказанное, но иначе не получается. Поисковик Яндекс какое-то время за запрос "сверточные нейронные сети" выдавал на первом месте ссылку на статью [1], являющуюся в своей содержательной части пересказом описания сверточных нейросетей из статьи [2] и существенно новой информации не несущую. Две указанные статьи отделяют друг от друга 10 лет. Посмотрим, как опубликованные в 1998г результаты воспроизводятся сегодня на практике.
Второе. Точность для сверточной нейронной сети. В [1] указана ошибка обобщения в 2.16%, что хуже как результатов для этой нейросети в [2], так и иных результатов, например, [3,4]. Я пользовался другой архитектурой сверточной нейросети (предложенной в [3] и являющейся упрощением архитектуры [2]). И для такой сверточной нейросети даже довольно малых размеров (4-20-50-10 сверточных плоскостей и нейронов) я без использования генератора нелинейных искажений изображений символов получал среднюю ошибку обобщения ниже, чем 1.3%. Т.е. опять - у меня существенно лучший, чем в [1], результат, более близкий к результатам [2-4], и полученный на нейросети меньшего размера, чем в [1]. С генератором искажений и на сети размером побольше - ошибка у меня меньше 1% неправильных ответов на тестовой выборке, "как в лучших домах Парижа" [2,3]. Третье. Поскольку в [1] на русском языке воспроизводятся указанные в [4] на английском языке цифры о скорости работы нейросетевой программы [4], то я их специально и точно сопоставлю тут с моими (другие мои данные в заметке про гиперболический тангенс относились к нейросети иного размера). Так вот, для сверточной нейронной сети размерами 6-50-100-10 работа [4] дает для процессора AMD Athlon X2 4400+ (2,21гГц) скорость обработки в 12 и 23 обучающих примера в секунду для однопоточного и двухпоточного режимов исполнения. Моя же сверточная нейросеть такого же размера при обучении всех примеров (т.е. без отказа от коррекции на тех примерах, которые распознаются с нужной точностью, что может привести к ускорению процесса обучения), при самой медленной (следуя ранжированию из заметки про гиперболический тангенс) реализации нелинейных функций нейронов, в однопоточном режиме на процессоре Intel Core2Duo 6420 (2,13гГц) щёлкает 327 примеров в секунду. Т.е. даже в однопоточном режиме моя программа реализации сверточных нейронных сетей работает на порядок быстрее двухпоточной программы [4], как я и говорил. А процессоры при этом сравнимы по производительности (мой пошустрее не более чем в полтора раза). Резюме. Смотрим на название заметки - если кто-то может, а кто-то не может воспроизвести точность работ 10-летней давности, если чья-то нейросетевая программа работает на порядок быстрее другой, то это и означает обладание или не обладание некоторым ноу-хау в теории и практике применения нейронных сетей, а также в программировании. Какой вывод отсюда следует? Что у каждого новичка, желающего попробовать нейросети (или сначала попробовать их запрограммировать, а потом попробовать использовать), может отсутствовать какое-то нейросетевое или программистское ноу-хау, требуемое для хороших и даже правильных результатов. Поэтому советую всем потребителям нейросетей думать, не возникнут ли у них подобные риски от необладания нужными компетенциями. Ведь есть возможность сделать заказ мне и получить, как говорилось в телерекламе, "неизменно превосходный результат".
PS. Выявился еще один случай десятикратного превосходства в скорости моей программной реализации сверточной нейронной сети перед сторонней разработкой - см. середину . PPS. А вот и третья - и тоже проигрывает в скорости на порядок (автор пишет: "Скорость обучения пока не велика (>10 ч)"). Правда, автор обещает её на порядок ускорить - "будем посмотреть", получится ли у него и позволит ли Матлаб это сделать. "Однако, тенденция!" - говорил чукча из анекдота: народ совершенно не умеет разрабатывать быстрые нейросетевые программы (и быстрые программы для сложных расчетов тоже, т.к. кроме алгоритмов играют роль знания и техника программирования плюс выбор адекватного инструмента). |