image

Около года назад учёный из университета Торонто Алекс Грейвс опубликовал научную работу «Generating Sequences With Recurrent Neural Networks» (pdf) на arXiv.org, однако только недавно пользователи Hacker News обратили на неё внимание. Это произошло благодаря тому, что демонстрационная часть статьи доступна в интернете в виде простого сайта, функциональность которого заключается в имитации нейронной сетью человеческого почерка.

В работе Грейвса речь идёт о применении рекуррентных нейронных сетей (recurrent neural network, RNN) с архитектурой Long-Short Term Memory (LSTM) для генерации специальных последовательностей данных, каждый элемент в которых вычисляется на основании предыдущего элемента. Благодаря тому, что это вычисление выполняется с пользованием вероятностных моделей, то RN-сети часто используются для написания музыки или текстов. Автором этих произведений фактически является нейронная сеть.

Этот подход оказался удобным для имитации нейронной сетью человеческого почерка: каждая точка элемента какой-то буквы будет генерироваться алгоритмом сети с некоторым элементом случайности, тем самым привнося элемент «человечности» в почерк.

Веб-страница для проверки этой функциональности доступна здесь. От пользователя требуется в простую форму ввести некую строку, ограниченную 100 символами (форма сделана хорошо: если отредактировать input вручную и отправить длинную строку на сервер, то всё равно обработаны будут только первые 100 символов).

Далее можно выбрать один из предопределённых типов почерка или предложить сети случайный выбор, затем выбрать величину допустимого отклонения и указать сколько образцов почерка следует сгенерировать. После некоторой паузы можно увидеть образцы почерка. С кириллическим текстом сеть, очевидно, работать не умеет, зато с латиницей справляется неплохо. Так выглядит фраза «Stop boring me and think! It's new sexy»:

image

Другой пример попроще — «I'll be back»:

image

А вот с цифрами, очевидно, проблема — так выглядит последовательность из чисел «4, 8, 15, 16, 23, 42» (примерно также выглядит кириллический текст):

image

Комментарии (21)


  1. neochapay
    24.07.2015 12:11
    +31

    Цифры писал врач всё норм.


    1. nickolaym
      27.07.2015 12:20

      доктор И.Б.М. Ватсон


  1. Halt
    24.07.2015 12:28
    +5

    Совместить с устройством для письма «от руки» и миллионы студентов, которых заставляют сдавать рефераты по гуманитарным дисциплинам написанными от руки, вздохнут с облегчением :)


    1. Zenitchik
      24.07.2015 15:18

      Мда. А мы ссылались на ГОСТ и сдавали ТОЛЬКО распечатки.


      1. Halt
        24.07.2015 15:36
        +2

        Мы тоже. Только особенно упоротые преподы курсов типа культурологии или философии (на технической специальности, ага) требовали писать исключительно от руки. Видимо системный подход студентов их задевал.


        1. Zenitchik
          24.07.2015 16:32
          +1

          У нас как раз культуролог и философ прекрасно понимали, где мы их видали, и не свирепствовали.


          1. Halt
            25.07.2015 20:32

            Вам повезло :)


    1. AbramovKS
      25.07.2015 19:33
      +3

      Для облегченного вздоха писал себе небольшой скрипт. Просто заменяем буквы на изображение или одно из изображений символа, чутка манипулируем с ним. Далее на печать и легонько пожулькать страницу, чтоб придать рукотворный оттенок. Сначала задался целью сделать кучу разных вариантов написания отдельных букв, наклонов и прочее. Но сделал только некоторые знаки и цифры)

      image


      1. Halt
        25.07.2015 20:30

        Класс! У меня была такая идея, но до реализации не дошло. Хотя идеальный вариант был бы реализовать по настоящему векторный шрифт, где буквы задаются правилами написания как в школе. Соответственно, чтобы рендерер сам вносил псевдо-случайный шум при отрисовке чередуя стили написания букв и способы их связывания.

        P.S.: Только многие глифы выдают машинную природу изображения — те же запятые, например. Все-таки не хватает нескольких вариантов написания.


    1. Argnist88
      29.07.2015 13:30

      Друг писал программу Синяк для преобразования текста в рукописный.


  1. Turbo
    24.07.2015 12:28
    +1

    Русские тексты выглядят жестко. Похоже что там в цифры юникода сначала преобразуется а потом уже кодируется.


  1. KOLANICH
    24.07.2015 12:32
    +1

    Походу с кириллицей проблема из-за проблем с utf-8: после кириллицы латиница не пишется, до — пишется.


  1. grozaman
    24.07.2015 13:21
    +6

    turbo, KOLANICH, а мне кажется, что проблема тупо в том, что нейронную сеть не обучали кириллице вовсе.


  1. RealFLYNN
    24.07.2015 13:46
    +1

    Было бы интересно узнать, что скажет графологический анализ таких образцов.


    1. lucius
      24.07.2015 14:45
      +6

      Убийца — дворецкий.


    1. stepik777
      24.07.2015 18:45
      +1

      Какая разница, что скажет лженаука?


  1. saga111a
    24.07.2015 14:18

    С капсом тоже траблы. Подделать под кириллицу соответственно тоже.


  1. mwizard
    24.07.2015 17:28

    Странные артефакты:


    1. mwizard
      24.07.2015 17:31

      В оригинальном тексте было «Psst», но первый вариант потерял букву. Интересно, с чем это связано:


      1. vvzvlad
        24.07.2015 18:08
        +8

        Лень стало писать.


  1. calx
    24.07.2015 21:53
    +1

    Ну теперь надо развернуть эту сеть наоборот и сделать, чтобы она рукописный текст распознавала.