¿Se reemplazará la programación de la computadora por aprendizaje automático?

Creo que esto es difícil de responder con certeza.

Pero me arriesgaría a adivinar y diría que ninguna programación de computadora no será reemplazada (completamente) por el aprendizaje automático.

Sin embargo, la forma en que desarrollamos / programamos el software seguramente cambiará.

Por ejemplo, Andrej Karpathy (Director de IA en Tesla) recientemente escribió una publicación (Software 2.0) sobre cómo las Redes Neurales son un nuevo tipo de software.

El software 2.0 está escrito en pesos de redes neuronales. Ningún humano está involucrado en escribir este código porque hay muchos pesos … y codificar directamente en pesos es un poco difícil … En cambio, especificamos algunas restricciones sobre el comportamiento de un programa deseable (por ejemplo, un conjunto de datos de pares de ejemplos de entrada y salida) ) y utilice los recursos computacionales a nuestra disposición para buscar en el espacio del programa un programa que satisfaga las restricciones. …

Resulta que una gran parte de los problemas del mundo real tienen la propiedad de que es significativamente más fácil recopilar los datos que escribir explícitamente el programa. Una gran parte de los programadores del mañana no mantienen repositorios de software complejos, escriben programas complejos o analizan sus tiempos de ejecución. Recopilan, limpian, manipulan, etiquetan, analizan y visualizan datos que alimentan redes neuronales.

Entonces, en cierto modo, está diciendo que el papel del programador se desplazará más hacia la manipulación de datos en lugar del código.

Por supuesto, ha habido refutaciones sobre esta afirmación (ver ¿Es Deep Learning “Software 2.0”?) Y, en general, es una discusión interesante.

Pero sí, por ahora, solo podemos decir que la programación de computadoras será / está siendo cambiada por el aprendizaje automático.

“Así como la física cuántica no obvia la física newtoniana, el código seguirá siendo un poderoso conjunto de herramientas para explorar el mundo”.

No estoy 100% seguro de cómo responder esta pregunta. Pero, creo que mientras tengamos humanos alrededor, alguien tiene que monitorear o supervisar las redes neuronales. La pregunta es: si los algoritmos se ejecutan de manera ineficiente, ¿lo descubrirá la red neuronal? o un ser humano lo desconectará? No lo sabemos porque todavía no estamos allí.

Lo que creo es que habrá un avance y progresión en la codificación, pero no el final del todo.

El aprendizaje automático realmente solo se hace cargo de una parte muy pequeña de la imagen general. Los humanos y la “programación tradicional” como OO son seguros por algún tiempo todavía.

Creo que la próxima gran cosa para el desarrollo es el cambio de lenguajes OO generalizados a lenguajes híbridos OO / funcionales.

El aprendizaje automático desempeñará un papel en los motores de reglas en algunos mercados especializados, pero una máquina no terminará escribiendo su próxima interfaz de usuario de teléfono móvil (pero es probable).

Aquí hay un artículo interesante sobre dónde estamos ahora:

http://proceedings.mlr.press/v28

Pronto no programaremos computadoras. Los entrenaremos como perros

Además, AlphaGo lo suficientemente interesante se enseñó a sí mismo cómo ganar, pero sin humanos se habría quedado sin tiempo.

Incluso en DeepMind de Google, parece que hay cosas que los humanos codifican mejor, al parecer, y todo depende del momento.

Continúa leyendo AlphaGo se enseñó a sí mismo cómo ganar, pero sin humanos se habría quedado sin tiempo

Creo que tomará un tiempo, no sé exactamente cuánto tiempo pueden pasar 10, 15 o incluso 100 años para que ocurra la singularidad y quizás solo entonces, las máquinas serán como los humanos o incluso mejores para arreglar las cosas.

Singularidad tecnológica – Wikipedia

En el movimiento de singularidad, los humanos son tan ayer

Atentamente.

