¿Cuál sería su consejo para un ingeniero de software que quiera aprender el aprendizaje automático?

Esto depende mucho de los antecedentes del ingeniero de software. Y depende de qué parte del aprendizaje automático desea dominar. Entonces, en aras de la concreción, asumamos que estamos hablando de un ingeniero junior que tiene 4 años de universidad y un año de dos en la industria. Y supongamos que se trata de alguien que quiere trabajar en publicidad computacional, procesamiento de lenguaje natural, análisis de imágenes, redes sociales, búsqueda y clasificación. Comencemos con los requisitos para realizar el aprendizaje automático (exención de responsabilidad de mis colegas académicos: esta lista está muy incompleta, pida disculpas por adelantado si sus artículos no están incluidos).

  • Álgebra lineal
    Mucho aprendizaje automático, estadísticas y optimización lo necesita. Y esta es la razón por la que las GPU son mucho mejores que las CPU para hacer un aprendizaje profundo. Necesitas tener al menos un dominio básico en lo siguiente
    • Scalars, vectores, matrices, tensores. Piense en ellos como objetos de cero, uno, dos, tres y dimensiones superiores que puede componer y usar para transformar otro. Un poco como Lego. Proporcionan las transformaciones de datos básicos.
    • Vectores propios, normas, aproximaciones matriciales, descomposiciones. Básicamente se trata de sentirse cómodo con las cosas que hacen los objetos de álgebra lineal. Si desea analizar cómo funciona una matriz (por ejemplo, para comprobar por qué se están desvaneciendo sus gradientes en una red neuronal recurrente o por qué su controlador está divergiendo en un algoritmo de aprendizaje de refuerzo), debe poder comprender cuánto pueden crecer o reducirse las cosas. Al aplicarle matrices y vectores. Las aproximaciones matriciales, como el bajo rango o la factorización de Cholesky, ayudan mucho al intentar obtener un buen rendimiento y estabilidad fuera del código.
    • Algebra Lineal Numérica
      Esto es relevante si desea hacer algo que sea bastante pesado de optimización. Pensar en los métodos del núcleo y en el aprendizaje profundo. No es tan importante para modelos gráficos y muestreadores.
    • Libros
      Serge Lang, Algebra Lineal
      Un libro de álgebra lineal básico y está bien escrito para estudiantes de pregrado.
      Bela Bolobas, Análisis Lineal
      Esto es mucho más difícil y más relevante para cualquier persona que quiera hacer un montón de análisis matemático y funcional. Probablemente sea una buena idea si quieres aspirar a un doctorado.
      Lloyd Trefethen y David Bau, álgebra lineal numérica
      Este es uno de los muchos libros que puedes usar para esto. Recetas numéricas es otra, pero los algoritmos allí son un poco anticuados. Y luego está el libro de Golub y van Loan (Matrix Computations).
  • Optimización (y cálculo básico)
    En muchos casos, configurar la pregunta para hacer es bastante fácil, pero no es la respuesta. Por ejemplo, si desea realizar una regresión lineal (es decir, ajustar una línea) a algunos datos, es probable que desee minimizar la suma de las distancias al cuadrado de las observaciones. Del mismo modo, si desea obtener un buen modelo para la predicción de clics, desea maximizar la precisión de sus estimaciones de probabilidad de que alguien haga clic en el anuncio. Esto significa que tenemos el problema general de algunos objetivos, algunos parámetros, muchos datos y necesitamos una manera de llegar allí. Esto importa, en particular, ya que generalmente no tenemos una solución de formulario cerrado.
    • Optimizacion convexa
      En muchos casos, los problemas de optimización son agradables en la medida en que no tienen muchas soluciones locales. Esto sucede cuando el problema es convexo.
      (Un conjunto es convexo si puede dibujar una línea entre dos puntos del conjunto y toda la línea está en el conjunto. Una función es convexa si puede dibujar una línea entre dos puntos en el gráfico y la línea está arriba del grafico.)
      Probablemente el libro canónico en el campo es el de Steven Boyd y Lieven Vandenberghe. Es gratis y asombroso. Además, hay muchos juegos de diapositivas geniales de las clases de Boyd. Dimitri Bertsekas ha generado un tesoro de libros sobre optimización, control, etc. Esto debería ser suficiente para que alguien comience en esta área.
    • Pendiente de gradiente estocástico
      Gran parte de esto comenzó como un caso especial de optimización convexa (al menos lo hicieron los primeros teoremas), pero se ha quitado un poco, sobre todo debido al aumento de los datos. A continuación, se explica por qué: imagine que tiene que pasar algunos datos y que su algoritmo debe analizar todos los datos antes de realizar un paso de actualización. Ahora, si malintencionadamente te doy 10 copias de los mismos datos, tendrás que hacer 10 veces el trabajo sin ningún beneficio real de esto. Obviamente, la realidad no es tan mala, pero es útil si realiza muchos pequeños pasos de actualización, uno después de observar cada instancia. Esto ha sido bastante transformador en el aprendizaje automático. Además, muchos de los algoritmos asociados son mucho más fáciles.
      El reto, sin embargo, ha sido paralelizar esto. Probablemente, uno de los primeros pasos en esta dirección fue que nuestros Slow Learners son Fast paper de 2009. Una versión bastante reciente de esto son las variantes sin bloqueo, como el artículo de Hogwild de Niu et al. en 2013. En resumen, estos algoritmos funcionan calculando gradientes locales en las máquinas de los trabajadores y actualizando un conjunto de parámetros de consenso de forma asíncrona.
      El otro desafío es cómo lidiar con las formas de controlar el sobreacuerdo, por ejemplo, mediante la regularización. Para las penalizaciones convexas hay lo que se llama algoritmos de gradiente proximal. Una de las opciones más populares es el rahter desafortunadamente llamado algoritmo FISTA de Amir Beck y Marc Teboulle. Para ver algunos códigos, consulte la caja de herramientas SPAM de Francis Bach.
    • Métodos no convexos
      Muchos problemas de aprendizaje automático son no convexos. Esencialmente todo lo relacionado con el aprendizaje profundo es. Pero también lo son los clústeres, los modelos de temas, casi cualquier método de variable latente y casi cualquier otra cosa que sea interesante en el aprendizaje automático en la actualidad. Algunas de las técnicas de aceleración pueden ayudar. Por ejemplo, mi estudiante Sashank Reddy mostró recientemente cómo obtener buenos índices de convergencia en este caso.
      Hay muchas técnicas llamadas Métodos espectrales que pueden usarse. Anima Anandkumar ha respondido esto con increíble detalle en su reciente sesión de Quora. Por favor lea sus respuestas ya que son super detalladas. En pocas palabras, los problemas convexos no son los únicos que se pueden resolver de manera confiable. En algunos casos, puede calcular el equivalente matemático de un rompecabezas para demostrar que solo una cierta elección de parámetros puede tener sentido para encontrar todos los grupos, temas, dimensiones relevantes, neuronas o lo que sea en sus datos. Esto es genial si eres capaz y estás dispuesto a tirar muchos cálculos.
      Hay muchos trucos recientes cuando se trata de entrenar a Deep Networks. Me referiré a ellos a continuación, pero en algunos casos el objetivo no es solo la optimización, sino diseñar una solución de solución específica (el objetivo es casi similar a The Journey ).
  • Sistemas
    Gran parte de la razón por la que el aprendizaje automático se está convirtiendo en el ingrediente clave de casi todo lo relacionado con las personas, las mediciones, los sensores y los datos tiene que ver con los avances en la última década en los algoritmos de escalado. No es una completa coincidencia que Jeff Dean haya dado media docena de tutoriales de aprendizaje automático en el último año. Para cualquiera que haya dormido la última década debajo de una roca: es el hombre detrás de MapReduce, el sistema de archivos de Google, BigTable y otra docena de tecnologías clave que han hecho de Google un gran sitio. Algunos datos sobre él se pueden encontrar aquí.
    Bromas aparte, la investigación de sistemas ofrece un tesoro de herramientas para resolver problemas que son distribuidos, asíncronos, tolerantes a fallos, escalables y simples . Esto último es algo que los investigadores del aprendizaje automático a menudo pasan por alto. La simplicidad es una característica, no un error. Algunas de las técnicas básicas que te llevarán bastante lejos:
    • Tabla hash distribuida
      Esto es esencialmente lo que los métodos tales como memcached, dynamo, pastelería o ceph se construyen alrededor. Todos resuelven el problema: cómo distribuir objetos en muchas máquinas de manera que no tengan que preguntar a un repositorio central dónde iban las cosas. Para hacer que esto funcione, necesita codificar la ubicación de manera aleatoria pero determinista (por lo tanto, hashing). Además, debe averiguar quién se encargará de las cosas si falla alguna máquina.
      Esto es lo que usamos para el diseño de datos en el servidor de parámetros. Mi estudiante Mu Li es el cerebro detrás de este proyecto. Ver DMLC para una colección de herramientas.
    • Consistencia y mensajería
      El padrino de todo esto es el protocolo PAXOS de Leslie Lamport. Resuelve el problema de que las máquinas lleguen a un consenso, mientras que no todas las máquinas están disponibles en todo momento y algunas pueden fallar (sí, estoy jugando rápido y suelto aquí). Si alguna vez ha usado el control de versiones, probablemente sepa cómo funciona de manera intuitiva: tiene muchas máquinas (o desarrolladores) que generan actualizaciones (o partes de código) y desea combinarlas todas de una manera que tenga sentido (por ejemplo, debería hacerlo). No aplique un diff dos veces) mientras no requiera que todos hablen con todos todo el tiempo.
      En los sistemas, la solución es usar lo que se llama un reloj vectorial (ver, por ejemplo, Chubby de Google). Usamos una variante de esto en el servidor de parámetros. La diferencia clave fue (todos los créditos a Mu Li) usar relojes vectoriales para rangos de parámetros. Esto garantiza que no se quede sin memoria para las marcas de tiempo, al igual que un sistema de archivos no necesita una marca de tiempo para cada byte.
    • Tolerancia a fallos, escalado y la nube
      La forma más fácil de aprender esto es ejecutar algoritmos en Amazon AWS, Google GWC, Microsoft Azure o en los muchos otros proveedores que puede encontrar. Es bastante emocionante la primera vez que enciendes 1,000 servidores y te das cuenta de que ahora estás ordenando lo que equivale a una red de bots absolutamente legal. En un caso, mientras trabajaba en Google, tomamos más de 5,000 máquinas de alto nivel en algún lugar de Europa para inferencia en modelos temáticos. Esta fue una fracción considerable de una central nuclear, lo que acumulamos para una factura de energía. Mi gerente me llevó aparte y me dijo que este era un experimento costoso …
      Probablemente la forma más fácil de comenzar es aprender sobre la ventana acoplable. Han estado en una lágrima para desarrollar muchas herramientas para facilitar el escalado. En particular, Docker Machine y Docker Cloud son probablemente algunas de sus adiciones recientes más agradables que le permiten conectarse a diferentes nubes al igual que intercambiar controladores de impresora.
    • Hardware
      Suena obvio, pero realmente ayuda si sabes en qué hardware se ejecutan tus algoritmos. Esto le ayuda a descubrir si su código se encuentra cerca del máximo rendimiento. Para empezar, mire los números de Jeff Dean que todo ingeniero debe saber. Una de mis preguntas favoritas de la entrevista es (probablemente a estas alturas) qué tan rápido es la computadora portátil del candidato. Saber cuáles son las limitaciones para el algoritmo es realmente útil. Es caché, ancho de banda de memoria, latencia, discos, etc. Anandtech tiene artículos introductorios realmente geniales y revisiones de arquitecturas de microprocesadores y cosas relacionadas. Échales un vistazo cada vez que Intel / ARM / AMD lanza nuevo hardware.
  • Estadística
    He puesto deliberadamente esto último. Simplemente ya que todos piensan que esto es clave (sí, lo es) y pasa por alto todo lo demás. Las estadísticas son la clave para permitirte hacer buenas preguntas. También le ayuda a comprender cuánto de una aproximación está haciendo cuando está modelando algunos datos.
    Muchas de las mejoras en cualquier cosa, desde modelos gráficos, métodos de kernel, aprendizaje profundo, etc. realmente surgen de poder hacer las preguntas correctas, es decir, definir funciones objetivas sensibles que luego puede optimizar.
    • Estadísticas Propias
      Una buena introducción es el libro de Larry Wasserman sobre Todas las estadísticas. Como alternativa, puede consultar el libro Machine Learning de David McKay. Es gratis (y enorme y completo). Hay muchos otros grandes libros, como los de Kevin Murphy, Chris Bishop, Trevor Hastie, Rob Tibshirani y Jerome Friedman. Y sí, Bernhard Scholkopf y yo también escribimos uno.
    • Algoritmos aleatorios y computación probabilística
      Esto es esencialmente la informática que aborda los mismos problemas. La diferencia clave es que se utilizan como una herramienta para diseñar algoritmos en lugar de un problema para ajustar parámetros. Realmente me encanta el de Michael Mitzenmacher y Eli Upfal. Es engañosamente fácil de leer a pesar de que cubre muchos problemas profundos. Otro, si desea profundizar en las herramientas es el de Rajeev Motwani y Prabhakar Raghavan. Está bien escrito pero es más difícil de entender sin tener un buen historial de estadísticas.

