ICA и проблема настоящей коктейльной вечеринки

ICA и решение проблемы настоящей коктейльной вечеринки

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

Метафора коктейльной вечеринки (изображение автора)

Независимый анализ компонент (ICA) с тех пор, как он был значительно разработан в 1990-х годах¹, стал широко используемым методом декомпозиции данных и техникой предобработки. ICA – это метод слепого разделения источников (BSS): несколько независимых источников слепо смешиваются, и результирующие смеси сигналов принимаются другим количеством наблюдателей. Методы ICA работают с целью разделения наблюдаемых сигналов и поиска независимых источников путем поиска смены базиса, которая минимизирует взаимную информацию между разделенными компонентами или максимизирует “негауссовость” данных, проектируемых на эти компоненты.

Существует множество учебников по ICA и его применению: этот статья не является еще одним введением в ICA. Вместо этого это комментарий к мотивирующей проблеме, которая практически всегда сопутствует объяснениям ICA.

Похоже, что каждое введение в ICA использует проблему коктейльной вечеринки в качестве иллюстрации проблемы BSS, которую ICA предназначен решать.² Проблема коктейльной вечеринки представляет собой вызывающий и мотивирующий мысленный эксперимент для ICA. Есть только одна крошечная проблема: ICA провалится настоящей коктейльной вечеринке, и причины, по которым он провалится, действительно должны влиять на то, как ICA используется.

ICA и коктейльная вечеринка

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

Проблема BSS формулируется с помощью задачи смешивания, где некоторые независимые источники y смешиваются с наблюдаемыми сигналами x

на протяжении N отсчетов времени. A — это матрица смешивания, и мы индексируем источники и наблюдения с помощью j и i. В нескольких включенных в эту статью уравнениях, я использую сокращенную нотацию суммирования Эйнштейна.

Модуль декомпозиции scikit-learn содержит хорошую реализацию FastICA, которую мы можем использовать для иллюстрации, как это работает в низкоразмерном примере. Мы создадим несколько независимых источников, которые представляют собой синусоиды, сдвинутые в фазе, колеблющиеся на разных частотах, случайно перемешаем их, а затем применим FastICA для попытки разделить их. Мы увидим, что FastICA хорошо восстанавливает исходные сигналы источников (и, следовательно, в физической проблеме, где мы знаем расположение микрофонов, мы могли бы определить направление / положение дикторов).

import numpy as npfrom sklearn.decomposition import FastICAimport matplotlib.pyplot as pltrng = np.random.default_rng(8675309)t = np.linspace(0, 10, 10000)x = np.array([    np.sin(2 * np.pi * t),     np.sin(2 * np.pi / 2 * t + 1),     np.sin(2 * np.pi / 2 * 2 * t + 2)])mixing = rng.uniform(-1, 1, [3, 3])# проверим, что наша случайно сгенерированная матрица смешивания обратимаassert np.linalg.matrix_rank(mixing) == 3демиксинг_истинный = np.linalg.inv(mixing)y = np.matmul(mixing, x)fica = FastICA(3)z = fica.fit_transform(np.transpose(y))z = np.transpose(z)z /= np.reshape(np.max(z, 1), (3, 1))fig, ax = plt.subplots(3, 1, figsize = (8, 5))for ii in range(3):    ax[0].plot(t, x[ii])    ax[1].plot(t, y[ii])    ax[2].plot(t, z[ii])ax[0].set_title("Независимые источники")ax[1].set_title("Независимые сигналы, случайно смешанные линейно")ax[2].set_title("ICA-компоненты (Соответствует только знаку и линейному масштабированию)")plt.tight_layout()
FastICA для мгновенно смешанных сигналов

Давайте перечислим несколько предположений модели коктейльной вечеринки:

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

Проблема BSS «слепая», поэтому отметим, что источники y и матрица смешивания A неизвестны, и мы ищем обобщенную обратную матрицу A, называемую матрицей демиксинга W. Алгоритмы ICA – это стратегии получения W.

Готовы к смешиванию (Изображение автора)

Реальная коктейльная вечеринка

