¿Cómo utilizaría el aprendizaje automático para resolver este tipo de preguntas: 1 + 4 = 5, 2 + 5 = 12, 3 + 6 = 21, 8 + 11 =?

En primer lugar: como el aprendizaje automático es un campo muy amplio, hay muchas maneras de resolver este problema. En mi respuesta, destacaré una mala forma de utilizar el aprendizaje automático para resolver este problema y una mejor manera de resolverlo.

EL MALO CAMINO:

Imagine el siguiente código en R:

#create dataset
primero <- c (1,2,3)
segundo <- c (4,5,6)
resultado <- c (8,12,21)
entrenamiento <- data.frame (primero, segundo, resultado)

primero <- c (8)
segundo <- c (11)
clasificación <- data.frame (primero, segundo)

#call método ML
modelo <- lm (resultado ~., datos = entrenamiento)
predecir (modelo, clasificación)

Esta es una regresión lineal simple en los datos que proporcionó y, como podría haber adivinado, el resultado es incorrecto . Este código corto devuelve un resultado estimado de 52,66.
La razón de esto es que una regresión lineal en R lm usa el método de regresión de mínimos cuadrados ordinarios, que asume coeficientes fijos para cada parámetro.

Coeficientes
(Intercepción) primer segundo
0.6667 6.5000 NA

EL MEJOR CAMINO:

Los algoritmos de computación evolutiva y, más precisamente, la subdisciplina de la programación genética permiten a las computadoras probar una gran variedad de combinaciones de pequeños programas. En la investigación actual, estos programas generalmente se modelan como regresiones basadas en árboles. Se puede suponer que su ejemplo es una regresión. Consulte el siguiente ejemplo para comprender mejor cómo funciona esto:
(en su caso, solo tendríamos a y b, pero no c como entrada)

Un número fijo de estos árboles se genera aleatoriamente al comienzo del algoritmo y, en consecuencia, se denomina población. Estos árboles aleatorios están determinados por los Operadores (división, multiplicación, más, menos), Terminales (parámetros, números aleatorios o fijos) y Restricciones (es decir, profundidad del árbol, número de carreras …).

El algoritmo se basa en problemas de optimización e intenta minimizar o maximizar un cierto “valor de aptitud”. En su caso, desearíamos minimizar la cantidad de elementos calculados incorrectamente (máx .: 3, mín .: 0).

El algoritmo puede entonces mejorar los árboles en la población. Para hacerlo, utiliza algún método probablístico que tiene una alta probabilidad de seleccionar uno o dos árboles buenos (léase: menor número de elementos calculados incorrectamente). Luego, con los árboles seleccionados, aplica uno de los dos métodos siguientes:

  1. Mutación: Reemplazar aleatoriamente un subárbol o una Terminal
  2. Crossover: Intercambiar subárboles o terminales de un árbol en la población a otro.

Este algoritmo, si se escribe correctamente, siempre encontrará la respuesta correcta . El gran problema es, como ocurre con muchos algoritmos de aprendizaje automático: ¿es esta la mejor manera de resolver este problema y se generalizará?
Esto casi siempre depende de la forma en que se configura / escribe el algoritmo y de la cantidad de datos disponibles.

Pero para responder su pregunta brevemente: usaría un algoritmo de programación genética para responder esta tarea, si es necesario aplicar el aprendizaje automático.

Una buena pregunta

Pero, ¿qué pasa si no hay una respuesta única a la pregunta “matemática” o a la interpretación generalmente aceptada de la misma, es decir, “de las [infinitas en este caso] muchas respuestas posibles, ¿cuál es la más simple ……”? Entonces, cualquier aprendizaje automático requerirá alguna forma de definición de simplicidad , eso es bastante complicado. ¿Por qué es complicado? Aquí hay algunos ejemplos basados ​​en los números en la pregunta:

Podría decir “esta es claramente una pregunta sobre la suma” (aunque David y Clarence en el comentario a la pregunta no entendieron esto). Luego tenemos “el símbolo ‘=’ siempre debe ir seguido de la suma de los tres números anteriores”. Eso te lleva a una respuesta de 40 .

O podría tratar cada serie de tres números como ‘ecuaciones’ separadas y tratar de encontrar la interpretación más simple del operador ‘+’. Eso te lleva a 96 (ver otras respuestas a esta pregunta).

Estas son las dos respuestas más simples en las que puedo pensar (aunque 52 es un tercero cercano) y tengo suficiente conocimiento matemático para estar seguro de que no hay soluciones similares que hagan uso de toda la información dada. Considero que la suma es más simple que la multiplicación (es una operación más básica), por lo que 40 es la respuesta más simple.

Pero, ¿por qué debo hacer uso de toda la información dada? 64 es otra respuesta bastante simple : debe detectar que hay una serie oculta de números enteros crecientes 5,6,7,8, …… y luego puede ignorar todos los números inmediatamente después del signo ‘+’ y multiplicar esta serie oculta por el primer número para dar el tercero, es decir, 1 * 5 = 5, 2 * 6 = 12, 3 * 7 = 21, 8 * 8 = 64 … o, mejor aún, y si prefiere la pureza de la adición (¡David!) luego ignore todos los números antes de los signos ‘=’ y tendrá una serie 5, 12, 21,? donde el ? es más simple 32 : se encuentra al observar la diferencia entre términos sucesivos [0+ 5 = 5; 5+ 7 = 12; 12+ 9 = 21; 21+ 11 = 32]. Supongo que 32 es una respuesta más simple que 40 .