Esta respuesta es probablemente lo suficientemente larga ahora que casi nadie habrá llegado hasta aquí. Por lo tanto, debo mantener el resto corto. Hay un montón de contenido de video impresionante en línea. Muchos profesores ya tienen un canal de YouTube donde publican sus clases. Esto ayuda al pasar por el conjunto de herramientas a veces difíciles. Aquí está el mío. Nando de Freitas es mucho mejor.

Y luego están las herramientas. DMLC es un buen lugar para comenzar. Tiene muchos algoritmos para la inferencia escalable distribuida. Incluyendo redes neuronales a través de MXNET.

Muchas más cosas faltan: lenguajes de programación, fuentes de datos, etc. Pero esta respuesta ya es demasiado larga. Más en las otras respuestas.

El aprendizaje automático, la inteligencia artificial, el big data están cambiando el panorama actual de la tecnología. Creo que no solo la tecnología, sino todo lo que te rodea. Si un ingeniero de software quiere aprender el aprendizaje automático, entonces va en la dirección correcta.

Siendo un ingeniero de software, estoy seguro de que debes tener buenas manos en las habilidades de programación. Por lo tanto, tiene una ventaja en comparación con otras personas que desean aprender el aprendizaje automático. Aunque el aprendizaje automático implica mucha programación, es más que solo programación. Otras habilidades que se requerirán para aprender aparte de la programación son