Что произойдет, если мы действительно установим массив микрофонов на вечеринке и попытаемся провести ICA на записанном аудио? Оказывается, что готовый алгоритм ICA почти наверняка провалится в разделении динамиков!

Давайте вернемся к одному из наших предположений модели: конкретно, мгновенное смешивание. Из-за конечной скорости звука аудиосигнал, исходящий от динамиков, будет достигать каждого микрофона в комнате с разными задержками времени.

Скорость звука составляет около 343 м/с на вечеринке, поэтому микрофон, находящийся на расстоянии 10 м от динамика, записывает звук с задержкой примерно 0,03 секунды. Хотя для человека на вечеринке это может показаться почти мгновенным, для записи с частотой 10 кГц это приводит к задержке сотен цифровых отсчетов.

Если попробовать подать эту слепую смесь сигналов со временными задержками в обычный алгоритм ICA, результаты будут далеко не идеальными. Но стойте, разве нет примеров использования ICA для разделения звуковых сигналов?³ Да, но эти простые задачи созданы искусственно и мгновенно смешаны, соответствуя предположениям модели ICA. Реальные записи не только имеют временные задержки, но также подвержены более сложным временным преобразованиям (о чем ниже).

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

rng = np.random.default_rng(8675309)t = np.linspace(0, 11, 11000)x = np.array([    np.sin(2 * np.pi * t),     np.sin(2 * np.pi / 2 * t + 1),     np.sin(2 * np.pi / 2 * 2 * t + 2)])mixing = rng.uniform(-1, 1, [3, 3])# проверяем, что наша случайно сгенерированная матрица смешивания имеет обратимостьassert np.linalg.matrix_rank(mixing) == 3demixing_true = np.linalg.inv(mixing)delays = rng.integers(100, 500, (3, 3))y = np.zeros(x.shape)for source_i in range(3):    for signal_j in range(3):        x_ = x[source_i, delays[source_i, signal_j]:]        y[signal_j, :len(x_)] += mixing[source_i, signal_j] * x_t = t[:10000]x = x[:, :10000]y = y[:, :10000]fica = FastICA(3)z = fica.fit_transform(np.transpose(y))z = np.transpose(z)z /= np.reshape(np.max(z, 1), (3, 1))fig, ax = plt.subplots(3, 1, figsize = (8, 5))for ii in range(3):    ax[0].plot(t, x[ii])    ax[1].plot(t, y[ii])    ax[2].plot(t, z[ii])ax[0].set_title("Независимые источники")ax[1].set_title("Случайно, линейно, со временной задержкой смешанные сигналы")ax[2].set_title("ICA компоненты (соответствие по знаку и линейному масштабированию)")plt.tight_layout()
FastICA для смешанных сигналов с задержкой: обратите внимание, что демиксированные компоненты расходятся от форм сигналов-источников.

Проблемы с временем

Стоит подробнее рассмотреть, почему ICA не может справиться с этими временными задержками. Ведь мы уже имеем дело с неизвестной смесью, почему бы нам не справиться с небольшими временными помехами? При этом, обычный ICA на структурированных данных перестановочно инвариантен! Вы можете переставлять порядок выборки или пиксели во временных рядах или наборах данных изображений и получить из ICA одни и те же результаты. Так опять же, почему ICA неустойчив к таким временным задержкам?

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

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

где k обозначает индекс дискретной временной задержки, а матрица A теперь является матричной функцией, которая меняется от k = 0…T.³ Другими словами, фактическое наблюдение на i-м микрофоне является линейной комбинацией источников, отсылающихся назад на T выборок. Кроме того, мы можем заметить, что более простая проблема с одной временной задержкой на каждую пару источник/микрофон (без более сложных акустических эффектов) является подклассом вышеприведенной модельной формулировки, где матрица A принимает ненулевую форму в одном значении k для каждой пары индексов (i, j).

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

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

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

