¿Alguien ha usado ML para hacer un diseño * no trivial * de algoritmos CS de bajo nivel (ver comentarios)?

En primer lugar, el aprendizaje automático es una muy mala opción para problemas de PL como este. ¿Qué necesitas al sintetizar código? Garantias ¿Qué no te da el aprendizaje automático? Garantias

Si realmente está interesado en el desarrollo automatizado de algoritmos de bajo nivel, entonces seguro. Sintetizar sort () en particular es uno de los ejemplos más antiguos del libro, y es el tema del artículo de Darlington de 1978 “Una síntesis de varios algoritmos de clasificación”.

La síntesis en general es un campo enorme en este momento, y solo puedo rascar la superficie en esta publicación. Podemos sintetizar estructuras de datos concurrentes, algoritmos de libros de texto, programadores y más.

Por lo tanto, el aprendizaje automático no puede escribir código con garantías, pero puede ayudar en el proceso de búsqueda. Swapper utiliza el aprendizaje automático para ayudar a sintetizar un simplificador, un componente clave del sintetizador de programa basado en restricciones. FlashFill puede encontrar billones de programas que se ajustan a un ejemplo, pero utiliza el aprendizaje automático para elegir el mejor. Usar el aprendizaje automático en PL también está de moda en este momento.

Hay un documento sobre Clasificación adaptativa que revisa y selecciona un algoritmo para implementar en un conjunto de datos en función de sus características y uno sobre Complejidad suavizada que predice la complejidad suavizada de los algoritmos de clasificación.

Es una pregunta tremendamente interesante, pero sort () me parece uno de los peores ejemplos que puedes elegir. malloc () probablemente sería infinitamente mejor, o cualquier otra cosa con estado que implique E / S, almacenamiento en caché, VM, operaciones de archivo.

En cuanto a sort () , ya tenemos estructuras de datos de clasificación automática como cola / montón de prioridad con tiempo de inserción O (log N). O si queremos combinar una pequeña lista sin ordenar con una lista ordenada grande, podemos hacer que O (N log N) se fusione con mergesort (/ etc.). Así que realmente no veo mucha ganancia potencial en sort ().

Por otro lado, malloc () parece un terreno realmente fértil, especialmente dinámico, por ejemplo, intérpretes para lenguajes de recolección de basura (Python, Java, R), en tipos específicos de conjuntos de datos, por ejemplo, leer en un archivo CSV o JSON, que son notoriamente arrancadores de memoria críticos para el rendimiento y también tradicionalmente a lo grande. Esos son solo mis instintos legos de haber hecho CS140, no soy un MSCS, soy un MSEE, y nunca tomé CS161 ‘Diseño de algoritmos’ / ‘Estructuras de datos y algoritmos’.

Para responder a la pregunta inmediata: no he hecho esto, no estoy al tanto de la literatura actual sobre quién lo ha hecho, pero espero que haya una investigación activa de CS sobre lo que sugerí, y sospecho que estás en un tema candente.

More Interesting

¿Hay algún lugar para ingenieros de software que no aprendan IA o Machine Learning en los próximos 10 años o todos tienen que aprenderlo?

¿Necesita aprender CSE (motor de ciencias de la computación) para aprender inteligencia artificial, o hay cursos de ingeniería separados para IA y aprendizaje automático?

¿Cómo se aplica la validación cruzada a la regresión logística? Quiero evaluar la precisión de un modelo de regresión logística en un conjunto de datos.

¿Cuál es la mejor manera de aprender la regresión logística?

¿Cómo debo combinar la retroalimentación implícita y explícita en el filtrado colaborativo?

¿Cuántos idiomas hay para las redes neuronales?

¿Cuáles son los puntos importantes de comparación entre Mahout y otras bibliotecas Java ML como Lingpipe o Weka?

¿Crees que es posible generar historias, pistas dadas, usando técnicas de PNL?

Si, en el futuro, los robots / IA se vuelven comunes en los hogares, ¿cuál es el lenguaje de programación más probable en el que se escribirán?

¿Cuáles son algunas buenas ideas de proyectos en el área de análisis / predicción del mercado de valores utilizando Bayes ingenuo?

Redes neuronales artificiales: ¿Qué determina si un problema de clasificación no trivial para el aprendizaje profundo se puede dividir en capas convolucionales en lugar de capas completamente conectadas?

¿Alguien puede proporcionar ejemplos sobre cómo usar la biblioteca Shogun para modelos de Markov ocultos?

¿Cuál es la diferencia entre clasificación (binaria y multiclase), regresión y agrupamiento?

¿Qué algoritmo de aprendizaje automático usarías para analizar los datos de los alumnos?

¿Cómo debo elegir entre convertirme en un desarrollador de JavaScript de pila completa o un ingeniero de aprendizaje automático?