| |
Определение достоверности цифровой подписи
Определение достоверности цифровой подписи – это последовательность действий, в результате которых дается ответ на вопрос: принадлежит данная подпись конкретному человеку или нет.
В примере показана возможность решения задачи с помощью нейронных сетей STATISTICA Neural Networks.
На первом этапе задача была упрощена – рассматривается одиночный символ, рукописная буква “А”. Как мы увидим ниже, сложность данной задачи – в структуре данных и их представления для обучения нейронной сети.
Структура данных
В качестве исходных данных берётся набор картинок. Все картинки разделены на две группы: 1) подпись, принадлежащая конкретному человеку; 2) подпись, не принадлежащая конкретному человеку (искаженная подпись).
Внутри каждой группы картинки различны. Действительно, ни один человек не может расписаться два раза абсолютно одинаковым образом: изменяются стартовая точка, наклон, форма отдельных элементов. Также присутствуют изображения с “шумами”.
Приведём несколько примеров изображений для каждой группы.

Рис.1. "Хорошие" изображения (первая группа)

Рис.2. "Плохие" изображения (вторая группа)
Все картинки имеют разрешение 64х64 точек и глубину цвета 1 бит.
Изображения представим в одной двумерной таблице. Для этого применим простую развёртку: двумерный массив значений преобразуется в одномерный. Каждому изображению соответствует одно наблюдение – строка в таблице данных; элементы строки – значения соответствующих пикселей в исходном изображении.
В итоге имеем таблицу с 4096 столбцами (4096 = 64*64) и 2275 наблюдениями.
Была добавлена переменная Type, принимающая значение 1, если подпись правильная, 0 – если подпись неправильная.
Всего было сгенерировано 2275 изображений: 1170 “хороших” и 1105 “плохих”.

Рис.3. Таблица с исходными данными
В ячейках 1 соответствует белому цвету, 0 – чёрному.
Построение модели
О преобразовании исходных данных для получения задачи меньшей размерности можно прочитать в полной версии примера.
В новой таблице 52 переменных и 2275 наблюдений.
Шаг 1. Запустим Нейронные сети STATISTICA на сокращенных данных.

Рис.4. Выбор задачи и инструмента
Шаг 2. В области Тип задачи выберем пункт Классификация.
Выберем переменные для анализа.

Рис.5. Выбор переменных
В данном примере Type – выходная переменная, остальные – входные. Заметим, все переменные являются категориальными (принимают два значения: либо 0, либо 1).
После того как переменные выбраны, нажмем ОК и настроим Мастер решений.
Шаг 3. Настройка мастера решений.
В окне настроек Мастера решений перейдём во вкладку Тип сети и выберем Трёхслойный персептрон. Это достаточно мощная сеть. Если результаты получатся неудовлетворительными, повторим анализ с более сложной конфигурацией сети.

Рис.6. Выбор сети
Перейдём во вкладку Сохранить и в качестве критерия сохранения укажем Наименьшая ошибка (на контрольной выборке). Сети, удовлетворяющие данному критерию, будут сохранены.

Рис.7. Вкладка Сохранить Мастера решений
Перейдём во вкладку Сложность и увеличим максимальное число элементов на скрытом слое до 40.

Рис.8. Вкладка Сложность Мастера решений
Шаг 4. Запустим процедуру обучения сети нажатием ОК. Начнётся процесс обучения.
Шаг 5. Анализ результатов
По окончании обучения появится окно результатов с лучшими сетями.

Рис.9. Окно результатов
Рассмотрим характеристики сетей, приведённые в окне результатов. В данном случае нужно обратить внимание на производительность сети на тестовой выборке – это точность классификации на тестовой выборке.
На тестовой выборке наибольшую производительность имеет сеть с номером 15. Рассмотрим подробнее эту сеть.
Нажав на кнопку Описательные статистики и выбрав тестовую выборку, получим таблицу с результатами классификации.

Рис.10. Матрица ошибок
Рассмотрим правый столбец. Он соответствует “хорошим” подписям.
Видим, что все “хорошие” подписи были определены правильно (289 шт. в тестовой выборке).
Рассмотрим левый столбец. Он соответствует “плохим” подписям. В тестовой выборке 3+276=279 соответствующих наблюдений. Из них только три были классифицированы неверно.
Приведём несколько примеров подписей из тестовой выборки.
"плохие" подписи
"хорошие" подписи
все неправильно классифицированные подписи
| |