Inżynierowie uczenia maszynowego: mity a rzeczywistość
Opublikowany: 2018-05-08Uczenie maszynowe zapewnia komputerom możliwość uczenia się i ciągłego doskonalenia swoich zadań. Koncentruje się na opracowywaniu dynamicznych algorytmów, które mogą same się zmieniać (modyfikować) po wystawieniu na działanie nowego zestawu danych. Mówiąc prościej, uczenie maszynowe sprawia, że Facebook mówi „czy chcesz oznaczyć znajomych na tym zdjęciu?” , za każdym razem, gdy przesyłasz zdjęcie grupowe. Ludzie pracujący za kulisami, aby to wszystko się stało, są pokornie znani jako inżynierowie uczenia maszynowego.
Teraz, podobnie jak w przypadku każdej innej domeny objętej szerokim parasolem nauki o danych, również uczenie maszynowe ma wiele błędnych przekonań na ten temat. A ich usunięcie jest właśnie naszym celem na dziś. Jednak ważne jest, abyśmy najpierw przeprowadzili Cię przez życie inżyniera uczenia maszynowego, w tym umiejętności i narzędzia, które posiada. 
Najpierw wyraźnie oddzielmy uczenie maszynowe od nauki o danych.
Spis treści
Czy inżynierowie zajmujący się uczeniem maszynowym są analitykami danych?
Nauka o danych to termin obejmujący wszystko, ale jest coś fundamentalnie innego w sposobie działania uczenia maszynowego. Nauka o danych i analitycy zasadniczo badają dane i starają się znaleźć podejścia lub modele, które pasują do ich wymagań biznesowych.
Z drugiej strony uczenie maszynowe całkowicie zmienia ten model. Inżynierowie zajmujący się uczeniem maszynowym nie zajmują się bezpośrednio danymi. Wiedzą, jakich wyników oczekują, ale pozwalają algorytmom wykonać pracę za nich. Uczenie maszynowe buduje maszynę, która bije na głowę mistrzów Go, oznacza zdjęcia lub tłumaczy między językami. Celów tych nie osiąga się poprzez uważną eksplorację danych – inaczej niż w przypadku analizy danych. Jest dużo danych do zbadania i zbyt wiele wymiarów do rozwiązania (na przykład, jaka jest wymiarowość gry Go? Lub języka?). i strojenie.
Różnica między Data Science, Machine Learning i Big Data!
W rezultacie inżynierowie zajmujący się uczeniem maszynowym nie „eksplorują” tak bardzo, jak naukowcy danych lub analitycy – przynajmniej nie w dosłownym tego słowa znaczeniu. Ich celem nie jest znalezienie znaczenia w ich danych – wierzą, że znaczenie już tam jest. Zamiast tego mają na celu zbudowanie modelu/algorytmu/maszyny/systemu, który może analizować dane i generować wyniki. Lub stworzyć działającą sieć neuronową, którą można dostosować, aby uzyskać wiarygodne wyniki na dowolnym zestawie danych wejściowych.
Przyjrzyjmy się kilku kluczowym punktom związanym z inżynierami uczenia maszynowego:
- Mają większe umiejętności w zakresie inżynierii oprogramowania niż typowi analitycy/naukowcy danych. Inżynierowie uczenia maszynowego współpracują z inżynierami odpowiedzialnymi za utrzymanie systemów produkcyjnych. Dlatego muszą zrozumieć metodologię tworzenia oprogramowania, praktyki zwinne i najnowocześniejsze narzędzia do tworzenia oprogramowania. Muszą być dokładne we wszystkim, od IDE, takich jak Eclipse lub IntelliJ, po składniki potoku wdrażania oprogramowania.
- Inżynierowie zajmujący się uczeniem maszynowym koncentrują się na tym, aby produkty danych działały w produkcji. W rezultacie mają podejście holistyczne. Stanowią kluczową część każdego zespołu programistycznego, a zatem wiedzą, czym jest testowanie A/B. Nie tylko to „rozumieją”, ale także wiedzą, jak przeprowadzić testy A/B na systemach produkcyjnych. Rozumieją, jak ważne jest logowanie i bezpieczeństwo dla losu każdej aplikacji.
- Są na nogach, jeśli chodzi o monitorowanie produktów danych w produkcji. Chociaż istnieje wiele zasobów pozwalających zautomatyzować proces monitorowania aplikacji, wymagania uczenia maszynowego idą o krok dalej. Potoki danych, modele, algorytmy, a nawet systemy mogą stać się przestarzałe i wymagać ponownego szkolenia. System uczenia maszynowego można łatwo zniekształcić, naruszając potoki danych, które go zasilają. Dlatego inżynierowie zajmujący się uczeniem maszynowym zawsze muszą wiedzieć, jak wykryć te kompromisy.
Niektóre umiejętności niezbędne do osiągnięcia sukcesu inżyniera uczenia maszynowego:
- Podstawowa wiedza z zakresu informatyki i programowania
- Prawdopodobieństwo i statystyka
- Modelowanie i ocena danych
- Znajdowanie odpowiedniej biblioteki ML do użycia i dostosowywanie jej w razie potrzeby
- Inżynieria oprogramowania i modelowanie

