Хочу поділитися досвідом навчання на ресурсі "Coursera", а саме - освоєнням курсів "Machine Learning Foundations: A Case Study Approach» и «Machine Learning: Regression». Ці курси є частиною спеціалізації «Machine Learning» (University of Washington).
Машинне навчання не пов'язане з моєю поточною спеціальністю. Інтерес до нього був викликаний бажанням ознайомитися з тим, чому зараз приділено чимало уваги. У мої університетські часи (2003-2010 р.) ця тема не зачіпалася, тому машинне навчання і великі дані є для мене невідомою областю. Мені хотілося б вибудувати в голові уявлення про цю тему і вміти вирішувати прості завдання, щоб у міру необхідності заглиблюватися у щось конкретне.
Було кілька причин, що спонукали вибрати саме портал «Coursera» і саме цей курс. По-перше, читати статті на розрізнені теми про мало знайомий предмет не приносить користі, тому що знання не систематизуються. Отже, виникає необхідність у вибудуваному курсі. По-друге, був негативний досвід прослуховування лекцій, де автори дуже довго намагалися пояснити очевидні речі, до суті так і не доходячи. Що привернуло мене в курсі «Machine Learning», це те що, лектори Carlos Guestrin і Emily Fox виглядають вкрай захопленими своїм предметом (passioned & excited), говорять швидко і по справі. І крім того, помітно, що автори мають справу з практичним застосуванням, тобто з індустрією.
За словами авторів курсу, причиною його створення була спроба донести завдання машинного навчання до широкої аудиторії, тобто для тих, у кого підготовка проходила в різних областях. До головних відмінностей можна віднести те, що спершу робиться акцент на конкретних завданнях, які можна зустріти в існуючих додатках, і на те, як машинне навчання може допомогти вирішити їх. Потім розбираються застосовувані методи, те як вони влаштовані і як можуть бути корисні. Таким чином, можна побачити на простих прикладах, як машинне навчання може бути застосоване на практиці. Тим більше, що в наші дні, за словами авторів, наслідки застосування машинного навчання помітні. Раніше воно сприймалося по-іншому. Якийсь набір даних подавався на вхід мало зрозумілого алгоритму, в результаті чого робився висновок «мій графік краще твого», і результати відсилалися в науковий журнал.
Заняття діляться на теоретичну і практичну частину, і на тести. У теоретичній частині начитуються лекції (англійською мовою, англійські або іспанські субтитри). Є pdf презентації, за якими можна готуватися до тестів. Також на форумі дані посилання на додаткову літературу. У 1-му курсі "Machine Learning Foundations: A Case Study Approach "є лекції, де навчають працювати в інтерактивній оболонці IPython. Тут розповідають про основи програмування мовою Python (тільки все необхідне, щоб мати можливість виконувати завдання). Крім цього, є лекції, де розповідають про принципи роботи з бібліотекою GraphLab Create. Тести діляться на теоретичні та практичні. Питання в теоретичних тестах потребують розуміння, поверхово прослухати матеріал і успішно скласти тест навряд чи вийде. Іноді лекцій недостатньо і доводиться користуватися додатковими матеріалами. Варто зазначити, що тут в одному уроці ви можете самі собі продемонструвати за допомогою завдань основні теоретичні моменти.
Практична частина являє собою тест із завданнями. Виконання завдань передбачає вміння обробити великий набір даних, а також провести операції над ними. Автори рекомендують використовувати бібліотеку GraphLab Create, яка має API мовою Python. За її допомогою ви зможете завантажувати з файла масиви даних у зручні структури (SFrame). Ці структури дозволяють візуалізувати дані (спеціальні інтерактивні графіки) і зручно їх змінювати (додавати колонки, застосовувати операції над рядками тощо). У бібліотеці є алгоритми машинного навчання, з якими належить працювати. Для виконання завдань можна використовувати шаблон, реалізований у web-оболонці IPython Notebook. Це файл, який зберігає каркас функцій, а також рекомендації. Для локальної роботи з GraphLab Create і IPython Notebook автори рекомендують використовувати інсталятор Anaconda. Також можна працювати на web-сервісі Amazon EC2, де всі необхідні програми вже встановлені. Мною був обраний другий варіант, оскільки можна відразу приступити до роботи.
Тепер варто розповісти про план курсів. Перший курс спеціалізації "Machine Learning Foundations: A Case Study Approach "є ввідним. Лекції першого тижня присвячені опису мови Python, бібліотеці GraphLab Create. Також автори коротко розповідають, про зміст інших курсів спеціалізації. Це дуже корисно, оскільки позначений план дій не дає забувати в який бік ви рухаєтеся і що повинні вміти робити за підсумками навчання. Інші тижні містять введення в теми, які будуть детально розкриті в майбутніх курсах. Те, що дано в цих введеннях, вимагає хорошого розуміння, також потрібно вміти користуватися алгоритмами в практичних завданнях. Варто зазначити, що ці завдання наочно демонструють прочитану теорію. Нижче наведено план курсу "Machine Learning Foundations: A Case Study Approach».
- Тиждень 1. Введення. Автори описують навчальні приклади, які будуть наведені протягом наступних тижнів даного курсу. Цим же прикладам детально присвячені наступні курси спеціалізації. Автори розповідають, як методи машинного навчання допомагають вирішити існуючі завдання. Вчать працювати з GraphLab Create. Є введення в мову Python і в оболонку IPython Notebook. Наводяться схеми структури курсу (приклад дивись на малюнку 1).
- Тиждень 2. Регресія: прогнозування цін на нерухомість ("Regression: Predicting House Prices»). Тут розповідають про методи, які дозволяють за наявними даними [ціна за будинок - його параметри], передбачити ціну за будинок, параметрів якого немає в наборі. Регресії присвячений другий курс спеціалізації "Machine Learning: Regression”.
- Тиждень 3. Класифікація: аналіз тональності тексту ("Classification: Analyzing Sentiment»). Автори розповідають про способи класифікації об'єктів. Як приклади наводяться такі завдання, як виставлення оцінки ресторана на підставі текстів відгуків; визначення тематики статей за їх змістом; визначення того, що зображено на зображенні. Класифікації присвячений третій курс спеціалізації "Machine Learning: Classification».
- Тиждень 4. Кластеризація і пошук подоби: витяг документів ("Clustering and Similarity: Retrieving Documents»). В якості навчального прикладу тут наведено завдання рекомендації користувачеві статей в залежності статей, які він вже прочитав. Розповідають про методи представлення текстових документів та способи вимірювання подоби між ними. Описують завдання кластеризації об'єктів (процесу їх групування за певними ознаками). Кластеризації присвячений четвертий курс спеціалізації "Machine Learning: Clustering & Retrieval».
- Тиждень 5. Рекомендація продуктів («Recommending Products»). Тут розповідають про додатки, де системи рекомендації можуть бути корисні; про способи побудови систем рекомендації; про метрики оцінки ефективності систем рекомендації. Системам рекомендації присвячений п'ятий курс спеціалізації "Machine Learning: Recommender Systems & Dimensionality Reduction».
- Тиждень 6. Глибинне навчання: пошук зображень ("Deep Learning: Searching for Images»). Останній тиждень присвячений багаторівневим нейронним мережам. Більш детально ця тема розкрита в останньому курсі спеціалізації "Machine Learning Capstone: An Intelligent Application with Deep Learning».
Малюнок 1. Структура спеціалізації Machine Learning (взято з матеріалів курсу "Machine Learning: Regression», ©2015 Emily Fox & Carlos Guestrin)
Для проходження другого курсу спеціалізації "Machine Learning: Regression "потрібно мати уявлення про похідні, матриці, вектори і базові операції над ними. Корисним буде вміння створювати хоча б прості програми мовою Python. Короткий опис другого курсу спеціалізації "Machine Learning: Regression "наведено нижче.
- Введення. Автори розповідають, яке місце займає регресія в галузі машинного навчання. Перераховуються додатки, де регресія використовується, та описуються завдання навчального прикладу - прогнозування цін на нерухомість. Дається огляд тим, який належить вивчити. Ці теми проілюстровано на малюнку 2. В якості моделей розглядаються лінійна регресія (Linear regression), регуляризація (Regularization) двох типів (Ridge, Lasso), регресія по найближчих сусідах (nearest neighbour regression), ядерна регресія (непараметрична регресія - ядерне згладжування) (kernel regression). Розібрані такі алгоритми, як градієнтний спуск (gradient descent), градієнт координат (coordinate descent). Ключовими термінами курсу є функція втрат (loss functions), компроміс між зміщенням і дисперсією (bias-variance tradeoff), крос-валідація (cross-validation), розрізненість (sparsity), перенавчання (overfitting), вибір моделі (model selection), вибір характеристик (efurfitting)
- Тиждень 1. Проста регресія (Simple regression). Пояснюється принцип цієї моделі, і йдеться про особливості вибору її вхідних даних. Вводиться метрика оцінки якості простої лінійної регресії. Наведено алгоритми розрахунку параметрів моделі, що оптимізують метрики якості (градієнтний спуск). Пояснюється сенс параметрів. Показується, як здійснювати прогноз за допомогою розрахованих параметрів. Обговорюються джерела помилок.
- Тиждень 2. Множинна регресія (Multiple regression). Розповідається про поліноміальну регресію і виводиться модель регресії з кількома параметрами. Демонструється процес мінімізації метрики оцінки якості та описуються алгоритми обчислення параметрів моделі регресії (градієнтний спуск і градієнт координат). Описується алгоритм формування передбачень.
- Тиждень 3. Оцінка продуктивності (Assessing performance). Питання, що обговорюються протягом цього тижня: метрики оцінки якості моделі; властивості функції втрат у порівнянні з помилкою навчання, помилкою узагальнення і тестовою помилкою; наслідки вибору тестової помилки як метрики оцінки продуктивності; компроміс вибору пропорції розбиття даних на тестовий та навчальний набори; джерела помилки спрогнозованих даних; вибір складності моделі; валідаційний набір.
- Тиждень 4. Гребенева регресія (Ridge regression). Розглядається поведінка розрахованих параметрів моделі при її надлишковому навчанні; опис залежності коефіцієнтів моделі від параметра регулювання гребеневої регресії; реалізація алгоритму градієнтного спуску; алгоритм крос-валідації для вибору найкращого параметра регулювання.
- Тиждень 5. Ласо регресія (Lasso regression). Обговорюється вибір значущих параметрів моделі. Порівнюються «жадібні» та оптимальні алгоритми. Ви бачите залежність коефіцієнтів моделі від налаштування ласо регресії. Описується алгоритм крос-валідації для вибору найкращого параметра регулювання.
- Тиждень 6. Метод найближчих сусідів і непараметрична регресія з ядерним згладжуванням (Nearest neighbor and kernel regression). Перелічено причини використання методу найближчих сусідів. Дано визначення ядерної регресії і наведені приклади її використання.
Малюнок 2. Теми, що вивчаються в курсі "Machine Learning: Regression «(Взято з матеріалів курсу» Machine Learning: Regression», ©2015 Emily Fox & Carlos Guestrin)
Навантаження, розподілене по тижнях, адекватне. Однак, другий курс "Machine Learning: Regression "є більш насиченим. Якщо ви спізнюєтеся більш ніж на два тижні, вам буде запропоновано переключитися на іншу сесію, але цього робити не обов'язково. Лекції мною прослуховувалися протягом робочого тижня, в п'ятницю або на вихідних виконувалися практичні завдання. На них у мене йшло близько трьох годин.
У висновку хотілося б сказати, що описані курси спеціальності «Machine Learning» справили гарне враження. До достоїнств я ставлю практичні завдання, вони ретельно продумані та ілюструють теорію. Мені сподобалися лекції, які є ємними і в яких немає «води». Курси структуровані, є схеми, які допомагають зрозуміти, яку «частину» машинного навчання ви зараз вивчаєте, що ви знаєте і чого належить навчитися. Недоліками є те, що іноді прочитаної теорії не вистачає. Хотілося б більше посилань на інші ресурси, хоча на офіційному форумі наведені рекомендовані книги, які там же можна і завантажити. В цілому, курси спеціалізації «Machine Learning», будуть досить корисні, якщо ви хочете навчитися практично застосовувати методи машинного навчання.















