Добавить в корзинуПозвонить
Найти в Дзене

Подарки от иконки «Поток по треку»

Программисты Яндекса у меня всегда ассоциируются с самой красивой картинкой корейского дорамопрома: Нам Джу Хек в роли Хабэка в фильме «Невеста речного Бога» иллюстрация отсюда В реальной жизни они другие, но результаты работы и послевкусие после использования их программ примерно схожи... идеально все, вплоть до коряги на заднем плане. На Яндекс.Музыке есть кнопка «Поток.По треку» – это высший пилотаж работы программистов. В основе поисковых алгоритмов лежит математическая задача «Распознавания образов», породившая целый раздел информатики и смежных дисциплин, развивающий основы и методы классификации и идентификации предметов, явлений, процессов, сигналов, ситуаций и т. п. объектов, которые характеризуются конечным набором некоторых свойств и признаков. Простым языком. Каждый из нас, каждый день занимается классификацией, расставляя чистую посуду – стаканы к стаканам, тарелки к тарелкам, раскладывая одежду в шкафу, определяем нужный номер автобуса, выбираем фильм, книгу или телеперед

Программисты Яндекса у меня всегда ассоциируются с самой красивой картинкой корейского дорамопрома: Нам Джу Хек в роли Хабэка в фильме «Невеста речного Бога»

Кадр из фильма «Невеста речного Бога»
Кадр из фильма «Невеста речного Бога»

иллюстрация отсюда

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

На Яндекс.Музыке есть кнопка «Поток.По треку» – это высший пилотаж работы программистов.

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

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

В одних случаях это сделать просто, например, тарелки из одного материала легко измерить и задать границы – до 15 сантиметров – блюдца, 15-20 – десертные, 20-25 – столовые, больше 25 – сервировочные. С чашками и стаканами будет посложнее, здесь понадобится больше критериев высота, радиус чашки, их пропорции и материал (стекло, керамика, пластик). Уже для чашек/стаканов видно как растет количество групп, по которым можно распределить предметы.

Сейчас самый сложный момент признания...

Когда мы определяем группы, в любом случае, понимая, что мы делаем или не понимая, мы:

  • задаем метрику;
  • на основе метрики создаем классы или группы.

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

d (x,y) = 0 тогда и только тогда, когда x = y (аксиома тождества).

d (x,y) = d (y,x) (аксиома симметрии).

d (x,z) меньше или равно d (x,y) + d (y,z) (аксиома треугольника или неравенство треугольника).

При этом:

  • множество X называется подлежащим множеством метрического пространства.
  • элементы множества X называются точками метрического пространства.
  • функция d называется метрикой.

Бросать читать рано... это не так сложно как кажется.

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

Метрика – это правило, по которому можно определить насколько близки/схожи объекты.

Например, степень родства – количество схожих генов, для детей – 1/2 отцовских, 1/2 материнских, для внуков уже – 1/4.

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

Есть два способа формирования групп:

1) традиционный – экспертная оценка;
2) современный – машинная обработка данных, искусственный интеллект, нейросети и т.д.

Сейчас на Яндекс-Музыке лучшие в мире алгоритмы кластерного анализа звука

И момент трепетного признания.

Чего вдруг мне это пришло в голову? Летом 2022 года до дыр в плей-листе и опухших ушей слушала Fujii Kaze, что мне там нравилось:

  • простой танцевальный ритм;
  • запоминающаяся мелодия;
  • сложная аранжировка музыки;
  • низкий голос.

Я чуть не присела, когда в плей-листе дня в Яндекс-Музыке выпадает Anthony Lazaro «Moody Wind», кто такой? откуда? Оказалось, исполнитель одной песни, но он находится в одном кластере с Fujii Kaze.

А дальше понеслась коллекция: Rudy Mancuso «Lento»,

Jason Mraz «Bella Luna».

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

NB! В основе алгоритмов лежат физические величины (частота звука), а не семантическое описание (язык, жанр, время выхода трека и проч.)

Далее цитата отсюда

К физическим свойствам относятся характеристики источника звука, их можно назвать объективными параметрами.
Важной характеристикой является форма звуковых колебаний. Самой простой формой обладают гармонические колебания, их можно изобразить в виде синусоиды. Колебания имеют следующие характеристики – амплитуда, длина волны и частота.
Частота звука является физической величиной, которая равна отношению количества колебаний ко времени, когда они были зафиксированы. Этот показатель позволяет увидеть, какое количество колебания произошло за ту или иную единицу времени.
Длиной волны называют расстояние между двумя точками, в которых колебание принимает одинаковое значение. Измерение волны осуществляется в метрах. Амплитуда представляет собой половину разницы между наиболее высоким и низким значением плотности. Этот показатель легко найти на графике, он будет представлять расстояние от горизонтальной оси графика до самой отдалённой от неё точки.
Ещё одной характеристикой звуковых волн становится период звуковых колебаний. Он показывает отношение времени полных колебаний к их числу, в результате можно узнать, сколько времени потребуется для совершения одного колебания.

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

Пример волновой формы стереозаписи в аудиоредакторе
Пример волновой формы стереозаписи в аудиоредакторе

иллюстрация отсюда

Видно, что на все физические характеристики (амплитуда, длина волны и частота) можно задать метрики. ... и они это сделали!

Характеристики звуковых волн
Характеристики звуковых волн

(иллюстрация отсюда)

А теперь представьте, какое количество обращений происходит в каждый момент времени к серверам с музыкой? Много, очень много, хотелось бы приложить цифры, но не нашла. Эти обращения успевают обработать не заметно для пользователя. Что может увеличить скорость выдачи нужных треков? Предварительная обработка в момент размещения музыкальной записи на ресурсе, чем больше треков, тем точнее классификация, но вместе с тем увеличивается количество кластеров. Один массив данных порождает другой массив данных.

Разместили аудиозапись – разметили – поместили в кластер – настроили кластер. Пользователь выбрал трек из кластера, следующий трек в плейлисте выбирается оттуда же. Филигранная работа!

Ну, как-то так… Восхищение, наверное, тоже можно измерить, но я пока не знаю как :-)