Habilidades básicas

El aprendizaje automático es un conjunto mixto de ingeniería de software, matemáticas y ciencia de datos. Estas tres son las habilidades básicas y una debe ser competente en ello. Profundizando en esto

Probabilidades y estadísticas

Uno puede aprender acerca de los algoritmos con la ayuda de las teorías de probabilidad y estadística. Algunos modelos, como los modelos de mezcla gaussianos, los modelos naive bayes y los modelos ocultos de Markov, exigen una buena comprensión de la probabilidad y las estadísticas. Aprender la teoría de la medida. Las estadísticas ayudan como modelo de métrica de evaluación como curvas receptor-operador, matrices de confusión, valores p, etc.

Modelado de datos

Los ingenieros de aprendizaje automático también tienen que analizar datos no estructurados. Esto se basa principalmente en la ciencia del modelado de datos, el proceso de evaluar la estructura básica de un conjunto de datos, ubicar patrones y cerrar la brecha donde no hay rastros de datos. El modelado de datos es la base del desarrollo de algoritmos firmes que pueden mejorarse con el tiempo.

Habilidades en programación

Sus habilidades de programación y desarrollo de software serán las más importantes, ya que el aprendizaje automático consiste en desarrollar algoritmos productivos.

Fundamentos de Programación y Ciencias de la Computación

