¿Cómo es tomar CS 181 (Machine Learning) en Harvard? ¿Por qué tiene un puntaje Q tan bajo cuando lo enseña Ryan Adams?

¡Es una de mis clases favoritas en Harvard! Lo tomé en la primavera de 2014. Si las quejas de hace dos años (2013) le preocuparon, el año pasado el curso experimentó una reestructuración importante muy exitosa que condujo a una calificación Q de 4.30 / 5.0.

Las tareas son interesantes: en lugar de conjuntos de problemas, son competencias privadas de Kaggle en toda la clase, llamadas prácticas. Estas prácticas son bastante abiertas y tratan con datos reales, muy prácticos y aplicables; Uno de ellos, por ejemplo, es predecir la calificación de libros de los usuarios (similar al desafío de Netflix).

Esto lleva a la discusión de la carga de trabajo. Simplemente no es difícil terminar las tareas y codificar algo que puede entregar. Pero debido a la apertura, nuestro equipo pasó un montón de tiempo probando muchos métodos diferentes más allá de los que se enseñan en clase y diría que ahí es donde aprendí la mayoría de las cosas (Keyon Vafa). Estas competencias de Kaggle a veces se vuelven adictivas. Sé que un par de otras personas en la clase tienen sentimientos similares. Tener un gran equipo es clave, es decir, un equipo con personas que tengan el mismo nivel de interés en el tema y la disposición para comprometerse como el suyo.

De hecho, lo disfruto tanto que volveré como becario de enseñanza el próximo semestre, ¡super emocionado!

(Gracias por la A2A)

Los comentarios de un estudiante de Harvard sobre CS 181:


Permítanme calificar toda esta respuesta diciendo que la clase no fue realmente tan difícil. A veces tomaba un par de lecturas de las notas de la clase para entender las cosas, pero de lo contrario no requería tanto trabajo.

Dicho esto, este es uno de los peores cursos que he tomado en Harvard. Cada semana miraba con asombro lo mal que estaban las cosas, y luego el personal del curso arruinaba algo más y lo hacía aún peor. Nunca he sentido una falta de respeto tan evidente por parte del personal de un curso en toda mi vida (profesor muy incluido).

Ni siquiera puedo comprenderlo. El profesor Adams no tuvo que hacer prácticamente nada para que esto fuera un curso mediocre. De la oferta anterior, tenía los juegos, tenía las notas de la conferencia, tenía todo. Entonces, cómo se las arregló para arruinar tanto este curso está más allá de mí. Solo mire los puntajes Q para el curso, obviamente no tengo idea de cuáles serán los puntajes esta vez, pero mis amigos y yo estábamos apostando sobre cuán bajo podría caer el puntaje de la última vez que se ofreció. Predigo al menos una caída de dos puntos.

Literalmente, cada aspecto de un curso que se te ocurría era tan * descuidado *. Sin ningún orden en particular, estas son algunas de las cosas malas que sucedieron con el curso:

1) Errores en los conjuntos. TODOS los juegos. Oh, supongo que menos el que no nos dieron su propio código. Estos errores causaron dolores de cabeza increíbles cuando nuestro código no funcionaba y no podíamos entender por qué.

2) El descuido del código que nos dieron. Es uno de los peores códigos de esqueleto que he visto. En pset2, había funciones aleatorias que volaban en el código, a las que respondieron “whoops, con la intención de eliminarlas antes de darle la tarea”. Pset5 fue una de las basuras peor estructuradas que he visto.

3) Errores tipográficos en las notas de clase. Normalmente, no me importaría esto en absoluto. Pero cuando un subíndice cambia todo el significado de una fórmula, me siento frustrado. En realidad fue un error de más de 10 horas en una tarea.

4) Con respecto a los errores, Piazza * no * es el medio para distribuir las correcciones más importantes. Recibo cientos de correos electrónicos de Piazza en varios cursos, así que los filtro automáticamente. No debería tener que mirar a través de publicaciones aleatorias de Piazza para descubrir que había un error en su código o un error tipográfico en sus notas. Para eso están los correos electrónicos de iSite.

5) Mala explicación de muchos temas. Me viene a la mente la mezcla de gaussianos. Una de las únicas cosas buenas que salieron de la primera mitad de período fue que caminó a través de un * buen * ejemplo de Mezcla de Gaussianos. ¿Por qué no vemos más ejemplos como este? Tal vez ese es el punto de la sección, pero las secciones en sí mismas estaban bastante mal enseñadas y, a menudo, carecían de buenos ejemplos.

6) Oh, hablando de la primera mitad de período, eso fue una debacle, ¿no? Todas las demás páginas estaban en blanco. Se sintió surrealista. Es como “Wow, honestamente no puede haber un solo aspecto de un curso que no arruinen, ¿verdad?” Honestamente, ¿cómo no un solo TF o el profesor hojearon una sola copia del examen? Es como copiar 101. Probablemente porque las copias se hicieron de última hora o algo así, como todo lo demás en este curso se hace de última hora. Y luego, la política ad-hoc de hacer que el segundo período intermedio anule potencialmente el primero para compensar el tiempo perdido gracias a este error, por supuesto, el segundo período intermedio terminó siendo el doble de difícil.