rng = np.random.default_rng(8675309)t = np.linspace(0, 11, 11000)x = np.array([    np.sin(2 * np.pi * t),     np.sin(2 * np.pi / 2 * t + 1),     np.sin(2 * np.pi / 2 * 2 * t + 2)])mixing = rng.uniform(-1, 1, [3, 3])# проверяем, что наша случайно сгенерированная матрица смешивания является обратимойassert np.linalg.matrix_rank(mixing) == 3demixing_true = np.linalg.inv(mixing)delays = rng.integers(100, 500, (3, 3))impulse_lengths = rng.integers(200, 400, (3, 3))y = np.zeros(x.shape)for source_i in range(3):    for signal_j in range(3):        impulse_length = impulse_lengths[source_i, signal_j]        impulse_shape = np.sqrt(np.arange(impulse_length).astype(float))        impulse_shape /= np.sum(impulse_shape)        delay = delays[source_i, signal_j]        for impulse_k in range(impulse_length):            x_ = x[source_i, (delay + impulse_k):]            y[signal_j, :len(x_)] += (                mixing[source_i, signal_j]                 * x_ * impulse_shape[impulse_k]            )t = t[:10000]x = x[:, :10000]y = y[:, :10000]fica = FastICA(3)z = fica.fit_transform(np.transpose(y))z = np.transpose(z)z /= np.reshape(np.max(z, 1), (3, 1))fig, ax = plt.subplots(3, 1, figsize = (8, 5))for ii in range(3):    ax[0].plot(t, x[ii])    ax[1].plot(t, y[ii])    ax[2].plot(t, z[ii])ax[0].set_title("Независимые источники")ax[1].set_title("Случайно свернутые сигналы")ax[2].set_title("Компоненты ICA (соответствуют по знаку и линейному масштабированию)")plt.tight_layout()
FastICA для свернутых сигналов: Обратите внимание, что разделенные компоненты значительно отклоняются от формы исходного сигнала.

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

“Реальный мир” и ICA

Не используйте ICA для разделения аудиоисточников на коктейльной вечеринке. Однако существуют ли реальные ситуации, в которых ICA полезен?

Давайте рассмотрим одно из наиболее распространенных применений ICA: феатуризация и декомпозиция электроэнцефалографии (ЭЭГ). Сигналы ЭЭГ – это временные ряды записей электрического потенциала с электродов на коже головы (иногда с электродов в мозге). Существует отрасль применения ICA к предобработанным данным ЭЭГ для выявления независимых источников сигналов электрического потенциала в мозге и теле.

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

Мы установили, что предположение о мгновенном смешивании выполняется здесь, но как насчет других модельных предположений? Если электроды не двигаются на коже головы, и субъект в остальном неподвижен, то постоянное смешивание также может быть разумным предположением. Замеряем ли мы больше каналов, чем источников? ICA не создаст больше независимых компонентов, чем количество записанных сигнальных каналов, но если истинных источников гораздо больше, чем мы можем различить, присвоение пространственного значения компонентам может вызвать проблемы.

Наконец, являются ли источники независимыми? Это место, где все может стать очень сложным! Источники радиоактивных диполей, конечно, не являются одиночными нейронами, но являются общей активностью многих тысяч нейронов. Насколько мы верим – на временной шкале дискретизации ЭЭГ – в том, что эти кластеры согласованных нейронов независимы друг от друга? Десять лет назад обширное обсуждение и исследование этой темы предложили Макеиг и Онтон.⁶ Главная мысль заключается в том, что источники считаются локально согласованными клетками корковых нейронов: силы ближайших связей по сравнению с удаленными связями как раз и приводят к “рыбной-пекущейся” электрическому потенциалу (сосредоточенному в локализованных источниках) и, вероятно, уменьшают зависимость между пространственно расположенными патчами. Однако, на протяжении времени, был неоднократный интерес к исследованию свертывающего смешивания в ЭЭГ с помощью ICA в комплексной области.⁷ ⁸

Деконволюция и ICA

Можно ли все же как-то использовать ICA для решения проблемы деконволюции, которая проиллюстрирована реальным коктейльным приемом? Вернемся к пространству частотного представления проблемы деконволюции BSS. Помните, что она очень близка к тому, что ICA может обрабатывать … матрица смешивания – это линейное преобразование, основная проблема в том, что она не является стационарной при изменении частоты. Если мы предположим несколько вещей о (слепой) свертке, мы, возможно, сможем адаптировать ICA к проблеме деконволюции.