Existe una gran cantidad de cálculos sobre una cantidad extremadamente grande de datos en el aprendizaje automático. Por lo tanto, uno debe ser claro con

  • Estructuras de datos como colas, matrices multidimensionales, pilas de árboles, gráficos, etc.
  • Complejidad como problemas NP-completos, P vs. NP, notación big-O.
  • Algoritmos como búsqueda, optimización, programación dinámica, clasificación.
  • Constitución de computadoras como caché, puntos muertos, memoria, ancho de banda, procesamiento distribuido.

Una vez que esté profundamente familiarizado con estos fundamentos, también es responsable de saber cómo aplicarlos e implementarlos durante la programación.

Diseño de software

¿Qué ofrecen los ingenieros de aprendizaje automático? Ellos entregan “Software”. Si observamos de cerca, el software es un componente muy pequeño, sin embargo, un cambio de juego en una gran comunidad de productos y servicios. Por lo tanto, es importante formar sistemas y algoritmos que puedan integrarse eficazmente con dicho software. Al tener un fuerte control sobre la API, las bibliotecas dinámicas ayudarán en el diseño de software adecuado y el desarrollo efectivo de interfaces.

Matemáticas Aplicadas y Algoritmos

Las implementaciones universales de Aprendizaje automático son fácilmente accesibles a través de bibliotecas como Theano, scikit-learn, Spark MLlib, TensorFlow, H2O, etc. Sin embargo, elija un modelo apropiado para implementarlas de manera efectiva como el árbol de decisiones, el vecino más cercano, la red neuronal, el conjunto de múltiples modelos, máquina de vectores de soporte, etc. Es necesario tener conocimientos sobre optimización convexa, programación cuadrática, gradiente decente, ecuaciones diferenciales parciales, lagrange, etc. Además, es importante tener una idea acerca de los méritos y desventajas de diferentes enfoques, como el sobreajuste y el desajuste, la fuga de datos, sesgo y varianza, datos faltantes, fuga de datos.

Aprendizaje automático de lenguajes de programación

El aprendizaje automático no se limita a ningún lenguaje específico. Encontrarás bibliotecas ML en diferentes lenguajes de programación como C, C ++, R y Python. Entre todos estos lenguajes de programación, el mejor lenguaje en mi opinión para seguir adelante es Python.

Los científicos de datos y los ingenieros de aprendizaje automático se enamoran fácilmente del lenguaje Python debido a su fácil sintaxis. Python garantiza la informática científica y el procesamiento de datos eficientes, gracias a sus bibliotecas útiles como SciPy, NumPy y Pandas. Algunas bibliotecas especializadas de ML como Theano, scikit-learn y TensorFlow desarrollan algoritmos fácilmente con diversas plataformas informáticas.

Ahora, usted sabe que estas son las cosas que deben aprender en el aprendizaje automático. Pero, ¿cómo aprenderás todas las habilidades anteriores?

Puedes comenzar con algunos cursos en línea que son ofrecidos por Udemy, Udacity, etc. Sin embargo, te aconsejaría que vayas a un programa que esté basado en el aula, que sea muy práctico y esté dirigido por un instructor.

Algunos puntos básicos a considerar al elegir un programa son

  1. El énfasis está más en la práctica y no solo en la teoría.
  2. El proyecto se basa en declaraciones de problemas relevantes de la industria y no en las asignaciones de antigüedad
  3. Los aprendizajes y proyectos son colaborativos y se realizan en equipos.
  4. Usted obtiene herramientas reales de la industria y se enfoca en el desarrollo basado en pruebas.

Descargo de responsabilidad: Soy un co-fundador de @GreyAtom, ayudando a los talentos de ingeniería a encontrar carreras sostenibles en tecnologías emergentes.

El programa insignia altamente selectivo de GreyAtom apunta a ser mentor profesional y novedoso en el inicio de su carrera en Data Science. Los estudiantes construyeron proyectos sobre conjuntos de datos reales y declaraciones de problemas proporcionados por nuestra industria y socios contratantes. El programa se basa en el aula y está muy orientado a la práctica. GreyAtom es un ecosistema donde los estudiantes pueden aprovechar lo mejor de la academia, los profesionales de la industria y las personas influyentes.

Algunos enlaces rápidos

