Нейросети, идентификация по клавиатурному почерку — как разобраться?
Пытаюсь разобраться с дипломом.
Тема: Идентификация по ритму работы на клавиатуре. Либо другими словами: Идентификация по клавиатурному почерку.
Задача была поставлена так: Сначала обучить нейросеть распознавать образы - промежутки между нажатиями клавиш, представленные в векторном виде.
Потом на основе обученной нейросети написать несложную программу, где необходимо вводить строки, и сеть распознает пользователя по ритму набора строки.
В конечном итоге провести эксперименты с распознаванием.
Может, кто сталкивался с подобным?
Вопросы следующие:
- Какой тип нейросети лучше подойдет для подобной задачи?
- А САМОЕ ГЛАВНОЕ: как правильно подавать сети входные данные, как интерперетировать эти промежутки между нажатиями, ума не приложу?
Может, кто-то занимался подобным,
(задача формулируется как разработка простых подходов к идентификации).
Буду очень благодарен любой инфе, ресурсам, статьям, где можно было бы почитать и разобраться с этим.
Совсем ИМХО - дипломный проект такого уровня должен предполагать исследование, какие НС лучше подойдут. Навскидку - обычный многослойный персептрон, активационная функция - на ваш выбор. Можно попробовать разбить вектор на временные отрезки маленькие, в отрезке считать время сколько была нажата каждая клавиша. Вектор отрезков - вход сети. Выход - идентификатор пользователя. Это почти от балды написано конечно, нужно экспериментировать.
Для начала возьмите какую-нибудь простую реализацию сети, например pybrain. C feature enginering (преобразованием данных на вход нейросети) надо пробовать разные варианты. Сходу приходят в голову: средний интервал между нажатий, дисперсия, средний интервал между "близкими" и "далекими" клавишами.
Я думаю можно попробовать реализовать на базе сети Хопфилда, данные для анализа можно собрать следующим образом я думаю.
Минимальным фрагментом для анализа я думаю следует считать любой период когда человек вводит текст, из данного периода можно взять время которое он затратил на ввод того или иного символа, из полученного набора данных можно провести анализ.
Данные будут являться парами символ-число. Соответственно если ввести в соответствие каждому символу некое число можно получить 2х мерный массив, размер которого будет статичен.
Так как сети Хопфилда требуют предварительного обучения, данный массив можно заполнять статистически, то есть получив определенное количество измерений, то есть массивов можно взять среднее арифметическое по каждой из ячеек, полученная матрица и будет "почерком" данного человека.
Для последующего анализа будет достаточно получить несколько последовательных матриц (нужно подобрать сколько) для более точного результата сравнения из них получить матрицу почерка (среднее арифметическое по каждому элементу матрицы) и сравнить с эталоном (например посчитать дельту по каждому ненулевому в обоих матрицах элементу) и в зависимости от размера средней по ячейкам дельты можно будет сказать насколько близка подпись данного человека к эталонной.
Мне понравилась идея поэтому расписал как можно более подробно. Если будет нужна помощь в реализации обращайтесь.