OMSCS CS6601 (Artificial Intelligence) Review and Tips
Eugene Yan (Ziyou Yan) делится отзывом о курсе CS6601 «Искусственный интеллект» в рамках программы OMSCS Georgia Tech, который он прошёл в декабре 2018 года. Курс основан на классическом учебнике Стюарта Рассела и Питера Норвига и охватывает фундаментальные техники ИИ: состязательный поиск, поиск, сети Байеса, деревья решений, EM-алгоритм и скрытые марковские модели. Курс получил рейтинг 4.2/5 при сложности 4.3/5 и средней нагрузке 23 часа в неделю; было шесть заданий (60% оценки) и два изнурительных экзамена на 34 и 47 страниц (15% и 20%). Лекции автор счёл поверхностными, требующими много самостоятельной работы, но похвалил TA и форумы. Особенно ему понравилось задание по деревьям решений, где он реализовал классификатор на чистом Numpy, изучил статьи XGBoost и LightGBM и занял второе место в Kaggle-соревновании. В следующем семестре он планирует взять более лёгкие курсы — Machine Learning for Trading и Intro to Health Informatics.
OMSCS CS6601 (Artificial Intelligence) Review and Tips
Обзор и советы по курсу OMSCS CS6601 (Искусственный интеллект)
[ omscs learning machinelearning python ] · 8 мин чтения
You might also be interested in this OMSCS FAQ I wrote after graduation. Or view all OMSCS related writing here: omscs.
Вам также может быть интересен этот FAQ по OMSCS, который я написал после выпуска. Или посмотрите все материалы, связанные с OMSCS, здесь: omscs.
Happy holidays! Have just completed the exceptionally difficult and rewarding course on artificial intelligence, just as my new role involved putting a healthcare data product into production (press release here). The timing could not have been better. The combination of both led to late nights (due to work) and weekends completely at home (due to study).
С наступающими праздниками! Только что завершил исключительно сложный и полезный курс по искусственному интеллекту — как раз когда на новой работе мне предстояло вывести в продакшн продукт для медицинских данных (пресс-релиз здесь). Время не могло быть удачнее. Сочетание этих двух вещей привело к поздним ночам (из-за работы) и выходным, целиком проведённым дома (из-за учёбы).
Why take this course?
Зачем брать этот курс?
I was curious about how artificial intelligence would be defined in a formal education syllabus. In my line of work, the term “Artificial Intelligence” is greatly overhyped, with snake oil salesmen painting pictures of machines that learn on their own, even without any new data, sometimes, without data at all. There are also plenty of online courses on “How to do AI in 3 hours” (okay maybe I’m exaggerating a bit, it’s How to do AI in 5 hours).
Мне было любопытно, как искусственный интеллект определяется в учебной программе формального образования. В моей сфере деятельности термин «искусственный интеллект» сильно перехайплен: торговцы змеиным маслом рисуют картины машин, которые обучаются сами по себе, даже без новых данных, а порой и вовсе без данных. Существует также множество онлайн-курсов в духе «Как сделать ИИ за 3 часа» (ладно, возможно, я слегка преувеличиваю — это «Как сделать ИИ за 5 часов»).
Against this context, I was interested to know how a top CS and Engineering college taught AI. To my surprise, it included topics such as adversarial search (i.e., game playing), search, constraint satisfaction, logic, optimzation, Bayes networks, just to name a few. This increased my excitement in learning about the fundamentals of using math and logic to solve difficult problems.
На этом фоне мне было интересно узнать, как преподаёт ИИ один из ведущих колледжей в области CS и инженерии. К моему удивлению, программа включала такие темы, как состязательный поиск (т.е. игровые задачи), поиск, удовлетворение ограничений, логика, оптимизация, сети Байеса — и это лишь некоторые из них. Это усилило мой интерес к изучению основ применения математики и логики для решения сложных задач.
In addition, the course had a very good reviews (4.2 / 5, one of the highest), with a difficulty of 4.3 / 5, and average workload of 23 hours a week. Based on these three metrics, AI was rated better, more difficult, and requiring more time than Machine Learning, Reinforcement Learning, and Computer Vision—challenge accepted! It was one hell of a ride, and I learnt a lot. However, if I had to go back in time, I’m not sure if I would want to put myself through it again.
Кроме того, у курса были очень хорошие отзывы (4.2 / 5, один из самых высоких), при сложности 4.3 / 5 и средней нагрузке 23 часа в неделю. По этим трём метрикам ИИ оценивался как лучший, более сложный и требующий больше времени, чем Machine Learning, Reinforcement Learning и Computer Vision — вызов принят! Это была та ещё поездка, и я многому научился. Однако, если бы мне пришлось вернуться в прошлое, я не уверен, что захотел бы снова через это пройти.
What’s the course like? The course is pretty close to the real deal on AI education. Readings are based on the quintessential AI textbook Artificial Intelligence, co-authored by Stuart Russell and Peter Norvig. The latter is a former Google Search Director who also guest lectures on Search and Bayes Nets. Another guest lecturer is Sebastian Thrun, founder of Udacity and Google X’s self-driving car program. The main lecturer, Thad Starner, is an entrance examiner for the AI PhD program and draws from his industry experience at Google (where he led the Google Glass development) when structuring assignments.
Каков курс на деле? Курс довольно близок к настоящему образованию в области ИИ. Чтение основано на классическом учебнике по ИИ Artificial Intelligence, написанном в соавторстве Stuart Russell и Peter Norvig. Последний — бывший директор Google Search, который также читает приглашённые лекции по поиску и сетям Байеса. Ещё один приглашённый лектор — Sebastian Thrun, основатель Udacity и программы беспилотных автомобилей Google X. Основной лектор, Thad Starner, является экзаменатором при поступлении на PhD-программу по ИИ и опирается на свой индустриальный опыт в Google (где он руководил разработкой Google Glass) при составлении заданий.
With regard to lectures, I found them to be somewhat superficial and lacking. Topics were introduced at a very high level. Students are expected to follow up with the textbook for more details—this was absolutely required for both the assignments and the exams. There was a lot of self-learning, and learning from peers and TAs on both the Slack channel and Piazza.
Что касается лекций, то я нашёл их несколько поверхностными и недостаточными. Темы вводились на очень высоком уровне. Ожидается, что студенты будут дополнять их учебником ради деталей — это было абсолютно необходимо как для заданий, так и для экзаменов. Было много самостоятельного обучения, а также обучения у однокурсников и TA как в канале Slack, так и на Piazza.
On assignments, there were six assignments that were each two - three weeks long. The best five contributed a total of 60% to the total grade. These involved implementing some popular and fundamental AI algorithms from scratch, including:
Что касается заданий, их было шесть, каждое продолжительностью две — три недели. Пять лучших в сумме давали 60% итоговой оценки. Они предполагали реализацию с нуля некоторых популярных и фундаментальных алгоритмов ИИ, включая:
Состязательный поиск / игровые задачи (т.е. minimax, alpha-beta, итеративное углубление, killer move (detection) и т.д.) Поиск (т.е. uniform cost search (UCS), A-star search (A), двунаправленный UCS/A, трёхнаправленный UCS/A*) Сети Байеса (т.е. вероятностное моделирование, сэмплирование Гиббса, сэмплирование Метрополиса-Гастингса) Деревья решений (т.е. разбиение, random forests, бустинг, валидация и т.д.) Expectation maximisation (т.е. k-means, gaussian mixture models) Скрытые марковские модели (т.е. решётка Витерби, корректировка на шум)
These assignments also included opportunities for extra credit. I found some of these assignments a lot of fun, and went beyond the class material to implement better algorithms (i.e., various evaluation functions for adversarial search, more efficient splitting techniques for decision trees, etc.)
Эти задания также включали возможности для дополнительных баллов. Некоторые из них показались мне очень увлекательными, и я выходил за рамки учебного материала, чтобы реализовать более совершенные алгоритмы (т.е. различные функции оценки для состязательного поиска, более эффективные техники разбиения для деревьев решений и т.д.)
Grading the assignments involved automated testing via Bonnie (Udacity’s code testing server) which provides quick feedback on your algorithm and code submitted. However, some of the error messages were vague with little reason provided for the failures. Also, there were some assignments which allowed limited submissions (e.g., 6 submissions in total) which made everyone somewhat nervous.
Оценка заданий выполнялась с помощью автоматического тестирования через Bonnie (сервер тестирования кода от Udacity), который даёт быструю обратную связь по вашему алгоритму и отправленному коду. Однако некоторые сообщения об ошибках были расплывчатыми и почти не объясняли причин сбоев. Кроме того, в некоторых заданиях число отправок было ограничено (например, всего 6 отправок), что заставляло всех немного нервничать.
With regard to the exams—they were killer. The midterm and finals were 34 and 47 pages respectively, with seven days to complete them. Students were only allowed to refer to the lectures, book, and Piazza. I felt that these were structured with the intent of getting students to learn the material better while doing the exam, and less of a strict evaluation—indeed, I learnt a lot of extra material from doing the exams.
Что касается экзаменов — они были убийственными. Промежуточный и финальный экзамены занимали 34 и 47 страниц соответственно, и на их выполнение давалось семь дней. Студентам разрешалось обращаться только к лекциям, книге и Piazza. У меня было ощущение, что они были устроены с намерением заставить студентов лучше усвоить материал в процессе экзамена, а не как строгая оценка — и действительно, я узнал много дополнительного материала, выполняя экзамены.
However, there were a few downsides. A new exam seem to be developed every term, and thus they were less polished than expected. There were numerous clarifications for each exam, even up till the last few days of the exam. Some of these clarifications were “breaking”, with students having to revisit and re-do some questions.
Однако были и некоторые недостатки. Похоже, что новый экзамен разрабатывался каждый семестр, и поэтому они были менее отполированными, чем ожидалось. К каждому экзамену были многочисленные уточнения, вплоть до последних дней экзамена. Некоторые из этих уточнений были «ломающими» — студентам приходилось возвращаться и переделывать некоторые вопросы.
The exams mostly involved (somewhat tedious) calculation (by hand), through which you learn how the algorithms work and gain practice, as well as demonstrate your understanding and ability to apply and implement. There were questions where you spent three-four hours working on a two point sub-question (out of 100), while an entire question (10-12 points) would take half a day. However, small mistakes can cost you greatly, though they do provide partial credit (pro-tip: attach all methodology for a chance of getting partial credit).
Экзамены в основном предполагали (несколько утомительные) вычисления (вручную), через которые вы узнаёте, как работают алгоритмы, и набираетесь практики, а также демонстрируете своё понимание и способность применять и реализовывать. Были вопросы, на которые вы тратили три-четыре часа, работая над подвопросом в два балла (из 100), тогда как целый вопрос (10-12 баллов) мог занять полдня. При этом небольшие ошибки могут дорого вам обойтись, хотя за них и дают частичный зачёт (совет: прикладывайте всю методологию, чтобы получить шанс на частичный зачёт).
I had to take a day’s vacation for the mid-term and finals each. Coupled with the weekend, this gave me about 30-40 hours for each exam, and I was throughly burnt out after each one. I thought I prepared throughly for each exam, but there were always a few questions out of left field that required me to pore over an obscure section of the textbook and learn on the fly. Overall, the midterms and final had a weightage of 15% and 20% respectively. There was a separate plagiarism quiz that had a weightage of 5%.
Мне пришлось брать по одному дню отпуска на промежуточный и финальный экзамены. Вместе с выходными это давало мне около 30-40 часов на каждый экзамен, и после каждого я был полностью вымотан. Я думал, что тщательно готовился к каждому экзамену, но всегда находилось несколько вопросов из ниоткуда, которые требовали от меня вчитываться в малоизвестный раздел учебника и учиться на ходу. В целом промежуточный и финальный экзамены имели вес 15% и 20% соответственно. Был также отдельный тест по плагиату с весом 5%.
The forums and TAs were excellent. The TAs responded very quickly on forums with regard to clarifications on assignments and exams. In addition, the office hours held by the TAs were immensely helpful for the assignments and lectures—I highly recommend attending them. Thad also held office hours to go through the mid-terms and finals solutions, and it was fun watching him trying to do the paper live.
Форумы и TA были превосходны. TA очень быстро отвечали на форумах на вопросы по уточнению заданий и экзаменов. Кроме того, проводимые TA офисные часы были чрезвычайно полезны для заданий и лекций — настоятельно рекомендую их посещать. Thad также проводил офисные часы, чтобы разобрать решения промежуточных и финальных экзаменов, и было забавно наблюдать, как он пытается решить работу вживую.
Tips on how to manage the workload
Советы по управлению нагрузкой
Due to my heavy workload (in my startup), I could only start on assignments / exams about three - five days after they were released. On hindsight, this was helpful as it allowed the “bugs” to be worked out and the initial discussion to be seeded on Piazza and Slack. I gained from these and stood on the shoulders of giants before me.
Из-за высокой нагрузки (в моём стартапе) я мог приступать к заданиям / экзаменам лишь примерно через три — пять дней после их выхода. Оглядываясь назад, это оказалось полезным, так как позволяло «вычистить баги» и дать первоначальному обсуждению зародиться на Piazza и Slack. Я выигрывал от этого и стоял на плечах гигантов, прошедших этот путь до меня.
Nonetheless, I still struggled significantly, especially for the first two assignment which took anywhere between 20 - 40 hours for most people. You have two weekends for each assignment—you should definitely start on the first weekend! Many are right that the first and second assignments were the hardest. If you manage to get past them, you’re halfway there. I found the assignments on decision trees and expectation maximisation to be somewhat easier, though HMMs were unfamiliar and required more time.
Тем не менее я всё равно значительно мучился, особенно с первыми двумя заданиями, которые у большинства людей занимали от 20 до 40 часов. На каждое задание у вас есть два уикенда — определённо стоит начинать в первый же уикенд! Многие правы в том, что первое и второе задания были самыми сложными. Если вам удастся их преодолеть, вы уже на полпути. Задания по деревьям решений и expectation maximisation показались мне несколько более лёгкими, хотя HMM были незнакомыми и потребовали больше времени.
What did I learnt?
Чему я научился?
The course provided a good overview of the fundamental AI techniques such as search, Bayes networks, HMMs, etc. These are seldom covered in other online courses available which tend to mostly focus on machine learning. There were also other interesting topics covered such as constraint satisfaction, logic and planning, and optimisation which I found interesting and useful in expanding my knowledge in algorithms.
Курс дал хороший обзор фундаментальных техник ИИ, таких как поиск, сети Байеса, HMM и т.д. Они редко освещаются в других доступных онлайн-курсах, которые в основном сосредоточены на машинном обучении. Также были освещены другие интересные темы, такие как удовлетворение ограничений, логика и планирование, оптимизация — которые я нашёл интересными и полезными для расширения своих знаний в области алгоритмов.
In addition, the assignments taught a lot about translating algorithms from equations into working code. This seemed to be a recurring theme throughout a few other courses (i.e., ML, RL, CV) and I was glad to have the additional practice.
Кроме того, задания многому научили меня в части перевода алгоритмов из уравнений в работающий код. Похоже, это была повторяющаяся тема в нескольких других курсах (т.е. ML, RL, CV), и я был рад дополнительной практике.
Kaggle challenge on decision trees
Соревнование Kaggle по деревьям решений
One assignment I particularly enjoyed was decision trees. I’m a big fan of decision trees for machine learning, given their effectiveness, speed, and robustness to overfitting and outliers. Thus, when the opportunity came to implement decision trees from scratch using only Numpy, I relished it.
Одно задание, которое мне особенно понравилось, было по деревьям решений. Я большой поклонник деревьев решений в машинном обучении за их эффективность, скорость и устойчивость к переобучению и выбросам. Поэтому, когда появилась возможность реализовать деревья решений с нуля, используя только Numpy, я ухватился за неё.
This particular assignment also involved the opportunity for extra credit via a Kaggle competition on our self-implemented decision trees. In working through the assignment and extra credit, I took the time to go through the XGBoost and LightGBM papers, and adopted some of their techniques on my classifier.
Это конкретное задание также включало возможность получить дополнительные баллы через соревнование на Kaggle с использованием наших самостоятельно реализованных деревьев решений. Работая над заданием и дополнительными баллами, я нашёл время разобрать статьи XGBoost и LightGBM и применил некоторые из их техник в своём классификаторе.
As a result, I managed to clinch second place on the Kaggle challenge, something I’m especially proud of.
В результате мне удалось занять второе место в соревновании на Kaggle — то, чем я особенно горжусь.
Went up 2 spots on the private leaderboard =)
Поднялся на 2 позиции в приватном лидерборде =)
What’s next?
Что дальше?
Next term, I plan to have a “break” (somewhat). Will be taking two of the more fun courses. Machine Learning for Trading involves learning about machine learning on sequential data, with lot of Numpy vectorization goodness. Intro to Health Informatics will hopefully provide more knowledge on the healthcare industry, as well as provide more practice on Java and Docker, which is also useful in my work.
В следующем семестре я планирую устроить себе «передышку» (более-менее). Возьму два более развлекательных курса. Machine Learning for Trading предполагает изучение машинного обучения на последовательных данных, с обилием прелестей векторизации в Numpy. Intro to Health Informatics, надеюсь, даст больше знаний об индустрии здравоохранения, а также больше практики с Java и Docker, что также полезно в моей работе.
If you found this useful, please cite this write-up as:
Если вы нашли это полезным, пожалуйста, цитируйте этот материал как:
Yan, Ziyou. (Dec 2018). OMSCS CS6601 (Artificial Intelligence) Review and Tips. eugeneyan.com. https://eugeneyan.com/writing/omscs-cs6601-artificial-intelligence/.
Yan, Ziyou. (Dec 2018). OMSCS CS6601 (Artificial Intelligence) Review and Tips. eugeneyan.com. https://eugeneyan.com/writing/omscs-cs6601-artificial-intelligence/.
or
или
@article{yan2018ai,
title = {OMSCS CS6601 (Artificial Intelligence) Review and Tips},
author = {Yan, Ziyou},
journal = {eugeneyan.com},
year = {2018},
month = {Dec},
url = {https://eugeneyan.com/writing/omscs-cs6601-artificial-intelligence/}
}
@article{yan2018ai, title = {OMSCS CS6601 (Artificial Intelligence) Review and Tips}, author = {Yan, Ziyou}, journal = {eugeneyan.com}, year = {2018}, month = {Dec}, url = {https://eugeneyan.com/writing/omscs-cs6601-artificial-intelligence/} }
Join 11,800+ readers getting updates on machine learning, RecSys, LLMs, and engineering.
Присоединяйтесь к 11 800+ читателей, получающих обновления о машинном обучении, RecSys, LLM и инженерии.