Los algoritmos de aprendizaje automático pueden inducir cómo realizar tareas importantes al generalizar a partir de ejemplos. Esto a menudo es factible y rentable donde la programación manual no lo es. A medida que hay más datos disponibles, se pueden abordar problemas más ambiciosos. Como resultado, el aprendizaje automático se usa ampliamente en informática y otros campos. Sin embargo, el desarrollo de aplicaciones de aprendizaje automático exitosas requiere una cantidad sustancial de “arte negro” que es difícil. Sin embargo, gran parte del “conocimiento” que se necesita para desarrollar con éxito aplicaciones de aprendizaje automático no está fácilmente disponible en ellas. Como resultado, muchos proyectos de aprendizaje automático tardan mucho más de lo necesario o terminan produciendo resultados menos ideales.

En resumen, el aprendizaje automático definitivamente puede producir programación de computadora, pero no será la mejor solución para todos los problemas. La máquina debe usarse principalmente para problemas en los que se pueden lograr soluciones mediante inducción. Sin embargo, para los enfoques deductivos, la programación tradicional dará una garantía del 100% para la solución, por lo tanto, no es aconsejable seguir el aprendizaje automático en los casos en que obtendrá una garantía probabilística.

La programación informática nunca desaparecerá mientras se sigan creando programas. Entonces no , por definición.

La programación es el acto de crear programas de computadora en sí, generalmente a través de la escritura de instrucciones en idiomas que las computadoras pueden entender. No importa cuán abstractos sean los procesos o cómo todo se compila, porta o transforma de alguna otra manera, una y otra vez.

Quizás en el futuro hagamos que nuestras tareas de ingeniería de software sean completamente asumidas por la inteligencia artificial. Quizás nunca suceda . No importa La acción de especificar lo que queremos solo a estos hipotéticos seres artificialmente inteligentes habría sido la programación.

Mientras la humanidad continúe y produzca más y más software, la programación nunca morirá ni será reemplazada.

Personalmente, sin embargo:

La aplicación de aprendizaje automático es muy costosa, sin mencionar que los recursos naturales (tungsen, etc.) necesarios para construir el hardware suficiente están llegando a la escasez día a día. Su cantidad es finita, después de todo, y la demanda es alta.

Los compiladores que usan esa tecnología me parecen muy ineficientes y completamente distópicos.

Espero que eso no esté pasando.

Los humanos vienen incorporados con un conjunto común de conceptos heredados a través de la evolución. Además de esto, los ingenieros de software vienen con un gran conjunto, a menudo implícito, de conceptos para hacer frente a los desafíos de programación.

Incluso si tuviera una IA que pudiera utilizar programas, sin el contexto implícito anterior, el lenguaje que necesitaría usar para expresar lo que tenía que hacer probablemente equivaldría a otro lenguaje de programación (aunque quizás de un nivel superior).

Como cualquiera que haya trabajado en una pieza compleja de software sabe, incluso con personas muy talentosas, habrá errores, malas interpretaciones, cambios de prioridad, etc. Por lo tanto, incluso si una IA pudiera replicar la salida de ingenieros de software experimentados, software moderno es tan complejo que la programación no es la parte más difícil, sino decidir qué programar es un desafío.

Esta es una pregunta interesante.

Aunque, en última instancia, creo que los dos, son dos campos completamente diferentes. Déjame, elaborar.

El aprendizaje automático es útil y excelente para cosas de las que puede aprender, ¿verdad? Cosas, puede analizar como una forma de entrada. Sea eso, gente hablando o movimientos o lo que sea.

Eso es el aprendizaje automático y lo que hace, aprende a realizar una tarea.

Ahora, ASUME; que encontró la correlación entre la automatización de la RESOLUCIÓN DE PROBLEMAS A TRAVÉS DEL CÓDIGO, que la programación en sí misma es …

Entonces sí.

Pero, eso, es un gran objetivo. Eso está muy por encima del reconocimiento de patrones irracionales, porque, no solo es irracional, en términos de que no puede predecir cuál es la situación en términos de su problema (es decir, puede saber que necesita un CÓDIGO, sino un código para ¿QUÉ?)

Esa, sería la nuez principal, romper.

El enfoque matemático para predecir eso y, en última instancia, evitar eso.

Ahora, ¿creo que llegaremos a ese punto?

