Como ingeniero experimentado, ¿vale la pena probar el curso en línea ‘Aprendizaje profundo práctico para codificadores’? ¿Por qué?

Entiendo la necesidad de tomar cursos con la esperanza de enfocar el aprendizaje. Para alguien que no tiene idea de lo que son NN, RNN, etc., diría que uno debería ir al curso. Sin embargo, no caigas en la trampa de sentirte “bien” al acumular cursos y engañarte a ti mismo para pensar que finalmente serás un maestro en aprendizaje profundo a partir de conferencias y videos.

El aprendizaje profundo no es física cuántica. Es un área donde su capacidad para codificar e implementar su idea con cualquier marco de bajo nivel (flujo de tensor, antorcha, etc.) es tan importante, si no más, que su comprensión de la teoría.

La mayoría de los cursos por ahí le enseñan los conceptos básicos de DL, luego proceden a decirle esta “receta”. “Está bien, toma este código de modelo Covnet y ejecuta estos datos ya procesados ​​para entrenar. No se preocupe, todavía puede jugar con la tasa de aprendizaje ”. Pasan por alto tantos detalles porque, la mayoría de los cursos no pueden cubrir todos los aspectos de bajo nivel en su tiempo asignado. Sin embargo, si desea hacer un DL serio, debe conocer la implementación de bajo nivel, en cada paso. Desde la arquitectura de red, activación, regularización, optimizador hasta las funciones de pérdida. Además de tareas auxiliares como preposesión de datos (imagen, texto) etc.

Es divertido leer quora respuestas o documentos sobre normas de lote, seq2seq, máquinas neuronales de Turing, GAN. ¿Pero puedes codificarlos? Desde cero, y combinar varios componentes? Porque para un profesional que se inclina profundamente, necesita poder iterar rápidamente sobre sus ideas.

Te puedo garantizar que ningún curso por ahí te enseñará el punto anterior. Esa experiencia proviene de practicar la implementación, y solo esto puede convertirlo en un experto en DL.

El mejor curso sobre DL que puedas tomar es asegurarte de que tienes una comprensión básica de ML y redes neuronales (cs231, Cs224d, la clase de Andrew). Luego salte sobre github y comience los documentos de implementación en su lenguaje favorito de bajo nivel (flujo de tensor, antorcha, theano, etc.).

Comience con cosas de bajo nivel, construya un NN y RNN básicos en puro numpy, implemente la pérdida de varios optimizadores, etc. y obtenga una idea de cómo se juntan todas las piezas.

Luego elige algunas implementaciones en papel más simples, como Alexnet, el seq2seq original, etc. Verá que alguien ya lo ha implementado en el paquete ML de su elección. Estudie su código, vea cómo convertir el documento en código de trabajo y codifique el suyo. También puedes consultar gitxiv. com para implementaciones en papel de aprendizaje más profundo. Luego, trabajará en arquitecturas más nuevas y complejas, como seq2seq con atención suave o dura, redes de memoria, máquinas de torneado neural, GAN, etc.

El campo de investigación de DL en su estado actual (y futuro previsible) es un área de investigación caótica muy empírica y grande. Tienes cierta intuición, prueba muchas ideas, combina diferentes arquitecturas, modelos, etc. y observa qué funciona. Esto requiere que uno pueda iterar rápidamente y determinar si algo funciona o no, y este “algo” requerirá que lo construya desde cero la mayor parte del tiempo.

Por supuesto, si solo desea rascar la superficie de DL y usarla para la implementación / aplicación básica (por ejemplo, competencia relacionada con la imagen de kaggle). Entonces es sencillo tomar estos cursos y aprender cuándo usar las diferentes “recetas”.

Como ingeniero experimentado, ¿vale la pena probar el curso en línea “Aprendizaje profundo práctico para codificadores”? ¿Por qué?

No dudaría de que un ingeniero experimentado (especialmente aquellos que dominan las manipulaciones de matrices) puede “hacer un aprendizaje profundo” después de aprender este curso. De hecho, al examinar los materiales, me recuerda a Machine Learning Coursera y las Redes neuronales convolucionales CS231n para el Reconocimiento visual, que son muy intuitivas y amigables para los novatos. Además, 18 horas por semana durante 7 semanas es mucho trabajo, más que suficiente para cubrir un curso introductorio completo de DL. Definitivamente podrá entrenar algunos modelos de clasificación de imágenes y tal, y hacer algo interesante con sus propios datos.

Sin embargo, cualquier cosa más allá de los modelos estándar, como la clasificación de imágenes, es otra historia. Los modelos que involucran redes neuronales recurrentes son en general mucho más difíciles de entender y entrenar; a pesar de que el curso cubre “arquitecturas exóticas de CNN; RNN desde cero ”, dudo mucho que alguien pueda dominar esos materiales dentro de las 18 horas de trabajo. Por “maestro” me refiero a poder construir y entrenar una red neuronal personalizada usando bloques de construcción de marcos como Keras o Tensorflow, no solo llamando a un modelo como una caja negra.

Como punto de referencia, nosotros (dos estudiantes de doctorado con experiencia en aprendizaje profundo) intentamos replicar un famoso modelo de traducción neural el otoño pasado, terminamos pasando al menos 3 semanas completas (día y noche) para escribir / reescribir / depurar el código y ejecutar la capacitación contra 22 millones de muestras. Hay demasiados detalles y dificultades que tienes que aprender por las malas.

En resumen, diría que el curso parece sistemático y práctico, definitivamente cumplirá con sus afirmaciones y es ideal para que los ingenieros se sumerjan en el agua y se diviertan. Sin embargo, tenga en cuenta que todavía hay mucho que aprender más allá de ese punto.

No está de más intentarlo, pero requerirá matemáticas. Si eres bueno en matemáticas, específicamente en álgebra lineal, entonces estarás bien.

More Interesting

¿Es normal que los desarrolladores de software deben notificar a su empresa antes de involucrarse en cualquier proyecto de código abierto o gratuito?

¿Cómo puede una compañía de software de suscripción usar Twitter como herramienta de marketing?

¿Qué herramienta de codificación desea tener todo desarrollador que aún no exista?

¿Es posible crear software que pueda encontrar sus propios errores y resolverlos?

No todos pueden convertirse en gerentes. ¿Por qué la gente de software india no entiende esto? ¿Por qué India es un país tan malo para los desarrolladores de software más antiguos? ¿Por qué son tratados con falta de respeto si están codificando a la edad de 35 años?

¿Cómo se mejora la cultura de la empresa a una de apertura y colaboración de abajo hacia arriba en una startup de ~ 100 personas?

¿Debo obtener un título en ingeniería de software si quiero una carrera en desarrollo de juegos?

¿Cuál es la arquitectura de Facebook?

Repetidamente cambio mi diseño. ¿Es un signo de un mal desarrollador de software?

¿Cuál es el destino del ingeniero de software del país del tercer mundo?

¿Cuáles son las similitudes y diferencias entre Bootstrap y Polymer?

Tengo curiosidad sobre el software de base de datos de código abierto. Como Oracle posee MySQL, ¿quién posee Postgres? ¿Alguna vez se convertirán en software comercial?

¿Cuáles son algunas formas efectivas en que los ingenieros de software gestionan el tiempo de inactividad entre proyectos?

¿Cuáles son los patrones de diseño más utilizados en el código de producción sobre los que los recién graduados no tienen idea?

¿Qué piensan los ingenieros de software de las matemáticas de cualquier complejidad con respecto a su trabajo?