- Co to jest uczenie maszynowe ?
- Co robi kod uczenia maszynowego ?
- Kiedy mówimy, że maszyna się uczy, czy modyfikuje swój kod , czy modyfikuje historię (bazę danych), która będzie zawierała doświadczenie kodu dla danego zestawu danych wejściowych?
Odpowiedzi:
Co to jest uczenie maszynowe?
Zasadniczo jest to metoda nauczania komputerów, jak tworzyć i ulepszać przewidywania lub zachowania na podstawie niektórych danych. Co to za „dane”? Cóż, to zależy całkowicie od problemu. Mogą to być odczyty z czujników robota, gdy uczy się chodzić, lub prawidłowe wyjście programu dla określonych danych wejściowych.
Innym sposobem myślenia o uczeniu maszynowym jest „rozpoznawanie wzorców” - czynność polegająca na uczeniu programu reagowania na wzorce lub ich rozpoznawania.
Co robi kod uczenia maszynowego?
Zależy od typu uczenia maszynowego, o którym mówisz. Uczenie maszynowe to ogromna dziedzina, z setkami różnych algorytmów do rozwiązywania niezliczonych różnych problemów - więcej informacji można znaleźć w Wikipedii ; w szczególności zajrzyj do sekcji Typy algorytmów .
Kiedy mówimy, że maszyna się uczy, czy modyfikuje swój kod, czy modyfikuje historię (bazę danych), która będzie zawierała doświadczenie kodu dla danego zestawu danych wejściowych?
Znowu to zależy .
Jednym z przykładów faktycznie modyfikowanego kodu jest programowanie genetyczne , w którym zasadniczo rozwijasz program, aby wykonać zadanie (oczywiście program nie modyfikuje się sam - ale modyfikuje inny program komputerowy).
Sieci neuronowe natomiast automatycznie modyfikują swoje parametry w odpowiedzi na przygotowane bodźce i oczekiwaną reakcję. Pozwala im to na tworzenie wielu zachowań (teoretycznie mogą one wywoływać dowolne zachowanie, ponieważ mogą przybliżyć dowolną funkcję z dowolną precyzją, mając wystarczająco dużo czasu).
Powinienem zauważyć, że użycie terminu „baza danych” oznacza, że algorytmy uczenia maszynowego działają na zasadzie „zapamiętywania” informacji, zdarzeń lub doświadczeń. Niekoniecznie (a nawet często!) Tak jest.
Sieci neuronowe, o których już wspomniałem, zachowują jedynie aktualny „stan” przybliżenia, który jest aktualizowany w miarę uczenia się. Zamiast pamiętać, co się stało i jak na to zareagować, sieci neuronowe tworzą rodzaj „modelu” swojego „świata”. Model mówi im, jak reagować na określone dane wejściowe, nawet jeśli dane wejściowe są czymś, czego nigdy wcześniej nie widział.
Ta ostatnia umiejętność - zdolność reagowania na dane wejściowe, których nigdy wcześniej nie widziano - jest jedną z podstawowych zasad wielu algorytmów uczenia maszynowego. Wyobraź sobie, że próbujesz nauczyć kierowcę komputera poruszać się po autostradach w ruchu ulicznym. Używając metafory „bazy danych”, musiałbyś nauczyć komputer dokładnie, co ma robić w milionach możliwych sytuacji. Skuteczny algorytm uczenia maszynowego mógłby (miejmy nadzieję!) Byłby w stanie nauczyć się podobieństw między różnymi stanami i reagować na nie w podobny sposób.
Podobieństwa między stanami mogą być dowolne - nawet rzeczy, które uważamy za „przyziemne”, mogą naprawdę spowodować awarię komputera! Załóżmy na przykład, że kierowca komputera nauczył się, że kiedy samochód przed nim zwalniał, to musiał zwolnić do. Dla człowieka zamiana samochodu na motocykl niczego nie zmienia - wiemy, że motocykl to także pojazd. W przypadku algorytmu uczenia maszynowego może to być zaskakująco trudne! Baza danych musiałaby oddzielnie przechowywać informacje o sytuacji, w której samochód jest z przodu i motocykl z przodu. Z drugiej strony algorytm uczenia maszynowego „uczyłby się” na przykładzie samochodu i byłby w stanie automatycznie uogólniać na przykład motocykla.
Uczenie maszynowe to dziedzina informatyki, teorii prawdopodobieństwa i teorii optymalizacji, która pozwala na rozwiązywanie złożonych zadań, w przypadku których podejście logiczne / proceduralne nie byłoby możliwe lub wykonalne.
Istnieje kilka różnych kategorii uczenia maszynowego, w tym (ale nie tylko):
Nadzorowana nauka
W uczeniu nadzorowanym masz naprawdę złożoną funkcję (mapowanie) od wejść do wyjść, masz wiele przykładów par wejście / wyjście, ale nie wiesz, czym jest ta skomplikowana funkcja. Nadzorowany algorytm uczenia umożliwia, biorąc pod uwagę duży zestaw danych par wejście / wyjście, przewidywanie wartości wyjściowej dla jakiejś nowej wartości wejściowej, której być może wcześniej nie widziałeś. Podstawowa metoda polega na rozbiciu zestawu danych na zbiór uczący i zbiór testowy. Masz model z powiązaną funkcją błędu, którą próbujesz zminimalizować w zbiorze uczącym, a następnie upewniasz się, że Twoje rozwiązanie działa na zbiorze testowym. Po powtórzeniu tego z różnymi algorytmami i / lub parametrami uczenia maszynowego, aż model będzie działał wystarczająco dobrze w zestawie testowym, możesz spróbować użyć wyniku na nowych danych wejściowych. Zauważ, że w tym przypadku program się nie zmienia, zmienia się tylko model (dane). Chociaż teoretycznie można by wygenerować inny program, ale o ile wiem, nie jest to robione w praktyce. Przykładem nadzorowanego uczenia się może być system rozpoznawania cyfr używany przez pocztę, gdzie odwzorowuje piksele na etykiety w zestawie 0 ... 9, używając dużego zestawu zdjęć cyfr, które zostały ręcznie oznaczone jako będące w 0 ... 9.
Uczenie się ze wzmocnieniem
W uczeniu się przez wzmacnianie program jest odpowiedzialny za podejmowanie decyzji i okresowo otrzymuje jakąś nagrodę / użyteczność za swoje działania. Jednak inaczej niż w przypadku uczenia się nadzorowanego, wyniki nie są natychmiastowe; algorytm mógłby przepisać dużą sekwencję działań i otrzymać informację zwrotną dopiero na samym końcu. W uczeniu się przez wzmacnianie celem jest zbudowanie dobrego modelu, tak aby algorytm generował sekwencję decyzji prowadzących do najwyższej długoterminowej użyteczności / nagrody. Dobrym przykładem uczenia się ze wzmocnieniem jest nauczenie robota, jak nawigować, dając ujemną karę za każdym razem, gdy czujnik uderzenia wykryje, że zderzył się z obiektem. Prawidłowo zakodowany robot może ostatecznie skorelować dane z czujnika dalmierza z danymi czujnika zderzaka i kierunkami, które wysyła do kół,
Więcej informacji
Jeśli chcesz dowiedzieć się więcej, zdecydowanie polecam lekturę Rozpoznawanie wzorców i uczenie maszynowe autorstwa Christophera M. Bishopa lub udział w kursie uczenia maszynowego. Możesz także przeczytać bezpłatnie notatki z wykładów z CIS 520: Machine Learning at Penn .
Uczenie maszynowe to dyscyplina naukowa zajmująca się projektowaniem i rozwojem algorytmów, które umożliwiają komputerom ewolucję zachowań w oparciu o dane empiryczne, takie jak dane z czujników lub bazy danych. Przeczytaj więcej na Wikipedii
Kod uczenia maszynowego rejestruje „fakty” lub przybliżenia w jakimś rodzaju pamięci i za pomocą algorytmów oblicza różne prawdopodobieństwa.
Kod sama nie zostaną zmienione, gdy uczy się maszyna, tylko baza danych, co „wie”.
Uczenie maszynowe to po prostu ogólny termin określający różnorodne algorytmy uczenia się, które tworzą quasi uczenie się na przykładach (nieoznaczone / oznaczone). Rzeczywista dokładność / błąd jest całkowicie określona przez jakość danych szkoleniowych / testowych, które dostarczasz do algorytmu uczenia się. Można to zmierzyć za pomocą współczynnika konwergencji. Powodem, dla którego podajesz przykłady, jest to, że chcesz, aby wybrany przez Ciebie algorytm uczenia się był w stanie uogólniać w sposób informacyjny za pomocą wskazówek. Algorytmy można podzielić na dwa główne obszary techniki uczenia nadzorowanego (klasyfikacja) i uczenia się nienadzorowanego (grupowanie). Niezwykle ważne jest, abyś podjął świadomą decyzję, w jaki sposób planujesz rozdzielenie zbiorów danych treningowych i testowych, a także jakość, którą zapewniasz algorytmowi uczenia się. Dostarczając zestawy danych, chcesz również być świadomy takich rzeczy, jak przesadne dopasowanie i utrzymywanie poczucia zdrowego nastawienia w przykładach. Następnie algorytm w zasadzie uczy się pisania do pisania na podstawie uogólnień, które uzyskuje z danych, które mu przekazałeś, zarówno w celu szkolenia, jak i testów w trakcie, próbujesz zmusić algorytm uczenia się do tworzenia nowych przykładów na podstawie ukierunkowanego szkolenia. W przypadku grupowania jest bardzo niewiele wskazówek informacyjnych, które algorytm zasadniczo próbuje uzyskać poprzez pomiary wzorców między danymi w celu zbudowania powiązanych zestawów klastrów, np. Kmeans / knearest neighbour. Następnie algorytm w zasadzie uczy się pisania do pisania na podstawie uogólnień, które uzyskuje z danych, które mu przekazałeś, zarówno w celu szkolenia, jak i testów w trakcie, próbujesz zmusić algorytm uczenia się do tworzenia nowych przykładów na podstawie ukierunkowanego szkolenia. W przypadku grupowania jest bardzo niewiele wskazówek informacyjnych, które algorytm zasadniczo próbuje uzyskać poprzez pomiary wzorców między danymi w celu zbudowania powiązanych zestawów klastrów, np. Kmeans / knearest neighbour. Następnie algorytm w zasadzie uczy się pisać do pisania na podstawie uogólnień, które uzyskuje z danych, które mu przekazałeś, zarówno w celu szkolenia, jak i testów w trakcie, próbujesz zmusić algorytm uczenia się do tworzenia nowych przykładów na podstawie ukierunkowanego szkolenia. W przypadku grupowania jest bardzo niewiele wskazówek informacyjnych, które algorytm zasadniczo stara się uzyskać poprzez pomiary wzorców między danymi w celu zbudowania powiązanych zestawów klastrów, np. Kmeans / knearest neighbour.
kilka dobrych książek: Introduction to ML (Nilsson / Stanford), Gaussian Process for ML, Introduction to ML (Alpaydin), Information Theory Inference and Learning Algorithms (very przydatna książka), Machine Learning (Mitchell), Pattern Recognition and Machine Learning (standard Podręcznik ML w Edynburgu i różnych Unis, ale stosunkowo ciężka lektura z matematyką), Data Mining i Practical Machine Learning with Weka (praca z teorią przy użyciu weka i praktyka w Javie)
Nauka ze wzmocnieniem W Internecie dostępna jest bezpłatna książka, którą można przeczytać: http://www.cs.ualberta.ca/~sutton/book/ebook/the-book.html
IR, IE, polecający i Text / Data / Web Mining ogólnie korzystają z wielu zasad uczenia maszynowego. Możesz nawet zastosować techniki metaheurystycznej / globalnej optymalizacji tutaj, aby jeszcze bardziej zautomatyzować procesy uczenia się. np. zastosuj technikę ewolucyjną, taką jak GA (algorytm genetyczny), aby zoptymalizować podejście oparte na sieci neuronowej (które może wykorzystywać algorytm uczenia się). Możesz podejść do tego czysto w formie probablistycznego podejścia do uczenia maszynowego, na przykład uczenia bayesowskiego. Większość z tych algorytmów bardzo intensywnie wykorzystuje statystyki. Pojęcia konwergencji i uogólnienia są ważne dla wielu z tych algorytmów uczenia się.
Uczenie maszynowe to nauka o informatyce polegająca na tworzeniu algorytmów, które są w stanie klasyfikować informacje, których wcześniej nie widzieli, poprzez uczenie się wzorców ze szkolenia na podobnych informacjach. W tym sensie istnieje wiele rodzajów „uczniów”. Przykładami są sieci neuronowe, sieci bayesowskie, drzewa decyzyjne, algorytmy k-klastrowania, ukryte modele markowa i maszyny wektorów pomocniczych.
W zależności od ucznia, każdy z nich uczy się na różne sposoby. Niektórzy uczniowie tworzą ramy zrozumiałe dla człowieka (np. Drzewa decyzyjne), a niektórzy są na ogół nieprzenikalni (np. Sieci neuronowe).
Wszyscy uczniowie zasadniczo opierają się na danych, co oznacza, że zapisują swój stan jako dane do późniejszego wykorzystania. Nie modyfikują się same jako takie, przynajmniej ogólnie.
Myślę, że jedna z najfajniejszych definicji uczenia maszynowego, jaką przeczytałem, pochodzi z tej książki Toma Mitchella. Łatwe do zapamiętania i intuicyjne.
Mówi się, że program komputerowy uczy się z doświadczenia E w odniesieniu do pewnej klasy zadań T i miary wydajności P, jeśli jego wydajność w zadaniach w T, mierzona przez P, poprawia się wraz z doświadczeniem E
A computer program is said to learn in the context of performing a task if its performance with respect to some measure improves with experience.
Bezwstydnie wyrwane z Wikipedii: uczenie maszynowe to dyscyplina naukowa zajmująca się projektowaniem i rozwojem algorytmów, które umożliwiają komputerom ewolucję zachowań w oparciu o dane empiryczne, takie jak dane z czujników lub bazy danych.
Po prostu kod uczenia maszynowego wykonuje zadanie uczenia maszynowego. Może to być wiele rzeczy, od interpretacji danych z czujników po algorytm genetyczny.
Powiedziałbym, że to zależy. Nie, modyfikowanie kodu nie jest normalne, ale nie wykracza poza zakres możliwości. Nie powiedziałbym też, że uczenie maszynowe zawsze modyfikuje historię. Czasami nie mamy historii, na której można by budować. Czasami po prostu chcemy reagować na otoczenie, ale tak naprawdę nie uczyć się na podstawie naszych przeszłych doświadczeń.
Zasadniczo uczenie maszynowe to bardzo szeroko otwarta dyscyplina, która zawiera wiele metod i algorytmów, które uniemożliwiają udzielenie 1 odpowiedzi na trzecie pytanie.
Uczenie maszynowe to termin zaczerpnięty z prawdziwego świata człowieka i zastosowany w odniesieniu do czegoś, czego w rzeczywistości nie można się nauczyć - maszyny.
Aby dodać do innych odpowiedzi - uczenie maszynowe (zwykle) nie zmieni kodu, ale może zmienić jego ścieżkę wykonania i decyzję na podstawie wcześniejszych danych lub nowo zebranych danych, a tym samym efekt „uczenia się”.
istnieje wiele sposobów „uczenia” maszyny - przypisujesz wagi wielu parametrom algorytmu, a następnie maszyna rozwiązuje je w wielu przypadkach, za każdym razem, gdy dajesz jej informację zwrotną o odpowiedzi, a maszyna dostosowuje wagi zgodnie z jak blisko była odpowiedź maszyny od Twojej odpowiedzi lub według wyniku, który dałeś, lub według algorytmu testu wyników.
To jeden ze sposobów uczenia się, a jest ich o wiele więcej ...