¿Es posible utilizar el aprendizaje automático para hacer un programa que pueda programar?

Sí, puedes, y sucederá bastante pronto.

Todo buen ingeniero de software es una “máquina de aprendizaje”, porque tratamos de mejorar las bases de código existentes para seguir mejor los estándares y las mejores prácticas (refactorización).

Nosotros, como humanos y programadores, tendemos a pensar que la mayoría del trabajo de programación es muy complejo y creativo, pero eso no es realmente cierto. Wikipedia ya tiene bots que analizan artículos y sugieren edtis basados ​​en reglas; entonces los humanos aprueban o rechazan las sugerencias. Lo mismo sucederá con GitHub. Solo tenemos que hacer un bot que …

Utilizar funciones de aprendizaje no supervisadas

Los estándares modernos de uso de IDE de programación para sintaxis automática y sugerencias de refactorización. Estos se basan en especificaciones sobre el lenguaje de programación, por ejemplo, el proyecto PSR (Índice de recomendaciones estándar de PHP).

Los humanos son malos siguiendo las instrucciones, pero las computadoras lo hacen bastante bien.

También hay muchas otras herramientas que analizan la calidad del código (Herramientas de análisis de código fuente) y producen resultados en un formato legible por máquina.

Esto creará la base básica de la Red de aprendizaje Deep Q (lea esta página en nature.com sobre Google DeepMind) y proporcionará significado sobre el código fuente a través del cual la máquina comienza a ver el mundo.

Luego, el aprendizaje no supervisado construirá nuevos conceptos sobre los estándares existentes para mejorar el rendimiento de los algoritmos de aprendizaje al aumentar la velocidad de iteración (cuando la máquina usa conceptos de nivel superior, requiere menos velocidad de computación para llegar a las mismas conclusiones, consulte el video de este artículo Aprendizaje profundo y aprendizaje de funciones sin supervisión – Andrew Ng).

Una máquina nunca puede aprender a escribir código, pero aprenderá muy fácilmente a copiar / pegar y encontrar / reemplazar secciones de códigos de una manera muy creativa y efectiva por las mismas reglas que hacen que el código se compile y pueda leerse para los humanos. siguiendo las normas.

Para que un programa se programe, además del aprendizaje de funciones no supervisado, necesita …

Utilice el aprendizaje por refuerzo

Deep Q Learning Networks también necesita un mecanismo de recompensa; en el caso de Google DeepMind como se describe en esta página en nature.com, el mecanismo de recompensa es “no terminar en la pantalla Game Over”.

En la programación hay muchos mecanismos de recompensa y una gran cantidad de datos existentes en GitHub, lo que proporcionará un buen conjunto de aprendizaje para el algoritmo y esto hace que la programación asistida por humanos sea un problema de aprendizaje automático “mucho más fácil” que jugar un videojuego:

  • Cuántas estrellas, relojes y horquillas tiene un proyecto en GitHub, describe muy bien lo útil que es el proyecto OpenSource
  • Las pruebas deben ejecutarse, cuando las pruebas fallan, la máquina se ha programado en un “Juego sobre pantalla”
  • En GitHub puede hacer que la Máquina contribuya a su bifurcación de un proyecto una vez cada hora más o menos; Si rechaza la solicitud de extracción, la máquina considerará esto como un “Juego terminado” e intentará nuevamente. Si acepta la solicitud de extracción, también puede usar metadatos en la sección de comentarios (por ejemplo, @codeQualityRewardPoinst: inserte Integer aquí) para recompensar la sugerencia de edición de código más fuerte.
  • Este enfoque también podría mejorarse a cualquier comentario de GitHub; necesita definir buenas secciones del código y luego la Máquina usará la API de GitHub para leer las recompensas (por ejemplo, comente así @codeLines: 11-30, @codeQualityRewardPoints: 110)

El futuro de la programación

GitHub proporciona una muy buena plataforma para utilizar máquinas de aprendizaje para mejorar secciones de código. Bifurca un proyecto, agrega comentarios a las confirmaciones que guían a la máquina sobre lo que desea lograr, luego escribe una prueba que falla y espera a que la máquina encuentre una solución.

Hoy, la mayoría de los programadores pueden encontrar la mejor solución más rápido que las computadoras; pero eso no importa, la computadora aprenderá constantemente y puede mejorar las soluciones creadas por el hombre mientras el programador duerme, come, bebe café o conversa con un amigo. Las computadoras también son bastante baratas en comparación con los humanos; Con 50,000 € al año, obtienes bastante poder de programación computacional.

Nunca me gustó realmente escribir el código, me gustó el proceso de diseño.

Creé un proyecto de GitHub para esta idea: ¡vamos a llamarlo PimpMyCode! Comenzaré a escribir especificaciones para el MVP ahora mismo.

https://github.com/ThatGuyFromFi…

Este es un problema clásico de informática, en el que muchos investigadores están trabajando, pero no se ha resuelto. Machine Learning es parte de la IA aplicada, en la que se utilizan algoritmos y modelos matemáticos para dar sentido a los datos. Dudo, incluso si se solucionara el problema mencionado anteriormente, ML se aplicaría alguna vez para resolverlo.

En resumen, no es posible utilizar el aprendizaje automático para hacer un programa que pueda programar. Las técnicas de PNL, junto con las redes neuronales, podrían estar cerca de resolver este problema.

More Interesting

¿Qué cosas asombrosas se pueden hacer con el aprendizaje automático?

Hay muchas distribuciones de probabilidad presentes en las estadísticas, ¿cómo debería uno usarlas? En general, veo personas que usan distribución gaussiana en algoritmos de aprendizaje automático.

¿DevOps mejora las operaciones de ciencia de datos y aprendizaje automático?

Cómo tratar las variables categóricas al analizar los datos de la encuesta para crear una clasificación

¿Por qué una función del núcleo debe satisfacer la condición de Mercer?

Cómo elegir el conjunto de validación para poder representar mejor el conjunto de prueba

¿El uso de memoria aumenta a medida que aumentan los datos de entrenamiento en redes neuronales profundas?

¿Cuáles son algunas implementaciones geniales de aprendizaje automático?

¿Se está saturando el aprendizaje automático como campo de investigación?

¿Qué algoritmo utiliza AutoDraw de Google para asociar nuestro dibujo con uno existente?

¿Hay alguna empresa de software en Bangladesh que trabaje con ciencia de datos / ML / ANN / Visión por computadora?

En Machine Learning: ¿por qué siempre entrenamos una muestra en lugar de todo el conjunto de datos / base de datos?

¿Cómo implemento un análisis de sentimiento a nivel de documento?

¿Cuáles son los temas sobre big data para hacer una tesis de maestría que excluye el aprendizaje automático?

¿Qué conocimientos de matemática / estadística y CS debo dominar (no matemático / stat / CS, pero graduado en ingeniería) para carrera / investigación en aprendizaje automático?