Mit 1: Inżynierowie zajmujący się uczeniem maszynowym sprawiają, że systemy myślą dokładnie tak, jak ludzie.
Chociaż jest to ostateczny cel końcowy, w tej chwili jest to dalekie od prawdy. Pokrótce porównaj proces uczenia się dziecka z procesem uczenia maszynowego, a zdasz sobie sprawę, że uczenie maszynowe jest wciąż w powijakach. Na przykład dziecko nie musi obserwować setek ludzi pod kątem prostych rzeczy, takich jak chodzenie lub jedzenie. Wyznaczają własne cele, postrzegają innych ludzi, intuicyjnie tworzą swoją strategię uczenia się i udoskonalają ją metodą prób i błędów, aż odniosą sukces. Nawet bez dużej interwencji lub wskazówek z zewnątrz dziecko może z powodzeniem nauczyć się chodzić, a także innych podstawowych rzeczy.
Maszyny natomiast wymagają nadzoru na każdym etapie nauki. Co więcej, dziecko bez wysiłku łączy różne sygnały otrzymywane z wielu narządów zmysłów, holistycznie i skutecznie. Na przykład dziecko będzie w stanie błyskawicznie rozpoznać obrazki, a także zrozumie każdy tekst na nim napisany. Aby jednak nauczyć maszynę tego samego, potrzebujemy oddzielnych, wyrafinowanych algorytmów, z których każdy rozpoznaje dane, identyfikuje szumy i rozumie tekst.

Mit 2: Wszystkie dane są przydatne dla inżynierów zajmujących się uczeniem maszynowym.
Nie ma wątpliwości, że inżynierowie zajmujący się uczeniem maszynowym również potrzebują danych, ale nie wszystkie z nich są istotne dla uczenia maszynowego. Potrzebują reprezentatywnych danych, które obejmują wzorce i wyniki, które ich system będzie musiał obsłużyć. Dane nie powinny zawierać nieistotnych wzorców, ponieważ model uczenia maszynowego będzie odzwierciedlać te niepowiązane wzorce i szukać ich w danych, z którymi będzie używany.
Wszystkie dane, których używasz do szkolenia, muszą być dobrze oznakowane i oznaczone funkcjami pasującymi do pytań, które zamierzasz zadać systemowi uczenia maszynowego, co wymaga dużo pracy. Wszystkie te dane muszą być dobrze oznaczone funkcjami, które pasują do pytań, które zamierzasz zadać systemowi. Powinna być również nieskazitelna i wolna od wszelkich niespójności lub błędów. Tak więc wszystkie dane nie są wartościowe dla inżynierów zajmujących się uczeniem maszynowym – tylko istotne dane są!
Miej oko na następną wielką rzecz: uczenie maszynowe
Mit 3: Inżynierowie zajmujący się uczeniem maszynowym ignorują istniejącą wcześniej wiedzę.
Eksperci z wielu dziedzin odrzucają uczenie maszynowe za przyjęcie podejścia „pustej karty” w swoich algorytmach uczenia się. Zakładają, że każdy algorytm uczenia maszynowego zaczyna się od punktu zerowego – bez znajomości wcześniej istniejących danych. Inżynierowie zajmujący się uczeniem maszynowym lepiej rozumieją, że uczenie się to długi proces, który wymaga ciągłego monitorowania. Nie można tego naśladować, wprowadzając dane do algorytmu. Dlatego nie wszystkie algorytmy uczenia się zaczynają się od pustej karty; niektórzy używają zbiorów danych do udoskonalenia istniejącej puli wiedzy. Ostatecznie zależy to od wymagań biznesowych organizacji.
Mit 4: Prostsze modele uczenia maszynowego są zawsze dokładniejsze.
Jest to zgodne z brzytwą Ockhama. Ale powiedzmy, że brzytwa mówi tylko, że preferowane są prostsze wyjaśnienia, a nie dlaczego. Są preferowane, ponieważ łatwiej je zrozumieć, zapamiętać i sobie z nimi radzić. Jednak jeśli chodzi o uczenie maszynowe, czasami najprostsza hipoteza zgodna z danymi jest mniej dokładna do przewidywania niż bardziej skomplikowana. Niektóre z najpotężniejszych algorytmów uczących generują modele, które wydają się bezpodstawnie dopracowywane — czasami nawet kontynuują ich dodawanie po prawidłowym dopasowaniu danych — ale tak właśnie pokonują te słabsze.

