¿Qué es la transformada escasa de Fourier?

46

MIT ha estado haciendo un poco de ruido últimamente sobre un nuevo algoritmo que se promociona como una transformación de Fourier más rápida que funciona en tipos particulares de señales, por ejemplo: "La transformación de Fourier más rápida es una de las tecnologías emergentes más importantes del mundo ". La revista MIT Technology Review dice :

Con el nuevo algoritmo, llamado la transformada escasa de Fourier (SFT), los flujos de datos pueden procesarse de 10 a 100 veces más rápido de lo que era posible con el FFT. La aceleración puede ocurrir porque la información que más nos interesa tiene una gran estructura: la música no es ruido aleatorio. Estas señales significativas generalmente tienen solo una fracción de los valores posibles que una señal podría tomar; El término técnico para esto es que la información es "escasa". Debido a que el algoritmo SFT no está diseñado para funcionar con todos los flujos de datos posibles, puede tomar ciertos atajos que de otro modo no estarían disponibles. En teoría, un algoritmo que puede manejar solo señales dispersas es mucho más limitado que el FFT. Pero "la escasez está en todas partes", señala el coinventor Katabi, profesor de ingeniería eléctrica y ciencias de la computación. "Está en la naturaleza; es ' s en señales de video; está en señales de audio ".

¿Podría alguien aquí proporcionar una explicación más técnica de qué es realmente el algoritmo y dónde podría ser aplicable?

EDITAR: Algunos enlaces:

nibot
fuente

Respuestas:

40

La idea del algoritmo es la siguiente: suponga que tiene una señal de longitud que es escasa en el dominio de la frecuencia. Esto significa que si calculara su transformada de Fourier discreta , habría un pequeño número de salidas que no son cero; los otros son insignificantes. Una forma de obtener las salidas que desea es usar la FFT en toda la secuencia y luego seleccionar los valores distintos de cero.k N N - k k kNkNNkkk

El algoritmo de transformación de Fourier escaso presentado aquí es una técnica para calcular esas salidas con menor complejidad que el método basado en FFT. Esencialmente, debido a que las salidas son cero, puede ahorrar algo de esfuerzo al tomar atajos dentro del algoritmo para ni siquiera generar esos valores de resultado. Mientras que la FFT tiene una complejidad de , el algoritmo disperso tiene una complejidad potencialmente menor de para el caso de espectro disperso.N - k O ( n log n ) O ( k log n )kNkO(nlogn)O(klogn)