Ignorar la mitad o todos los números frente a los signos ‘=’ me hace sentir incómodo con la respuesta, pero eso es solo porque he aprendido a esperar que un enigma espere que haga uso de toda la información dada (y por eso prefiero 40 ) – pero, en general, en la vida real nos encontramos con todo tipo de información que no es relevante para responder una pregunta dada y tenemos que decidir qué información incluir y qué información podemos excluir al encontrar una respuesta. [En algunos campos, especialmente en la política, las personas se sienten libres de excluir cualquier información que no les guste antes de dar una respuesta … pero vamos a las matemáticas aquí]. Ese proceso de toma de decisiones debe ser parte de cualquier solución de aprendizaje automático. Y es difícil de descifrar.

No voy a explicar por qué hay infinitas soluciones posibles para el rompecabezas subyacente; otros han abordado este problema en otras partes de Quora.

EDITAR: Admito que me tomó mucho tiempo notar a otro contendiente por una respuesta simple a la pregunta ‘matemática’: reescríbala como

1 + 4 en la base 10 = 5 en la base 6 ;
2 + 5 en base 10 = 12 en base 5 ,
3 + 6 en base 10 = 21 en base 4 ,
8 + 11 en base 10 =? en la base 3 …
entonces ? = 201.

Si bien en realidad no tengo mi voto para la simplicidad: no hay razón para usar la base 10 a la izquierda, sería tan simple usar la base 12, la base 60 o la base 120 (por ejemplo) y obtener una respuesta diferente en cada caso. O, en el sprit de la base del lado derecho, cambie por qué no tener también un cambio de la base del lado izquierdo: por ejemplo, podría argumentar que la pregunta podría significar

1 + 4 en la base 6 = 5 en la base 6 ;
2 + 5 en la base 7 = 12 en la base 5 ,
3 + 6 en la base 8 = 21 en la base 4 ,
8 + 11 en base 9 =? en la base 3 …
entonces ? = 200).

Pero mi punto aquí es que es el tipo de digresión que cualquier aprendizaje automático tendría que ser capaz de hacer frente.

Muy buenas respuestas aquí. Quería agregar, este tipo de problema no está en el dominio del campo actual del aprendizaje automático. Sin embargo, definitivamente es parte de la IA. Un campo específico de AI, AI simbólico, tiene como objetivo resolver tales problemas. Pero el problema con la IA simbólica es que generalmente no es borroso. Su ejemplo puede tener múltiples respuestas. Por lo tanto, debe crear un sistema que pueda calificar todas esas respuestas y elegir la mejor. Puede haber mucha investigación aún por hacer en este campo, donde se perfecciona el reconocimiento de patrones en los símbolos. Esto también destaca el hecho de que todavía estamos muy lejos de la Inteligencia General Artificial. El aprendizaje automático que tenemos hoy es un ajuste de funciones más o menos avanzado.

96 es la respuesta

Como puede ver en el patrón mencionado en la pregunta, primero multiplique los números y luego agregue el primer número al producto:

1 + 4 = 5 implica (1 * 4) + 1 = 5

2 + 5 = 12 implica (2 * 5) + 2 = 12

3 + 6 = 21 implica (3 * 6) + 3 = 21

Por lo tanto

8 + 11 = 96 implica (8 * 11) + 8 = 96

Yo no lo haría

Dos razones:

Primero, si bien los humanos son bastante buenos, se generalizan a partir de algunos ejemplos (como se muestra en las respuestas que han respondido directamente a la parte matemática de la pregunta), los algoritmos de aprendizaje automático son mucho peores en este tipo de cosas. Por lo general, requieren muchos más ejemplos para ser útiles. Por supuesto, aquí es donde los humanos podrían no ser tan buenos, porque podría ser más difícil para nosotros mirar a través de millones de ejemplos para extraer relaciones de la manera en que ML puede hacerlo.

En segundo lugar, aunque los humanos han llegado a lo que espero que sea la respuesta correcta más simple (a * b + a), ML probablemente pasaría mucho tiempo buscando a través de funciones potenciales sin llegar muy lejos. Claro, eventualmente llegaría a una solución, pero en el amplio conjunto de funciones potenciales que se ajustan a este conjunto de ejemplos, casi nunca elegiría esta solución sin algunas restricciones serias.

¿Y de dónde podrían venir tales restricciones? El programador humano. Y si el programador ya pensó en esto, sería mucho más fácil para él o ella simplemente resolver este tipo de problema directamente, en lugar de pasar por ML.

El aprendizaje automático no es la solución a todos los problemas de la vida.

Woa … Este tipo de cosas parecen muy abstractas para un sistema simple de resolver.

Podría intentar generalizar el problema y encontrar, por ejemplo, una fórmula oculta que se ajuste a todos 🙂

entonces: f (x, y) -> (x * y) + y será la fórmula oculta en este caso. Y una fórmula son solo algunas letras y símbolos … ¿Quizás intentar un enfoque genético?

Realmente no lo sé. Lo siento.