Предиктивное поведение веб-интерфейса

image

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



На заре интернета сайты не искали индивидуальность в стилизации базовых элементов интерфейса. Вариативность была небольшой, поэтому страницы были довольно однородны по своим составляющим.

image

Каждая ссылка выглядела как ссылка, кнопка как кнопка, а чекбокс как чекбокс. Пользователь знал к чему приведет его действие, потому что имел ясное представление о принципе работы каждого элемента.

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

image

Современные сайты предоставляют пользователю гораздо большее количество загадок. Все ссылки выглядят абсолютно по-разному, кнопки не похожи на кнопки и так далее. Чтобы понять, является ли строчка ссылкой, пользователь должен навести на нее курсор, чтобы увидеть изменение цвета на более контрастный. Чтобы понять является ли элемент кнопкой — также наводим мышь, чтобы увидеть изменение в тоне заливки. С элементами различных меню тоже все сложно, какие-то из них вероятно развернут дополнительное подменю, а какие-то нет, хотя внешне они идентичны.

Однако, мы быстро привыкаем к интерфейсам, которыми пользуемся регулярно, и уже не путаемся в функционале элементов. Большую роль играет и общая преемственность интерфейсов. Взглянув на страницу выше, мы, скорее всего, сразу поймем, что желтая стрелочка с надписью «Найти» — это не просто декоративный элемент, а кнопка, хотя она совсем не похожа на стандартную HTML-ную кнопку. Так что, в плане предсказуемости и индивидуальности большинство ресурсов пришли к стабильному консенсусу, принятому пользователями.

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

Простой визуальный тест показывает, что анализируя скорость курсора и ее производные можно за определенное количество шагов предсказать направление движения и координаты остановки. Учитывая, что события о движении вызываются с частотой постоянной относительно величины ускорения, скорость при приближении к цели уменьшается. Тем самым можно узнать запланированное пользователем действие заранее, что ведет к уже озвученным преимуществам.

image

Таким образом, проблема включает в себя две задачи: определение будущих координат курсора и определение намерений пользователя (наведение, клик, выделение и так далее). Все эти данные должны быть получены лишь на основе анализа предшествующих значений координат курсора.

image

Первичной задачей является оценка направления движения курсора, нежели предсказание момента остановки, что является более сложной проблемой. Как оценка параметров зашумленной величины, задача вычисления направления движения может быть решена массой известных способов.

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

Другой вариант — использовать рекурсивный алгоритм, например фильтр частиц. Для оценки скорости курсора фильтр создает множество гипотез о текущем значении скорости, также называемых частицами. В начальный момент эти гипотезы абсолютно случайны, но далее по ходу движения, фильтр убирает недостоверные гипотезы и периодически на этапе перераспределения генерирует новые на основе достоверных. Таким образом из множества гипотез в итоге остаются лишь наиболее близкие к истинному значению скорости.

На примере ниже при движении курсора каждой из частиц для визуализации задается значение радиуса прямо пропорциональное ее весу. Таким образом область с наибольшей концентрацией тяжелых частиц характеризует наиболее вероятное направление движения курсора.


Однако, полученного направления движения недостаточно для определения намерений пользователя. При большой плотности элементов интерфейса путь курсора может пролегать поверх множества из них, что приведет к массе ложных срабатываний алгоритма предсказания. Здесь на помощь приходят методы машинного обучения, а именно рекуррентные нейронные сети.

Координаты движения курсора являются последовательностью сильно коррелирующих значений. При замедлении движения разница между координатами соседних по временной шкале положений уменьшаться от события к событию. В начале движения заметна обратная тенденция —координатные интервалы увеличиваются. Вероятно, с приемлемой точностью, данную задачу можно решить и аналитически, исследовав значения производных на разных участках пути и закодировав порог срабатывания, основываясь на поведении этих значений. Но по своей природе координатная последовательность положений курсора выглядит как набор данных, хорошо вписывающийся в принципы работы сетей долгой краткосрочной памяти.

