Здравствуйте, уважаемые читатели!
В настоящее время потоковое аудио прочно вошло в нашу жизнь. Всех стримингов, наверное, и не пересчитаешь. Только сразу на вскидку приходят на ум такие сервисы, как Spotify, Tidel, Apple Music, Youtube Music, Shazam, VK Music, Сбер Звук, ОК и ряд других. Лично я пользуюсь сервисом потокового аудио ЯндексМузыка. Мы сегодня не будем говорить о техническом качестве аудиоконтента. Об этом можно спорить очень долго и не прийти к общему знаменателю. Тем не менее, это достаточно удобный сервис, который позволяет просто включить музыку и заняться работой, а не подбором треков или переключением физических носителей.
Лично я для себя решил, что мне не чужды все музыкальные носители, которые получили широкое распространение. Из физических носителей я использую виниловые пластинки, компакт-диски, аудиокассеты и катушки с магнитной лентой. Как говорится, полный боекомплект бойца за физический носитель.
Но и файловые форматы mp3, Hi-Res мне тоже не чужды. И напоследок, всё это сдабривается изрядной порцией музыки с потокового сервиса ЯндексМузыка.
Как я сказал, мы не будем обсуждать технические характеристики сервисов потокового аудио. Хотя, многие треки вполне хорошего качества, особенно современные релизы.
Сегодня мы будем говорить именно о музыке как таковой. Во-первых, далеко не вся музыка есть на всех сервисах потокового аудио. Многие альбомы тех же техно-групп из 1990-х порой уже размещены на том же сервисе ЯндексМузыка не в оригинальном виде, а в виде переиздания. Да и музыка 1980-х порой тоже уже представлена переизданиями и ремастерами. Не говоря уже о том, что некоторой музыки попросту нет на конкретно этом сервисе ЯндексМузыка.
Вот Вам конкретный пример: известный исполнитель из 1990-х DJ Bobo. Его первый альбом Dance with Me вышел в далеком 1993 году, но на сервисе ЯндексМузыка самый ранний альбом этого исполнителя представлен изданием Just For You 1995 года. Соответственно, альбом There is A Party 1994 года тоже отсутствует.
Можно посмотреть раннюю дискографию DJ Bobo, например, на сайте discogs.com
Совсем иная картина на сервисе ЯндексМузыка.
Ниже информация по оригинальному изданию альбома Dance with Me 1993 года
Трек-лист оригинального издания:
Intro 0:45
Somebody Dance With Me 3:33
Take Control..... 4:30
Everybody 3:55
Keep On Dancing 3:35
I Want Your Body 4:54
Uh Uh 4:25
Let's Groove On 3:03
Somebody Dance With Me (Italian Mix) 5:23
Music 4:37
Move Your Feet 3:47
Keep On Dancing (12" New Fashion Mix) 6:09
Somebody Dance With Me (DMC Remix) 3:59
Bobo ID "1" 0:11
Bobo ID "2" 0:06
Если внимательно изучить страницу DJ Bobo на сервисе ЯндексМузыка, то мы можем обнаружить релиз Dance with Me с датой выхода 2008 года.
Причем трек-лист 2008 года сильно отличается от оригинального издания 1993 года.
Take Control 5:58
Keep On Dancing! 3:37
Everybody 3:56
Let's Groove On 3:03
Uh Uh 4:25
I Want Your Body 4:54
Take Control Remix 6:20
Music 4:37
Keep On Dancing! New Fashion Mix 3:03
Move Your Feet 3:48
Megamix 3:22
Возможно, у Вас уже возник вопрос – а где же персональные рекомендации? Причем здесь релизы одного альбома разной даты выхода?
Всё по порядку.
Как я уже сказал в названии статьи, речь пойдет о персональных рекомендациях от ЯндексМузыки. Каким образом работают рекомендации от других сервисов, я понятия не имею.
Ясно одно, что скорее всего все эти программные инструменты используют технологии нейронных сетей. Что это?
Это один из видов так называемого искусственного интеллекта. Наверняка, многие слышали об этом, но точно не знают – а что же это такое? А это попросту компьютерная программа. Да, порой сложная, но всего лишь компьютерная программа, написанная человеком.
Надо отметить, что первые разработки в области искусственного интеллекта появились после рождения первого компьютера в 1940-х годах. Речь идет о компьютере Robinson, который использовался для расшифровки военных переговоров немцев, зашифрованных с помощью машины Enigma. 1950-ые годы считаются периодом рождения искусственного интеллекта, когда Алан Тьюринг предложил специальный тест, предназначенный для того, чтобы распознать разумность машины. Этот тест предполагал, что один или несколько людей должны обращаться с вопросами к двум тайным собеседникам и на основании ответов определить, кто является человеком, а кто машиной. Предполагалось, что машина разумна, если не удавалось ее разоблачить [1]. В последующие десятилетия технологии искусственного переживали как спад, так и подъем.
Так вот одним из направлений развития искусственного интеллекта стали искусственные нейронные сети. Прототипом для их создания явились данные об устройстве человеческого мозга [2]. Мозг состоит из нейронов, которые соединены между собой. Если сильно упростить вопрос, то работа мозга представляет следующее: внешний слой нейронной сети передает информацию от сенсоров из внешней среды. Средний слой обрабатывает эти импульсы, а выходной слой сети выдает отклик во внешнюю среду [1]. С помощью алгоритма обучения каждый нейрон получает определенный вес связи. Более подробно о математических и программистских нюансах реализации нейронных сетей можно почитать в источниках [1],[2].
На данный момент понимать достаточно то, что искусственная нейронная сеть реализуется на компьютере с помощью языка программирования. Вы можете использовать будь-то С++, будь-то Delphi или вообще библиотеки подпрограмм на Python.
На вход искусственной нейронной сети поступают определенные данные. Сеть анализирует их и выдает ответ. Надо полагать, что в сервисах потокового аудио информация о прослушанных Вами треках поступает в сеть и используется для обучения искусственной нейронной сети. А затем сеть “натравливают” на массив треков из базы сервиса и она подбирает Вам схожие треки для прослушивания.
Хотя в принципе для этих же целей могут быть использованы и другие технологии искусственного интеллекта, а именно, алгоритмы классификации и кластеризации. В данном случае все треки, грубо говоря, делятся на группы или кластеры с похожими характеристиками с использованием определенных метрик (мер близости объектов) [3]. Для этого вводится определенное пространство признаков. Например, самое простейшее: год релиза, стиль, язык. И на основе анализа этой информации уже происходит “рекомендация конкретного трека из кластера”. Надо сказать, что нам с коллегами приходилось использовать алгоритмы кластеризации для решения задач оценки лесной пожарной опасности (на примере данных грозовой активности [4] и функционирования железнодорожной сети [5]).
Доподлинно я не знаю какие алгоритмы используются сервисом ЯндексМузыка для персональных рекомендаций, но не сильно ошибусь, если это искусственные нейронные сети или алгоритмы классификации и кластеризации.
Немного представлю свой опыт. Надо сказать, что первое время алгоритм действительно рекомендовал мне музыку, которую я предпочитаю слушать. Причем я ему активно помогал обучаться, ставя лайки на те треки, что мне нравятся.
В какой-то момент он стал ошибаться выдавая мне современные треки, но они не “бились” с той музыкой, что я предпочитаю. А я предпочитаю диско 1980-х и техно 1990-х.
Повторюсь – и искусственные нейронные сети, и алгоритмы кластеризации – это всего лишь компьютерные программы, написанные человеком. Что в них заложено, то они и выдают. Даже если это сильно похоже на реальный мыслительный процесс.
И вот тут я бы хотел вернуться к тому с чего начал. На ЯндексМузыке нет многих оригинальных релизов исполнителей и групп, что я слушаю. А есть гораздо более поздние переиздания и ремастеры. И надо полагать, что сей факт иногда вводит “искусственный интеллект” в когнитивный диссонанс и он начинает рекомендовать существенно новые музыкальные треки и порой сильно промахивается. Вероятно параметр “год релиза” имеет высокий весовой коэффициент в этой программе. Хотя, иногда он и справляется с задачей подбросить мне интересную новинку.
Последнее же время (несколько месяцев, около года) алгоритм рекомендаций меня вообще расстраивает. Такое впечатление, что он напрочь игнорирует мою подборку музыки в коллекции “Нравится”.
К примеру, у меня в этой коллекции есть один трек электронной музыки, достаточно современный, но он ни разу мне его не рекомендовал. Я его периодически принудительно ставлю на воспроизведение, но это ровным счетом ничего не меняет.
И таких треков масса.
Например, нет практически песен группы Сборная Союза. У них много интересной музыки и она есть в подборке "Нравится".
Вместо этого, алгоритм меня пытается пичкать более современной музыкой. Причем, это достаточно скудный набор треков, который немного варьируется день ото дня.
К примеру, следующий трек алгоритм мне последние недели чуть ли не ежедневно пытается подбросить.
Даже музыки из моей подборки "Нравится" минимум. К примеру, мне нравится творчество группы Bad Boys Blue. у них не один десяток песен, но алгоритм мне упорно включает практически одну и туже песню.
А в основной массе алгоритм мне рекомендует музыку приемлемого мне стиля, но явно не мои любимые треки и, как я уже написал, очень скудный репертуар.
Следует отметить, что программист точно знает какой набор данных поступает на вход искусственной нейронной сети или какие метрики используются при формировании кластеров с информацией о треках. И терзают меня смутные сомнения, что сотрудники сервиса вмешиваются в процесс периодического обучения алгоритма искусственной нейронной сети или “подправляют” метрику или даже сами кластеры, чтобы в ротацию попадали только определенные треки. У меня нет доказательств, но я же тоже анализирую, какую музыку мне подкидывает сервис.
Если по первому времени для работы за компьютером достаточно было запустить на воспроизведение какой-либо трек и далее алгоритм сам справлялся с подбором музыки. Работать можно было часами, не отвлекаясь на музыку. То в течение последнего года такое просто невозможно – день послушаешь, два, а на третий уже не очень-то хочется это слушать. Причем, принудительное воспроизведение музыки, которую я сам выбираю, не помогает. Я уже стал вновь пользоваться архивами mp3 музыки, чтобы разнообразить фоновую музыку.
В общем, искусственный интеллект ведет меня куда-то не туда (точнее пытается).
А у Вас есть те же проблемы с алгоритмами персональных рекомендаций?
Литература
1. Джонс М.Т. Программирование искусственного интеллекта в приложениях. М: ДМК Пресс, 2006. 312 С.
2. Тадеусевич Р., Боровик Б., Гончаж Т., Леппер Б. Элементарное введение в технологию нейронных сетей с примерами программ. М: Горячая линия – Телеком, 2011. 408 С.
3. Мандель И.Д. Кластерный анализ. М: Финансы и Статистика, 1988. 176 С.
4. Baranovskiy N., Krechetova S., Belikova M., Perelygin A. WWLLN Data Cluster Analysis Methods for Lightning-Caused Forest Fires Monitoring // International Journal of Electrical and Computer Engineering, 2016, Vol. 6, No. 6, pp. 3112~3120
5. Belikova M.Y., Baranovskiy N.V., Karanin A.V., Bazarov A.V., Sychev R.S., Glebova A.V. Analysis of Spatial Distribution Processes for Forest Fires Near the Railway Infrastructure Using Clustering: Case Study // International Journal on Engineering Applications, 2022, 10(6), pp. 411–425.
На сегодня всё!
До встреч на волнах интернета!