Рекуррентные нейросети

Погонял нейросеть на основе кода из http://karpathy.github.io/2015/05/21/rnn-effectiveness/. На примере истории чата из 75000 сообщений, 6MB данных. Увлекает.

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

Пример (выборка не наиболее удачная, выбранная как средне-репрезентативная + чтобы не спалить ничего приватного):

Слава:
Хочется, да :)

Пион:
Я прочувствуешь, что в итоге могут сильнее продолговать.

Пион:
Не

Слава:
штоа?

Пион:
Ничо так. В падику?

Слава:
Перестал это же в толпе с тобой подумать

Пион:
Даа, это твой метод напрягать капса с толкой книги не меняет

Слава:
Ну вот там же.

Пион:
О, она будет апдейтиться в такой жизни очень хорошее

Слава:
А ТЫ? :)

Что тут интересно:

  • Структуру входящего потока в виде «Пион:»/»Слава:» оно просекает почти сразу. Алгоритм инкрементальный, и проходит 30 «эпох» (полных перечитываний текста), на ранних эпохах содержание сообщений не содержит читаемых слов («я центрить назачиваешь аэтри, а КАВ НЕТЕСТА ПВО НИВ У ОЕД ЧТО У ТЕ СЛЕДАЮ УНОДАСЙ РЕМ»).
  • Аналогично со структурой предложений: пробел после запятой, длина слова.
  • Еще до этого оно осознало структуру уникода: изначальный алгоритм работает с байтами, а на выходе получаются символы. То есть \xd0 и \xd1 оно расставляет аккуратно и в тему.
  • Капс, смайлы, точки, сообщения с маленьких букв и с больших (я за этим не очень слежу, статистически правдоподобно, хотя в реальности я более последователен в этом на локальных интервалах.)
  • Склонение слов! В оригинале не было слова «прочувствовать», только «прочувствованное», «прочувствованные» и «прочувствовала» по одному разу.
  • Из наблюдения про склонение слов я делаю вывод, что структуру предложений, согласование существительных, глаголов и прилагательных оно тоже понимает на достаточно продвинутом уровне. В смысле, не просто по принципу цепей Маркова.
  • В примере этого нет, но я много использую скобки, и он обычно не забывает их закрывать.
  • Про авторский стиль: некоторые признаки того, что «Слава» выражается более похоже на меня, а «Пион» более похоже на Пион есть. Я чаще ставлю смайлы и скобки. При этом с родом есть косяки.

PS: Заодно опробовал Spot Instances на EC2. На ноутбуке со встроенной видеокартой недоступна CUDA, и ждать десять часов вчера вечером не хотелось. На EC2 On-Demand g2.2xlarge стоит $0.65/час, а Spot мне обошелся в $0.06/час. (со Spot Instances всегда есть риск, резкий рост цен приведет к потере виртуалки со всеми данными, но он маловероятен был в этом случае.)

Чем мог бы стать LessWrong

Встречи LessWrong.ru рождают какой-то контент. Ежедвухнедельная встреча дает выхлоп в два-три доклада на тридцать людей, нескольких видео на youtube (с 50-100 просмотрами в сумме, половина из которых – моя мама), и пары падов в хакпаде, если повезет.

Чтобы захватить/спасти мир, нам нужен намного больший выхлоп. Особенно если думать с точки зрения помощи миру (а не только «а какая тусовка будет лучше для меня лично?»), но даже с чисто точки зрения потребления материала группа в тридцать человек рано или поздно сварится в собственном соку, потому что всем хочется нового и крутого, но все крутое и новое внутреннее она уже переработала. Короче, нам нужна сильная онлайновая часть сообщества, где бы свежая ценная информация перемалывалась в более высоком темпе.

Какое содержание могло бы рождать онлайн-сообщество? Рассчитывать на оригинальные исследования на этом этапе было бы слишком оптимистично, нас мало, и серьезные исследования трудозатратны. Мне кажется, мы могли бы делать мета-ревью, компиляции исследований по выбранным темам, переводы и выжимки из существующих академических статей. На lesswrong.com есть крутые прецеденты.

Какую форму это могло бы обрести – есть много вариантов. Можно пойти дописывать википедию. Можно фигачить посты в личный блог. Можно создать общелесронговскую вики. Я пока не знаю, как лучше, и не знаю, как можно эффективно замотивировать людей этим заниматься, это открытый вопрос. (Весь этот текст состоит из открытых вопросов, у меня нет пошагового рецепта. Но есть кое-какие идеи.)

Отдельная и важная задача – установить и поддержать уровень качества всей этой деятельности. У централизованного форума может быть модерация, у блогов не может. Уровень качества может регулироваться культурой, но следует ли это делать? (Тут много аспектов про баланс между свободой и контролем, бюрократией и мотивацией, чистотой бренда и порогом для входа. Система правил википедии, кстати, не идеальна, но очень даже неплоха.) Да, и это не только вопрос контроля, это и вопрос идентичности – что вообще отличает лессронг от остального мира, про что мы, есть ли у нас однозначная методология?

Кажется, общая методология могла бы быть. Явный список правил, которые надо соблюдать при формулировании знания, критериев качества к итоговому ревью, языковых принципов. Многие участники LW эти принципы знают интуитивно, но единого свода нет. Было бы интересно такой свод сделать.

Кстати, можно сравнить с научным сообществом, у него тоже есть своя методология. Статистические тесты, процесс ревью и публикации статей, списки литературы. Методология крутая, но не идеальная: как в смысле применения статистики, так и с точки зрения медийных форматов (почему я не могу почитать комментарии к научным статьям? почему мне приходится их скачивать через sci-hub? почему в них нет ссылок, и они распространяются pdf’ками?).

Этот последний пункт приводит меня к мысли, ради которой я все это пишу. Переизобретение, в стороне от общепринятых практик, но с переиспользованием всех существующих материалов, Науки 2.0 могло бы быть сверхмиссией лессронга. Начать с первых пробных компиляций в отдельных областях, разобраться с best practices формулирования и оценивания на здравость (биржи предсказаний нам помогут), достроить мост от академической среды до конечных пользователей, не потеряв при этом в правдивости, сделать свой кроссдисциплинарный научный журнал, и так далее и так далее. А?

(По мотивам разговора с Пион о будущем лессронга.)