Най-добрите ресурси, които използвах, за да се науча на машинно обучение

Полето на машинното обучение става все по-масово с всяка година. С този растеж идват много библиотеки и инструменти за абстрахиране на някои от най-трудните концепции за прилагане за хората, които започват.

Повечето хора ще кажат, че имате нужда от по-висока степен по ML, за да работите в бранша. Ако обичате да работите с данни и практическа математика, тогава бих казал, че това не е вярно. Не съм завършил колеж с машинно обучение или степен на данни, но работя с ML в момента при стартиране. Искам да споделя какво научих преди и как стигнах тук с надеждата, че това ще помогне на някой друг.

Приготвяме се да започнем

Знаех Python още когато започнах, но ако не знаете, препоръчвам първо да научите основен и междинен Python. Езикът е доста лесен за изучаване в сравнение с други. Python е и дом на най-голямата общност за наука за данни / ML, така че има много инструменти, които да ви помогнат, докато се учите.

Научете Python: freeCodeCamp Python Crash Course

Като премахнете това, първото нещо, което трябва да направите, е да изтеглите „Подкаст за машинно обучение“ от OCDevel (overcast.fm, iTunes) в любимото си приложение за подкаст. Чуйте първите 10–15 епизода. Те са много добри в даването на общ преглед на екосистемата за машинно обучение, а също така има препоръчани ресурси, които са свързани към сайта OCDevel.

Инструментиране

Бележник Anaconda & Jupyter - Те са задължителни за науката за ML и данни. Следвайте инструкциите тук, за да ги инсталирате и настроите.

Код на Visual Studio с приставка на Python - Никога не съм мислил, че ще препоръчам продукт на Microsoft, но съм честно впечатлен от ангажимента им с отворен код напоследък. Сега това е любимият ми редактор на код, дори за извършване на някои неща в Python - като код за отстраняване на грешки.

Kaggle.com е най-доброто място за намиране на набори от данни, когато започвате. Продължете и се регистрирайте за акаунт и се разходете из сайта. Ще забележите, че има много състезания за хора от всички нива на опит и дори уроци, които да отидат с тях (като този, подходящ за начинаещи за Титаник). Тези набори от данни ще бъдат много полезни за практикуване, докато изучавате библиотеки на Python.

Python библиотеки

След това е важно да научите общите библиотеки на Python за работа с данни: Numpy, Matplotlib, Pandas, Scikit-Learn и др. Препоръчвам да започнете с този курс от datacamp. Той обхваща някои основи, които можете да пропуснете или да използвате за преглед, а секцията Numpy е добро въведение.

Пандите трябва да се научат, но също така отнема малко време да ги схване, тъй като прави толкова много неща. Той е изграден върху Numpy и се използва за почистване, подготовка и анализ на данни. Той също така има вградени инструменти за неща като визуализация. Използвах много ресурси, за да науча панди и да практикувам с тях. Ето няколко:

  1. Научете панди на Kaggle
  2. Научете видео курс Pandas | Бележник за курс
  3. Допълнителни примери за тетрадка Jupyter: Основи | Графиране с Matplotlib & Pandas | И много други

След Pandas идва Scikit-Learn. Тук нещата започват да се прилагат повече към действителните алгоритми за машинно обучение. Scikit-Learn е научна библиотека на Python за машинно обучение.

Най-добрият ресурс, който намерих за това досега, е книгата „Ръце в машинно обучение с Scikit-Learn и Tensorflow“. Мисля, че върши много добра работа да ви научи стъпка по стъпка с практически примери. Първата половина е за Scikit-Learn, така че първо направих тази част и след това се върнах в частта Tensorflow.

Има много други библиотеки на Python като Keras и PyTorch, но ще разбера по-късно. Това вече е много за научаване :)

Плитко обучение

Това е първата стъпка към машинното обучение. Scikit-Learn има плитки функции за обучение като линейна регресия, вградени в библиотеката. Книгата Scikit-Learn, която споменах по-горе, преподава за много видове често срещани алгоритми за машинно обучение и ви позволява да практикувате с ръце на примери.

Въпреки че това е добре, все пак намерих за полезно да премина и през курса по машинно обучение на Андрю Нг от Станфорд. Предлага се да бъде одитиран безплатно в Coursera (има подкаст за този курс в iTunes, но е малко труден за следване и е на повече от десетилетие). Качеството на инструкциите е невероятно и това е един от най-препоръчваните ресурси онлайн (не е най-лесно да се премине, поради което го препоръчвам тук долу).

Започнете да преминавате през курса на Андрю Нг бавно и не се разочаровайте, ако не разбирате нещо. Трябваше да го слагам и вдигам няколко пъти. Взех и Matlab в колеж, който е езикът, който той използва в курса, така че нямах проблеми с тази част. Но ако вместо това искате да използвате Python, можете да намерите примерите, преведени онлайн.

Математика :)

Да, математиката е необходима. Въпреки това не се чувствам като интензивен подход, основан на математиката, е най-добрият начин за учене; това е плашещо за много хора. Както предлага OCDevel в своя подкаст (свързан по-горе), прекарвайте по-голямата част от времето си в практическо машинно обучение и може би 15–20% в изучаване на математика.

Мисля, че първата стъпка тук е да научите / изчистите статистиката. Може да бъде по-лесно смилаемо и да бъде едновременно много забавно и практично. След статистиката определено ще трябва да научите малко линейна алгебра и някакво смятане, за да знаете наистина какво се случва в дълбокото обучение. Това ще отнеме известно време, но ето някои от ресурсите, които препоръчвам за това.

