newsmode
search
Меню
arrow_back Назад

OMSCS CS6601 (Artificial Intelligence) Review and Tips

auto_awesomeКраткое саммари

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 (Искусственный интеллект)

[ omscs learning machinelearning python ] · 8 мин чтения

Вам также может быть интересен этот FAQ по OMSCS, который я написал после выпуска. Или посмотрите все материалы, связанные с OMSCS, здесь: omscs.

С наступающими праздниками! Только что завершил исключительно сложный и полезный курс по искусственному интеллекту — как раз когда на новой работе мне предстояло вывести в продакшн продукт для медицинских данных (пресс-релиз здесь). Время не могло быть удачнее. Сочетание этих двух вещей привело к поздним ночам (из-за работы) и выходным, целиком проведённым дома (из-за учёбы).

Зачем брать этот курс?

Мне было любопытно, как искусственный интеллект определяется в учебной программе формального образования. В моей сфере деятельности термин «искусственный интеллект» сильно перехайплен: торговцы змеиным маслом рисуют картины машин, которые обучаются сами по себе, даже без новых данных, а порой и вовсе без данных. Существует также множество онлайн-курсов в духе «Как сделать ИИ за 3 часа» (ладно, возможно, я слегка преувеличиваю — это «Как сделать ИИ за 5 часов»).

На этом фоне мне было интересно узнать, как преподаёт ИИ один из ведущих колледжей в области CS и инженерии. К моему удивлению, программа включала такие темы, как состязательный поиск (т.е. игровые задачи), поиск, удовлетворение ограничений, логика, оптимизация, сети Байеса — и это лишь некоторые из них. Это усилило мой интерес к изучению основ применения математики и логики для решения сложных задач.

Кроме того, у курса были очень хорошие отзывы (4.2 / 5, один из самых высоких), при сложности 4.3 / 5 и средней нагрузке 23 часа в неделю. По этим трём метрикам ИИ оценивался как лучший, более сложный и требующий больше времени, чем Machine Learning, Reinforcement Learning и Computer Vision — вызов принят! Это была та ещё поездка, и я многому научился. Однако, если бы мне пришлось вернуться в прошлое, я не уверен, что захотел бы снова через это пройти.

Каков курс на деле? Курс довольно близок к настоящему образованию в области ИИ. Чтение основано на классическом учебнике по ИИ Artificial Intelligence, написанном в соавторстве Stuart Russell и Peter Norvig. Последний — бывший директор Google Search, который также читает приглашённые лекции по поиску и сетям Байеса. Ещё один приглашённый лектор — Sebastian Thrun, основатель Udacity и программы беспилотных автомобилей Google X. Основной лектор, Thad Starner, является экзаменатором при поступлении на PhD-программу по ИИ и опирается на свой индустриальный опыт в Google (где он руководил разработкой Google Glass) при составлении заданий.

Что касается лекций, то я нашёл их несколько поверхностными и недостаточными. Темы вводились на очень высоком уровне. Ожидается, что студенты будут дополнять их учебником ради деталей — это было абсолютно необходимо как для заданий, так и для экзаменов. Было много самостоятельного обучения, а также обучения у однокурсников и TA как в канале Slack, так и на Piazza.

Что касается заданий, их было шесть, каждое продолжительностью две — три недели. Пять лучших в сумме давали 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) Скрытые марковские модели (т.е. решётка Витерби, корректировка на шум)

Эти задания также включали возможности для дополнительных баллов. Некоторые из них показались мне очень увлекательными, и я выходил за рамки учебного материала, чтобы реализовать более совершенные алгоритмы (т.е. различные функции оценки для состязательного поиска, более эффективные техники разбиения для деревьев решений и т.д.)

Оценка заданий выполнялась с помощью автоматического тестирования через Bonnie (сервер тестирования кода от Udacity), который даёт быструю обратную связь по вашему алгоритму и отправленному коду. Однако некоторые сообщения об ошибках были расплывчатыми и почти не объясняли причин сбоев. Кроме того, в некоторых заданиях число отправок было ограничено (например, всего 6 отправок), что заставляло всех немного нервничать.

Что касается экзаменов — они были убийственными. Промежуточный и финальный экзамены занимали 34 и 47 страниц соответственно, и на их выполнение давалось семь дней. Студентам разрешалось обращаться только к лекциям, книге и Piazza. У меня было ощущение, что они были устроены с намерением заставить студентов лучше усвоить материал в процессе экзамена, а не как строгая оценка — и действительно, я узнал много дополнительного материала, выполняя экзамены.

Однако были и некоторые недостатки. Похоже, что новый экзамен разрабатывался каждый семестр, и поэтому они были менее отполированными, чем ожидалось. К каждому экзамену были многочисленные уточнения, вплоть до последних дней экзамена. Некоторые из этих уточнений были «ломающими» — студентам приходилось возвращаться и переделывать некоторые вопросы.

