No hay duda de que Machine Learning y la Inteligencia Artificial est谩n afectando al mundo en desarrollo, aunque alguno los llama como temas sobrevalorados que no son m谩s que declaraciones, o simplemente cosas de programaci贸n, por lo que ac谩 los enfrentaremos cara a cara con todas las piezas de evidencia para comprobar esto.

Por un lado, la ingenier铆a de software es el arte de automatizar una tarea escribiendo reglas para que una computadora las siga. Por otra parte, Machine Learning va a un paso m谩s all谩: automatiza la tarea de escribir las reglas.

Comencemos con algo b谩sico, definamos cada una de las 谩reas.

Programaci贸n Tradicional

La programaci贸n tradicional es un proceso manual, es decir, una persona o un programador crea el programa. Pero sin que nadie programe la l贸gica, uno tiene que formular manualmente o codificar reglas. Tenemos los datos de entrada, y el programador codific贸 un programa que utiliza esos datos y se ejecuta en un computador para producir la salida deseada.

Machine Learning

Por otro lado, en Machine Learning los datos de entrada y salida son alimentados a un algoritmo para crear un programa.

Esta es la diferencia b谩sica entre la programaci贸n tradicional y Machine Learning. Sin que nadie programe la l贸gica, en la programaci贸n tradicional hay que formular y/o codificar manualmente las reglas, mientras que en Machine Learning los algoritmos formulan autom谩ticamente las reglas a partir de los datos, lo que es muy potente.

Por lo tanto, estos t茅rminos no son intercambiables: el ingeniero de datos no puede reemplazar el trabajo de la programaci贸n tradicional y viceversa. Aunque cada ingeniero de datos est谩 obligado a utilizar al menos un lenguaje de codificaci贸n, la programaci贸n tradicional es solo una parte de lo realiza. Por otro lado, no podemos decir que el desarrollo de software est茅 usando algoritmos de Machine Learning para lanzar un sitio web.

Machine Learning, al igual que la Inteligencia Artificial, no es una sustituci贸n, sino un complemento de los enfoques de programaci贸n tradicionales. Por ejemplo, Machine Learning puede ser utilizado para construir algoritmos predictivos para una plataforma de operaciones en l铆nea, mientras que la interfaz de usuario de la plataforma, la visualizaci贸n de datos y otros elementos se realizar谩n en un lenguaje de programaci贸n convencional como Ruby o Java.

Por lo tanto, he aqu铆 lo principal: Machine Learning se utiliza en el caso de que la estrategia de programaci贸n tradicional se quede rezagada y no sea suficiente para implementar plenamente una determinada tarea.

Veamos esta explicaci贸n de distintas perspectivas que son las que tradicionalmente se implementa tanto Machine Learning como la programaci贸n tradicional.

Perspectiva de los desarrolladores

Los puntos de partida para la ingenier铆a de software tradicional y Machine Learning son bastante similares. Ambos tienen como objetivo resolver problemas y ambos comienzan por familiarizarse con el dominio de los problemas: discutir con la gente, explorar el software y las bases de datos existentes. Las diferencias est谩n en la ejecuci贸n.

Los ingenieros de software utilizan su ingenio humano para encontrar una soluci贸n y formularla como un programa preciso que una computadora puede ejecutar. Los cient铆ficos de datos, es decir, las personas que implementan los sistemas de Machine Learning, no intentan escribir un programa por s铆 mismos. En su lugar, recogen datos de entrada, por ejemplo, los sensores de los autos, y los valores deseados, el 谩ngulo del volante. A continuaci贸n, instruyen a una computadora para que busque un programa que calcule una salida para cada valor de entrada, un programa que impulsa un autom贸vil con las entradas de los sensores.

ML vs programacio虂n 1

Tradicionalmente, los programadores automatizan las tareas escribiendo programas. En Machine Learning, una computadora encuentra un programa que se ajusta a los datos.