LSTM сети представляют собой специфичную разновидность архитектуры рекуррентных нейронных сетей, приспособленную к обучению долговременным зависимостям. Этому способствует возможность запоминания информации модулями сети на протяжении целого ряда состояний. Таким образом, сетью может быть выявлены признаки основанные, например на том, как давно началось замедление курсора, что этому предшествовало, как изменялась скорость курсора в начале замедления и так далее. Эти признаки характеризуют конкретные паттерны поведения пользователя при определенных действиях, например клике на кнопку.

image

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

image

Обучение LSTM сети можно провести на наборе данных, полученном в процессе анализа поведения пользователя, выполняющего ряд заданий, призванных выявить его особенности при взаимодействии с интерфейсом: нажать на кнопку, навести курсор на ссылку, открыть меню и так далее. Далее приведен пример срабатывания матрицы предиктивных элементов только на основе фильтра частиц, без нейросетевого анализа.

image

Анимация ниже демонстрируют вклад нейронной сети в процесс предсказания поведения пользователя. Ложных срабатываний становится значительно меньше.

image

В целом, задача сводится к балансирования между двумя величинами — периодом времени между действием и его предсказанием и количеством ошибок (ложных срабатываний и пропусков). Два крайних случая — выбрать все элементы на странице (максимальный период предсказания, огромное число ошибок), либо заставить алгоритм срабатывать уже непосредственно при действии пользователя (нулевой период предсказания и отсутствующие ошибки).

image

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

image

В завершение небольшой демонстрационный пример предиктивного поведения HTML элементов, далеко не идеальный, но немного раскрывающий суть.


Конечно, в такого рода задачах критически важно соблюсти баланс между функциональностью и предсказуемостью. Если полученное поведение будет непонятно пользователю, вызванное раздражение сводит на нет все усилия. Сложно говорить о том, возможно ли сделать процесс обучения алгоритма незаметным для пользователя, например, в первые сеансы его общения с интерфейсом страницы, чтобы затем уже, используя обученные алгоритмы, заставить элементы интерфейса вести себя предиктивно. В любом случае дополнительное дообучение будет необходимо из-за индивидуальных особенностей каждого человека и это предмет дополнительных исследований.
Поделиться публикацией

