An Elementary Introduction to the Wolfram Language
22Aprendizaje automático
Aquí se explicará cómo puede entrenarse al lenguaje para hacer eso. Pero se verán primero algunas funciones nativas que ya han sido entrenadas con un gran número de ejemplos.
LanguageIdentify toma porciones de texto e identifica el lenguaje humano en que está escrito.
In[1]:=
Click for copyable input
Out[1]=
In[2]:=
Click for copyable input
Out[2]=
Existe una función general, Classify, a la que se le han enseñado varios tipos de clasificación. Por ejemplo, clasificar el sentimiento de un texto.
In[3]:=
Click for copyable input
Out[3]=
Un texto pesimista se clasifica como de sentimiento negativo:
In[4]:=
Click for copyable input
Out[4]=
Uno mismo puede llevar a cabo el entrenamiento de Classify. Un ejemplo sencillo es la clasificación de dígitos manuscritos como 0 o 1. Se le da a Classify una colección de ejemplos de entrenamiento, seguidos por un dígito particular escrito a mano. La respuesta será 0 o 1 para ese dígito manuscrito.
Con ejemplos de entrenamiento, Classify identifica correctamente un 0 escrito a mano:
In[5]:=
Click for copyable input
Out[5]=
Para darse una idea de cómo trabaja lo anterior, y porque es útil por sí mismo, se describirá la función Nearest, que encuentra cuál de los elementos de una lista es el más próximo al que uno le dé.
Encuentre cuál de los elementos de la lista es el más próximo a 22:
In[6]:=
Click for copyable input
Out[6]=
Encuentre los tres números más próximos:
In[7]:=
Click for copyable input
Out[7]=
Nearest también puede encontrar los colores más próximos.
En la lista que sigue, encontrar los 3 colores que estén más próximos al que se da:
In[8]:=
Click for copyable input
Out[8]=
In[9]:=
Click for copyable input
Out[9]=
In[10]:=
Click for copyable input
Out[10]=
TextRecognize tiene la capacidad de reconocer el texto original a partir de uno borroso.
Reconozca el texto en la imagen:
In[11]:=
Click for copyable input
Out[11]=
Si el texto está demasiado borroso,TextRecognize no podrá reconocer lo que dice, aunque probablemente una persona tampoco.
Genere una secuencia de porciones de texto progresivamente más borrosas:
In[12]:=
Click for copyable input
Out[12]=
A medida que el texto se hace más borroso, TextRecognize comete errores, hasta que desiste por completo:
In[13]:=
Click for copyable input
Out[13]=
Algo similar sucede si se hace más y más borrosa la imagen de un guepardo. Mientras la imagen esté más o menos nítida, ImageIdentify la identificará correctamente como guepardo. Pero cuando es ya demasiado borrosa, ImageIdentify comienza por confundirla con un león, hasta que su mejor conjetura es que se trata de una persona.
Haga cada vez más borrosa la imagen de un guepardo:
In[14]:=
Click for copyable input
Out[14]=
Cuando la imagen está ya demasiado borrosa, ImageIdentify deja de suponer que es un guepardo:
In[15]:=
Click for copyable input
Out[15]=
ImageIdentify normalmente contesta lo que supone es la identificación más verosímil. Sin embargo, se le puede dar una lista de identificaciones posibles, comenzando por la más verosímil. Aquí aparecen las 10 identificaciones posibles más verosímiles, en todas las categorías, comenzando por la primera.
ImageIdentify supone que esto podría ser un guepardo, pero es más verosímil que sea un león o hasta un perro:
In[16]:=
Click for copyable input
Out[16]=
Cuando la imagen está suficientemente borrosa, ImageIdentify puede hacer suposiciones a lo loco sobre lo que puede ser:
In[17]:=
Click for copyable input
Out[17]=
En el aprendizaje de máquinas se suele dar el entrenamiento explícitamente, por ejemplo, diciendo esto es un guepardo, esto es un león. Aunque a veces simplemente se desea encontrar categorías de cosas sin un entrenamiento específico previo.
Forme cúmulos de colores similares en listas separadas:
In[18]:=
Click for copyable input
Out[18]=
In[19]:=
Click for copyable input
Out[19]=
Muestre los colores cercanos agrupados sucesivamente:
In[20]:=
Click for copyable input
Out[20]=
En Wolfram Language, FeatureSpacePlot toma colecciones de objetos y trata de encontrar cuáles serían sus mejores características distintivas y, entonces, usar sus valores para posicionar los objetos dentro de una gráfica.
FeatureSpacePlot no informa explícitamente sobre cuáles son las características que usa. De hecho, por lo general, son bastante difíciles de describir. Pero, a fin de cuentas, lo que sucede es que FeatureSpacePlot acomoda las cosas de modo tal que los objetos que tienen características similares quedan cerca unos de otros.
FeatureSpacePlot acomoda los colores similares en posiciones cercanas:
In[21]:=
Click for copyable input
Out[21]=
100 colores aleatorios acomodados mediante FeatureSpacePlot:
In[22]:=
Click for copyable input
Out[22]=
Ahora se hará el mismo tipo de tratamiento con imágenes de letras.
Forme la imagen rasterizada de cada una de las letras del alfabeto (en inglés):
In[23]:=
Click for copyable input
Out[23]=
FeatureSpacePlot utilizará las características visuales de estas imágenes para disponerlas gráficamente. El resultado es que aquellas letras con imágenes similares, como y, v, o e, c, terminarán quedando próximas entre ellas.
In[24]:=
Click for copyable input
Out[24]=
FeatureSpacePlot coloca claramente separadas las fotos de cosas de diferentes clases:
In[25]:=
Click for copyable input
Out[25]=
LanguageIdentify[texto] identifica en qué lengua humana está el texto
ImageIdentify[imagen] identifica de qué es la imagen
TextRecognize[texto] reconoce el texto a partir de una imagen (OCR)
Classify[entrenamiento,datos] clasifica datos a partir de entrenamiento con ejemplos
Nearest[lista,ítem] encuentra cuál elemento de lista es el más próximo a ítem
FindClusters[lista] encuentra cúmulos de elementos similares
NearestNeighborGraph[lista,n] conecta elementos de lista con sus n vecinos más cercanos
Dendrogram[lista] hace un árbol jerárquico de relaciones entre elementos
FeatureSpacePlot[lista] grafica los elementos de lista en un espacio de características
22.1Identifique de qué lengua procede la palabra ajatella»
Salida esperada:
Out[]=
22.2Aplique ImageIdentify a la imagen de un tigre, donde la imagen se obtiene usando ctrl+=»
Salida esperada:
Out[]=
22.3Forme una tabla de identificaciones de la imagen de un tigre, con borrosidades del 1 al 5. »
Salida esperada:
Out[]=
22.4Clasifique el sentimiento de Im so happy to be here»
Salida esperada:
Out[]=
22.5Encuentre las 10 palabras en WordList[ ] más cercanas a happy»
Muestra de salida esperada:
Out[]=
22.6Genere 20 números aleatorios entre 0 y 1000, y encontrar los 3 que estén más próximos a 100. »
Muestra de salida esperada:
Out[]=
22.7Genere una lista de 10 colores aleatorios, y encuentre los 5 más cercanos a Red»
Muestra de salida esperada:
Out[]=
22.8De los 100 primeros cuadrados, encuentre el más próximo a 2000. »
Salida esperada:
Out[]=
22.9Encuentre las 3 banderas europeas más cercanas a la de Brasil. »
Salida esperada:
Out[]=
22.10Haga un grafo de los 2 colores que sean vecinos más cercanos a cada uno de los colores en Table[Hue[h], {h, 0, 1, .05}]»
Salida esperada:
Out[]=
22.11Genere una lista de 100 números aleatorios entre 0 y 100, y hacer un grafo de los dos vecinos más próximos para cada uno. »
Muestra de salida esperada:
Out[]=
22.12Acomode las banderas de Asia en cúmulos de banderas similares. »
Salida esperada:
Out[]=
22.13Produzca imágenes rasterizadas de las letras del alfabeto inglés en tamaño 20, y luego haga un grafo de los 2 vecinos más próximos para cada uno. »
Salida esperada:
Out[]=
22.14Genere una tabla con los resultados de usar TextRecognize en hello, rasterizado en tamaño 50 y con niveles de difuminación entre 1 y 10. »
Salida esperada:
Out[]=
22.15Haga un dendrograma con las imágenes de las primeras 10 letras del alfabeto. »
Salida esperada:
Out[]=
Salida esperada:
Out[]=
+22.1Construya una tabla de identificaciones de imagen para una foto de la torre Eiffel, con borrosidades del 1 al 5. »
Salida esperada:
Out[]=
+22.2Clasifique el sentimiento del artículo happiness en Wikipedia. »
Salida esperada:
Out[]=
+22.3De los colores en la lista Table[Hue[h], {h, 0, 1, .05}], encuentre los 3 más cercanos al Pink»
Salida esperada:
Out[]=
+22.4Obtenga todas las fracciones i/j para i y j hasta 500, y encontrar las 10 más cercanas a pi. »
Salida esperada:
Out[]=
+22.5Genere una lista de 10 números aleatorios del 0 al 10, y hacer un grafo de los 3 vecinos más próximos para cada uno. »
Muestra de salida esperada:
Out[]=
+22.6Encuentre cúmulos de colores similares en una lista de 100 colores aleatorios. »
Muestra de salida esperada:
Out[]=
+22.7Haga una imagen del espacio de características para las letras mayúsculas y minúsculas del alfabeto inglés. »
Salida esperada:
Out[]=
¿Cómo es posible que se obtengan resultados diferentes de los mostrados aquí?
Se basa en redes neuronales artificiales inspiradas en la forma como parece funcionar el cerebro. Se le ha entrenado con millones de ejemplos de imágenes, con lo cual ha ido aprendiendo progresivamente a hacer distinciones. Y, de manera parecida al juego de veinte preguntas, a base de usar suficientes distinciones puede determinar a qué corresponde una imagen.
¿Cuántas clases de cosas puede reconocer ImageIdentify?
¿Qué puede causar que ImageIdentify proporcione una respuesta equivocada?
Una causa frecuente es que se le pregunte algo que no se parezca a nada para lo que haya recibido entrenamiento. Esto puede pasar si algún objeto se encuentra en una configuración o ambiente poco habitual (por ejemplo, si una embarcación no tiene un trasfondo azulado). ImageIdentify intenta generalmente encontrar algún tipo de coincidencia, y muchas veces los errores que comete son parecidos a los errores humanos.
¿Se pueden pedir las probabilidades que ImageIdentify asigna a diferentes identificaciones?
Típicamente, ¿cuántos ejemplos necesitaría Classify para trabajar bien?
Si se trata de un área general que conozca bien (imágenes cotidianas), podrían bastar unas cien. Pero en áreas nuevas, podrían requerirse millones de ejemplos para alcanzar buenos resultados.
¿Cómo determina Nearest la distancia entre colores?
Usa la función ColorDistance, que está basada en un modelo de la visión de colores humana.
¿Cómo determina Nearest las palabras cercanas?
Buscando aquellas con la menor EditDistance, esto es, la que requiere menor número de inserciones, eliminaciones y sustituciones de letras individuales.
Absolutamente. El último grafo de esta sección es un ejemplo de eso.
No hay una respuesta sencilla para esta pregunta. Cuando se le presenta una colección de objetos, aprende sus características distintivas; si bien, típicamente, parte de haber visto muchos otros objetos del mismo tipo general (como imágenes).
 
Download Notebook Version
en