Google, Facebook i inni internetowi potentaci pragną szybko poprawić jakość i efektywność korzystania z internetu. Wydajność witryny jest głównym problemem gigantów technologicznych, zwłaszcza że na początku 2017 r. ujawnili oni, iż średni czas ładowania witryny w telefonie komórkowym wynosił 22 sekundy, a 53 procent użytkowników rezygnuje z ładowania witryny na telefonie komórkowym, jeśli ładowanie witryny trwa dłużej niż 3 sekundy
Podejścia do zwiększenia prędkości działania strony WWW są zróżnicowane, począwszy od zastępowania obrazów PNG obrazami bezstratnymi, a na zmianie różnych modułów do architektury samej strony WWW kończąc.
Jednym z najpopularniejszych sposobów poprawiania jakości obsługi urządzeń mobilnych, obiecującym przy tym potencjalną automatyzację w niedalekiej przyszłości, jest tzw. leniwe ładowanie (ang. lazy loading).
Leniwe ładowanie próbuje znaleźć równowagę pomiędzy dostarczaniem treści a usprawnieniem doświadczenia użytkownika końcowego, przy czym nie dochodzi do załadowania wszystkich zasobów strony. Zamiast tego ładuje aspekty strony wybiórczo.
Z TEJ BARDZO PODSTAWOWEJ ZASADY POCHODZI cały obszar rozwoju oprogramowania i nauki o danych, który przyciąga wiele z najznakomitszych umysłów w dziedzinie technologii. Wielu z tych specjalistów bada, jak zasady leniwego ładowania mogą być wykorzystywane z użyciem modeli uczenia maszynowego, aby przyspieszyć działanie sieci, a nawet jak strony internetowe przedstawiać nam indywidualnie.
Minko Gechev, inżynier z zespołu Angular w Google, mówił podczas FullStack NYC w maju 2019 roku o sposobie, w jaki programiści mogą włączyć modele uczenia maszynowego do rozwoju leniwego ładowania w swoich aplikacjach i stronach internetowych.
Podczas, gdy leniwe ładowanie wspierało wysiłki na rzecz poprawy doświadczeń cyfrowych, identyfikacja punktów podziału (co jest ładowane, a co nie) była do tej pory często czynnością subiektywną, podatną na błędy lub stojącą w obliczu zmieniających się zachowań użytkowników. Minko zidentyfikował sposób wykorzystania Google Analytics do analizy typowych ścieżek użytkownika na stronie internetowej lub aplikacji, przypisania tych ścieżek prawdopodobieństwa (zobrazowanych za pomocą wykresu nawigacyjnego), spakowania tych ścieżek do oddzielnego ładowania, a tym samym zwiększenia prędkości kolejnych ładowań.
Mogłoby to również zwiększyć dostępność cyfrową dla osób mających do czynienia z wolniejszymi, przerywanymi lub awaryjnymi połączeniami. Szybszy i lepszy dostęp do narzędzi cyfrowych to korzyść dla przemysłu i konsumentów. To także perspektywa znacznych możliwości dla tych, którzy chcą poprawić sposób włączania technologii w sprawy społeczne.
CIEKAWYM, JAK UŻYWAĆ TEJ METODY do prefetchingu. Minko Gechev wyjaśnia ten przypadek użycia w sposób następujący:
„Podejście oparte na danych dla prefetchingu polega na spojrzeniu na zagregowane statystyki historii nawigacji użytkownika. W oparciu o wyekstrahowane raporty możemy zbudować model statystyczny, na podstawie którego będziemy mogli dokonywać przewidywań. Na przykład jeśli wiemy, że 80 procent użytkowników odwiedza stronę C po tym, jak odwiedzili strony A i B, gdy użytkownik odwiedza naszą aplikację internetową i odwiedza strony A i B, możemy z dużą dozą pewności wcześniej załadować stronę C i przyspieszyć nawigację”.
Wszystkie etapy procesu mogą być całkowicie zautomatyzowane. Korzystając z platform analitycznych (takich jak Google Analytics), możemy wyodrębnić raport pokazujący wzorce nawigacyjne użytkownika, a następnie możemy dokonywać przewidywań. Przykładem może być projekt Guess.js, który ma na celu jak największe uproszczenie procesu predyktywnego prefetchingu. W przypadku frameworków takich jak Angular, Gatsby i Next.js, programiści mogą włączyć preselekcję tylko poprzez przełączenie flagi w konfiguracji swojego CLI oraz poprzez podanie identyfikatora Google Analytics View ID. Alternatywnie, jeśli ludzie korzystają z różnych źródeł analitycznych, Guess.js udostępnia metodę umożliwiającą im wyodrębnienie danych z poziomu niestandardowych usług.
Więcej informacji na temat Guess.js można znaleźć w dwóch wpisach na blogu „Machine Learning-Driven Bundling. The Future of JavaScript Tooling” oraz „Introducing Guess.js”, a także w oficjalnym komunikacie w tej sprawie Google I/O 2018.
W ZALEŻNOŚCI OD RÓŻNYCH CZYNNIKÓW, niektóre modele predykcji mogą dać lepsze wyniki niż inne. Jeśli mamy duży zestaw danych i chcemy rozważyć serię zdarzeń nawigacyjnych przed dokonaniem prognozy, możemy użyć modeli z głębokiego uczenia maszynowego, takich jak rekurencyjne sieci neuronowe. Takie podejście ma swoje plusy i minusy. Dzięki rekurencyjnym sieciom neuronowym możemy osiągnąć wyższy poziom dokładności, ale jednocześnie model ten jest bardziej intensywny obliczeniowo w porównaniu z prostszymi modelami, takimi jak łańcuchy Markova.
Uczenie maszynowe (ML) zapewnia również inne możliwości poprawienia efektywności pracy w sieci, szczególnie w zakresie UX (doświadczenie użytkownika). Z narzędziami takimi jak Amazon ML kategoryzacja może zostać uproszczona, skracając czas potrzebny na ręczne procesy (tj. wystawianie przedmiotów na sprzedaż online – ML może nauczyć się przewidywać wszystkie informacje dotyczące sprzedawanego przedmiotu, jak cena czy rodzaj kategorii, w celu przyspieszenia procesu).
Tym co wyróżnia ML jako istotny czynnik w zmieniających się i ewoluujących technologicznie warunkach jest jego względna dostępność. Narzędzia te są już dostępne, a sposoby ich zastosowania otwarte na wyobraźnię tych, którzy niekoniecznie posiadają zaawansowaną wiedzę matematyczną lub techniczną.
MINKO GECHEV UWAŻA, ŻE OSTATNIO uczenie maszynowe staje się coraz bardziej dostępne dla programistów internetowych. Często nie musimy nawet tworzyć naszych modeli od zera – możemy ponownie wykorzystać wstępnie wytrenowane modele w chmurze lub nawet uruchomić je w przeglądarce.
Doskonałym przykładem jest TensorFlow.js, który pozwala nam na uruchomienie modeli poprzez skomponowanie ich kilku warstw. Możemy zastosować przeniesienie wyników uczenia (ang. transfer learning) poprzez ponowne wykorzystanie już istniejących modeli i personalizację ich do naszego przypadku użycia. Doskonałym tego przykładem jest sieć PoseNet, która dostarcza danych pierwotnych do szacowania pojedynczych lub wielu pozycji ciała.
Zatem poza korzystnymi zastosowaniami w doświadczeniach internetowych, w różnych sytuacjach ML może być dla codziennych użytkowników np. nowym sposobem doświadczania stron internetowych.
Przykładem udoskonalenia UX w oparciu o dane byłoby zapewnienie spersonalizowanego układu strony WWW w zależności od sposobu, w jaki nasi użytkownicy korzystają z aplikacji internetowej. Możemy również przewidzieć przeglądarki, z których będą korzystać nasi użytkownicy, i na podstawie przewidywań zastosować bardzo drobnoziarniste usługi różnicowe, np. wysyłanie najnowszych skryptów JavaScript, które nasi użytkownicy mogą wykonać. W ten sposób nie musimy wykonywać nadmiarowej transpozycji, co przyspiesza budowę strony WWW.
Kolejną korzyścią jest to, że nie musimy niepotrzebnie obniżać poziomu kodu, co sprawi, że będzie on szybszy w nowoczesnych przeglądarkach, a przesyłane pakiety danych się zmniejszą.