Permítanme referirme al Teorema de la imperfección. Que yo sepa, hay un teorema matemático, llamado Teorema de la imperfección. Uno, al cual se refiere a la idea de que uno nunca puede hacer algo, que es más inteligente, que uno mismo.

Lo que significa que, colectivamente, nosotros como humanos, nunca superaremos algo que pueda ser más listo que nosotros.

Pero ese es solo el problema. Nosotros no somos tan inteligentes. En absoluto. El hecho es que básicamente somos biológicos, esponjas pensantes. Más o menos.

Entonces, ULTIMADAMENTE; ¿creo que haremos que Machine Learning lo reemplace?

CUANDO encontremos el patrón matemático que correlaciona la predicción de problemas de programación, entonces sí.

La respuesta corta y dulce: no por mucho, mucho tiempo, si alguna vez.

La respuesta más larga es que la razón por la que lleva tanto tiempo es la misma razón por la que nadie ha hecho un programa que escriba un ensayo completo sobre un tema dado: es realmente difícil replicar el discurso y la escritura. Período. Es demasiado complejo para nosotros automatizar completamente en este momento .

Dado que la programación tiene una sintaxis relativamente simple y muy estricta para cada lenguaje, será mucho más fácil crear un programa que escriba otros programas. Demonios, ¡incluso puedes hacer eso ahora mismo! Actualmente estoy trabajando en un analizador de pseudocódigo donde escribes cómo quieres que se vea el código y el analizador se ejecuta y escribe el código equivalente.

La parte difícil, y donde entra el aprendizaje automático, es escribir programas que deciden qué scripts adicionales se necesitan. Recuerdo haber visto en algún lugar de Quora que el lenguaje de programación perfecto solo tiene un código similar y es algo así:

Haz lo que el programador quiera

Eso implica que el lenguaje puede poner en movimiento todo lo que el programador necesitaría pasar semanas, meses e incluso años para escribir a mano, sin errores y otros errores.

Mi comprensión del propósito del aprendizaje automático es crear inteligencia artificial que aprenda y se adapte como lo hace un ser humano, por lo que, en teoría, el aprendizaje automático y la inteligencia artificial podrían reemplazar la programación a mano. Los trabajos en CS se orientarían más hacia el mantenimiento como en industrias muy automatizadas como la fabricación de automóviles, pero aún habría reservas que prefieren que los humanos escriban el código en lugar de las máquinas, como Ferrari en la industria automotriz.

¿Reemplazado? No. Aumentado por? Seguramente.

La forma en que el hablante de la computadora habla a dichas computadoras se está volviendo de nivel superior y más abstracto; pero no creo que pueda volverse completamente abstraído.

Mi razonamiento para esto es que si pudiéramos hablar el lenguaje humano a una computadora en un sentido literal: no resolveríamos la mayoría de los problemas.

El lenguaje humano nos encadena, en el sentido de que el cerebro es un gráfico interconectado nublado en red; y la boca, un tampón primero en entrar, primero en salir.

Incluso si en lugar del silicio se encontraba otro humano, debemos pasar tiempo para comprender el problema y dilucidarlo para nosotros mismos antes de que podamos hacerlo con los demás.

Preguntas como … “¿Quieres velocidad, precisión, fiabilidad? Para mostrar su nuevo método … ¿o qué?

A lo que la respuesta es casi segura:

– “¿Cuánto puedo tener de todo lo anterior, juntos?”

Y a esto, los padres se ríen; porque, significa que tenemos que explorar el problema íntimamente internamente, antes de que podamos descubrir una respuesta [que podría ser] compatible con la realidad, antes de que podamos tratar de sacarla por la boca torpe.

Y entonces, no. Pero, la IA puede generalizar algunos problemas que tenemos, y también algunas soluciones genéricas que podemos usar, pero el reemplazo completo no es una opción.

Solo en algunos contextos.

Uno de los problemas es que los proveedores de servicios de software, como los bancos, tienen responsabilidades que no pueden delegarse en las IA. Si la cuenta de alguien está en mal estado, entonces es responsabilidad del banco. Una IA no puede ser considerada responsable. Un desarrollador humano puede.

