Журнал "Системы Безопасности" № 1‘2019
A L L - O V E R - I P 61 www.secuteck.ru февраль – март 2019 Обучение нейросети Глубинные нейронные сети состоят из слоев, поэтому мы часто и слышим термин "глубинное обучение". Каждый слой выполняет свою зада- чу и дальше взаимодействует со следующим слоем. Для того чтобы сеть работала правиль- но, мы должны дать ей на распознавание под- готовленный объект. Многие слои нейросети как раз отвечают за такую подготовку: находят объект по контурам, убирают шумы и т.п. Хорошим сравнением для понимания, как мне кажется, будет аналогия, как мы учим детей узнавать, например, волка. Волки ведь бывают разные: в зоопарке они одни, а в мультфиль- мах и сказках совсем другие. Волк из "Ну, пого- ди!" очень сильно отличается от волка из сказ- ки про семерых козлят, ну и тем более от волка на фотографиях дикой природы. Если мы встретим ростовую куклу или пойдем в театр на детский спектакль, то это будет уже другой волк. Тем не менее через какое-то время ребе- нок начинает узнавать волка. Как же это про- исходит? Первое: мы учим ребенка находить на наблю- даемой сцене объект. Для этого мы тыкаем пальцем и говорим: "Смотри – волк". Или: "Смотри – заяц". Такая идентификация и является первой задачей нейросети. Дальше мы обучаем ребенка на разных изображениях определять волка; если ребенок угадывает, то мы его хвалим (этап обучения). Но иногда кар- тинок для обучения нам не хватает и тогда мы можем нарисовать волка сами, слепить его из пластилина, показать новый мультик. В машин- ном обучении это называется "синтетическая генерация данных", необходимая для расши- рения обучающей выборки. Ребенок должен узнавать волка даже в том случае, если он спрятался за деревом и когда он лежит в чеп- чике и очках в кровати бабушки, которую толь- ко что съел. После того как мы окончательно поняли, что ребенок узнает волка в 90–95% случаев, мы уже не говорим ребенку: "Смотри – волк", так как знаем, что он может найти волка на картинке и его безошибочно распо- знать. Знания ребенка проверяются на новых книжках, и на этом процесс обучения заканчи- вается. А теперь вернемся в 2010 г. В 2010 г. появи- лась база ImageNet, содержащая 15 млн изоб- ражений в 22 тыс. категорий. Эта была доста- точная выборка для обучения нейросетей. В 2012 г. Крижевски и Хинтон для вычислений в нейронной сети решили использовать ресур- сы графических процессоров (видеокарт). Тех- нология глубокого обучения с ускорением на GPU (графический процессор) вообще в корне поменяла подход к разработке программного обеспечения. Раньше ПО создавали програм- мисты и они же писали коды для алгоритмов. Теперь машинные алгоритмы обучаются сами на многочисленных примерах из жизни, таким образом программа улучшает себя сама. Самое главное, существенно сократилось время обучения сети. Ведь мы не можем ждать год или два (время, необходимое для узнава- ния волка ребенком), пока наша нейросеть обучится. Сверточная нейросеть Очень полезным инструментом для видеоанализа оказа- лась сверточная ней- росеть. Сверточные нейронные сети обес- печивают частичную устойчивость к изме- нениям масштаба, смещениям, поворо- там, смене ракурса и прочим искажениям в изображениях. Сейчас в анализе видео- и фотоизображений в основ- ном используются такие сети. Появление множества библиотек и инструмен- тов, которые облегчают работу программистов с нейросетью, способствовали бурному росту глубинного обучения на основе нейросетей и дошли до отрасли технических систем без- опасности. В принципе, любой желающий может взять готовую нейросеть и доработать ею под свои нужды. Масштабные эксперименты и проекты Самым известным и масштабным экспери- ментом с работой искусственного интеллекта по обработке изображений стал опыт Google в распознавании кошек на видео YouTube. Как и в примере с волком, изначально самообу- чаемая нейросеть не знала о существовании кошек, но после просмотра 10 млн случайных кадров с YouTube в нейросети сформирова- лись нейроны, селективно реагирующие на присутствие кошачьих мордочек на изобра- жениях. Еще одним примером служит проект Facebook под названием DeepFace, алгоритм распозна- вания лиц на фотографиях, точность которого достигает 97%, независимо от качества фото, степени освещенности и расположения чело- века на снимке. Разработчики обучали свой алгоритм, используя 4 тыс. фотографий из альбомов 4 млн человек. Необходимые инструменты для полноценного использования Но нейросеть нельзя назвать универсальным инструментом. В ее обучении и использовании есть определенные сложности. Одно дело, если ребенок сможет определить волка, найдя его среди овец (только если волк не будет в овечьей шкуре). А если это будет большая лохматая собака, бегущая по улице? Или, наоборот, некрупный степной волк раз- мером с обычную собаку? Не всякий взрослый найдет отличия между таким хищником и домашним питомцем. Для полноценного обучения нейросети требуется: 1. Большая и разнообразная выборка, при этом данные для обучения должны быть репрезентативными. Чем больше данных для обучения, тем умнее нейросеть. 2. Подготовка данных для обучения и раз- метка данных. Для этого частично использу- ется автоматизация: использование боль- ших, уже натренированных сетей для раз- метки или алгоритмов видеоаналитики, работающих по другому принципу, напри- мер детекции движения. 3. Аргументация данных: предварительная подготовка данных перед обучением (поворот на случайный угол, изменение баланса белого, яркости, перемещение, масштабирование) для того, чтобы сеть научилась определять объ- екты, как они встречаются "в жизни". 4. Выбор конкретного набора алгоритмов, то есть определение принципа работы каждого слоя нейросети и его взаимодействия с сосед- ними слоями. 5. Тренировка и перетренировка сети. 6. Своевременность завершения процесса обучения. Нейросеть нельзя обучать "на ходу": такая практика является рискованной, так как сеть может переобучиться или подстроиться под самые последние поступившие данные, потеряв при этом наработанную и "утвержден- ную" до этого логику. Признаки и закономерности Не стоит стремиться применять нейросеть во всех случаях. Например, для подсчета посе- тителей отлично подходят классические методы детекции, дающие высокую степень точности. А вот там, где нельзя заранее сфор- мулировать какие-то четкие признаки объ- екта, нейросеть подойдет как нельзя лучше (например, детекция дыма и огня), ведь она сама на основании данных будет устанавли- вать признаки и закономерности. Правда, в отличие от запрограммированных человеком алгоритмов, эти признаки и закономерности будут находиться глубоко на ее дне, недо- ступные для понимания пользователей. Неко- торых это пугает: даже обращаясь к врачу, мы должны понимать, о чем он говорит и по каким признакам ставит нам диагноз. Но в последнее время ведутся разработки, направленные на перевод машинного языка на "человеческий", чтобы нейросеть могла объяснить, какие критерии она посчитала важными, и уже человек будет в дальнейшем решать, права она или нет и, если что, рас- ставлять для сети приоритеты. n Михаил Бялый Генеральный директор ООО "Актив-СБ" Ваше мнение и вопросы по статье направляйте на ss @groteck.ru www.tehnot.com
Made with FlippingBook
RkJQdWJsaXNoZXIy Mzk4NzYw