Jak rozpocząć naukę sztucznej inteligencji?


16

Jestem studentem inżynierii oprogramowania i jestem całkowicie początkującym do AI. Przeczytałem wiele artykułów o tym, jak rozpocząć naukę sztucznej inteligencji, ale każdy artykuł sugeruje inny sposób. Zastanawiałem się, czy niektórzy z was, eksperci, mogą pomóc mi zacząć właściwie.

Kilka bardziej szczegółowych pytań

  1. Na jakim języku powinienem się skupić? Wiele artykułów sugeruje Python, C ++ lub Lisp dla AI. Czy mogę korzystać z Javy zamiast z innych wymienionych języków?

  2. Jakie mam podstawy matematyczne? W pierwszym roku uczyłem matematyki dyskretnej, która obejmowała następujące tematy: zbiory, macierze, wektory, funkcje, logikę i teorię grafów (nauczyli tych tematów krótko). Czy są jeszcze jakieś tematy, których powinienem się teraz nauczyć? Na przykład rachunek różniczkowy?

Jeśli to możliwe, byłbym wdzięczny za wszelkie zasoby lub książki, których mógłbym użyć, aby zacząć, a może możecie podać mi szczegółową procedurę, którą mogę wykonać, aby dogonić twój poziom.

Uwaga: na razie chciałbym skupić się na sieciach neuronowych i uczeniu maszynowym. Potem chciałbym poznać robotykę i przetwarzanie języka naturalnego.


Odpowiedzi:


16

Sztuczna inteligencja jest bardzo szeroką dziedziną i obejmuje wiele bardzo głębokich dziedzin informatyki, matematyki, projektowania sprzętu, a nawet biologii i psychologii. Jeśli chodzi o matematykę: uważam, że rachunek, statystyki i optymalizacja są najważniejszymi tematami, ale nauczenie się jak największej ilości matematyki nie zaszkodzi.

Istnieje wiele dobrych bezpłatnych materiałów wprowadzających na temat sztucznej inteligencji dla początkujących. Bardzo polecam zacząć od tego: http://aiplaybook.a16z.com/ Opublikowali także dwa filmy o ogólnych koncepcjach sztucznej inteligencji, które można znaleźć na Vimeo: „AI, głębokie uczenie się i uczenie maszynowe: elementarz ”i„ Obietnica AI ”

Po dokładnym zrozumieniu podstawowych warunków i podejść dotyczących sztucznej inteligencji musisz dowiedzieć się, jakie są Twoje cele. Jakie oprogramowanie AI chcesz opracować? Jakimi branżami jesteś zainteresowany? Jakie masz szanse na zaangażowanie w projekty dużych firm? Łatwiej jest wybrać odpowiednie narzędzia, gdy dokładnie wiesz, co chcesz osiągnąć.

Dla większości nowicjuszy w AI najciekawszym obszarem jest Deep Learning. Żeby było jasne, istnieje wiele obszarów sztucznej inteligencji poza uczeniem maszynowym i istnieje wiele obszarów uczenia maszynowego poza uczeniem głębokim. (Sztuczna inteligencja> Uczenie maszynowe> Głębokie uczenie się) Większość najnowszych osiągnięć i nowości dotyczą DL.

Jeśli zainteresowałeś się również głębokim uczeniem się, musisz zacząć od poznania koncepcji sztucznych sieci neuronowych. Na szczęście zrozumienie podstaw nie jest zbyt trudne, w Internecie jest wiele samouczków, przykładów kodu i bezpłatnych zasobów edukacyjnych, a także istnieje wiele platform open source do eksperymentowania.

Najbardziej popularną platformą do głębokiego uczenia się jest TensorFlow. Jest wspierany przez Google. Uwielbiam to lub nienawidzę, jest to framework oparty na języku Python. Istnieje również wiele innych struktur opartych na języku Python. Scikit-learn, Theano, Keras są często wymieniane również w tutorialach. (Wskazówka: jeśli używasz systemu Windows, możesz pobrać WinPython, który zawiera wszystkie te frameworki).

