На днях закончил курсы #ML и #AI (89.2%). Оба в advanced track (с домашками).
Что продаёт топовое высшее учебное заведение типа Стэнфорда? Знания? Их можно получить почти бесплатно: тонна ресурсов есть в сети, и книжки, даже если они сами по себе дорогие, не сравнятся с десятками тысяч долларов в год за вшивого стэнфордского или берклёвого бакалавра.
Стэнфорд за эти тонны бабла продаёт довольно важную для людей с активной жизненной позицией вещь: человеческие контакты. Причём, не только и не столько с преподавателями. Например, с однокурсниками или соседями по дорму можно организовать стартапы (HP, Google, Facebook). Ещё важная вещь, которая остаётся с отучившимся в таком заведении человеком - это база алюмников, знакомых и незнакомых (см. напр.
http://karial.livejournal.com/?tag=mba). В неё можно делать вбросы по поводу того "кто хочет пойти работать на меня" или "наймите меня на работу".
Кроме того, формальное образование "предоставляет" ещё такие мелочи как дедлайны (два года не могу начать читать книжку, которая у меня перед носом) и аспект соревновательности, но это не является какой-то уникальной вещью для крутых вузов, это везде есть.
Что же нужно Стенфорду от окружающего мира? В основном, две вещи: бабло и умные студенты. Или какая-то комбинация из них. Бабло самоценно. Умные же студенты нужны для того, чтобы продолжать поддерживать реноме вуза и продолжать получать бабло.
Поэтому и MIT, и Стэнфорд, по сути, могут вообще все материалы свои выложить, и курсы, и домашки, и автоматический грейдинг. Сокрытие этих материалов от публики за стенами вуза не представляет ценности для Стэнфорда. Поэтому самообразовывайся, что называется, до посинения.
Но с одним условием - если везде в курсах будет постоянно проводиться мысль, что Стэнфорд - это совсем фан и очень круто, и именно туда нужно будет при случае занести бешеные деньги за дневное обучение. Я не занесу, так какой-нибудь второкурсник из МФТИ сделает очередной курс, бросит всё и переведётся в Стэнфорд. А деньги возьмёт в виде гранта где-то, это не его (стэнфорда; студента) проблема.
Стэнфорд довольно давно (MIT Open CourseWare существует много лет) хотел выложить в паблик какие-то свои курсы. Суть ясна - сделать так, чтобы достучаться до многих тысяч потенциальных будущих студентов. Повторюсь, что сам материал ценности не представляет; ценность для стенфорда представляют студенты (и бабло).
Теперь немножко спекуляций. Я не знаю, как обстояли дела на самом деле, и глубоко вопрос не исследовал, но картинка мне представляется примерно следующей. Знаете больше - поправьте.
<спекуляции>Стартап
http://www.knowit.com/ фактически форсировал Стэнфорд, чтобы наконец-то что-то сделать. Пилотом для know it стал
Artificial Intelligence Class. Похоже, именно их технология там и стоит. И поэтому сервера их валилась постоянно, постоянно передвигались дедлайны, постоянно какие-то были ляпы с заданиями. И задания сами были тяп-ляп. Очень неровные. Где-то по формуле нужно было три числа поделить друг на друга, а где-то - рассчитать сетку байесовскую.
Увидев эту бешеную активность стартапа know it в начальной стадии, Стэнфорд решил завязать с этим экспериментом, и остальные курсы делать самостоятельно. Этим я объясняю даже разницу в логотипах:
Вот AI Class:
Вот
Machine Learning Class и
DB Class:
Разница между "In partnership with Stanford Engineering" и "Stanford Engineering" очевидна.
Не знаю, что было в DB Class. В ML Class было всё чётко. Стабильные сервера. Рандомизированные (в отличие от #aiclass) квизы. Домашние задания в Octave (аналог Matlab). Задания и материалы для домашек прилично и со вниманием к мелочам оформлены в LaTeX (кто ещё не уловил связь - Стэнфорд родил Кнута, а Кнут родил ТеХ).
Ну и даже лектор. Andrew Ng (#mlclass) - это лекторный светоч. Такого лектора можно пожелать каждому. Вот он пишет: «A ≃ B», и обязательно подчеркнёт, обведёт значок «≃», и объяснит, что такая волнистая линия - это "approximately equal". И так во всём. Да, иногда приходилось скучать, но зато некоторые находят в этом кайф, потому что можно заодно английский подучить, благо один и тот же значок по два-три раза в разных контекстах товарищ Ng упомянет и опишет. Опять же, можно видео смотреть на полуторной скорости, если успеваешь, и в любой момент переключаться на медленную, если начинается менее знакомый материал.
Кроме того, товарищ Ng из #mlclass рисовал не ручкой на бумаге, как в #aiclass (что само по себе неплохо), а на каком-то пэде, который позволял ему одной кнопкой стирать написанное, цвет менять (он на одной картинке мог использовать три-четыре цвета, чтобы показать потоки данных). И вообще, рисуя поверх PDF-презентации, а не по бумаге, картинка получается гораздо веселее.
По сравнению с этим та порнография, которая имела место быть в #aiclass, лучше чем бетой назвать сложно. Where do I begin? Например, ошибки в заданиях. Их можно условно разделить на две части. Ошибки в формулировке и ошибки в том, как они сами посчитали ответ (и ни у кого с их ответом не сходится). Со вторым всё понятно. С первым же - это жесть, это главная причина моего неудовольствия курсом. Формулировки расходились с общепринятыми (например, определение kinematic states, dynamic states нужно было использовать из "как в лекциях", иначе ничего не получалось). Формулы не соответствовали тем, которые википедия считает правильными. Вопросы были то на арифметику, то на какие-то тонкости формулировок, которые нафиг никому не сдались. «Джон и его отец вышли посмотреть на звезды. Джон видит две голубые звезды и красную звезду. Его отец видит зеленую звезду и две желтые звезды. Какова суммарная температура звезд, которые видят Джон и его отец?» (©
Фейнман)
Если в #mlclass можно выяснить то, понял ли ты формулировку, просто попробовав сделать домашнее задание и прогнав его через верификатор, то в #aiclass верификация результатов была разнесена по времени от выполнения. Я несколько раз неуверенно вводил какой-то ответ с чётким желанием разобраться, что же там должно было получиться. Но через пару дней, после публикации результатов, смотрел на позитивный результат, и даже вспомнить не мог, в чём у меня были затруднения. Nor did I care anymore. В смысле, фидбэк приходит слишком поздно, и у меня не было такой самодисциплины, чтобы все затруднения записывать и после теста полировать их вновь и вновь.
Что осталось после курсов?
После #mlclass у меня осталась куча зачекиненных в приватный git домашек (некоторые на гитхаб прямо выложили), PDF'ок с заданиями. По ним в любой момент смогу восстановить какие-то детали.
После #aiclass остались несколько интересных вещей в голове, но ничего на диске. Поэтому если что-то забудется, то уже всё, с концами.
Вернусь на мгновение к вопросу о том, как товарищи лекторы продвигали Стэнфорд на этих курсах.
- Давайте представим, что у нас есть марковская цепь, но мы про текущее состояние наше в ней не знаем. Нам нужно посчитать вероятность того, что мы находимся в определённом состоянии этого графа, путём наблюдения за тем, улыбаюсь ли я или нет. Вероятность улыбки при солнце мы положем в 0.9; вероятность улыбки при дожде положим в 0.4. Это не так уж далеко от истины. Я люблю жить в Силиконовой долине, мне нравится хорошая погода здесь, и поэтому я часто улыбаюсь. (Это не точная цитата, но дух должен быть понятен --lionet)
- Тут вот я картинку вертолёта вам показываю. Упс, она не так должна быть (переворачивает вертолёт вверх ногами). Вот как. Тут наш стенфордский кореш Andrew Ng заставил вертолёт летать вверх ногами с помощью ML (
http://www.youtube.com/watch?v=0JL04JJjocc).
- Все были очень горды, когда наша команда от Стенфорда выиграла конкурс по автоматическому драйвингу.
Ну и так далее. Если бы они упомянули стэнфорд на пару раз больше, я бы сказал, что реклама стэнфорда в этих курсах была надоедливая. А так - нормально. Задачу свою выполнили.
Применение
Как можно применить курсы #ML какому-нибудь провинциальному программисту, не имеющему доступу не то что к тушке машины, чтобы её научить водить, но даже к радиоуправляемому вертолёту? Опишу одну из надоедливых наших проблем, над которыми мы занимаемся в Echo.
Куча людей делает посты комментарии в соцсетях. Эти комментарии хотят выкладывать на свои страницы медиа-гиганты, такие как Washington Post, WWE (
http://www.wwe.com/social). Но их не устраивает, что комментарии будут приходить с матом или с расистскими высказываниями, или с иного рода "hate speech". Кроме того, есть такая банальнейшая вещь, как спам (непрошенная реклама: комментарии со ссылками на сайты не по теме).
Спамом в комментариях занимается, в частности, Akismet. Но они ранжируют спам по, фактически, одной оси: спамности. Если ты хочешь отфильтровать hate speech, их система для этого не очень заточена.
Новые системы, которые возникают на этом поле, чуть менее примитивны. Они ранжируют тексты по нескольким осям:
- hate speech
- racism
- sexism
- spam
- и т. д.
Естественно, в центре подобных систем стоит машинное обучение.
Одной из таких систем, в частности, была Джулия. Пара умных ребят за год набросала примерное содержание половины курса #mlclass, и продалась компании Huffington Post за несколько миллионов долларов
http://inventorspot.com/articles/huffpo_wisdom_machines_crack_open_semantic_web_portal_43601 Я достаточно глубоко знаю технологию Джулии, потому что оценивал её для Echo. Под NDA, поэтому не могу рассказать детали. Но знаю, что там не рокет сайенс, и у меня есть все основания утверждать, что можно сделать существенно лучше.
Другая компания подобного рода, основанная выходцами из Yahoo!, чуть более серьёзная.
http://www.impermium.com/ Но и у них тоже не рокет сайенс.
Так вот, что я хочу сказать. Мы сейчас в Echo платим десятки тысяч долларов в год за то, чтобы использовать подобные сервисы. Мы посылаем им комментарии, а нам возвращается метрика того, насколько комментарий плох (возможно, по нескольким осям). В пределе мы бы просто могли купить компанию, которая занимается этой проблемной областью. Чем не technology/market fit? Чем не возможность для какого-нибудь упорного программиста из произвольного места россии?
Другой областью, которая находится в зачаточном состоянии, является anomaly detection на графиках. Даны какие-то графики. Они соответствуют измеряемым величинам. Графики постоянно пополняются и "ползут". Надо уметь детектировать проблемы: запомнить "нормальное состояние" и бить в набат, когда нормальное состояние начинает становиться ненормальным до того, как случится тотальный отказ в обслуживании. Часто этим занимаются живые люди: сидят и смотрят в графики. Иногда народ использует Nagios для алёртов, в том числе на пейджер. Но вообще это должна быть автоматически обучающаяся система, а не то, что сейчас можно найти. Автоматические системы такого рода есть, но рынок явно ещё не окучен полностью.
В общем, не буду задерживать больше ваше внимание. Оно ещё вам пригодится. Стэнфорд выкатил ещё кучу курсов, среди которых меня наиболее привлекают PGM, NLP, GT, SaaS, DAA, CS, и все остальные. Про работу только не забудьте, не берите больше одного-двух курсов за раз, но лучше в advanced track: в голове больше останется.