¿Cómo funcionan las representaciones distribuidas de escasez fija defendidas e implementadas por Numenta?

Es difícil responder esto de manera concisa ya que los conceptos son bastante profundos. Intentaré dar una respuesta relativamente breve, pero será útil si te sumerges en el video al que se hace referencia al final. Las representaciones distribuidas de dispersión fija (SDR) utilizadas por Numenta se basan en varias propiedades:

1) Capacidad extremadamente alta. Si tiene un vector de alta dimensión con el 2% de los bits, la cantidad de patrones posibles es enorme. Desde el punto de vista de un algoritmo de aprendizaje, no pierde nada al usar una representación dispersa.

2) Para cualquier tamaño de vector binario dado, supongamos que elige aleatoriamente el 2% de los bits en los que se activará, puede calcular la probabilidad de que dos de esos vectores tengan algún número de bits superpuestos. Esta probabilidad se desvanece muy rápido a medida que aumenta el número de dimensiones. La posibilidad de que dos patrones aleatorios colisionen es extremadamente pequeña. (Los filtros Bloom también se basan en esta propiedad).

3) Los algoritmos de Numenta crean SDR donde las entradas similares tienen salidas similares. Por lo tanto, los bits individuales tienen algún significado semántico. Por ejemplo, es probable que una línea vertical y una línea ligeramente inclinada tengan representaciones muy similares. (Esto es diferente de los filtros Bloom). En general, debido a la propiedad 2, si se superponen más de unos pocos bits en dos patrones diferentes, puede tratarse como significativo. La posibilidad de que esto suceda al azar es pequeña, por lo tanto, es probable que estas entradas sean similares y se puedan “agrupar”. Varias partes del algoritmo usan esta propiedad para hacer predicciones similares para entradas similares.

4) Múltiples representaciones SDR pueden ser OR juntas sin mucha posibilidad de conflicto. (Los filtros Bloom también se basan en esta propiedad). El agrupador temporal de Numenta se basa en esta propiedad: permite que el agrupador temporal haga predicciones simultáneas sobre el futuro en una representación de ancho fijo. Por ejemplo, supongamos que ABC y ABD son secuencias comunes. Cuando el agrupador temporal ha visto A y luego B, puede predecir simultáneamente C y D al unir las representaciones para C y D.

5) Puede submuestrear aleatoriamente los bits encendidos y aún conservar las propiedades anteriores. Esto permite implementaciones más eficientes. También he visto situaciones en las que el submuestreo aleatorio realmente ayuda enormemente al aumentar la diversidad. Esto a su vez aumenta la posibilidad de encontrar buenas representaciones. Sin embargo, todavía no entiendo completamente ese aspecto.

En conjunto, estas propiedades permiten que el algoritmo de aprendizaje cree interesantes representaciones espaciales y temporales de las entradas. En mi opinión, la verdadera belleza del sistema es el agrupador temporal y cómo utiliza los SDR para codificar secuencias.

En términos de números, en algunas implementaciones tenemos aproximadamente 2000 dimensiones con aproximadamente 2% de dispersión.

Ahora hay una gran charla magistral de Jeff Hawkins que describe estas intuiciones con más detalle. Puedes encontrar la charla aquí:

https://www.numenta.com/blog/the…

¡Espero que esto ayude!