Статистически ресурси:

  1. Мисля, че курсовете по статистика за Udacity са доста добри. Можете да започнете с този и след това да разгледате другите, които те предлагат.
  2. Хареса ми книгата „Гола статистика“. Пълно е с практически примери и е приятно за четене.
  3. Също така е полезно да се разбере байесовата статистика и как тя се различава от моделите за честота и класика. Този курс разбира се отлично си обяснява тези понятия - тук има и част 2 от курса.

Ресурси за линейна алгебра:

  1. Книгата „Линейна алгебра, стъпка по стъпка“ е отлична. Това е като учебник за гимназия / колеж, но добре написан и лесен за следване. Има и много упражнения за всяка глава с отговори отзад.
  2. Същност на линейната алгебра видео серия - Обясненията по математика от 3blue1brown са невероятни. Горещо препоръчвам неговото математическо съдържание.
  3. Има общ преглед и на линейната алгебра в курса на Andrew Ng, но мисля, че двата изброени по-горе ресурса са малко по-лесни за използване за изучаване на предмета.

Ресурси за смятане:

Бях взел няколко години смятане и преди, но все пак трябваше да изчистя доста. Взех използван учебник за Calc. 1 в местна книжарница, за да започнете. Ето някои онлайн ресурси, които също ми помогнаха.

  1. Същност на видео серията на смятане
  2. Разбиране на смятането от The Great Courses Plus

Други полезни математика:

  1. Математическо вземане на решения от големите курсове плюс

Дълбоко обучение

След като научите малко математика и основите на науката за данни и машинното обучение, е време да преминете към повече алгоритми и невронни мрежи.

Вероятно вече имате вкус на задълбочено учене с някои от ресурсите, които споменах в част 1, но ето някои наистина добри ресурси, които ще ви запознаят с невронните мрежи. Те поне ще бъдат добър преглед и ще попълнят някои пропуски за вас.

  1. Серия 3blue1brown, обясняваща невронни мрежи
  2. Deeplizard's Intro to Deep Learning Playlist

Докато работите през курса на Andrew Ng Stanford, препоръчвам ви да проверите fast.ai. Те имат няколко висококачествени, практически видео курса, които наистина могат да помогнат за изучаването и циментирането на тези концепции. Първият е Практическо задълбочено обучение за кодери, а вторият - току-що пуснат - е Дълбокото обучение за кодери, Част 2. Взех толкова много неща от гледането и повторното гледане на някои от тези видеоклипове. Друга невероятна характеристика на fast.ai е форумът на общността; може би един от най-активните онлайн форуми за ИИ.

Библиотеки за дълбоко обучение в Python

Мисля, че е добра идея да научите малко и от трите тези библиотеки. Keras е добро място за начало, тъй като API е създаден да бъде по-опростен и по-интуитивен. В момента използвам почти изцяло PyTorch, който ми е личен фаворит, но всички те имат плюсове и минуси. По този начин е добре да можете да изберете кой да изберете в различни ситуации.

Керас

  • Deeplizard Keras Playlist - Този канал има някои сериозно добри обяснения и примери. Можете да следвате заедно с видеоклиповете безплатно или да имате достъп до тетрадките с кодове, като се абонирате за Patreon на ниво $ 3 (USD).
  • Също така открих, че документацията за Keras е доста добра
  • Datacamp има много добре написани уроци за ML и Keras като този

Tensorflow

  • Разделът Tensorflow на книгата „Ръце в машинно обучение с Scikit-Learn и Tensorflow“ (споменат и по-горе)
  • Deeplizard Tensorflow Series

PyTorch

  • Deeplizard серия Pytorch
  • Udacity Pytorch Bootcamp - в момента приемам наноградуса за дълбоко усилване на Udacity и мислех, че техният раздел PyTorch по-рано в курса беше много добър. На път са да го пуснат безплатно за обществеността! Ето някои от техните преносими компютри PyTorch на Github.
  • Fast.ai също е изграден с PyTorch - ще научите тази библиотека някои, ако преминете през техните курсове.

Блогове и научни трудове

Намерих за много полезно да чета текущи изследвания, докато уча. Има много ресурси, които помагат за създаването на сложни концепции и математиката зад тях, по-лесна за усвояване. Тези статии също са много по-забавни за четене, отколкото може би ще осъзнаете.

  1. блог fast.ai
  2. Distill .pub - Изследванията на машинното обучение са обяснени ясно
  3. Двуминутни статии - Кратки видеоразбивки на ИИ и други научни трудове
  4. Arvix Sanity - по-интуитивен инструмент за търсене, сортиране и запазване на научни статии
  5. Пътна карта за дълбоки учебни документи
  6. Subreddit за машинно обучение - Те имат теми „какво четеш“, обсъждащи научни трудове
  7. Arxiv Insights - Този канал има някои големи разбивки на изследователски статии за AI

Аудиодопълнително образование

  1. Data Skeptic - Те имат много добри по-кратки епизоди, наречени [mini], където обхващат концепции за машинно обучение
  2. Ежедневно машинно обучение по софтуерно инженерство
  3. Подкаст за машинно обучение OCDevel - вече споменах този, но го изброявам отново, само в случай, че сте го пропуснали

Допълнителни учебни ресурси

  • Електронна книга за невронни мрежи и дълбоко обучение
  • Копнеж за машинно обучение (безплатна чернова) от Андрю Нг

Край

Моля, пляскайте, ако това е било полезно :)

Социални медии: @gwen_faraday

Ако знаете за други добри ресурси или виждате, че нещо ми липсва, моля, оставете връзки в коментарите. Благодаря ти.