Así que quieres aprender Machine Learning. Creo que es una buena elección.

Básicamente, el aprendizaje automático necesita algunos requisitos previos como Matemáticas y Programación y Algoritmos.

Matemáticas:

  1. Probabilidad
  2. Cálculo
  3. Estadística
  4. Álgebra l inear

Programación: Lenguaje R o Python

Algoritmos [Importante].

A continuación, puede configurar en Machine Learning. En línea Hay varios cursos de aprendizaje automático disponibles, pero le sugeriré los mejores cursos en línea de aprendizaje automático.

==> Machine Learning AZ ™: Hands-On Python & R en Data Science

Este curso es divertido y emocionante, pero al mismo tiempo nos sumergimos profundamente en el Aprendizaje automático. Se estructura de la siguiente manera:

  • Parte 1 – Preprocesamiento de datos
  • Parte 2 – Regresión: Regresión lineal simple, Regresión lineal múltiple, Regresión polinomial, RVS, Regresión del árbol de decisión, Regresión aleatoria de bosques
  • Parte 3 – Clasificación: Regresión logística, K-NN, SVM, SVM del núcleo, Bayes ingenuos, Clasificación del árbol de decisión, Clasificación de bosques aleatorios
  • Parte 4 – Agrupación en clúster: K-medias, agrupación jerárquica
  • Parte 5 – Aprendizaje de reglas de asociación: Apriori, Eclat
  • Parte 6: Aprendizaje por refuerzo: confianza superior, muestreo de Thompson
  • Parte 7 – Procesamiento de lenguaje natural: modelo de bolsa de palabras y algoritmos para PNL
  • Parte 8 – Aprendizaje profundo: redes neuronales artificiales, redes neuronales convolucionales
  • Parte 9 – Reducción de la dimensionalidad: PCA, LDA, PCA de núcleo
  • Parte 10 – Selección de modelo y realce: validación cruzada en k-fold, ajuste de parámetros, búsqueda de cuadrícula, XGBoost

Además, el curso está lleno de ejercicios prácticos que se basan en ejemplos en vivo. Así que no solo aprenderá la teoría, sino que también obtendrá práctica práctica en la construcción de sus propios modelos.

==> Machine Learning de la Universidad de Stanford, Mentor: Andrew Ng, cofundador, Coursera

Este curso proporciona una amplia introducción al aprendizaje automático, el análisis de datos y el reconocimiento de patrones estadísticos.

Los temas incluyen:

(i) Aprendizaje supervisado (algoritmos paramétricos / no paramétricos, máquinas de vectores de soporte, núcleos, redes neuronales).

(ii) Aprendizaje no supervisado (agrupamiento, reducción de dimensionalidad, sistemas de recomendación, aprendizaje profundo).

(iii) Mejores prácticas en aprendizaje automático (teoría de sesgo / varianza; proceso de innovación en aprendizaje automático y IA).

El curso también se basará en numerosos estudios de casos y aplicaciones, de modo que también aprenderá cómo aplicar algoritmos de aprendizaje para construir robots inteligentes (percepción, control), comprensión de texto (búsqueda web, antispam), visión artificial, informática médica. , audio, minería de bases de datos, y otras áreas.

Cursos relevantes

  1. Python para Data Science y Machine Learning Bootcamp
  2. De principiante a avanzado: aprendizaje automático y redes neuronales.

Todo lo mejor.

Aquí, te aconsejaría el camino más corto para aprender Aprendizaje automático hasta el final . Observe: a) la b) más corta hasta la otra. He pasado mucho tiempo leyendo y aprendiendo de diferentes recursos, así que pensé que le daría mis 2 centavos de dólar por cuáles son los recursos más óptimos.

  1. Estadística / Matemática: https://web.stanford.edu/~hastie
  2. Algorítmica: Libros de informática en Amazon.com
  3. Codificación (python): Python Machine Learning eBook: Sebastian Raschka: Tienda Kindle
  4. (Análisis y visualización): Esto no es realmente aprendizaje automático. Pero, es muy útil. Hay muchos recursos en línea para esto.

Siga estos 6 PASOS FÁCILES para aprender los conceptos básicos del APRENDIZAJE EN MÁQUINA en 3 meses.

¡¡Buena suerte!!

El aprendizaje automático es un campo verdaderamente vasto y en rápido desarrollo. Será abrumador sólo para comenzar. Sin duda, ha estado saltando en el punto en el que necesita usar la máquina para averiguar cómo construir modelos. Piensa un poco en lo que debe hacer; sin embargo, cuando se filtra la web en busca de algoritmos concebibles, hay muy recientemente un número excesivo de alternativas.

Para aprender el aprendizaje automático, debes ser mejor que el promedio en matemáticas. Aquí están las matemáticas que debe aprender teniendo en cuenta el objetivo final para estar preparado.

  • Álgebra lineal-Álgebra lineal – MIT 18.06 Álgebra lineal por Gilbert Strang
  • Teoría de probabilidad-Probabilidad y estadística – MIT 6.041 Análisis probabilístico de sistemas y probabilidad aplicada por John Tsitsiklis
  • Cálculo
  • Cálculo multivariado
  • Teoría de grafos
  • Métodos de optimización
  • Cualquier lenguaje de programación que sea ampliamente utilizado para ML como python, MATLAB o C ++.

