Проекты*

Исследование способов оптимизации нейросетевых вычислений

Работа призёра открытой городской научно-практической конференции «Инженеры будущего» в секции «Информационные технологии, моделирование, прототипирование, прикладная математика, социальный инжиниринг» среди индивидуальных работ учащихся 10−11 классов

Направление работы: Моделирование
Авторы работы: ГБОУ Школа № 498
Предметы: Информатика, Программирование
Классы: 11 класс
Мероприятия: Открытая городская научно-практическая конференция «Инженеры будущего» 16−17 апреля 2018 года

Актуальность работы

В последнее время компьютеры с помощью алгоритмов машинного обучения справляются с большим количеством задач, решаемых ранее человеком. Бурное развитие периферийных устройств сделало актуальным вопрос о переносе туда нейронных сетей при ограниченности вычислительной мощности.

Описание работы

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

1. Улучшение модели. Для решения задачи был создан многослойный персептрон. Изменение топологии нейронной сети позволило уменьшить число обсчитываемых весов. Была сменена функция активации нейронов скрытого слоя на LeakyReLU, которая имеет вид: f(x) = max(a*x,x). Осуществление коррекции весов по обобщённому дельта-правилу позволило увеличить параметр скорости обучения в 5 раз. Была получена  улучшенная модель. В итоге прирост производительности составил 13%.

2. Использование вычислительных мощностей целевой платформы. Все нейроны внутри слоя не зависят друг от друга, поэтому вычислять состояния нейронов можно параллельно. Для этого был использован API OpenCL для обращения к мощностям видеокарты и распараллеливанию вычислений. Получено ускорение работы в 3 раза.

3. Оптимизация написанной программы. Код модели, написанной на языке программирования C# 7.0, был оптимизирован, что дало снижение потребления оперативной памяти на 27% (с 23 Мб до 17 Мб).

Выводы

Наибольшую эффективность показал 2-й способ, который позволил получить максимальное ускорение времени распознавания образа и процесса обучения, при этом он применим при проектировании практически любой портативной системы. Развитие проекта заключается в поиске новых способов и их применении на других типах нейронных сетей и задач машинного обучения для обобщения результатов и создания прототипа портативной системы, логика работы которой будет реализована на нейросетях.