7) Volviendo a Piazza, un TF hizo una publicación completamente desagradable llamando a los estudiantes a construir oraciones similares al jardín de infantes (el ejemplo que dio faltaba una coma … un niño de Kinder podría haber entendido lo que significaba) y “gráficos horribles”. Incluso aceptando que los gráficos podrían haber sido mejores, fue una publicación increíblemente vergonzosa. Al menos se disculpó por eso, pero no debería haber sucedido en primer lugar.

8) El personal del curso abandonó completamente a los estudiantes para el proyecto final. COMPLETAMENTE. Las cosas contradecían completamente la especificación en formas innovadoras. Cuando no se dio una respuesta sustantiva a, como, 6 preguntas importantes, se tuvo que publicar una nueva pregunta que incluía todas estas preguntas en una, con un estudiante básicamente rogándole al personal que las respondiera.

9) El torneo para el proyecto final fue un completo desastre. La gente no tenía idea de lo que estaba sucediendo cuando ciertos robots funcionaban y otros no. Tal vez si nos dijera el entorno en el que se ejecutaría, en lugar de decir “oh, estará en Page en Harvard” y luego decir “oh no, no será sobre eso”, algunos de estos problemas podrían han sido evitados

10) Las calificaciones que enviaron tenían numerosos errores. Está claro que están usando una hoja de cálculo de Google o algo por el estilo, y NO son tan cuidadosos al manipular las celdas como deberían.

11) El primer conjunto estaba mal formateado, lo que provocó que numerosos estudiantes perdieran por completo un problema (por el cual no dieron oportunidad de redención). Con el 10% de su calificación por juego, ese único problema es en realidad como 1% a 2% de su calificación final .

12) El profesor no colocó las notas de la conferencia para AdaBoost, directamente relevante para el conjunto, hasta aproximadamente 5 días antes de la fecha de vencimiento (teníamos dos semanas para ello). Eso seguro nos ayudó a aquellos de nosotros que nos íbamos a ir esa semana pasada …

13) Pero, ¿por qué necesita las notas de clase para AdaBoost, pregunta? ¿Por qué no solo ver los videos de la conferencia? Oh, porque no lo * enseñó * en clase.

14) El TF llegó 15 minutos tarde a la sección a la que fui para aprender sobre AdaBoost. Y luego no tenía idea de cómo trabajaba AdaBoost, y repasó otras cosas fáciles.

15) Los conjuntos de problemas se lanzaron varios días después de que se prometió, sin extensión concomitante de los plazos.

16) Y luego, por supuesto, cuando todo termina, el Prof. Adams logró ingresar varias calificaciones de letras incorrectamente (la hoja de cálculo estaba equivocada o algo así), lo que llevó a que un tercio de los estudiantes recibieran diferentes calificaciones de las que ya habían visto en sus transcripciones Incluso se rebajaron algunas notas.

17) Las calificaciones finales del proyecto se enviaron ~ 8 días después de que se publicaron las calificaciones con letras, con literalmente 0 comentarios sobre por qué la puntuación era lo que era. Me hace sentir realmente seguro de que las calificaciones finales del proyecto se tomaron en cuenta para calcular las calificaciones de las letras ……

18) Hay correos electrónicos que TODAVÍA no han respondido. En este punto, por supuesto, me he rendido.

19) No hay coordinación para devolver los conjuntos. Una pila masiva en el frente de la habitación hace que sea increíblemente difícil encontrar la propia tarea.

Por lo general, soy uno para perdonar. Un error aquí y allá me puedo reír. Nadie es perfecto. Pero este curso claramente no le importa. Los TF lo consideran secundario a sus propias cosas, el profesor lo considera secundario, y no pasó mucho tiempo para que los estudiantes consideren el curso secundario.

Ay.

El bajo puntaje Q fue por un par de razones. La primera es simplemente que era la primera vez que impartía el curso y que necesitaba aprender mucho sobre cómo llevar a cabo un gran curso de pregrado. Cometí algunos errores logísticos significativos. Por ejemplo, hubo un problema con la impresión de mitad de período que intenté resolver de manera justa en tiempo real, pero esto introdujo cierta asimetría entre los estudiantes que algunas personas consideraron injusto. Además, el curso fue aproximadamente tres veces más grande que en años anteriores y algunas de las tareas (el proyecto final en particular) no escalaron. Además, no había una “cartera” de TF disponibles de años anteriores, por lo que teníamos poco personal y esto resultó en, por ejemplo, que los tiempos de respuesta de Piazza eran más lentos de lo que los estudiantes esperaban de otras clases.

Estoy haciendo algunos cambios para esta primavera, y estoy entusiasmado con la oportunidad de mejorarlo en muchas dimensiones diferentes. Tendremos un libro de texto este año, por ejemplo, y las tareas se estructurarán de manera muy diferente.