PD: recomendaría Python aquí como idioma y recomendaría los siguientes enlaces:

  • Aprendizaje automático con texto en scikit-learn (PyCon 2016)
  • Aprendizaje automático en Python con scikit-learn
  • Aprendizaje automático con Python

https://www.youtube.com/watch?v=… https://www.youtube.com/watch?v=…

Una vez cumplidos estos requisitos, por fin puede comenzar a considerar el Aprendizaje automático.

6 PASOS FÁCILES PARA UTILIZAR EL APRENDIZAJE EN MÁQUINA?

Este es el lugar donde comienza la diversión. Ahora, se espera que la fundación comience a echar un vistazo a algunos datos. Antes de comenzar, he enumerado 30 cosas que todos deberían saber en Aprendizaje automático . La mayoría de las empresas de aprendizaje automático tienen básicamente el mismo proceso de trabajo:

PASO 1.) Fabrique sus fundamentos de aprendizaje automático estudiando algunos materiales relacionados con el tema:

a.) Las conferencias de Aprendizaje automático de Andrew Ng son un gran comienzo :

b.) Escuela de verano de aprendizaje automático :

c.) Un enlace a la lista de reproducción completa está aquí (Colección de conferencias | Aprendizaje automático)

https://www.youtube.com/view_pla

d.) Certificado de aplicaciones y minería de datos de Stanford :

http://scpd.stanford.edu/public/…

e.) Introducción a la inteligencia artificial por el Prof. Deepak Khemani IIT Madras

http://nptel.ac.in/courses/10610

f.) ” La mejor introducción de aprendizaje automático que he visto hasta ahora”.

PASO 2.) Toma un curso en línea

Lo principal que aconsejo a alguien que necesita aprender aprendizaje automático es tomar el curso en línea de Andrew Ng.

Creo que el curso de Ng es especialmente puntual y excepcionalmente eficiente, por lo que es un conocido extraordinario para alguien que necesita ingresar a ML. Me sorprende cuando los individuos me revelan que el curso es “excesivamente fundamental” o “excesivamente superficial”.

Ante la posibilidad de que me revelen que solicito que aclaren el contraste entre Regresión logística y SVM de kernel lineal, PCA versus Factorización matricial, regularización o pendiente de gradiente. He hablado con los aspirantes que afirmaron años de encuentro de ML que no sabían la respuesta a estas preguntas. En su mayor parte están claramente aclarados en el curso de Ng.

Hay muchos otros cursos en línea que puede tomar después de este, pero ahora está en su mayor parte preparado para pasar a la siguiente etapa.

Vea mi publicación anterior Los 10 mejores videos, profesores y cursos sobre aprendizaje automático para principiantes y avanzados

PASO 3.) Algunas sugerencias de libros

Mi paso subsiguiente sugerido es obtener un libro decente de LD (mi resumen más abajo), leer las secciones principales de introducción, y después de que el rebote a cualquier parte incorpore un algoritmo, está interesado. Cuando hayas descubierto que algo, salta a él, observa cada uno de los puntos de interés y, en particular, implementalo. En el último paso del curso en línea, a partir de ahora, habría actualizado algunos algoritmos en Octave. Sea como sea, aquí estoy mirando la ejecución de un algoritmo sin ninguna preparación en un lenguaje de programación “real”. En cualquier caso, puede comenzar con uno simple, por ejemplo, Regresión logística regularizada por L2, o k-means, pero también debería esforzarse para actualizar todos los más interesantes, por ejemplo, SVM. Puede utilizar una implementación de referencia en una de las muchas bibliotecas existentes para asegurarse de que está obteniendo resultados equivalentes.

  • El razonamiento bayesiano de David Barber y el aprendizaje automático
  • Aprendizaje automático de Kevin Murphy: una perspectiva probabilística
  • Google dice que el aprendizaje automático es el futuro
  • Los elementos del aprendizaje estadístico de Hastie, Tibshirani y Friedman
  • Reconocimiento de patrones del obispo y aprendizaje automático
  • Andrew Ng OpenClassRoom Stanford
  • Aprendizaje de máquina de Mitchell

También hay numerosos libros geniales que se centran en un tema específico. Por ejemplo, Sutton and Re-Inforcement Learning es una obra de arte. Además, el libro Deep Learning (accesible en la web) prácticamente se está convirtiendo en un ejemplar antes de su distribución. Sea como sea, necesita un par de esos libros para reunir un grado de comprensión de gran alcance y equilibrado del campo.

Ver mi publicación anterior 10 libros electrónicos gratuitos que debes leer sobre los conceptos básicos del aprendizaje automático .

Asimismo, puede ir específicamente a un trabajo de investigación que presente un algoritmo o enfoque que le interese y se sumerja en él.

PASO 4.) La mayoría de los algoritmos esenciales

Se confía en usted para conocer las tuercas y los tornillos de un algoritmo esencial.