El mayor riesgo en el aprendizaje automático en la actualidad es con vehículos autónomos porque hay vidas en juego. La ventaja correspondiente es que la seguridad es algo para lo que pueden entrenarse las máquinas. Toda la información que Waymo, Tesla y otros están acumulando se puede utilizar para entrenar a las IA en las condiciones de las carreteras del mundo real. Se encuentran disponibles simulaciones muy realistas que pueden usarse para entrenarlos para que sean conscientes de su entorno. Los datos y las simulaciones se pueden usar para entrenarlos a reaccionar correctamente ante situaciones reales sin tener que salir a la carretera y esperar que ocurran estos eventos raros.

Por qué no? Al menos muchos trabajos de interfaz de usuario probablemente podrían reemplazarse por aprendizaje automático. Pero también programación: el algoritmo utilizado solo tiene que ser más inteligente.

Si todos los trabajos de programación pueden ser reemplazados por IA, entonces probablemente estamos alcanzando (o ya alcanzamos) la singularidad tecnológica.

En mi opinión, esto es bastante improbable (al menos durante los próximos 10-20 años). Los algoritmos de IA utilizados actualmente son mucho menos impresionantes cuando los estudias. Especialmente la capacitación es muy ineficiente, por lo tanto, los sistemas actuales no son realmente compatibles con el aprendizaje en tiempo real (lo cual es necesario para una IA fuerte). Peor aún: si aprenden algo nuevo, a menudo olvidan las viejas cosas aprendidas (interferencia catastrófica – Wikipedia).

No.

Porque alguien tendría que mantener el código que ejecutaría la máquina.

Incluso si ese no fuera el caso, entonces alguien tendría que dirigirlo.

Dado que esto es puramente hipotético, la respuesta puede ser literalmente cualquier cosa que desee.

No muy seguro. Hay algunas cosas que no puedo imaginar que estén completamente automatizadas por ML.

Pero no tengo mucha experiencia en eso, así que estoy seguro de que alguien eventualmente concebirá una forma de automatizar todos los aspectos de la codificación, y crear una red social será tan fácil como decirle a su computadora que desea una manera de comunicarse. largas distancias y tal … pero el futuro de las aplicaciones de nicho como Photoshop es definitivamente ML.

More Interesting

Cómo ingresar a un laboratorio superior de aprendizaje automático o de visión por computadora como erudito visitante

¿Cómo validaría un modelo que creó para generar un modelo predictivo de una variable de resultado cuantitativa mediante regresión múltiple?

¿Qué versión de Python debería usar en 2016 en Machine Learning y Data Science, Python 2.7 o Python 3.0+?

¿Qué es mejor, el algoritmo de vecinos más cercanos a k (k-NN) o el clasificador de máquina de vectores de soporte (SVM)? ¿Qué algoritmo se usa principalmente en la práctica? ¿Qué algoritmo garantiza una detección confiable en situaciones impredecibles?

¿Por qué los modelos de aprendizaje automático no funcionan bien cuando se usan en la predicción del mercado de valores en vivo, pero, por otro lado, funcionan muy bien sin conexión?

¿Debería un científico de datos novato centrarse en conceptos matemáticos o herramientas?

Aprendizaje profundo: ¿Una versión suave de unidades lineales rectificadas funciona mejor o peor que una no lineal?

¿Por qué una red neuronal no es propensa al sobreajuste a pesar de tener tantos parámetros?

¿Cómo se conecta la regresión lineal a los filtros de Kalman?

¿Por qué es tan difícil la IA? ¿Por qué todavía no hemos construido una máquina de IA?

Visión por computadora: ¿Cuáles son algunos problemas de investigación abierta en la recuperación de imágenes basada en contenido?

¿Cómo puedo sobresalir en el aprendizaje automático con antecedentes estadísticos?

¿Existe un programa de tipo PageRank para organizar mis canales RSS diarios?

¿Cuáles son las intersecciones entre los campos de la ciencia de datos y los sistemas complejos?

¿Es Kafka la mejor solución para crear una aplicación de visión por computadora?