Aquí va mi respuesta. Para un resumen solo lea los títulos y citas.
Extendiendo la inteligencia humana
Cuando Steve Jobs era un niño, leyó un estudio que medía la eficiencia de la locomoción para varias especies. Es decir, los investigadores querían descubrir qué animal usa menos energía para viajar 1 kilómetro. El cóndor fue el ganador de este análisis, mientras que el desempeño de los humanos fue bastante poco impresionante, apareciendo alrededor de un tercio de la lista. Pero entonces alguien tuvo la idea de probar la eficiencia de la locomoción de un hombre en bicicleta. Y resultó que el hombre en bicicleta voló el cóndor, actuando con una eficiencia completamente fuera de la parte superior de las listas. Jobs se dio cuenta de que lo que hace a los humanos diferentes de otros animales es que somos capaces de construir herramientas que nos hacen mejores.
- ¿Qué universidades de la India son buenas para realizar investigaciones en el aprendizaje por refuerzo?
- ¿Cómo manejo tanto la programación como la investigación en el área de redes neuronales y redes neuronales profundas?
- ¿Cuáles son los dominios en los que las técnicas de aprendizaje profundo podrían aplicarse además del procesamiento de la visión por computadora y el lenguaje / habla?
- ¿Cómo podemos implementar el aprendizaje profundo en Python? ¿Es el aprendizaje profundo un concepto importante en la ciencia de datos?
- ¿Cómo se puede utilizar el aprendizaje automático para la transcriptómica?
Años después, cuando comenzó a trabajar con computadoras, Jobs hizo una de sus famosas citas: “Las computadoras son como una bicicleta para la mente”. Hoy, cuarenta años después de la fundación de Apple, las computadoras están ampliando drásticamente la capacidad de nuestros cerebros.
Las computadoras son como una bicicleta para la mente. – Steve Jobs
Permítanme clasificar muy ingenuamente las funciones del cerebro en dos grupos: memoria (es decir, almacenar información) e inteligencia (es decir, hacer / calcular cosas) [1]. Con respecto a la memoria, las computadoras están ampliando enormemente nuestros cerebros al permitirnos almacenar esencialmente una cantidad ilimitada de datos. El problema que debe resolverse es desarrollar métodos más rápidos para almacenar y recuperar información de dicha memoria externa. La informática también ha logrado una gran extensión de nuestra inteligencia. Por ejemplo, tenemos un software matemático que nos permite realizar rápidamente cálculos complejos.
Sin embargo, la informática tradicional [2] se enfrenta a una limitación importante con respecto a la tarea de extender la inteligencia humana: primero debemos explicarle a la computadora cómo realizar la tarea que queremos realizar. Por ejemplo, para crear un software matemático, primero debemos escribir un programa que explique a la computadora cómo hacer cada operación matemática. Una vez que el programa está terminado e instalado en una computadora, puede realizar esas operaciones mucho más rápido que nosotros. Por lo tanto, las computadoras solo pueden lograr tareas que podemos explicar cómo realizar.
Programando personas y computadoras
Puedes pensar en programar una computadora de la misma manera que pensarías en enseñarle una tarea a un humano. Por ejemplo, podría decirle a un amigo algo como: “Si el temporizador del horno se apaga, apague el horno presionando este botón”. Al hacerlo, ha “programado” a esta persona para que haga algo que necesita. Programar una computadora para hacer esta tarea sería bastante similar a programar un humano. El código podría ser algo como:
if oven.timer_alarm == on:
button.status = presionado
Es solo una cuestión de lenguaje. Usted programa personas en el idioma inglés, mientras que programa computadoras usando algún lenguaje de programación.
Programar una computadora es como explicarle a alguien cómo hacer una tarea. Solo puede explicar las tareas que sabe hacer.
Sin embargo, ¿qué pasa si la tarea que queremos programar es más compleja? ¿O qué sucede si necesitamos programar una tarea pero ni siquiera sabemos cómo se realiza dicha tarea?
Pensemos cuando le enseñamos a un niño a identificar diferentes tipos de animales. A diferencia del ejemplo del horno, no puede comenzar a describir las características de cada animal como: “Si el animal está dentro de este rango de colores y tiene rayas verticales negras con una forma ligeramente elíptica y tiene una nariz como … entonces es un tigre” . ¿Te imaginas usar esa estrategia de enseñanza con niños? Sería imposible y tomaría una eternidad. En la mayoría de los casos, ni siquiera estaría seguro de qué características de cada animal está utilizando para identificarlo. En cambio, lo que hacemos es mostrar imágenes de animales a los niños junto con algunos consejos específicos, y de esta manera, inconscientemente, aprenden qué características son las que identifican a cada animal.
Bueno, resulta que si desea programar una computadora para identificar animales, la única forma de hacerlo es usar un lenguaje de programación para describir manualmente cada animal para que la computadora pueda diferenciar entre un animal y otro. Por las mismas razones por las que no puede enseñar a los niños a identificar animales describiéndolos minuciosamente, este esfuerzo obviamente está condenado al fracaso.
La necesidad de hacer un programa que explique a las computadoras cómo realizar cada tarea es la gran limitación que enfrenta la programación informática tradicional. Ha evitado que las computadoras extiendan aún más nuestra inteligencia para resolver tareas más complejas. Para extender realmente nuestra inteligencia, necesitamos computadoras para realizar tareas que ni siquiera sabemos cómo hacer.
La revolución de la inteligencia artificial
Aquí es donde el aprendizaje automático viene al rescate. El aprendizaje automático es el campo que estudia cómo hacer que las computadoras aprendan. En otras palabras, un algoritmo de Machine Learning es un programa de computadora que enseña a las computadoras cómo programarse a sí mismas para que no tengamos que describir explícitamente cómo realizar la tarea que queremos lograr. La información que necesita un algoritmo de Machine Learning para escribir su propio programa para resolver una tarea en particular es un conjunto de ejemplos conocidos.
Por ejemplo, para la tarea de enseñar a una computadora a identificar animales, le mostraremos a la computadora un montón de imágenes etiquetadas (por ejemplo, esta imagen es un tigre, esta imagen es un gato, etc.), de la misma manera que lo hacemos cuando Enseñamos a los niños. El algoritmo de Machine Learning utilizará estas muestras para identificar cuáles son las características que diferencian a un animal de otro, y con esta información escribirá su propio programa para realizar la tarea de identificar animales [3]. Ahora puede ver cómo permitir que las computadoras aprendan y permitir que las computadoras escriban su propio código es lo mismo (si desea leer una breve explicación sobre cómo funcionan los algoritmos de Machine Learning, consulte [4]).
Por lo tanto, el aprendizaje automático es la forma de hacer que las computadoras aprendan a realizar tareas complejas cuyos procesos no pueden ser fácilmente descritos por humanos, o incluso tareas que no sabemos cómo realizar (por ejemplo, “Quiero calcular cuántos clientes comprarían esto”. producto “o” Quiero que esta foto parezca una pintura de Picasso “[5]).
Por lo general, consideramos que la “predicción” es la acción de calcular el resultado más probable de un proceso muy complejo que los humanos difícilmente pueden calcular, y es por eso que generalmente decimos que los modelos de Machine Learning se utilizan para hacer predicciones.
El aprendizaje automático es la forma de hacer que las computadoras aprendan a realizar tareas complejas cuyos procesos no pueden ser descritos fácilmente por los humanos, o incluso tareas que no sabemos cómo lograr.
Muchos de los algoritmos útiles de Machine Learning ya se conocían hace veinte años, pero recientemente obtuvimos suficiente potencia informática combinada con muchos datos para que funcionen. Las computadoras aún no son muy buenas para aprender tareas muy específicas de los humanos, como escribir y leer textos o identificar objetos [6]. Sin embargo, debido a su alto poder de cómputo, las computadoras son mucho mejores que nosotros para identificar patrones en grandes cantidades de datos.
Imagine la siguiente serie:
1: [0, 0]
2: [2, 3]
3: [4, 6]
4: [6, 9]
…
100: [198, 297]
Para nosotros es bastante fácil ver el patrón en esa serie y cumplir la tarea de predecir la siguiente fila. Sin embargo, imagine una serie en la que cada fila se compone de miles de números cuyos valores se calculan combinando múltiples valores de las filas anteriores. Sería bastante imposible para nosotros encontrar los patrones y predecir la siguiente fila. Por supuesto, también sería imposible para nosotros programar a alguien o algo para hacerlo, ¡simplemente porque no sabemos cómo se hace! Sin embargo, una computadora que ejecuta un algoritmo de Machine Learning podría aprender a hacerlo en cuestión de minutos.
Esta es la razón por la cual Machine Learning ya es extremadamente útil para ayudar a los humanos a realizar tareas complejas, como predecir enfermedades, predecir la evolución del mercado de valores, los autos sin conductor y una infinidad de otras aplicaciones. De hecho, cualquier cosa que se pueda grabar es algo que se puede predecir.
[1] Esta es, por supuesto, una clasificación simplista. Definir las funciones del cerebro y especialmente el concepto de inteligencia es un tema muy interesante que trataré de abordar en futuras publicaciones.
[2] Por supuesto, el aprendizaje automático ha sido parte de la informática durante décadas. Por “informática tradicional” me refiero a la programación informática tradicional, que ha sido y sigue siendo la forma más común de hacer que una computadora realice una tarea para nosotros.
[3] Esta técnica de aprendizaje con el ejemplo es la más común en Machine Learning. Se llama aprendizaje supervisado. Otras técnicas de aprendizaje populares son el aprendizaje no supervisado y el aprendizaje de refuerzo. En el aprendizaje no supervisado, entrenamos computadoras usando datos no etiquetados (por ejemplo, aprender a agrupar pacientes similares) mientras que en el aprendizaje por refuerzo, las computadoras aprenden por prueba y error (por ejemplo, aprender a jugar un juego). Hablaremos de eso en futuras publicaciones.
[4] Como ya sabes, en lugar de crear programas que expliquen a las computadoras cómo realizar tareas específicas, en Machine Learning creamos programas que explican a las computadoras cómo aprender por sí mismos para realizar tareas. Hay muchos algoritmos de Machine Learning diseñados para lograr este propósito y probablemente el más popular en estos días es un algoritmo llamado Neural Networks. Las redes neuronales son una simulación aproximada del cerebro. Contienen miles de neuronas simuladas que forman millones de conexiones sinápticas entre ellas. Cada conexión sináptica está asociada con un número que representa cuán fuerte es esa conexión. La computadora introducirá los datos de entrada (por ejemplo, imágenes de animales) a la entrada de la red y luego disparará todas las neuronas correspondientes. De esa forma producirá una predicción en la salida de la red. Luego comparará el resultado predicho con los datos verdaderos (por ejemplo, “predije un león pero veo que la etiqueta de esta imagen dice que es un tigre”) y seguirá un conjunto de reglas dadas por los científicos de Machine Learning para para modificar el peso de cada conexión sináptica para que se reduzca el error de la predicción (por ejemplo, “si fortalezco estas conexiones sinápticas y estas conexiones sinápticas más débiles, la próxima vez que vea esta imagen predeciré correctamente que esta imagen representa un tigre “). La computadora repetirá este proceso pasando por todo el conjunto de datos de entrenamiento varias veces hasta que el error ya no se pueda reducir. Tenga en cuenta que no hemos proporcionado a la computadora una regla de actualización para cada conexión sináptica individual, pero le brindamos a la computadora algunas reglas generales que se aplican millones de veces (para aquellos de ustedes que aún recuerdan algún cálculo de la escuela secundaria, lo que hacemos es calcular la derivada del error con respecto a cada conexión sináptica y luego mover el valor de cada conexión hacia la dirección que reduce el error de predicción).
[5] Puedes probar nuestra demo para convertir cualquier foto en una pintura usando el estilo que desees: Predictors.ai
[6] Sin embargo, cada día mejoran cada vez más. Aquí puede encontrar un buen ejemplo de AI escribiendo textos: Predictors.ai