Ver mis algoritmos posteriores a 15 algoritmos que los ingenieros de aprendizaje deben conocer .

En cualquier caso, además de los algoritmos, también es fundamental saber cómo configurar sus datos (selección de características, transformación y compresión) y cómo evaluar sus modelos. Tal vez, como iniciador, podría ver nuestro Aprendizaje de máquina en el ejercicio de instrucción scikit-learn en SciPy 2016. Condensa una gran parte de los rudimentos al presentar la biblioteca de scikit-learn, que puede resultar útil para la ejecución y otros exámenes. :

PASO 5.) Juega con unos enormes conjuntos de datos que son accesibles de forma abierta.

Descubra un conjunto de datos que le parezca especialmente intrigante o sobre el que tenga hipótesis y verifique si tiene razón.

a.) Datos del gobierno de los EE. UU. http://www.data.gov/

b.) Contender en Kaggle o construir algo con uno de sus conjuntos de datos, es realmente divertido y genuino. https://www.kaggle.com/

Kaggle es una plataforma para el modelado predictivo y las competiciones de análisis en las que las empresas e investigadores publican sus datos, y los estadísticos y mineros de datos de todo el mundo compiten para producir los mejores modelos”. – Wiki

Kaggle lo expone a una amplia gama de problemas de Aprendizaje automático, las competiciones de Kaggle lo obligan a codificar y a codificar su solución de la manera más eficiente posible, haciendo concesiones entre el tiempo del programador, el tiempo de CPU, RAM, etc. Cada competencia tiene un Foro donde los competidores se ayudan entre sí para abordar el problema. Estarás compitiendo contra algunos de los mejores ingenieros del mundo. Finalmente, los reclutadores están recorriendo las tablas de Kaggle en busca de ingenieros talentosos. Podrías encontrar una nueva posición .

Debería comenzar su kaggle con Titanic porque, debido a que hay muchos scripts / problemas accesibles, tendrá la capacidad de construir diversos tipos de modelos que también le permitirán comprender algunos de los algoritmos de aprendizaje automático.

A continuación, puede ocuparse de un tema interesante. Reclutar en Facebook por qué, dado que dada la facilidad de la estructura de datos y la extravagancia del contenido , puede unirse a las tablas correctas y hacer un cálculo preciso en este caso.

Cuando haya terminado con estos dos, debería estar listo para abordar temas más interesantes de acuerdo con su interés.

He enumerado 40 proyectos divertidos de aprendizaje automático para principiantes en aprendizaje automático. Cuando termine, puede echar un vistazo a los 35 principales proyectos de aprendizaje automático en Github para obtener más inspiración.

Algunos sitios que pueden ayudarlo a resolver problemas : https: //stackoverflow.com , http : //www.gitxiv.com/ , http://www.arxiv-sanity.com/ , https://arxiv.org/

PASO 6.) Participa en un aprendizaje automático centrado en el producto o en un evento Attend ML.

El grupo que busca debe estar cargado de ingenieros a los que desea instruir y aprender. Esto te ayudará a convertirte en un buen ingeniero de aprendizaje automático. Del mismo modo, al separar un grupo de productos, rápidamente descubrirás cómo la ciencia y la hipótesis del aprendizaje automático varían de la capacitación. Específicamente, cómo la conducta del cliente le mostrará algo nuevo cada día.

Vaya a los eventos de aprendizaje automático en los que puede darse cuenta de lo que hace la gente en las charlas y participar con hackathons, ejercicios de instrucción y talleres como:

La conferencia de aprendizaje automático

Conferencia de estratos de O’Reilly

PyData

Conferencia de datos ricos de Crowdflower

PD: ¿Quiere saber en profundidad los últimos recursos de AI y ML en la web? DEBE ver esta página de índice aquí .

CONCLUSIÓN:

No dudes en fallar . La mayor parte de su oportunidad en el aprendizaje automático se dedicará a tratar de entender por qué un algoritmo no funcionó como esperaba o por qué recibí los errores que son comunes. La perseverancia es crítica.

Simplemente deja que todo salga. En el caso de que piense que la regresión logística puede funcionar … inténtelo con un pequeño conjunto de datos y perciba cómo lo hace. Estas actividades tempranas son una caja de arena para asimilar las técnicas al caer de plano, así que aproveche y pruebe todo lo que sea una buena señal.

En ese punto … en caso de que sea rápido para llevar a casa el tocino aprendiendo a máquina, haga su propio sitio. Cree un sitio web que incluya cada una de las empresas a las que se haya dedicado. Muestra cómo los hiciste. Demostrar los productos finales. Hazlo hermoso. Tener imágenes decentes. Haz que el proceso sea capaz. Haga un artículo que otra persona pueda ganar y luego confíe en que una empresa puede ver todo el trabajo que realiza.

Para comenzar con el ML, debes entender que el ML no es algo que sea 100% preciso , la mayoría de los casos son solo una estimación decente y grandes cantidades de iteraciones. Así que pensar en un pensamiento único es difícil como regla , en vista del tiempo y los recursos que gastará en la preparación del modelo. Así que no intente dar sentido a las soluciones por sí mismo: busque documentos, proyectos, expertos que puedan ayudarlo. Cuanto más rápido obtengas experiencia, mejor. ¡¡Todo lo mejor!!

