Algorytmy

Teoria i praktyka

Algorytm to lista instrukcji rozpisanych krok po kroku, służących do wykonania określonego zadania lub rozwiązania określonego problemu. Oznacza to, że algorytmy są wszechobecne. Algorytmem jest na przykład przepis na francuską zupę cebulową. Łączysz dane wejściowe, aby wygenerować dane wyjściowe. Ta sama sytuacja ma zasadniczo miejsce w przypadku komputerów. Algorytmy, niezależnie od tego, czy konwertują liczby binarne na litery, aby wyświetlić informacje na ekranie tabletu, czy też rekomendują wybór akcji w oparciu o Twoją tolerancję na ryzyko, we współczesnej informatyce odgrywają fundamentalną rolę. Na tej stronie skupimy się na algorytmach komputerowych.

Krótka historia algorytmów

Termin algorytm, choć wydaje się nowy, tak naprawdę liczy tysiąc lat i pochodzi od nazwiska perskiego matematyka, Muḥammada ibn Mūsy al-Khwārizmīego, który wniósł znaczny wkład w rozwój matematyki (jego nazwisko w wersji łacińskiej brzmi „Algoritmi”). Koncepcja ta przyjęła się szerzej w XIX wieku, kiedy to niemiecki matematyk Carl Friedrich Gauss wynalazł prosty algorytm określający, na który dzień roku kalendarzowego przypada Wielkanoc.

W informatyce algorytmy zadebiutowały w połowie XX wieku – słynny brytyjski informatyk Alan Turing opracował wówczas teorię tego, jak maszyny mogą wykonywać złożony zbiór instrukcji. Choć za życia Turinga opracowany przez niego prymitywny algorytm gry szachowej Turochamp nigdy nie pokonał człowieka, stanowi on fundament dzisiejszej sztucznej inteligencji.

Wraz ze wzrostem mocy obliczeniowej w kolejnych dekadach wzrosło również zapotrzebowanie na bardziej złożone algorytmy. Obecnie algorytmy mają fundamentalne znaczenie w świecie współczesnej informatyki – pomagają nam przemieszczać się z punktu A do punktu B, decydować, jaki film obejrzeć, a nawet znaleźć drugą połówkę.

Wiele programów komputerowych jest zasadniczo sekwencją algorytmów napisanych w sposób zrozumiały dla komputera.

Branża produkcyjna

Analityka predykcyjna i AI pomagają odnosić sukcesy w kreowaniu doświadczeń klientów

Orlando Magic wykorzystuje dane z aplikacji mobilnych i algorytmy uczenia maszynowego, aby spersonalizować doświadczenia fanów i osiągnąć czterokrotny wzrost zakupów w aplikacjach.

Algorytmy w dzisiejszym świecie

Algorytmy zastępujące ludzi w podejmowaniu coraz większej liczby decyzji mogą potencjalnie odmienić nasze życie. Z tego powodu niektórzy twierdzą, że powinniśmy bardziej zagłębić się w kwestię odpowiedzialności algorytmów, szczególnie w sądownictwie karnym i opiece zdrowotnej.

Ciekawi Cię, kto opracowuje algorytmy, które mają istotny wpływ na aktualne zmiany społeczne? White paper Harvard Business Review koncentruje się na postaciach stojących za postępem technologii obliczeniowych i automatyzacyjnych, które zmieniają świat.

Algorytmy mogą wspierać ochronę lasów deszczowych. Przeszukując każdego dnia miliony zdjęć pod kątem wczesnych oznak wylesiania, algorytmy rozpoznawania obrazów mogą pomóc osobom decyzyjnym w administracji publicznej i organizacjom pomocowym interweniować w celu ochrony zagrożonych lasów, zanim będzie za późno.

Algorytm Netflixa