Un ingeniero de software se preocupa por la exactitud en cada punto. Mientras tanto, un cient铆fico de datos tiene que estar mucho m谩s c贸modo con la incertidumbre y la variabilidad. Despu茅s de todo, Machine Learning se trata de extraer patrones estad铆sticos de los datos. Debido a la naturaleza inherentemente estad铆stica de Machine Learning, es m谩s flexible en problemas complejos, pero tambi茅n m谩s dif铆cil de interpretar y depurar.

El desarrollo de una aplicaci贸n de Machine Learning es un proceso a煤n m谩s iterativo y exploratorio que la ingenier铆a de software. Machine Learning se aplica a problemas que son demasiado complicados para que los humanos los descubran, por esa raz贸n hacemos que una computadora encuentre una soluci贸n para nosotros. Por lo tanto, un cient铆fico de datos tiene que adoptar una actitud experimental y estar preparado para probar algunos enfoques antes de decidirse por uno satisfactorio.

Desde fuera, los modos de trabajo son muy similares: ambos profesionales pasan mucho tiempo con su computador. Los cient铆ficos de datos pasan gran parte de su tiempo escribiendo c贸digo en Python u otro lenguaje de programaci贸n de prop贸sito general, igual que los programadores tradicionales. La mayor parte del tiempo en un proyecto de Machine Learning se consume en tareas que se llevan a cabo mejor con la programaci贸n tradicional: escribir scripts para fusionar, limpiar y visualizar datos, e integrar el subsistema de Machine Learning con el resto de la aplicaci贸n. Ciertamente, las herramientas tambi茅n tienen sus diferencias. Los cient铆ficos de datos est谩n familiarizados con la regresi贸n lineal y otros algoritmos estad铆sticos mientras que los programadores tradicionales conocen las API y los marcos web al rev茅s.

Perspectiva de producto

Unas preguntas que com煤nmente se realiza son 驴cu谩ndo se beneficia un producto de Machine Learning? 驴habr谩 alg煤n uso para la ingenier铆a de software en el futuro o Machine Learning consumir谩 todo el desarrollo de software?

La respuesta es simple no, Machine Learning no desplazar谩 a la ingenier铆a de software tradicional. La mayor铆a de los tipos de problemas que se resuelven hoy en d铆a con la ingenier铆a de software, se llevar谩n a cabo mediante la programaci贸n tradicional tambi茅n en el futuro. Machine Learning, por otro lado, proporciona una manera de abordar nuevos tipos de problemas, los que antes no era factibles de resolver. Tareas que los humanos realizan con relativa facilidad, pero no pueden formularse como reglas exactas, detectar objetos en im谩genes, conducir un coche, entre muchas otras, son los principales candidatos para las soluciones de Machine Learning. Machine Learning puede ser la soluci贸n correcta tambi茅n si un software tiene que adaptarse a cambios regulares en su entorno.

Sin embargo, existen algunas limitaciones. El aprendizaje de las reglas a partir de los datos requiere que se disponga de un gran conjunto de datos de casos t铆picos. Adem谩s, los datos debes estar marcados con el resultado deseado. A veces se generan datos adecuados como efecto secundario de algunos procesos empresariales existentes o se publican como datos abiertos. Si no es as铆, la recolecci贸n y el etiquetado de los datos puede requerir un esfuerzo considerable, que puede ser costoso.

A pesar de todo esto, se puede utilizar Machine Learning para optimizar el desarrollo de programas a nivel tradicional veamos algunos casos.

Optimizaci贸n del c贸digo

Los compiladores son programas dise帽ados para procesar lenguaje de programaci贸n de alto nivel convirti茅ndolo en instrucciones de m谩quina f谩cilmente comprensibles por las m谩quinas. Tambi茅n tiene la capacidad de arreglar c贸digos antiguos sin necesidad de la fuente original en un corto per铆odo de tiempo. Este proceso ayuda a hacer un sistema m谩s r谩pido en la pr贸xima generaci贸n. El uso de los algoritmos de Machine Learning para proporcionar servicios de desarrollo de software puede ser muy importante, ya que es necesario crear el c贸digo una sola vez y utilizarlo varias veces.