Jeśli chodzi o frameworki Java, niestety nie ma tak wielu opcji. Najbardziej znanym frameworkiem Java dla DL jest Deeplearning4j. Jest rozwijany przez małą firmę, a jego baza użytkowników jest znacznie mniejsza niż tłum wokół TensorFlow. Jest mniej projektów i samouczków dla tego frameworka. Jednak specjaliści branżowi twierdzą, że platformy oparte na Javie ostatecznie lepiej integrują się z rozwiązaniami Big Data opartymi na Javie i mogą zapewnić wyższy poziom przenośności i łatwiejsze wdrożenie produktu. Tylko sidenote: NASA Jet Propulsion Laboratory wykorzystało Deeplearning4j do wielu projektów.

Jeśli zdecydujesz się pójść z prądem i chcesz dowiedzieć się więcej o TensorFlow, polecam sprawdzić kanały YouTube „DeepLearning.TV”, „sentdex” i „Siraj Raval”. Mają ładne tutoriale i fajne dema. A jeśli zdecydujesz się na głębsze nurkowanie, możesz zapisać się na kurs online w udacity lub coursera.

Interesujące może być również wiedzieć, że istnieją inne platformy głębokiego uczenia dla wirtualnej maszyny Java z alternatywnymi językami, na przykład Clojure. (Clojure jest dialektem LISP-a i został wymyślony przez Johna McCarthy'ego, tego samego informatyka, który wymyślił termin „sztuczna inteligencja”. Innymi słowy, istnieją bardziej nowoczesne i popularne języki programowania i narzędzia, ale wciąż jest to możliwe / i trochę fajne / do używania języka AI, który został pierwotnie zaprojektowany dla AI. ThinkTopic w Boulder i Freiheit w Hamburgu to dwie firmy, które używają Clojure do projektów AI. A jeśli chcesz zobaczyć coś niesamowitego, aby uzyskać inspirację do korzystania z Clojure w AI i robotyce, Polecam obejrzeć film na YouTube „OSCON 2013: Carin Meier, Radość latających robotów z Clojure”.

(+++ Ktoś może mnie poprawić, jeśli powiedziałem coś złego. +++)


Skoro jest mniej frameworków dla Javy, czy można napisać dla niego własne frameworki, których mogę użyć jako zamiennika TensorFlow? Dzięki
aspire29,

1
Tworzenie własnych ram do studiowania podstawowych pojęć jest bardzo dobrym pomysłem. Z drugiej strony TensorFlow jest rozwijany przez ogromną społeczność i wielu bardzo utalentowanych specjalistów. Szczerze mówiąc, nie sądzę, aby jakikolwiek domowy framework mógł z nim skutecznie konkurować. Przy okazji, nie rozumiem, dlaczego jest tak mało frameworków Java AI ... biorąc pod uwagę, że wciąż jest to numer 1. język programowania i JVM jest prawie wszędzie. Wydaje mi się, że AI wciąż dotyczy raczej badań niż produkcji.
akopacsi

6

Przekonasz się, że zarówno rachunek, jak i algebra liniowa mają pewne zastosowanie w technikach AI / ML. Pod wieloma względami można argumentować, że większość ML redukuje się do Algebry Liniowej, a Rachunek jest wykorzystywany np. algorytm propagacji wstecznej do szkolenia sieci neuronowych.

Dobrze byłoby, gdybyś wziął również klasę prawdopodobieństwa i statystyki.

Wybór języka programowania jest mniej ważny, IMO. Możesz wykonywać sztuczną inteligencję / ML w prawie dowolnym języku głównego nurtu i wielu innych językach. Największa różnica dotyczy wydajności i dostępności bibliotek / narzędzi. Na przykład C ++ zwykle przewyższa Java lub Pythona i pozwala zbliżyć się do metalu, aby naprawdę zmaksymalizować możliwości twojego sprzętu. Jednak Python ma naprawdę dobry FFI i jest często używany w połączeniu z C lub C ++. W Python, C ++, Java, R, Octave / Matlab i kilku innych językach jest dostępnych wiele wysokiej jakości bibliotek, które mogą być dla Ciebie ważne w zależności od tego, co chcesz zrobić.

To powiedziawszy, prawdopodobnie nie chcesz próbować robić ML / AI w, powiedzmy, COBOL lub PL / I lub RPG / 400 czy coś takiego. Trzymaj się czegoś co najmniej dość popularnego. Przeszukuj mloss.org i zobacz, jakie biblioteki / zestawy narzędzi są dostępne w różnych językach, a to powinno pomóc w dokonaniu wyboru.


5

Kiedy zainteresowałem się AI, zacząłem od najbardziej podstawowych rzeczy. Moją pierwszą książką była Sztuczna inteligencja Russella i Norviga - nowoczesne podejście . Myślę, że to dobre miejsce na rozpoczęcie, nawet jeśli najbardziej interesują Cię Deep Nets. Zajmuje się nie tylko podstawowymi pojęciami i algorytmami sztucznej inteligencji (systemy eksperckie, wyszukiwanie od pierwszego dogłębnego i pierwszego wszerzenia, reprezentacja wiedzy itp.), Ale także podstawową matematyką (rozumowanie bayesowskie, logika pierwszego rzędu, n-gram itd.) oraz niektóre powszechnie znane problemy (na przykład problem podróżującego sprzedawcy).

Warto również uczyć się statystyki, ponieważ jesteś szczególnie zainteresowany ML. Po wspomnianej książce powinieneś również mieć dobry pomysł na to, czego się uczyć dalej.

  • Nie przejmuj się zbytnio językiem programowania.

O wiele ważniejsze jest zrozumienie samego programowania i powiązanych technik. Dowiedz się czegoś o strukturach danych, algorytmach i różnych paradygmatach programowania (takich jak OOP, programowanie funkcjonalne itp.). Spróbuj zrozumieć logikę programowania, a nie tylko konkretny język. W końcu nauka nowego języka nie jest trudna, gdy zrozumiesz, jak programować (wtedy nauka nowego języka to po prostu cukier syntaktyczny).


1
Zrobiłem drobną edycję pod kątem czytelności i dodałem link do podręcznika. Dobra rada, szczególnie w zakresie: języków programowania. (Spójrz na programistów, którzy pracują w „dowolnym języku ze składnią” :) Naprawdę sprowadza się do tego, co jest najbardziej optymalne lub wygodne dla danego projektu lub zadania.
DukeZhou


3

Aby rozpocząć AI, przede wszystkim zrozum, co to jest AI. Dlaczego dokładność MNIST gwałtownie wzrasta po 2012 r. Dlaczego uczenie maszynowe potrzebuje AI, aby zwiększyć swoją dokładność.

Aby uruchomić i zbudować aplikację na uczenie maszynowe za pomocą sztucznej inteligencji, nie potrzebujesz matematyki ani jakiejś wiedzy o rakietach. Spóźniłeś się, moi bracia budują skróty do wszystkich problemów z uczeniem maszynowym, takich jak opakowanie. Musisz tylko przekazać dane do metody, a metoda zrobi wszystko. Zacznij od problemu MNIST, który jest ekscytujący. Przeczytaj o historii MNIST-a, użyj na nim podstawowego algorytmu. Spróbuj regresji liniowej, regresji logistycznej, grupowania Kmean, KNN. Narzędzia do uczenia maszynowego Skite learn (python lib) lub Tensorflow (python lib) tflearn (API wyższego poziomu Tensorflow jak opakowanie) Oba są open source. Przykłady są dostępne na GitHub. Rozpocznij wyszukiwanie w GitHub. Znalazłeś świetny przykład. Dla obu lib. Użyj kaggel, aby rozwiązać problem z uczestnictwem w konkursie.

Po zakończeniu wszystkich powyższych algorytmów spróbuj skupić się na swoim błędzie. Teraz AI pojawiło się. Spróbuj dowiedzieć się, w jaki sposób sieć neuronowa pomaga zmniejszyć błąd i zwiększyć dokładność. Następnie wypróbuj podstawową sieć neuronową, taką jak sigmoid, relu i cnn. Nie zapomnij użyć dropouta w swojej sieci neuronowej. Możesz używać Tensorflow lub keras lub Tensorflow z keras

Obok siebie zaznacz 3 wideo Algebry liniowej Blue 1 Browna, aby poprawić swoją matematykę. raz dziennie, ale codziennie jedno wideo.

A teraz skup się na matematyce stojącej za logiką (dowolny algorytm). Możesz wypróbować kurs uczenia maszynowego.

Użyj Tensorflow do zbudowania aplikacji na Androida, aplikacji na iOS, RaspPi Check Tensorflow dev Summit 2016/2017.

Lub jeśli potrzebujesz kursu awaryjnego, sprawdź ten https://youtu.be/u4alGiomYP4


1
Wyjaśnijmy, AI nie polega tylko na czytaniu książki HTML, a ty zacznij programować, wyjaśnijmy to tutaj! OP musi skonsultować się z profesorami z Oksfordu, Harvadu itp.
kwintumnia

3

Przed przystąpieniem do sztucznej inteligencji należy spełnić warunki wstępne. Nie ma solidnej listy, ale dobra znajomość różnych algorytmów jest obowiązkowa. Poza tym powinieneś czuć się swobodnie z co najmniej jednym językiem programowania, takim jak C ++ lub Java. Nie sugeruję, abyś zagłębiał się w sztuczną inteligencję, jeśli jesteś zupełnie nowy w informatyce. Pewne doświadczenie w programowaniu przed nurkowaniem w Sztucznej Inteligencji będzie dla ciebie zaletą.

Zacznij czytać (blogi, artykuły, artykuły naukowe itp.) O sztucznej inteligencji. Tak jak to jest, jego aplikacje, aktualny stan i inne rzeczy, które można znaleźć. Zacznij tworzenie kodów AI dla małych gier, takich jak Tic Tac Toe, Sudoku, Reversi (Othello) itp. Możesz stworzyć własny symulator i zbudować kod rozwiązujący kostkę Rubika. Podobnie, twórz kody dla rozpoznawania wzorców i uczenia maszynowego. Nie ma nic lepszego niż uczenie się przez działanie. Języki takie jak LISP i python będą bardzo pomocne. Oto dwie odpowiedzi, które pomogą ci, ans1 i ans2 .

Jeśli jesteś osobą, która lubi czytać i uczyć się z książek (takich jak ja), możesz kupić Sztuczną inteligencję: nowoczesne podejście (Peter Norvig i Stuart Russell). Książka jest bardzo dobra i działa dobrze na poziomie średnio zaawansowanym i zaawansowanym. Spróbuj rozwiązać problemy z ćwiczeniami podane w książce. Rozwiązanie pdf książek jest dostępne online . W przypadku uczenia maszynowego dwie książki, które polecam, to Rozpoznawanie wzorców i Uczenie maszynowe (Christopher M. Bishop) oraz Programming Collective Intelligence (O'Reilly).

Na początek jest bardzo dobry artykuł na temat sztucznej inteligencji i osobliwości technologicznej.

Artykuł jest długi i podzielony na dwie części. Zdecydowanie polecam przeczytanie tego artykułu, jeśli poważnie myślisz o sztucznej inteligencji. To da ci dobre spostrzeżenia.

Znajomość teorii obliczeniowej bardzo ci pomoże. Zwłaszcza gdy pracujesz w dziedzinie przetwarzania języka naturalnego. Inne podkategorie AI, które mogą Cię zainteresować, to: uczenie maszynowe, obliczenia ewolucyjne, algorytmy genetyczne, uczenie się ze wzmocnieniem, uczenie głębokie itp. Lista jest długa. Lepiej znajomość statystyki, lepiej będzie dla sztucznej inteligencji. Bądź na bieżąco z najnowszymi wydarzeniami w terenie za pośrednictwem forów, stron internetowych itp. Otwarta strona AI jest również bardzo dobrym źródłem.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.