Tomé CS 181 como estudiante de segundo año el semestre pasado (primavera de 2017), así que espero poder ofrecer una perspectiva más reciente del curso.

En general, pensé que CS 181 hizo un buen trabajo al repasar muchas áreas y temas diferentes dentro del aprendizaje automático, comenzando con el aprendizaje supervisado, pasando al aprendizaje no supervisado y terminando con un aprendizaje de refuerzo básico. El curso fue impartido por Sasha Rush y David Parkes este año, y pensé que hicieron un buen trabajo al elegir material interesante y relevante para cubrir. Probablemente debido a la investigación de Rush, el curso cubrió redes neuronales y aprendizaje profundo con más detalle que en años anteriores.

La parte más lenta de la clase fue completar la teoría y las tareas prácticas. Las tareas teóricas fueron en su mayoría pruebas y problemas para evaluar la comprensión conceptual del material, seguido de una parte de codificación (generalmente implementando uno de los algoritmos que cubrimos en la conferencia). Por ejemplo, uno de los problemas en una asignación de teoría era derivar las ecuaciones y algoritmos involucrados en un modelo de tema multinomial (usando el algoritmo EM [1]).

Las tareas prácticas fueron mucho más interesantes y abiertas; cada tarea se centró en un solo problema que podríamos usar para resolver cualquier cosa que aprendimos en el curso (o exploramos por nuestra cuenta). En mi opinión, esta fue la parte más interesante y útil del curso, ya que teníamos que aprender a usar herramientas y bibliotecas de aprendizaje automático (al final del curso estarás muy familiarizado con baches y sklearn). Algunos ejemplos de estas tareas:

  • Prediciendo las propiedades de las moléculas orgánicas basadas en su estructura molecular
  • Recomendar música a los oyentes.
  • Swingy Monkey! (desarrollando una IA para un clon de pájaro flappy)

En resumen, puede obtener en gran medida lo que desea de CS 181 eligiendo qué técnicas probar para las tareas prácticas. Si desea llamarlo por teléfono y usar algoritmos básicos (bosque aleatorio, aprendizaje básico de Q, etc.), las tareas prácticas no serán demasiado desafiantes (pero requerirán mucho tiempo). Si desea aprender cómo usar TensorFlow para implementar redes RNN y profundas, puede usar las tareas prácticas para explorar eso.

Espero que esto sea útil para aquellos que estén considerando tomar el curso.

Notas al pie

[1] Algoritmo de expectativa-maximización – Wikipedia

CS 181 fue definitivamente una de mis clases favoritas la primavera pasada. Antes de la clase, tenía algo de experiencia en ciencia de datos y ML, pero principalmente en un sentido práctico en lugar de ab initio . Por lo tanto, las tareas prácticas en la clase (que generalmente se realizaban en forma de competencia de Kaggle) no me parecieron particularmente novedosas. Aunque algunas prácticas pueden haber involucrado nuevos métodos o abordado problemas que nunca antes había considerado, definitivamente encontré una sensación de continuidad del trabajo anterior de la industria y el proyecto.

En contraste, realmente disfruté el aspecto teórico del curso y los conjuntos de problemas (conjuntos). Anteriormente, nunca había apreciado realmente ese aspecto de ML. Cuando necesito intuición sobre la configuración óptima de parámetros o la práctica de entrenamiento, recuerdo haber pasado por alto las derivaciones formales y las funciones objetivas en los artículos de Wikipedia ML para llegar a lo “bueno”. Después de tomar la clase, soy mucho más competente para comprender las derivaciones, leer documentos y aprovechar mi propia base conceptual para la intuición. Si hay algo que me complace sobre todo del curso, es el hecho de que enfatizó la comprensión de las matemáticas y la teoría detrás de los algoritmos y prácticas de ML, en lugar de priorizar la aplicación y la codificación de esos algoritmos. Eso no quiere decir que faltara lo último; Cada juego y cada tarea práctica involucraba algunos aspectos de codificación, y obtendrás mucha experiencia con Python. Pero casi todos los conjuntos prohibieron el uso de scikit-learn y otros paquetes de aprendizaje automático, lo que obligó a los estudiantes a codificar los algoritmos ellos mismos y, por lo tanto, se aseguró de que entendieran las herramientas que estaban usando desde un nivel muy fundamental. Hay mucho tiempo en el futuro para jugar con estos algoritmos en la práctica, pero creo que el nivel de comprensión que fomenta la clase posteriormente genera toneladas de intuición e interpretabilidad.

El curso puede ser relativamente lento a veces. Dada la teoría y las tareas involucradas en la construcción de métodos de ML de trabajo desde cero, los juegos pueden a veces tomar más de 20 horas. A pesar del trabajo que implica estos conjuntos, no hay demasiados, y las tareas prácticas se trabajan en equipos de tres, por lo que la clase no ocupará tu vida semana tras semana. Uno tiene que comprometerse a pasar tiempo en los juegos para tomar esta clase, pero mirando hacia atrás, estoy más que contento de haber dedicado el tiempo.

Audito, y lo encuentro sumario pero esclarecedor.