Algorytmy obserwują Cię, gdy oglądasz Netflixa. Netflix Recommendation Engine, czyli silnik rekomendacji Netflixa, składa się z zaawansowanych, prawnie zastrzeżonych algorytmów wykorzystujących informacje, które ta firma posiada na Twój temat, aby przewidzieć prawdopodobieństwo, z jakim spośród dostępnych opcji wybierzesz określony tytuł. Obecnie 80% czasu spędzanego na Netflixie poświęcamy na oglądanie materiałów zasugerowanych na podstawie personalizacji. Dane wejściowe algorytmu obejmują historię oglądania, ulubione gatunki i porę dnia, w której korzystasz z platformy. Im więcej Netflixa oglądasz, tym dokładniejsze stają się te algorytmy, dzięki czemu oglądasz chętniej… i tak dalej. 

Jak działają algorytmy

Aby algorytmy działały, muszą spełniać pięć kryteriów:

  1. Dane wejściowe: dobrze zdefiniowane dane, które zostaną przekształcone podczas obliczeń. 
  2. Dane wyjściowe: dane uzyskane w drodze obliczeń. 

  3. Jednoznaczność: konkretność kroków obliczeniowych. 
  4. Skuteczność: wykonalność kroków obliczeniowych. 
  5. Skończoność: określona liczba kroków.

W tym miejscu należy wspomnieć o algorytmach opartych na matematyce i regułach.

Algorytmy matematyczne
Ponieważ większość algorytmów ma charakter numeryczny, nikogo nie zaskoczy fakt, że wiele z nich opiera się na matematyce. Weźmy najprostszy przykład: 1 + 1 = 2. Jest to algorytm matematyczny, w którym jedynki są danymi wejściowymi, a dwójka to dane wyjściowe. Drogą ekstrapolacji można otrzymać niektóre z najważniejszych algorytmów używanych obecnie, w tym algorytmy, które rozkładają sygnały na częstotliwości, programują komputery, a nawet określają ranking wyszukiwania danej strony internetowej w Google.

Algorytmy oparte na regułach
W miarę pogłębiania naszej wiedzy o AI zaczynamy zauważać, że niektórych rzeczy nie da się wyjaśnić wyłącznie za pomocą struktur matematycznych. Jeśli na przykład tworzysz oprogramowanie do analizy tekstu i potrzebujesz algorytmu, który zamieni liczbę pojedynczą rzeczowników na mnogą, nie możesz po prostu dodawać jednej i tej samej litery na końcu wszystkich słów – mamy w końcu „komputer-y”, „macierz-e”, „drukark-i” itp. Do każdego z tych wyjątków ma zastosowanie pewna reguła. Algorytmy oparte na regułach najlepiej nadają się do analizowania danych zawierających połączenie atrybutów numerycznych i jakościowych.

Oczywiście możesz użyć więcej niż jednego typu algorytmu do rozwiązania danego problemu, np. na potrzeby prognozowania dochodu. Aby wykonać takie obliczenia, możesz użyć algorytmu matematycznego ważącego zmienne takie jak wiek, lokalizacja, wykształcenie itp. Możesz także użyć algorytmu opartego na regułach, który przewiduje dochód na przykład na podstawie wieku i kodu pocztowego. Który z tych algorytmów jest najlepszy?

W tym miejscu warto poruszyć kwestię tzw. konkurujących algorytmów. Algorytmy są często porównywane ze sobą w celu sprawdzenia, który z nich jest najskuteczniejszy. Wracając do naszego przykładu z zupą – możesz mieć konkurencyjne przepisy, ale wszystkie pozwalają przygotować francuską zupę cebulową. To samo tyczy się algorytmów komputerowych. Być może algorytm A jest wolniejszy niż algorytm B, ale jest od niego dokładniejszy. Z kolei algorytm B może być łatwiejszy do walidacji. Wybór właściwego algorytmu do danego zadania sprowadza się do oceny pewnych kryteriów. Czy zadanie zostało wykonane? Czy zadanie zostało wykonane szybko? Czy udało się osiągnąć zamierzony cel?

Inspiracje ze świata przyrody