Комментарии 78

    +43
    И сейчас бывает, наведешь случайно курсор куда либо, а там начинает что то открываться, чего мне не нужно. Раздражает.
    А если еще и будет предсказывать мои действия, может вообще оказаться ужас-ужас.
    Наверное я консерватор.
      +15
      Ну вы же наверняка хотите кликнуть на этот яркий красивый баннер...
        +1
        «Ну вот, кликнул — значит, точно хотел» )
        +11
        «желаем в новом вам году
        гореть в аду, гореть в аду»©благодарные пользователи дизайнерам интерфейсов
          +2
          Тут проблема в том, что если ПО новое, то никаких проблем, можно привыкнуть и к самому кривому интерфейсу.
          Но вот если с ПО работают уже несколько лет и многие задачи делаются на автомате, то редизайн интерфейса превращается в ад для пользователя. Клик-клик-клик «запись удалена»… АААА! Тут раньше кнопка была «добавить новую запись»!!!

          ©благодарные пользователи улучшателям дизайнов интерфейсов

          Мой личный список гребанных улучшателей для которых нужен отдельный котел в аду:
          — Создатели нового интерфейса GMAIL
          — Создатели нового интерфейса Skype
          — Создатели нового интерфейса ImhoNet (кстати, отток посетителей после редизайна был такой, что проект после этого умер)
            0
            … а рядом на отдельном вертеле вращаются разработчики интерфейса MS Azure у которых конопочка resize изменяет server size и отправляет сервуак в перезагрузку немедленно, без подтверждений…
              0
              Эта ситуация, когда изменения ради изменений, а не для решения какой то проблемы.
                0
                Мой личный список гребанных улучшателей для которых нужен отдельный котел в аду:

                Skype Skype еще раз Skype!
                Не знаю ни одного человека которому новый скайп стал удобней или понятней.

                зы
                и пожалуйста, подскажите как настроить спелчекер для нового скайпа?
                  0
                  Я перестал пользоваться Skype))))
                0
                Недавно записывал ребенка в детский сад через гос услуги со слабого ноута c 8гб озу. Это треш и угар. Там тоже педиктивный интерфест. Как только начинаешь заполнять поле с паспортными данными интерфейс сразу говорит что надо пройти проверку и заполнить паспортные данные в другой форме и радостно ресует разноцветный болт — это просто пропаганда курения какая-то. Интересно сколько операций выполнил процессор чтобы просто заполнить десяток текстовых полей.
              +24
              Надеюсь на сайтах никогда это не увижу.
                0
                Если я не ошибаюсь, в ВК подобная штука уже давно есть — предсказывает ссылку на которую хотите кликнуть и начинает предзагрузку соответствующей страницы заранее. Чем плохо? А по поводу примеров автора статьи — это всего-лишь примеры, и это совсем не означает что этой штуке нельзя найти удобное применение
                  0
                  Такие вещи гораздо лучше предсказываются по карте кликов, а еще лучше по customer jorney. Грубо говоря голая статистика (если она конечно есть по этому пользователю) без всяких нейронок работает намного лучше.
                +2
                Т.е. теперь менюшки будут выпадать не просто случайно, а еще и так что не починить, потому что чему там сеть научилась никто не знает.

                Если говорить серьезно и отбросить скептицизм, то, теоретически, это может иметь смысл в магазинах, так как сокращает путь до покупки и направляет пользователя. Вопрос в в качестве реализации и здесь я не про точность, а про то, что выпадение меню должно быть ожидаемым пользователем.

                А что по производительности получается? И какой размер нужно догрузить клиенту что бы это работало?
                  +1
                  сокращает путь до покупки
                  А чем оно сокращает? Если пользователь уже решил нажать кнопку «Купить» — то он нажмёт её, и нет разницы произойдёт это через 0.1 секунду, или через 0.15. По-моему это не настолько критичный выигрыш в скорости чтобы его вообще учитывать. А если ещё помнить что ложные срабатывания будут всегда (а глюки интерфейса могут отпугнуть покупателя) — то как бы ещё и в минус не уйти, по конверсии
                    +3
                    А если ещё помнить что ложные срабатывания будут всегда

                    Согласен, но давайте пофантазируем что их нет, потому что иначе мне система вообще кажется не жизнеспособной.

                    А чем оно сокращает?

                    Хм, ну вот такой пример. Есть vsts (это такая эко-система от Microsoft для хранения кода, деплоя ну и не важно). И вот там есть такая кнопка — деплой. И почему-то, когда я ее нажимаю ничего не происходит как минимум пол секунды.

                    Система, предложенная автором, могла бы экономить мне какое-то время, делая предварительный вызов и показывая его результаты уже по клику. Здесь даже ложное срабатывание не так важно, потому что ничего не произойдет до настоящего клика. Но результаты будут быстрее.

                    Аналогично, в магазине, можно наперед что-то подгружать (или начинать подгружать) еще до клика пользователя.

                    Вариант?
                      +1
                      Проще: по клику сразу запускаем прогресс-бар либо просто просто «крутилку». Всё, отклик есть, спокойно ждём.
                        0
                        Ну то понятно, не знаю почему это не сделано кстати. Но мы же тут пытаемся придумать разумное применение идеи.
                    0
                    Это лишь эксперимент, но порядок величин примерно такой: полная сборка 40KB, из них 35KB — нейронная сеть с обвязкой для использования.

                    На практике, конечно, осуществимой идея выглядит с трудом. Но в плане ожидаемости для пользователя в каких-то узких конкретных случаях компании с огромной статистикой, вероятно, могли бы прийти к решению. Повлияют ли такие ухищрения на бизнес того же магазина — тоже вопрос, но другой.
                      0

                      В таком случае люди, отличающиеся от средней выборки, вообще не смогут воспользоваться сайтом. Сеть будет предсказывать так, как должен поступить в среднем в такой ситуации. Если ты не знаешь, как двигает мышкой средний пользователь, можешь вообще не добраться до нужного элемента — всплывающие подменю не пустят. Например, на первой картинке как добраться до области под выпадающим меню? Слева это возможно, справа — может не выйти.

                        0
                        Это уже проблема обучения. Если это большой сервис с постоянными пользователями, паттерны поведения каждого конкретного человека можно получить поизучав его действия в течение какого-то времени, а затем, дообучив алгоритм, уже показывать ему «предиктивный» вариант интерфейса. Нуу, в теории.
                          0
                          И экспириенс, который он получил ранее станет играть с ним злую шутку. Вчера ему надо было нажимать эту кнопочку а сегодня он просто мимо провёл указатель.
                            0
                            Вполне возможный сценарий развития событий, да.
                            Но опять же, статистика подскажет, что система работает неверно, если кнопку «подсветили», а пользователь не нажал. Маячок, что нужно до(пере)обучить.
                          0
                          Сеть быстро обучится, за сколько попыток она сможет приблизить такого индивидума к среднему пользователю.
                          +2
                          Та да, это скорее способ нехило бесить пользователей. Главное что бы вашу идею не подхватили некоторые товарищи.
                            0

                            Способ нехило отсеивать неугодных в воронку)

                          +3
                          так как сокращает путь до покупки

                          Нужно не движение мыши предсказывать, а желаемый товар. Сразу его показать на экране, добавить в корзину, снять денег с карты и доставить. Если сеть предсказала неверно — не страшно, клиент оформит возврат.

                            0
                            Можно сделать какие-то предварительные действия (дернуть бек, что-то вытащить, что-то подготовить) и когда пользователь нажмет купить — все будет для него быстрее. А не нажмет — ну и ладно.
                              +1
                              Предиктивно доставлять содержимое корзины курьером до подъезда, а в случае, если он не закажет – разворачиваться и уезжать?
                                0
                                Это же (ну, почти, даже на сайт заходить и в корзину класть ничего не нужно, сразу доставляют) уже есть: ходят «представители чего-то» и вещают: «Сегодня у нас акция, вы платите только за доставку...».
                          +2
                          Может он ещё за меня и порно смотреть будет???
                          Если серьёзно — не нужно. И так бесит кнопка «наверх» которую подхватили все кому не лень. Спасибо хватает.
                            0
                            Особенно когда эта кнопка в браузере и без того есть.
                              0
                              ?? Подскажите, что за кнопка такая?
                                0

                                например, в Я.браузере можно было кликнуть по самой вкладке, и он проматывал страницу вверх. По второму клику — обратно вниз.

                                  0
                                  Ну в хроме такого нет.

                                  Вообще, я так понимаю, в любом браузере можно нажать Home и он отмотает страницу на самый верх, но это не будет работать, если фокус на каком-нибудь текстовом поле.
                                  Также, если рука на мышке, то до клавы тянуться надо. Проще нажать на кнопку scroll to top. Короче, я не вижу в этой кнопке ничего плохого.
                                    0
                                    Рука на мыши буквально означает, что массовый веб очень плохо адаптирован для работы с клавиатурой.
                                      0
                                      Возможно, с этим я не спорю. Я говорю про то, что есть много пользователей, которые вообще шорткатами не пользуются — для них такую кнопку и делают.
                                  0
                                  Home на клавиатуре.
                                0
                                Кнопка «Наверх» оч выручает когда с ноутбуком в кресле или на диване. Ибо чтобы подняться нужно расфокусироваться тачпадом (и при этом умудриться не купить или не перейти куда-нибудь), найти в полумраке Home или скролить/накликивать прокрутку (не у всех тачпад может в скролл). А тут навел и жмакнул.
                                +2
                                это нужно не в вебдизайне/интерфейсе, а в шутерах!
                                  0
                                  Это нужно внедрять в повседневной жизни. В системе слива унитаза, в регулировке температуры душа, на ручки газовой плиты. Дизайнеру — дизайнерский быт!
                                    +1
                                    А я поддержу автора.

                                    В опервых очень интересная идея и хороший proof of concept.

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

                                    В общем спасибо за статью и демо! Respect!
                                      0
                                      Пожалуй я тоже поддержу, но осторожно…
                                      С одной стороны, конечно, вовсе не хочется чтобы менюшки выпадали как хочется _им_.
                                      С другой, если алгоритм будет ненавязчивым, аккуратным и проработанным, (а главное с возможностью его отключить кому мешает), то почему бы и нет?
                                        0
                                        И опять нейронные сети там, где достаточно основ геометрии и помазать конечным автоматом. Есть приложения типо Google App Maker и прочие конструкторы, там «предсказывать» какие элементы нужны пользователю, может пригодится, но и там нейронные сети не нужны.
                                          0
                                          Идея интересная, но…
                                          Из всего перечисленного перечисленного реальный интерес представляет только наведение.
                                          Когда Вы ничего не сделали и ничего не выделилось — вам пофиг.
                                          Когда Вы ничего не сделали и что-то зачем-то выделилось — это раздражает.
                                          Можете пособирать кейсы пользователей сайтов с поломанным user-select. Особенно если Вы с телефона сидите. Нажал на кнопку — выделился текст кнопки. Тапнул на экран чтобы снять выделение — сработала ссылка и вы перешли на другую страницу. После N-ного раза возникает неконтролируемое желание разбить девайс об голову ответственного за верстку этого чуда. Случайные клики из той же оперы.

                                          А для расчета предполагаемой точки остановки курсора использовать нейросеть — перебор.
                                            0
                                            Да, согласен — ошибку первого рода надо держать в районе нуля и потом уже пытаться уменьшить пропуски. Не сработало — не так страшно, как лишнее событие.

                                            А для расчета предполагаемой точки остановки курсора использовать нейросеть — перебор.

                                            Скорее всего можно сделать это аналитически, да, нейросеть как самый быстрый в реализации способ — собрал статистику, обучил и вперед.
                                              0
                                              Где-то видел похожую задачу с диаграммами Вороного.
                                          0
                                          имхо идея оч классная! Но как многие тут пишут, иногда предсказание некорректное, отчего появляется раздражение. Возможно станет легче если отмену предсказанного действия делать быстрее. Например если в демо водить под меню курсором по горизонтали, пункты меню постоянно срабатывают, а потом висят довольно долго. Может быть стоит проверять предсказание при остановке курсора.

                                          А вообще, в продолжении идеи, если девайсы будут оснащены трекерами взгляда, ну хотя бы примерно, то задача решится гораздо проще и точнее. Почему вообще их до сих пор никто не сделал?
                                            –1
                                            Спасибо за мысль про отмену, согласен с вами.

                                            Почему вообще их до сих пор никто не сделал?

                                            Страшно же, все на тебя смотрят, и телефон смотрит, и лэптоп.
                                            0

                                            а сколько это энергии кушать будет например у меня в телефоне? вычисления вот эти вот все… даже если я зашел просто на посмотреть?

                                              0
                                              С тач-интерфейсами именно данные методы неприменимы, движения пальца вне контакта с экраном не отследишь. А для лэптопов/десктопов на первый взгляд выглядит не обременительно, по крайней мере тестовая реализация.
                                              0
                                              Идея интересная, но только для дизайнера интерфейсов и разработчиков. Для бизнеса, не думаю, время на ресерч, на разработку на обучение нейронной сети, за это кто-то должен платить, а в конечном счете выхлопа с этого ноль. И пользовательский экспириенс, на мой взгляд не предсказуем, кому то менюшки будут открыватся чуть заранее, кнопочки подсвечиваться только при мысли о них, а кому то наоборот, выпадающие элементы не вовремя закроют контент интересный пользователю, что то не то выделится, что то не то подсветится. Вообщем такое. А статья тем не менее интересная, спасибо автору.
                                                0
                                                Как вариант использовать такое для оптимизации. Типо делать прелоад действия, но для UI, идея ок но сложно сделать нормально и выхлоп сомнительный
                                                  +1
                                                  А если под дропдауном есть какой-то контент, на который пользователь хотел нажать, поэтому и подвел мышку? А вы ему сразу дропдаун показываете?
                                                    0
                                                    С учетом базовой гигиены интерфейсов между между кнопкой и дропдауном должно быть определенное пространство. В идеале этой дистанции должно хватать чтобы разделить зоны, где пользователь собирается остановить курсор. В любом случае алгоритм предсказания должен это учитывать при настройке параметров того же фильтра частиц или скользящего среднего.
                                                      +1
                                                      С учетом базовой гигиены интерфейсов между между кнопкой и дропдауном должно быть определенное пространство.

                                                      Тогда зачем вообще дропдаун, если можно просто вывести сразу весь контент и не сворачивать?

                                                    +1
                                                    Вот был ютуб. Нормальный, вроде, сервис — смотришь видео, рядом другие видео по теме, по завершению просмотра текущего можно либо выбрать следующее, либо подождать пока автоплей вытянет первое из списка. Хочешь слушать русский рок — пожалуйста, открываешь одну песню, слушаешь одну за другой песню. Надоело, решил переключиться на американскую попсу — пожалуйста, будет тебе теперь список попсы. Решил расслабиться и посмотреть пару роликов «РЖАКА-АБАССАКА-ЛУЧШИЕ ФЕЙЛЫ 2014» — пожалуйста, посмотри, ктож тебе что-то не так скажет?

                                                    Но! Такой подход же не современный! Нужна нейросеть! И чтоб обучалась на пользователе!!! Сказано — сделано. Внедрили сеть, покрутили параметры, посмотрели, наверняка, что показатели средних просмотров выросли, довольные обмыли премию. А вот для простого прослушивания музыки сервисом стало совершенно невозможно пользоваться, так кого это волнует? Если ты пару раз послушал одного исполнителя, то тебе его под всеми видео и будут советовать. Решил послушать что-то другое? Хренушки — что бы ты терперь не выбрал, максимум через одно видео заботливая нейросеть вернет тебя на старого исполнителя: «Ты же так любишь эти три песни? Давай я тебе их по кругу весь день, каждый день, в любой точке мира и под любое настроение крутить буду!». Зато вот случайный ролик, в который ты случайно зайдешь один раз, дизлайкнешь и закроешь на первой минуте будет всплывать в рекомендациях ещё пару недель — вдруг все-таки передумаешь и решишь досмотреть? Пытаюсь сейчас свалить куда-нибудь ещё, пока не возненавидел окончательно всю музыку, что когда-либо слушал.

                                                    Короче, я это к чему? Хватит пихать нейросети везде, где не попадя!

                                                    Не надо, пожалуйста, прикручивать нейросеть чтоб нагружать сайт ещё больше лишь бы только окошки начали распахиваться самостоятельно, потому что электронному господину показалось, что вы будете тыкать в эту кнопочку! Позвольте, блин, юзерам пользоваться сервисами так, как им надо, оставьте нейросети для баннеров банеров рекламы, и прочей мишуры, которая хотя бы не поломает юзер экспириенц в случае чего.
                                                      +1
                                                      Можно вспомнить подобную же проблему с контекстной рекламой. Когда нибудь мы научимся рекламировать крем для обуви для только что купившего ботинки пользователя, а пока получай горы ботинок, причем максимально похожих на уже купленные.

                                                      Вполне вероятно задачу анализа поведения по движению курсора можно решить и аналитическими методами. Но это уже совсем другой уровень и исследований и реализации. В этом смысле рекурсивная нейросеть здесь — самый быстрый в реализации способ. Естественно с учетом использования готовой библиотеки.
                                                        0
                                                        Я вот не пойму у ютьюба редизайн окна уведомлений. Раньше было удобно — список сообщений, которые ответили тебе на комментарий под видео. Открываешь — показывается весь список комментариев уже промотанный до ответа, и с открытым полем для ответа на него. Удобно.

                                                        Что сейчас? В ветке комментариев в которой ты на что-то ответил кто-то написал абсолютно любой комментарий — показывается уведомление. При нажатии на это уведомление ты переходишь на страницу с видео, которое сразу начинает воспроизводиться. Ты кликаешь на него, чтобы остановить, скрипт подгружается и кликает на него ещё раз (видео продолжает воспроизводиться) и опускает тебя до твоей ветки комментариев. А там — комментарий который к тебе вообще не относится.

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

                                                        Проблема не в нейросетях.
                                                        +1
                                                        Честно говоря вообще плохая идея. Почему? Потому что сеть говорит что делать. Вдруг я захочу открыть на сайте другую вкладку, но не смогу, потому что в каком то интернет магазине после того как добавил в корзину чайник, 70% пользователей пошли искать памперсы и мне будет открывать выпадушечку с марками памперсов, но я хочу купить телефон и тд. В итоге мой юзер экспириенс превратится в борьбу с интерфейсом сайта, который надо научить под меня еще. Зачем это надо?
                                                          0
                                                          Все так, сложно спорить, видится разве что два аргумента в защиту. С бОльшей вероятностью, вы окажетесь в числе 70% и останетесь довольны такой отзывчивостью. Ну и, конечно, инициатива магазина не должна быть такой навязчивой, чтобы открывать выпадающее меню в области фокуса внимания, а несколько небольших ссылок внизу экрана, например, уже не так страшны, даже если промазали с предсказанием.

                                                          В любом случае это уже совсем другая задача анализа тематики, а не механики движений.
                                                            0
                                                            Соглашусь. И думаю что в будущем подобные решения, может частично, будут внедряться. Уже есть модуль предсказатель для предзагрузки страниц, который пытается предсказать какую страницу пользователь откроет. Guess JS.
                                                            Первый коммент писал утром, по этому только критика)) Спасибо за статью и интересное исследование!
                                                          +1
                                                          Идея прикольная!

                                                          На мобилках, наверное, не особо нужна — там можно и нужно всё упрощать, а не доводить до такого состояния, что нужно предсказывать дальнейшие действия. Но это вопросы дизайна.

                                                          А вот на десктопах было бы круто. Можно было бы использовать совместно с meta preload/prefetch. Например, в фоне уже начала бы грузиться страница, прежде чем пользователь нажал на кнопку/ссылку перехода. Тем самым снимается вопрос о раздражении пользователя — даже если произошёл промах предсказания, пользователю это ничего не стоит, кроме траффика. А возможный профит от более быстрой загрузки, думаю, все понимают.
                                                            0
                                                            Самое интересное начнется, когда под меню будет какаято ссылка.
                                                            и ее уже нажать будет невозможно НИКОДГА
                                                              0
                                                              Теоретически (в идеальном мире разработчиков интерфейсов) эта ссылка должна «полуактивироваться» раньше, чем элемент меню, но в реальном мире что-то пойдёт не так (у неё не будет такого обработчика или область срабатывания окажется перекрыта «более важной» областью от меню).
                                                              Или можно очень медленно перемещать мышь.
                                                                0
                                                                Сайтов с такой фичей и сейчас полно
                                                              +1
                                                              Идея замечательная – только отклонились в сторону выполнения за пользователя действий, который он сам бы хотел выполнить, например открытие меню. А чего пользователь точно не хочет делать – ждать. Поэтому я бы имея такой арсенал в руке сделал бы предикативную подгрузку компонентов и данных в интерфейсы – только повёл рукой в сторону селекта, а он уже сам данные внутрь себя подгрузил. Не к селекту вёл – ничего страшного, без этой технологии он либо не загрузился бы вообще, либо всё равно бы загрузил данные, которые не нужны. Google научили свой AMP рендерить только данные, которые видны на экране – удобно и производительно. Так почему бы не пойти дальше и не ограничиваться только информацией о видимой области, почему бы не подружать и рендерить элементы страницы, основываясь на нейросетях?
                                                                0
                                                                В образовательных целях интересно, но в практическом применении я вижу только одну перспективу. Перспективу спалить себе пятую точку от подобного функционала на сайтах. Далеко ходить не надо — возьмём ВК. Я прям вижу как веду курсор в новостях к полю написания новой новости, а мне поверх него открывается музыка, например. А учитывая расстояние между шапкой поля ввода и мою скорость движения мыши — думаю, мне будет не так важно, откроется у меня та-же музыка (в случае если я всё-же хочу открыть её) спустя 0.1 или 0.099999999999
                                                                  0
                                                                  Лучше бы задумались о том, чтобы сайты работали в нормальных текстовых браузерах (или хотя бы браузерах без JS)
                                                                    0
                                                                    и на работу ездить на конях!
                                                                      0
                                                                      Кто-то еще пользуется текстовыми браузерами? Siriously? O_o
                                                                        0
                                                                        Siriously

                                                                        У вас в вашем не-текстовом браузере спеллчекер уже не работает? Seriously?
                                                                        А по теме — таки да, текстовый браузер гораздо удобнее графического в 40-50% случаев даже сейчас, в эпоху JS и CSS, ибо нормальная работа с клавиатуры, околонулевое потребление памяти и возможность делать «дизайн» (конечно, условный) всех страниц одинаковым и красивым.
                                                                      0
                                                                      Ничего себе консерваторы в комментариях. Мне идея того, что менюшки будут реагировать на движение, а не только положение, представляется очень полезной. У меня на телефоне стоит клавиатура у которой слова набираются без отрыва пальца. Если интерфейс будет на столько отзывчив, что можно будет обучится выбирать один из тысячи пунктов жестом, открытием подменю без клика, без замирания, и даже немножко заранее, это здорово.
                                                                        0
                                                                        На заре интернета сайты не искали ...

                                                                        ах как же было хорошо, клик на колёсико это новое окно, простой клик — переход, а сейчас жмешь кнопку не работает, жмешь другую кнопку… а тут js скрипт криворукий писал..., и так постоянно, даже на популярных сайтах нет единой логики, даже habr.com грешит, что сильно расстраивает…
                                                                          0
                                                                          По самому первому видео. Если пользователь часто выполняет такое действие (т.е. выбирает этот пункт меню), то навернео имеет смысл перемстить его на верхни уровень. Так будет удобнее пользователю.
                                                                            0
                                                                            Не очень понятно, зачем автор использует фильтр частиц в линейной задаче предсказания. Здесь отлично будет работать фильтр Калмана. При этом он будет точнее и вычислительно эффективнее.
                                                                            В целом идея интересная, но на мой взгляд лучше ее использовать не для интерфейса, а для скрытых от пользователя действиях, как выше уже говорили.
                                                                              0
                                                                              То есть пользователей можно будет идентифицировать по паттернам использования интерфейсов, класс.
                                                                                0
                                                                                тут есть над чем подумать

                                                                                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                                Самое читаемое