Ucz się ML Course Online z najlepszych światowych uniwersytetów. Zdobywaj programy Masters, Executive PGP lub Advanced Certificate Programy, aby przyspieszyć swoją karierę. Ponieważ uczenie maszynowe jest częścią nauki o danych, połączenia informatyki i matematyki, znajomość matematyki jest koniecznością dla inżynierów uczenia maszynowego. Będziesz potrzebować znajomości pojęć matematycznych, takich jak algebra liniowa, rachunek różniczkowy, optymalizacja, prawdopodobieństwo i statystyka, aby tworzyć i rozumieć algorytmy uczenia maszynowego. Mówiąc dokładniej, musisz mieć podstawowe pojęcie o operacjach matematycznych, które pomagają w analizie danych. Ale najlepsze jest to, że możesz nauczyć się tych podstawowych pojęć matematycznych z czasem podczas uczenia maszynowego, a większość z tych pojęć jest umiarkowanie łatwa do zrozumienia. Wiemy, że nauka o danych i uczenie maszynowe są ze sobą nierozerwalnie powiązane, więc uczenie maszynowe będzie tylko tak dobre, jak dane, które otrzymuje i zdolność algorytmów do ich przyswojenia. Analitycy danych będą musieli mieć podstawową wiedzę na temat uczenia maszynowego. Naukowcy zajmujący się danymi wydobywają użyteczną wiedzę z ogromnych ilości danych. Odkrywają trendy i pomagają w tworzeniu rozwiązań automatyzujących poszczególne operacje biznesowe. Aby uzyskać dokładne prognozy i szacunki, naukowcy zajmujący się danymi muszą korzystać z uczenia maszynowego. Może to pomóc robotom w dokonywaniu lepszych osądów i podejmowaniu mądrzejszych działań w czasie rzeczywistym bez konieczności interakcji z ludźmi. Eksploracja i interpretacja danych są przekształcane przez uczenie maszynowe. Tradycyjne procedury statystyczne zostały zastąpione dokładniejszymi zautomatyzowanymi zestawami algorytmów generycznych. Python jest najczęściej używanym językiem do analizy danych i uczenia maszynowego. Większość inżynierów uczenia maszynowego wybiera Python do wyzwań NLP, R lub Python są preferowane do zadań analizy sentymentu, a Java jest używana do innych aplikacji uczenia maszynowego, takich jak zabezpieczenia i wykrywanie zagrożeń. Python stał się preferowanym językiem do analizy danych, uczenia maszynowego i sztucznej inteligencji (AI) ze względu na rozbudowany ekosystem bibliotek, który pozwala specjalistom ds. uczenia maszynowego na łatwy dostęp, zarządzanie, konwertowanie i analizowanie danych. Python jest popularny wśród programistów uczenia maszynowego ze względu na niezależność platformy, prostotę i czytelność. Czy matematyka jest koniecznością dla inżynierów uczenia maszynowego?
Czy naukowcy zajmujący się danymi potrzebują uczenia maszynowego?
Jaki język kodowania preferują inżynierowie ML?