Допустим, что частотное пространство смешивания непрерывно и относительно “медленно” изменяется в зависимости от частоты. Мы несколько мутны с терминологией, но общая идея заключается в том, что при наличии достаточного количества выборок мы могли бы разбить проблему BSS на подмножества частотного пространства и запустить ICA в каждом подмножестве, предполагая стационарное смешивание в пределах частотных подмножеств. Например, мы знаем, что глобально смешивание меняется с частотой, но, возможно, оно меняется настолько медленно, что мы можем предположить, что оно стационарно в спектральных окнах. Таким образом, между, скажем, 10 и 15 кГц, мы собираемся использовать группу преобразованных примеров Фурье для оценки единственного статического смешивания в этом диапазоне частот.

В теории мы можем попробовать провести интерполяцию между статическими решениями ICA по всему спектру частот. Таким образом, если у нас есть наше решение для демиксинга ICA в диапазоне 10-15 кГц и другое решение для 15-20 кГц, мы можем разработать какую-то схему интерполяции, сосредоточив наши два решения на 12,5 кГц и 17,5 кГц, а затем вывести некоторую функцию смешивания частоты между этими двумя точками.

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

Коктейли (Изображение автора)

Беспечная и Осторожная Фатеризация

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

Почему ICA может быть использовано более общим образом? Потому что сами алгоритмы являются только абстрактными приближениями к решениям BSS. FastICA делает то, что обещает: находит изменение базиса, в котором компоненты данных максимально негауссовы — судя по (более или менее) эксцессу. Если эта трансформация случайно совпадает с физически значимыми независимыми источниками, то это замечательно! Если нет, она всё равно может быть полезным преобразованием в том же смысле, в котором используется PCA. PCA и FastICA даже очень свободно связаны, если мы рассматриваем каждый из них как изменение базиса, оптимизирующее вторую и четвертую статистики соответственно.

Но важно быть осторожным с переоценкой результатов ICA. Мы хотим сказать, что компоненты ICA максимально независимы или негауссовы: конечно, не проблема! Но можем ли мы сказать, что компоненты ICA физически отличающиеся источники? Только если есть подлежащая модель проблема BSS, которая удовлетворяет условиям, изложенным здесь. Компоненты ICA на самом деле могут быть показательными для полезных отношений, заложенных под слоями нелинейностей и сверток. Мы просто должны быть осторожными и не перегружать нашу интерпретацию ICA без проверки модельных предположений.

Ссылки и Примечания

[1] Два исторически наиболее примечательных варианта ICA — FastICA и Infomax ICA — относятся к:

  1. Hyvärinen и E. Oja, A Fast Fixed-Point Algorithm for Independent Component Analysis (1997), Neural Computation

A. Bell и T. Sejnowski, An Information-Maximization Approach to Blind Separation and Blind Deconvolution (1995), Neural Computation

[2] C. Maklin, Independent Component Analysis (ICA) In Python (2019), Towards Data Science

[3] J. Dieckmann, Introduction to ICA: Independent Component Analysis (2023), Towards Data Science

[4] Здесь мы немного злоупотребляем обозначениями, игнорируя границы аудиозаписи, например, когда t=0. Не волнуйтесь! В конце концов, всё это является нотационным злоупотреблением математикой.

[5] В реальном мире модель когда-либо бывает абсолютно достоверной? Нет, отвечает доктор Бокс. Роб Томас, устал от постоянных проблем, соглашается.

[6] S. Макейг и J. Онтон, Особенности ERP и динамика ЭЭГ: ИКА-перспектива (2012), Oxford Handbook of Event-Related Potential Components

[7] J. Анемюллер, T. Дж. Сейновски и S. Макейг, Комплексный анализ независимых компонентов электроэнцефалографических данных в частотной области (2003), Neural Networks

[8] A. Хюваринен, P. Рамкумар, L. Паркконен и R. Хари, Анализ независимых компонентов краткосрочных преобразований Фурье для спонтанного анализа ЭЭГ/МЭГ (2009), NeuroImage