Экзамены в основном предполагали (несколько утомительные) вычисления (вручную), через которые вы узнаёте, как работают алгоритмы, и набираетесь практики, а также демонстрируете своё понимание и способность применять и реализовывать. Были вопросы, на которые вы тратили три-четыре часа, работая над подвопросом в два балла (из 100), тогда как целый вопрос (10-12 баллов) мог занять полдня. При этом небольшие ошибки могут дорого вам обойтись, хотя за них и дают частичный зачёт (совет: прикладывайте всю методологию, чтобы получить шанс на частичный зачёт).

Мне пришлось брать по одному дню отпуска на промежуточный и финальный экзамены. Вместе с выходными это давало мне около 30-40 часов на каждый экзамен, и после каждого я был полностью вымотан. Я думал, что тщательно готовился к каждому экзамену, но всегда находилось несколько вопросов из ниоткуда, которые требовали от меня вчитываться в малоизвестный раздел учебника и учиться на ходу. В целом промежуточный и финальный экзамены имели вес 15% и 20% соответственно. Был также отдельный тест по плагиату с весом 5%.

Форумы и TA были превосходны. TA очень быстро отвечали на форумах на вопросы по уточнению заданий и экзаменов. Кроме того, проводимые TA офисные часы были чрезвычайно полезны для заданий и лекций — настоятельно рекомендую их посещать. Thad также проводил офисные часы, чтобы разобрать решения промежуточных и финальных экзаменов, и было забавно наблюдать, как он пытается решить работу вживую.

Советы по управлению нагрузкой

Из-за высокой нагрузки (в моём стартапе) я мог приступать к заданиям / экзаменам лишь примерно через три — пять дней после их выхода. Оглядываясь назад, это оказалось полезным, так как позволяло «вычистить баги» и дать первоначальному обсуждению зародиться на Piazza и Slack. Я выигрывал от этого и стоял на плечах гигантов, прошедших этот путь до меня.

Тем не менее я всё равно значительно мучился, особенно с первыми двумя заданиями, которые у большинства людей занимали от 20 до 40 часов. На каждое задание у вас есть два уикенда — определённо стоит начинать в первый же уикенд! Многие правы в том, что первое и второе задания были самыми сложными. Если вам удастся их преодолеть, вы уже на полпути. Задания по деревьям решений и expectation maximisation показались мне несколько более лёгкими, хотя HMM были незнакомыми и потребовали больше времени.

Чему я научился?

Курс дал хороший обзор фундаментальных техник ИИ, таких как поиск, сети Байеса, HMM и т.д. Они редко освещаются в других доступных онлайн-курсах, которые в основном сосредоточены на машинном обучении. Также были освещены другие интересные темы, такие как удовлетворение ограничений, логика и планирование, оптимизация — которые я нашёл интересными и полезными для расширения своих знаний в области алгоритмов.

Кроме того, задания многому научили меня в части перевода алгоритмов из уравнений в работающий код. Похоже, это была повторяющаяся тема в нескольких других курсах (т.е. ML, RL, CV), и я был рад дополнительной практике.

Соревнование Kaggle по деревьям решений

Одно задание, которое мне особенно понравилось, было по деревьям решений. Я большой поклонник деревьев решений в машинном обучении за их эффективность, скорость и устойчивость к переобучению и выбросам. Поэтому, когда появилась возможность реализовать деревья решений с нуля, используя только Numpy, я ухватился за неё.

Это конкретное задание также включало возможность получить дополнительные баллы через соревнование на Kaggle с использованием наших самостоятельно реализованных деревьев решений. Работая над заданием и дополнительными баллами, я нашёл время разобрать статьи XGBoost и LightGBM и применил некоторые из их техник в своём классификаторе.

В результате мне удалось занять второе место в соревновании на Kaggle — то, чем я особенно горжусь.

Поднялся на 2 позиции в приватном лидерборде =)

Что дальше?

В следующем семестре я планирую устроить себе «передышку» (более-менее). Возьму два более развлекательных курса. Machine Learning for Trading предполагает изучение машинного обучения на последовательных данных, с обилием прелестей векторизации в Numpy. Intro to Health Informatics, надеюсь, даст больше знаний об индустрии здравоохранения, а также больше практики с Java и Docker, что также полезно в моей работе.

Если вы нашли это полезным, пожалуйста, цитируйте этот материал как:

Yan, Ziyou. (Dec 2018). OMSCS CS6601 (Artificial Intelligence) Review and Tips. eugeneyan.com. 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/} }



Присоединяйтесь к 11 800+ читателей, получающих обновления о машинном обучении, RecSys, LLM и инженерии.