Większość dzisiejszych projektów z zakresu AI opiera się na wielu technologiach z dziedziny nauki o danych. Według firmy Gartner stosowanie kombinacji różnych technik AI w celu osiągnięcia najlepszego wyniku nazywane jest złożoną AI.

Algorytmy to zasadniczo ludzkie myśli w uproszczonej postaci, w związku z czym często inspirowane są naturą. Na przykład algorytmy genetyczne kopiują biologię ewolucji organizmów w funkcji czasu. Algorytmy te łączą ze sobą punkty decyzyjne, aby stworzyć potomstwo z cechami rodziców. W podobny sposób zainspirowano się mózgiem podczas opracowywania sieci neuronowych wykorzystywanych do rozwiązywania różnych problemów, takich jak rozpoznawanie obrazów czy przetwarzanie języka naturalnego.

Popularne typy algorytmów

Algorytmy można podzielić na podstawowe i zaawansowane.

Podstawowe
Choć nie każdy o tym wie, algorytmy są odpowiedzialne nawet za najbardziej podstawowe funkcje komputera. Poniżej znajdziesz trzy podstawowe algorytmy, które są obecnie w powszechnym użyciu.

Algorytmy kompresji danych
Gdy większość ludzi korzysta z komputera, robi coś niezbyt skomplikowanego, na przykład czyta artykuł lub przegląda obrazy. To możliwe dzięki algorytmom, które kompresują pliki, po to by można je było przeglądać, udostępniać i przywracać. Przykładem jest plik JPG. Gdy oglądasz zdjęcie nowego domku na drzewie swojego siostrzeńca, w rzeczywistości patrzysz na obraz bitmapowy, który został przetworzony za pomocą algorytmu kompresji stratnej, w celu przekształcenia milionów liczb reprezentujących piksele na miły sercu obraz na ekranie. 

Algorytm wyszukiwania binarnego
Wyszukiwanie binarne to szybki rodzaj wyszukiwania, który działa na zasadzie „dziel i rządź”. Załóżmy, że szukasz na swoim laptopie pliku zeznanie_pit_2020.PDF. W przypadku wyszukiwania binarnego algorytm wybiera obserwację w środku zbioru danych i sprawdza, czy znaleziony identyfikator podmiotu subject_id jest tym, którego szuka. Jeśli tak, zatrzymuje się. W przeciwnym razie, ponieważ tabela jest posortowana, algorytm może określić, czy żądana obserwacja znajduje się powyżej czy poniżej tej znalezionej i ponownie zdefiniować zakres wyszukiwania tak, aby stanowił połowę oryginalnego pliku. Następnie algorytm wybiera obserwację znajdującą się w środku nowego zakresu wyszukiwania, a proces powtarzany jest do momentu znalezienia właściwego pliku PDF. No tak. Musisz uregulować niedopłatę podatku. 

Algorytm mnożenia
Algorytmy bywają jeszcze prostsze niż ten powyżej. Jednym z najpopularniejszych algorytmów jest algorytm mnożenia liczb. Prawie wszystko, co robisz za pomocą algorytmów, wymaga pomnożenia dwóch lub więcej liczb. Nawet w dziedzinach skoncentrowanych na języku, np. w przypadku analizy tekstu, oceniasz takie rzeczy jak częstotliwość słów czy częstotliwość dokumentów, a to oznacza, że często potrzebne są mnożniki. 

Zaawansowane
Na przeciwległym końcu skali znajdują się algorytmy zaawansowane – opierają się one na podstawowych algorytmach, ale obejmują pewne innowacje. Tego typu algorytmy często wymagają przetwarzania ogromnych zbiorów danych.

