Немного про то про сё
Автор: wayerrТак как я немного уволился, и вскоре буду вынужден искать работу, а старые немолодые прогеры не уверен что так уж нужны. Чай не студенты. То было решено погрузиться в нейросети (с точки зрения программиста и всё такое). Дабы немного приблизиться ко всяким модным веяниям - тут и в резюме можно что-то написать и навык немного прокачается, а то на старой работе я немного заплесневел от однобразности.
Так вот для примера я решил потыкать нейросетями в книжки. Не в генерацию текста, конечно (там и навыка моего не хватит и железо нужно ого-го какое). А в задачу поиска похожих книг.
С виду задача простая - берётся список пользователей в качестве строк, список книг в качестве столбцов, а на пересечении лайки. И путём нехитрых манипуляций можно выяснить какую книгу пользователи считают похожей на какую.
Так как список лаек мне достать негде, то я взял что попалось под руку - базу данных фильмов (movielens датасет). Взял простенький пример из документации к keras и-и-и...
И получил, что пользователи лайкают популярное и в похожих на это вылезает не похожее, а тоже популярное. Более того, даже если у нас есть блокбастер-сиквел некоего блокбастера (я же про фильмы), то среди ближайших похожих оригинального фильма порой оказывается не сиквел, а блокбастеры того же года.
С одной стороны, скорее всего я хреново натренировал нейросеть (пробовал и линейные эмбединги и более занятные варианты). Но с другой стороны это достаточно логичная тенденция.
Смотрите: у нас есть пользователь, он прибегает на сайт и активничает на нём не всё же время, а пока есть интерес. Сколько длится интерес в среднем у пользователя? А ведь пользователя может что-то отпугнуть на сайте, или отвлечь в реальной жизни.
Это интересный вопрос статистики. Но вряд ли средний пользователь будет торчат на сайте (оценок фильмов или книг) очень долго - десять лет. Пользователей которые сидят на сайте десятками лет не так много.
Получается, что оценки одного пользователя ограничены не только по его вкусу, но ещё и по времени. А ведь большинство ещё и подвержено рекламе (или сарафану), что только усиливает популярность и так популярных произведений и повышает "похожесть" с точки зрения такой системы.
Теоретически можно попробовать подкорректировать похожесть, вводя какие-то коэффициенты с популярностью (я рассуждал как-то в блоге на эту тему). Но пока руки не дошли. Тем более, что протестировать на примере АТ подобную штуку никак не получится — базу лаек то взять негде.
Зато на примере АТ можно попробовать взять и потренировать нейростеь на похожесть книг по описанию (и обложкам). Нетрудно заметить, что топовые книги имеют сходные описания. А значит если нейросети удастся "уловить" эту похожесть, то можно как минимум попросить у неё книги "непохожие" на топовые, но при этом похожижие на некий запрос.
Будет ли такое работать - сказать сложно. Более того это требует создания нейросети которая принимат на вход гетерогенные данные. Что с одной стороны вполне реально, с другой несколько замысловато. Особенно если ещё и обложку учитывать (а хочется).
Под это дело я был вынужден за несколько дней прочитать какую-то книженцию по нейросетям: всего-то полтысячи страниц отборного матана и теорвера, которые я не просто напрочь забыл, а не факт что вообще знал. Такова судьба программиста.
Параллельно в книге поднимались разные нескучные темы. Например, я узнал о существовании теории универсальной грамматики" (человеческого языка), коя также утверждает, что вроде как структура языка возможно заложена генетически и в мозге есть некие характерные структуры, и всё это как-то связанно. Тут же стало известно о существовании языка пирахан (на котором где-то в дебрях амазонии разговаривает одноимённое племя) и вот этот язык, вроде как не обладает рекурсией (это под сомнением), не имеет числительных. А ещё может быть закодирован музыкой или свистом. Уже из чтения про этот язык, я наткнулся на теории о том чем же отличаются коммуникативные системы животных (фактически языки животных) от человеческих и что эта грань тот ещё вопрос (особенно когда лингвисты находят очередной примитивный язык).
Эти штуки про язык - весьма интересные штуки, которые можно встроить в какую-нибудь фантастическую или фентезиную систему. Жалко только что писать из-за этого всего (и много другого) некогда.
К слову, ещё о нейросетях: недавно (месяц или два...) в новостях писали, что группа исследователей натренировала нейросеть, которая смогла по МРТ мозга распознавать слова которые думает испытуемый. Понятно, что там точность далека от идеала, а громоздкость системы поражает воображение. Но, как вы понимаете это (бесконтактный нейро интерфейс на нейросетях) тоже подходит для фантастики уже ближнего прицела.
Причём, в прямом исполнении в книге это малоинтересно. Но я например описывал ситуацию, когда часть населения пользуется "умными" нейроинтерфейсами, которые обучаются сами - т.е. подстраиваются под пользователя; а другие люди пользуются простыми нейроинтерфейсами, под которые сами долго и упорно тренируются.
Это разделение как-бы уже создаёт некие замысловатые сюжетные ситуации.