Prototipo m谩s r谩pido

Definitivamente, se requiere un mes de planificaci贸n, si no un a帽o, para transformar los requisitos del negocio en productos tecnol贸gicos. Este procedimiento puede acortarse utilizando Machine Learning y pocos expertos t茅cnicos para desarrollar lenguaje natural o interfaces visuales. Machine Learning ayuda a desarrollar prototipos r谩pidos seg煤n las necesidades del cliente, lo que facilita su actualizaci贸n. Esto ayuda a los desarrolladores a concentrarse en proporcionar m谩s servicios recibiendo retroalimentaci贸n continua.

Asistentes inteligentes

La mayor parte del tiempo de los desarrolladores se dedica a leer la documentaci贸n o a depurar c贸digos. Para evitar esto, los asistentes de programaci贸n inteligentes pueden ayudar a reducir este tiempo considerable ofreciendo simplemente soporte a tiempo y recomendando documentos y fragmentos de c贸digo relevantes.

Estimaciones exactas

Por lo general, el desarrollo de software requiere m谩s presupuesto y tiempo del necesario. Pero, gracias a Machine Learning, realmente no tienes que esperar m谩s tiempo, ya que Machine Learning ayuda a estimar el presupuesto preciso junto con la duraci贸n del tiempo. Las estimaciones m谩s fiables requieren una gran experiencia, una comprensi贸n completa del contexto y una familiaridad con el equipo de desarrollo. Al utilizar Machine Learning, resulta f谩cil obtener una estimaci贸n precisa del ciclo de vida del desarrollo de software.

Toma de decisiones en el futuro

En comparaci贸n con el proceso tradicional de desarrollo de software, se espera que la Inteligencia Artificial ofrezca una soluci贸n completa al priorizar los productos y las funciones y reducir los an谩lisis no deseados. Despu茅s de completar este proceso, la Inteligencia Artificial llega con la toma de decisiones estrat茅gicas para los beneficios del negocio. Una soluci贸n de la Inteligencia Artificial ayuda as铆 a obtener resultados precisos que ayudan a las empresas a planificar sus decisiones estrat茅gicas para el crecimiento futuro.

Podemos concluir que la Inteligencia Artificial y Machine Learning no reemplazar谩 la programaci贸n tradicional, pero si puede a optimizar el ciclo de vida tradicional del desarrollo de software y subvertir la necesidad de que los seres humanos se involucren en el desarrollo tecnol贸gico.

Con esto finalizamos la explicaci贸n. Ya conoces las diferencias principales entre Machine Learning y la programaci贸n tradicional, por lo tanto te dejo la siguiente pregunta, 驴Cu谩les de las siguientes afirmaciones crees t煤 que sea cierta?

Opci贸n 1: En la programaci贸n tradicional los datos de entrada y salida son alimentados a un algoritmo para crear un programa.

Respuesta Incorrecta. En Machine Learning los datos de entrada y salida son alimentados a un algoritmo para crear un programa.

Opci贸n 2: Un ingeniero de software esta mucho m谩s c贸modo con la incertidumbre y la variabilidad de su programa.

Respuesta Incorrecta. Un ingeniero de software se preocupa por la exactitud en cada punto. Mientras tanto, un cient铆fico de datos tiene que estar mucho m谩s c贸modo con la incertidumbre y la variabilidad.

Opci贸n 3: En un futuro, Machine Learning reemplazar谩 por completo la programaci贸n tradicional.

Respuesta Incorrecta. La mayor铆a de los tipos de problemas que se resuelven hoy en d铆a con la ingenier铆a de software, se llevar谩n a cabo mediante la programaci贸n tradicional tambi茅n en el futuro.

Deja un comentario

Tu direcci贸n de correo electr贸nico no ser谩 publicada.