Algorytmy uczenia maszynowego
Uczenie maszynowe wykorzystuje algorytmy, które odbierają i analizują dane wejściowe w celu przewidywania wartości wyjściowych mieszczących się w dopuszczalnym zakresie. Ciekawostką jest fakt, że algorytmy te uczą się od innych algorytmów. Algorytmy uczenia maszynowego w miarę otrzymywania nowych danych uczą się i optymalizują swoje działania w celu poprawy wydajności, stając się z czasem coraz inteligentniejsze. Istnieją cztery rodzaje algorytmów uczenia maszynowego: algorytmy nadzorowane, półnadzorowane i nienadzorowane oraz algorytmy uczenia ze wzmacnianiem.

Algorytmy uczenia głębokiego
Algorytmy uczenia głębokiego korzystają z wielu warstw, aby stopniowo wyodrębniać z danych wejściowych cechy wyższego poziomu. Algorytmy te, naśladując ludzki mózg, próbują wyciągać podobne wnioski jak ludzie, nieustannie analizując dane za pomocą tak zwanych sztucznych sieci neuronowych. Dane wyjściowe tych złożonych algorytmów mają ogromny wpływ na nasze życie – na przykład umożliwiają tworzenie pojazdów autonomicznych lub w kilka chwil tłumaczą książki z angielskiego na arabski.

Algorytmy wzmacniania gradientowego
Modele predykcyjne pomagają firmom prognozować sprzedaż i ustalać ceny towarów na podstawie oczekiwanego popytu. Wzmacnianie gradientowe to niezwykle skuteczny algorytm do budowania takich modeli predykcyjnych. Działa poprzez wzmocnienie słabych drzew decyzyjnych, czyniąc z nich mocne drzewa decyzyjne i tym samym poprawiając dokładność przewidywania. Algorytm ten jest znany z szybkości i dokładności, zwłaszcza w przypadku dużych i złożonych zbiorów danych. 

Z którego algorytmu warto skorzystać?

Początkujący zazwyczaj chcą wiedzieć, jakiego algorytmu użyć. Odpowiedź zależy od wielu czynników, w tym od:

  • ilości, jakości i charakteru danych; 
  • dostępnego czasu obliczeniowego; 
  • tego, jak pilne jest dane zadanie; 
  • sposobu użycia danych.

Nawet doświadczony analityk danych nie jest w stanie stwierdzić, który algorytm będzie najlepszy, dopóki nie wypróbuje różnych. Podczas wyboru algorytmu warto wziąć pod uwagę takie aspekty jak dokładność, czas szkolenia i łatwość obsługi. Wielu użytkowników stawia dokładność na pierwszym miejscu, podczas gdy osoby początkujące skupiają się na algorytmach, które znają najlepiej. Po otrzymaniu zbioru danych pierwszą rzeczą do ustalenia jest sposób uzyskania wyników, bez względu na to, jak te wyniki mogą wyglądać. Po uzyskaniu wyników i zapoznaniu się z danymi można poświęcić więcej czasu na skorzystanie z bardziej zaawansowanych algorytmów, aby dzięki nim lepiej zrozumieć dane, a tym samym jeszcze bardziej poprawić wyniki. Dowiedz się więcej o wyborze algorytmów.

Kierunki rozwoju

Jeśli chcesz dowiedzieć się więcej o algorytmach, SAS to odpowiedni adres.

Zaledwie dziesięć lat temu praca z algorytmami wymagała wyższego stopnia naukowego i rozległej wiedzy książkowej z dziedziny matematyki i informatyki. Obecnie najbardziej wyrafinowane algorytmy na świecie są zgrabnie zintegrowane z oprogramowaniem, dzięki czemu nawet zaawansowani użytkownicy mogą osiągać przełomowe rezultaty bez konieczności majstrowania przy formułach.  

Jednym z takich rozwiązań jest SAS® Visual Data Mining and Machine Learning. W ramach tego produktu oferujemy jedne z najbardziej zaawansowanych algorytmów na świecie, pozwalające użytkownikom ze wszystkich środowisk rozwiązywać złożone problemy analityczne. To wysoko oceniane oprogramowanie oferuje mnóstwo algorytmów, które pomagają tworzyć modele predykcyjne i rozpoznawać rentowne możliwości biznesowe.