¿Podrían las entradas del algoritmo de entrenamiento Perceptron tener diferentes tipos?

Creo que se puede adaptar para procesar cualquier dato, siempre que haya una estrategia para evaluar la suma ponderada y realizar la capacitación. Por ejemplo, si usa cadenas en lugar de valores reales, ¿cómo va a calcular el producto de punto ponderado de la entrada de Perceptron? ¿El resultado será una cadena también? También necesita su ecuación de aprendizaje (y propagación hacia atrás, si tiene capas ocultas) para operar con cadenas. Si tiene una función de núcleo, también debe definirse en el espacio de su entrada.

Para Boolean el problema es simple, puede reemplazar los valores con 1 para verdadero y cero para falso.

La entrada no puede ser de un tipo diferente (debido al producto de punto ponderado), pero puede tener la entrada como una estructura de (a, b, c) con a: string, b: boolean y c: float. Nuevamente, debe definir las ecuaciones anteriores, en el espacio definido por las tuplas (a, b, c), que no es una tarea simple.

He hecho esto para Mapas autoorganizados y señales / cadenas [1,2], al proporcionar una definición de distancia y adaptación de la ecuación de entrenamiento, así como las aplicaciones (sorprendentemente, obtuve mejores resultados en comparación con una profundidad similar) enfoques de aprendizaje), y obtuvo un doctorado por ello.

[1] R. Popovici y R. Andonie, “Agrupación de señales de sensores con mapas autoorganizados “, Conferencia Internacional Conjunta 2015 sobre Redes Neuronales (IJCNN) , Killarney, 2015, pp. 1-8. doi: 10.1109 / IJCNN.2015.7280576

[2] R. Popovici y R. Andonie, “Clasificación del género musical con mapas autoorganizados y distancia de edición”, Conferencia Internacional Conjunta 2015 sobre Redes Neuronales (IJCNN) , Killarney, 2015, pp. 1-7. doi: 10.1109 / IJCNN.2015.7280559

Si y no.

No, ya que es probable que todas las entradas a una red neuronal sean un valor de punto flotante de algún tipo, probablemente normalizado / estandarizado para ser un valor pequeño entre 0 y 1 o -1 y 1, dependiendo de sus funciones de transferencia.

Sí, ya que eres libre de interpretar esos valores de la forma que quieras. Escale los valores enteros entre 0 y 1 (donde 1 representa el valor entero más alto que podría esperar razonablemente). De manera similar, escala los booleanos entre 0 y 1, donde 0 es falso y 1 es verdadero *. Luego, haga un vector de entrada con las representaciones enteras y las representaciones booleanas y alimente todas a la red.

* 0 y 1 probablemente no sean los mejores valores para usar, al menos no en el lado de salida de la red si desea entrenar usando la propagación inversa.