Машинно обучение за една година - Библиотека на програмиста

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

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

Това е допълнение към миналогодишната ми статия за това как започнах моето пътуване в машинното обучение.

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

Беше точно това, което хората наричат ​​добра работа - да ти плащат за това, което правиш обикновено за забавление.

Освен това този опит разсея всички предразсъдъци относно факта, че само тези, които имат докторска степен, работят с машинно обучение.

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

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

Начало: Hacker News и Udacity

Интересът ми към машинното обучение започна през 2014 г., когато прочетох няколко статии по темата в Hacker News. Бях привлечен от идеята, че компютърът, като човек, може да учи. По това време не бях професионален разработчик, а по-скоро любител програмист, който успя да завърши само няколко малки проекта.

Така че започнах да гледам първите няколко части от самостоятелен курс за Udacity, докато четях всяка статия по тази тема, която дойде.

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

Провалът на курса за машинно обучение на Coursera

Страхотен курс, който ме научи на много, но не бих го препоръчал на начинаещи. Трябваше да гледам лекциите отново и отново, преди да започна да разбирам нещо. Програмирането в Octave също беше трудно, особено ако не сте запознати с тази програма. В резултат членовете на нашата група бяха бавно отстранени седмица след седмица. Накрая като тях излетях от курса.

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

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

Ако мога да върна времето назад, бих предпочел курса „Въведение в машинното обучение“ на Udacity, тъй като е по-лесен и включва използването на Python и Scikit Learn. По този начин ще си изцапаме ръцете много по-рано, ще станем по-уверени и ще получим много удоволствие от ученето.

Научен урок: Започнете с нещо просто и практично, а не с нещо сложно с много теория.

Машинно обучение за една седмица

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

Тази седмица направих следното:

  • Овладял Scikit Learn;
  • Опитно машинно обучение върху реален набор от данни;
  • Написа алгоритъм за линейна регресия от нулата (на Python);
  • Поиграх си малко с обработката на естествен език.

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

Научен урок: Прекарайте една седмица в изучаване на едно нещо и ще се изненадате колко ефективна е тази седмица.

Неуспех в изучаването на невронни мрежи

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

Нищо не се е случило.

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

Научен урок: За всяка дейност изберете подходящата среда за вас.

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

До края на годината бях написал статия, която събра всичко, което бях научил през тази година.

Проверете себе си в състезания на Kaggle

По време на ваканцията си през 2015 г. получих допълнителна мотивация и реших да пробвам Kaggle. Това е проект, в който можете да експериментирате с набори от данни и да получите обратна връзка за работата си. Така че започнах да експериментирам с различни алгоритми в техните състезанияНачалоЦитатПреобразуване,ОтоГрупаПродуктКласификацияиВелосипедСподелянеТърсене.

една

Успях да подобрявам резултатите си многократно, като експериментирах с алгоритми и данни.

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

Самообучението като ежедневие

Когато се върнах на работа след новогодишните празници, исках да продължа да уча нови неща през цялото време, така че имах разговор с мениджъра за това. За щастие бях одобрен и успях да се образовам в работно време.

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

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

Първият ми опит беше курс по Deep Learning на Udacity, в края на който получих едно голямо разочарование. Лекциите бяха твърде кратки и неинформативни за мен.

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

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

Станфорд - Дълбоко обучение за обработка на естествен език

За щастие малко по-късно открих Stanford CS224D и реших да опитам отново. Страхотен курс и колкото и труден да беше, моята работа никога не беше свързана с отстраняване на грешки в кода накрая.

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

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

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

Научен урок: Ако можете да си позволите учител по машинно обучение за $50 на час, определено си заслужава.

В допълнение към това, Data Scientist се присъедини към Xeneta. Имаше магистърска степен по математика и често се обръщах към него за помощ, когато имах проблеми, свързани с линейна алгебра, смятане или машинно обучение като цяло. Така че не забравяйте, че хората, които могат да ви помогнат, може вече да са близо до вас.

Покачване на продажбите в Xeneta

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

Пътуването ми до тук беше дълго, но бързо. Когато започнах седмичния си проект, дори не можех да се надявам, че след година ще използвам машинно обучение в професионалната си работа.

Може да е трудно, но както се казва, който върви, ще овладее пътя.