La mejor manera de aprender algo nuevo es haciendo un proyecto en él. Siempre fija un objetivo que al final de tu proceso de aprendizaje, deberías poder lograrlo.

Necesitas saber muy bien la programación y las estadísticas. De lo contrario, no se relacionaría con la mayoría de los conceptos del aprendizaje automático. Asegúrese de tener los mentores adecuados y aprenda en el orden correcto. No vaya a un curso que requiera estadísticas avanzadas y habilidades de programación como requisitos previos en las etapas iniciales.

Puede hacer uso de tutoría, certificación y explicación conceptual detallada aquí

Tutorial de Aprendizaje Automático y Procesamiento de Lenguaje Natural | ChalkStreet

El curso anterior está diseñado de tal manera que los ejemplos están en python, que es el mejor lenguaje posible para experimentar con el aprendizaje automático. El curso está hecho por personas de Google y Stanford.

Solo recuerde lo siguiente, cuando sienta que no lo está haciendo bien.
“Un auto de tesla salvó la vida de un hombre conduciéndolo al hospital a 20 millas de distancia. Sin el aprendizaje automático, esto no podría haber sido posible “.

Primero, responda la pregunta sobre por qué un ingeniero de software desea ingresar al aprendizaje automático.

Veo a muchos profesionales de ingeniería de software en el campo de la ciencia de datos, ya que una vez que se diseñan los algoritmos y los modelos de aprendizaje automático, se necesitan principios y disciplina de ingeniería de software para convertirse en un producto o servicio.

Si no, intente coursera o una educación formal. El aprendizaje automático es, irónicamente, un campo que requiere aprendizaje y práctica continuos. Participe en piratas y desafíos, aplique los principios de aprendizaje automático a las cosas que encuentra en su mundo actual.

Buena suerte.

Soy un ingeniero de software, y aquí está el camino que seguí desde el noob completo, para poder crear un prototipo de un sistema para la clasificación de patologías en imágenes endo-microscópicas (altamente perfeccionable, pero funciona como una prueba de concepto).

Tengo conocimientos básicos de matemáticas (sé cómo multiplicar una matriz y un vector, registrar, exp, derivar) y sé leer wikipedia 🙂.

Sugiero a

1 – Completa la introducción de Andrew Ng al aprendizaje automático en Coursera.

2 – Sigue un tutorial de Udacity sobre Tensorflow (gratis) por Vincent Vanhoucke.

3 – Completa el curso de Hinton en Coursera.

También lo recomendaría rápido. Hacer que las redes neuronales desenrollen nuevamente los videos, son increíbles para un ingeniero.

Para las herramientas, tienes que aprender lo básico de Python, la mayoría de las bibliotecas son Python, Keras es genial, simple, muy accesible, Pytorch es otra biblioteca genial.

Si desea que los conjuntos de datos experimenten, vaya a kaggle.com.

En cualquier etapa, no olvides experimentar y divertirte, es la mejor manera de aprender.

Recomendaría revisar estas respuestas para obtener una mejor imagen.

  • ¿Qué deben saber todos los ingenieros de software sobre el aprendizaje automático?
  • La respuesta de Shehroz Khan a ¿Cómo aprendo el aprendizaje automático?
  • ¿Cómo puedo convertirme en un científico de datos?

Desde mi experiencia, siendo un ingeniero de software pero ahora transformándome en un ingeniero de ciencias de la información / aprendizaje automático, le aconsejaré que, si tiene antecedentes de lenguajes de programación orientados a objetos, estructuras de datos y algoritmos, y estadísticas, no necesita nada más que una máquina básica. aprendiendo cursos como los que puedes encontrar en coursera, eres bueno para ir.

Personalmente creo que la publicación de Monica Rosati en @mrogati –

https://www.quora.com/How-can-I-…

Es una buena Enfócate en aprender por experiencia.

El mejor lugar para comenzar sería el aclamado curso de aprendizaje automático de Andrew Ng en Coursera https://www.coursera.org/learn/m… . Es una clase excelente y creo que está abierto a ritmo propio, lo que significa que todo el material es solo para que lo uses y lo estudies. Puede omitir lo que sabe o saltar a algunas de las conferencias más interesantes si lo desea.

Después de eso, como saben como ingeniero de software, la mejor manera de aprender realmente los principios sería aplicarlo a algún tipo de proyecto.

El aprendizaje automático es un tema muy interesante. Yo mismo estoy aprendiendo máquina actualmente en mi currículum. Estaba aprendiendo el aprendizaje automático en la universidad, pero también quería ayuda para estudiar en casa. Luego me topé con este sitio http://gogetguru.com que me proporciona este curso y el método más sencillo para aprenderlo. Cuenta con excelentes cursos relacionados con el desarrollo web que son fáciles de entender e interesantes. También me certificaron después de completar el curso.

Consulte los cursos que se ofrecen aquí: Cursos técnicos en línea y tutoriales en video sobre GoGetGuru de forma gratuita

Puede DM y obtener descuentos en los cursos seleccionados.