Para el caso más general, donde el espectro es "un poco escaso" pero hay más de valores distintos de cero (por ejemplo, para una cantidad de tonos incrustados en el ruido), presentan una variación del algoritmo que estima las salidas más grandes, con una complejidad temporal de , que también podría ser menos compleja que la FFT.k O ( k log n log nkkO(klognlognk)

De acuerdo con un gráfico de sus resultados (reproducido en la imagen a continuación), el punto de cruce para mejorar el rendimiento con respecto a FFTW (una biblioteca FFT optimizada, hecha por otros muchachos en el MIT) está alrededor del punto donde solo -th a -th de los coeficientes de transformación de salida son distintos de cero. Además, en esta presentación indican que el algoritmo disperso proporciona un mejor rendimiento cuando . 11211 N1210Nk[2000,106]

ingrese la descripción de la imagen aquí

Estas condiciones limitan la aplicabilidad del algoritmo a casos en los que sabe que es probable que haya pocos picos significativamente grandes en el espectro de una señal. Un ejemplo que citan en su sitio web es que, en promedio, los bloques de píxeles de 8 por 8 que se usan a menudo en la compresión de imágenes y videos son casi un 90% escasos en el dominio de la frecuencia y, por lo tanto, podrían beneficiarse de un algoritmo que explota esa propiedad. Ese nivel de escasez no parece cuadrar con el espacio de aplicación para este algoritmo en particular, por lo que puede ser un ejemplo ilustrativo.

Necesito leer un poco más la literatura para tener una mejor idea de cuán práctica es usar una técnica de este tipo en problemas del mundo real, pero para ciertas clases de aplicaciones, podría ser adecuada.

Jason R
fuente
2
Entonces, ¿es básicamente una FFT con pérdida? ¿Como un codificador de MP3?
Endolito
3
@endolith: no estoy seguro de que lo exprese de esa manera. Quizás sea más análogo a un algoritmo FFT podado que solo calcula un subconjunto de las salidas. La afirmación es que si la señal de entrada es dispersa, entonces las salidas se calculan exactamente. kkk
Jason R
Me pregunto cómo se compara con el algoritmo de Goertzel (o una familia de ellos). Parece que la única diferencia es que en Goertzel ya sabes lo que estás buscando.
Spacey
55
@endolith: la compresión de MP3 es con pérdida porque los coeficientes están cuantizados; no porque solo se mantengan los coeficientes k superiores. Sparse FFT = "cuál es la representación de los coeficientes k minimizando la diferencia con la señal de entrada". Codificación de una trama mp3 = "cuáles son los coeficientes cuantificados y los niveles de cuantización que minimizan el error (perceptual) dado un presupuesto de N bits para almacenar los coeficientes y los factores de escala".
pichenettes
1
Cuando se tiran a la basura, esto es un efecto secundario de la cuantización (el valor se redondea a 0)
pichenettes
7

No he leído el documento sobre sFFT, pero tengo la sensación de que la idea de sujetar el FFT detrás está explotando lo anterior de k-sparsity. Por lo tanto, no es necesario calcular todas las entradas de coeficientes FFT, sino calcular k de ellos. Por eso, para la señal k-dispersa, la complejidad es O (klog n) en lugar de O (nlog n) para FFT convencional.

De cualquier manera, con respecto a los comentarios de @rcmpton, al decir "La idea detrás de la detección comprimida es que puede recuperar datos dispersos de muestras aleatorias dispersas extraídas de un dominio diferente (por ejemplo, recuperar imágenes dispersas de datos aleatorios de frecuencia dispersa (es decir, MRI)) ". La pregunta es ¿qué son las "muestras aleatorias dispersas"? Creo que podrían ser muestras recolectadas proyectando aleatoriamente los datos dispersos a un subespacio inferior (medición).

Y como entendí, el marco teórico de la detección de compresión se compone principalmente de 3 problemas, dispersión, medición y recuperación. Por escasez, se trata de buscar representaciones dispersas para cierta clase de señales, que es la tarea del aprendizaje del diccionario. Por medición, se trata de buscar una forma eficiente (eficiencia computacional y recuperable) para medir los datos (o proyectar datos para reducir el espacio de medición), que es la tarea del diseño de la matriz de medición, como la matriz Gaussiana aleatoria, la matriz aleatoria estructurada. ... Y por recuperación, son los escasos problemas de inversión lineal regularizados, l0, l1, l1-l2, lp, l-group, blabla ..., y los algoritmos resultantes son varios, búsqueda coincidente, umbral suave, umbral duro, búsqueda básica, bayesiana, ....

Es cierto que "cs es la minimización de la norma L1", y la norma L1 es un principio básico para cs, pero cs no es solo la minimización de la norma L1. Además de las 3 partes anteriores, también hay algunas extensiones, como la detección de compresión estructurada (grupal o modelo), donde también se explota la escasez estructurada, y se demuestra que mejora en gran medida la capacidad de recuperación.

Como conclusión, cs es un gran paso en la teoría de muestreo, ya que proporciona una forma eficiente de muestrear señales, siempre que estas señales sean lo suficientemente escasas . Entonces, cs es una teoría de muestreo , cualquiera que la vaya a usar como alguna técnica de clasificación o reconocimiento está confundiendo el principio. Y ocasionalmente, encuentro un papel titulado con "detección basada en compresión .....", y creo que el principio de ese papel es explotar la minimización de l1 en lugar de cs y es mejor usar "basado en la minimización de l1 ... ".

Si estoy equivocado, corrígeme por favor.

Pierre
fuente
Bienvenido a DSP.SE Esta es una gran contribución.
Phonon
6

He revisado el documento y creo que tengo la idea general del método. El "secreto" del método es cómo obtener una representación escasa de la señal de entrada en el dominio de frecuencia. Los algoritmos anteriores usaban una especie de fuerza bruta para la ubicación del coeficiente disperso dominante. Este método utiliza en su lugar una técnica que se llama artículo de wiki "recuperación espacial" o "detección comprimida" aquí. El método exacto de recuperación dispersa utilizado aquí se parece al 'umbral duro', uno de los métodos dominantes de recuperación dispersa.

La técnica PS de recuperación dispersa / detección comprimida y conectada a la minimización de L1 se usa mucho en el procesamiento moderno de señales y especialmente en relación con la transformada de Fourier. De hecho, es imprescindible saberlo para el procesamiento moderno de señales. Pero antes de la transformación de Fourier se usaba como uno de los métodos para la solución del problema de recuperación dispersa. Aquí vemos lo contrario: escasa recuperación para la transformación de Fourier.

Buen sitio para una visión general de la detección comprimida: nuit-blanche.blogspot.com/

Respuesta de PPS al comentario anterior: si la señal de entrada no es exactamente escasa, es con pérdida.

Siéntete libre de corregirme si tengo un método incorrecto.

mirror2image
fuente
El papel FFT no tiene detección comprimida. La idea detrás de la detección comprimida es que puede recuperar datos dispersos de muestras aleatorias dispersas extraídas de un dominio diferente (por ejemplo, recuperar imágenes dispersas de datos de frecuencia dispersa aleatoria (es decir, MRI)). Si bien esto puede reducir el tiempo de adquisición, aumenta el costo computacional. El documento FFT es diferente en el sentido de que tiene todos sus datos en ambos dominios y el objetivo es hacer que el cálculo suceda rápidamente.
dranxo
Estás equivocado acerca de la detección comprimida.
mirror2image
1
¿Puedes elaborar?
dranxo
LpAx=yRmyin,m>>nwithconstraint
mirror2image
A x = ymin|x|1 sujeto a . Hay muchas aplicaciones de largo alcance, pero si no invocas el teorema de Candes-Romberg-Tao en algún momento, estás confundiendo a las personas si etiquetas tu trabajo como "detección comprimida". Aquí hay una referencia: www-stat.stanford.edu/~candes/papers/spm-robustcs-v05.pdfAx=y
dranxo