Капитан, который не слушал всех одинаково
Катер трясёт на волне, сумерки липнут к стеклу рубки. В рации вперемешку голоса: кто-то видел бревно, кто-то заметил огонёк, кто-то болтает про ветер. Капитан крутит ручки громкости, одним прибавляет, другим убавляет, по одним и тем же правилам.
Так бывает не только на воде. Любая сеть связей похожа на эту рацию: контакты в телефоне, страницы со ссылками, белки, которые влияют друг на друга. Раньше часто делали просто, слушали всех соседей одинаково, или судили только по тому, сколько их рядом.
В 2018 придумали способ, где каждый узел слушает только тех, с кем реально связан, как катер слышит лишь те лодки, что в зоне связи. Сначала каждый приводит свою короткую карточку к общему виду, чтобы сравнивать. А потом для каждого соседа быстро решает, насколько важен именно этот голос.
Эти оценки превращаются в доли внимания, вместе они дают единое целое, как общий запас громкости. Капитан складывает сообщения соседей, но каждое умножает на свою долю, и получает обновлённую картину. Лодки это узлы, связь это каналы, ручки громкости это внимание. Вывод простой, система учится, кого слушать.
Капитан держит не одну рацию. Несколько каналов слушают параллельно, один цепляется за срочность, другой за похожесть ситуации, третий за расстояние. В середине он держит эти версии рядом, чтобы картинка была богаче. А перед решением усредняет, чтобы один канал не перетянул всё на себя.
И ещё он иногда специально остаётся без части связи, чтобы не привыкнуть к одному громкому соседу. То один канал пропадёт, то другой, и всё равно надо действовать. Так выходит устойчивее, особенно когда точные сведения есть у немногих, а у остальных только обрывки.
На сетях связанных документов такой подход давал небольшую прибавку по точности по сравнению с равным слушанием. На сетях взаимодействующих белков, где попадались совсем новые связи, он держался заметно лучше. Разница была не в том, что голосов стало больше, а в том, что капитан научился взвешивать уже имеющиеся.