Нейронные сети для решения сложноалгоритмизуемых задач
В наши дни огромное количество задач решается с помощью программно-аппаратных средств без вмешательства человека. Однако с каждым днем возрастает потребность в создании систем, которые могут справляться не только с однажды запрограммированной последовательностью действий над заранее определенными данными, но и решать более сложные задачи, самостоятельно анализируя поступающую информацию с последующим проведением анализа, прогнозирования и т.д.
Особенно актуален данный вопрос в сфере видеонаблюдения, когда требуется не только осуществлять мониторинг объекта, но и анализировать действия, происходящие вокруг него.
Приведем пример. Есть частный дом, возле которого установлена видеокамера таким образом, что в объектив попадают ворота забора. Родители — хозяева дома — не всегда дают ключи своим детям, поскольку высока вероятность утери, и в то же время у них нет возможности постоянно подходить к домофону, чтобы открыть дверь. Тогда встает вопрос: а можно ли сделать так, чтобы ворота открывались сами лишь в том случае, когда к ним подходит определенный человек?
На первый взгляд задача кажется нерешаемой с точки зрения классического программирования. Зачастую найти логические взаимосвязи или построить решение на каком-либо алгоритме, имея десятки, сотни или даже тысячи различных параметров, чрезвычайно сложно. Проблема распознавания лиц, описанная выше, является сложноалгоритмизуемой, в то время как человеку достаточно лишь беглого взгляда, чтобы однозначно идентифицировать на фото знакомого человека.
Для решения такого рода задач самым лучшим образом зарекомендовали себя так называемые нейронные сети – самообучающиеся системы, которые имитируют деятельность человеческого мозга.
Нейронные сети являются своего рода микро-моделями человеческого мозга, и их поведение можно сравнить с развитием ребенка. В самом начале своей жизни он ничего не знает об окружающем мире, но если постепенно доносить до него нужную информацию, со временем он научится ее осмысливать и перерабатывать. Например, если ребенку показать изображения кошки, собаки и попугая, и объяснить, что кошка – это кошка, а попугай – это попугай, то первое время он будет путаться и называть картинку с кошкой, например, собакой. Но по истечении времени его мозг запомнит изображения и правильные ответы.
Важной особенностью является способность мозга к обобщению. То есть, если показать ребенку изображение другой кошки, которую он ранее не видел, то, скорее всего, он ответит, что это тоже кошка. Принципиальным моментом является способность давать неопределенные ответы, например: «Вроде бы, это кошка», «Я не уверен, что это за животное» или «Немного похоже на кошку, но, наверное, это не она».
Такой же принцип справедлив и в отношении искусственных нейронных сетей: созданную сеть необходимо обучить, показав предварительно несколько сотен снимков различных людей с уличной камеры, сообщая при этом, какие из них являются «свои», а какие нет.
Вновь созданная нейронная сеть в процессе обучения многократно распределит свои внутренние параметры, называемые весами, таким образом, что при получении фотографии (входных данных), на выходе получится ответ, совпадающий с правильным ответом в обучающих примерах. В данном случае это идентификация человека по имени или принадлежности к семье.
В результате после обучения нейронной сети будет достигнут такой результат, что при захвате случайного изображения человека с большой долей вероятности будет получен удовлетворяющий нас ответ, несмотря на то, что разные фотографии одного и того же человека всегда будут отличаться друг от друга. Это и есть уникальная особенность нейронных сетей – способность давать верный результат на новом материале.
При решении прикладных задач нейронная сеть применяется в том случае, если нет возможности найти подходящую функцию, алгоритм от входных параметров или на ее реализацию потребуется слишком много сил и времени. Зачастую гораздо проще и быстрее обучить сеть на примерах, нежели заниматься разработкой объемных и сложных программ. Другими словами, процесс обучения (или самообучения) сети заменяет процесс традиционного программирования, что в значительной мере экономит время разработчиков.
Стоит подчеркнуть, что для обучения нейронной сети необходимо иметь набор данных, включающий входные параметры и правильный ответ. При этом обучающий материал должен быть достаточным и репрезентативным для корректного обучения сети. Например, в случае распознавания лиц требуется предоставить фотографии в разную погоду и при разной освещенности, иначе сеть может выдавать промежуточные ответы «кажется» или «наверно». То есть вероятность составит, например, не 0,998673, а 0,657319.
Тем не менее на практике не исключаются ситуации, когда сеть выдает ошибочное значение. В таких случаях нужно иметь механизмы фиксации ошибок, чтобы провести дополнительное обучение на тех данных, на которых была допущена ошибка.
Основные задачи, решаемые с помощью применения нейронных сетей в видеонаблюдении:
- Распознавание лиц
- Идентификация объектов
- Распознавание лиц
- Интерактивный поиск
- Слежение за объектом
- Обнаружение вторжений