Update on Overleaf.

This commit is contained in:
Alex Drożdż 2022-09-17 13:26:17 +00:00 committed by node
parent 18a15a69ef
commit 9e4de58066
5 changed files with 82 additions and 55 deletions

View File

@ -1,6 +1,23 @@
% here the bibliographic entry for the paper itself should be given, % here the bibliographic entry for the paper itself should be given,
% used for generating declarations % used for generating declarations
@misc{rmsprop_unpublished_Hinton,
year = {2014},
month = apr,
note = {[Online; accessed 17. Sep. 2022]},
url = {https://www.cs.toronto.edu/~tijmen/csc321/slides/lecture_slides_lec6.pdf}
}
@article{Zeiler2012Dec,
author = {Zeiler, Matthew D.},
title = {{ADADELTA: An Adaptive Learning Rate Method}},
journal = {arXiv},
year = {2012},
month = dec,
eprint = {1212.5701},
doi = {10.48550/arXiv.1212.5701}
}
@misc{BibEntry2022Sep_GH_actions, @misc{BibEntry2022Sep_GH_actions,
title = {{Features {\ifmmode\bullet\else\textbullet\fi} GitHub Actions}}, title = {{Features {\ifmmode\bullet\else\textbullet\fi} GitHub Actions}},
journal = {GitHub}, journal = {GitHub},

View File

@ -13,7 +13,7 @@ Zapewnienie dostępu do materiałów przy jednoczesnej pełnej ochronie ich fizy
W dzisiejszych czasach proces cyfryzacji dużych zbiorów dokumentów często realizowany jest poprzez wykorzystanie specjalnych maszyn zapewniających szybkie skanowanie, dzięki czemu starsze dokumenty zapisuje się w postaci obrazów cyfrowych. Zazwyczaj dzieje się to równolegle z codziennym skanowaniem nowych dokumentów. Strategia codziennego skanowania jest niezbędna do całkowitego wyeliminowania papieru, ponieważ wszystkie nowe dokumenty od wybranej daty są skanowane, a instytucje nie przechowują już zapisów papierowych \cite{digitalizacja}. Takie dokumenty trafiają później do specjalnych systemów pozwalających na zarządzanie nimi w łatwy i przejrzysty sposób. W przypadku bibliotek istnieje pojęcie systemu zarządzania biblioteką cyfrową, czyli oprogramowania, które zapewnia funkcje tworzenia i zarządzania zdigitalizowanymi zasobami biblioteki oraz świadczenia usług dla jej użytkowników. Tego rodzaju systemy zazwyczaj pozwalają na swobodne dodawanie specjalistycznych oprogramowań w celu zaspokojenia konkretnych potrzeb danej jednostki oraz mogą być sprzedawane zarówno przez dostawców komercyjnych, jak i być budowane w oparciu o zasoby typu open-source \cite{amollo2011digitization}. Przykładem takiego systemu jest dLibra, która pozwala udostępniać dokumenty pochodzące z bibliotek, instytucji pozarządowych, fundacji, jednostek publicznych, firm komercyjnych, a także zbiorów prywatnych. Istnieje też szersze pojęcie, a mianowicie wspomniana już biblioteka cyfrowa. Pojęcie to oznacza cały skomputeryzowany system sieciowy umożliwiający zapewnienie dostępu do wyszukiwania potrzebnych informacji dużej liczbie użytkowników biblioteki w jednoczesnym czasie i z dowolnego miejsca \cite{paliiits}. W porównaniu z tradycyjną biblioteką, biblioteka cyfrowa stanowi rewolucyjną zmianę, która zapewnia dużą szybkość i dokładność wyszukiwanych informacji. Tak długo, dopóki istnieje tytuł lub słowa kluczowe, poprzez dostęp do wyszukiwarki biblioteki cyfrowej czytelnik może w bardzo krótkim czasie uzyskać dostęp do potrzebnych mu materiałów \cite{xu2012importance}. W dzisiejszych czasach proces cyfryzacji dużych zbiorów dokumentów często realizowany jest poprzez wykorzystanie specjalnych maszyn zapewniających szybkie skanowanie, dzięki czemu starsze dokumenty zapisuje się w postaci obrazów cyfrowych. Zazwyczaj dzieje się to równolegle z codziennym skanowaniem nowych dokumentów. Strategia codziennego skanowania jest niezbędna do całkowitego wyeliminowania papieru, ponieważ wszystkie nowe dokumenty od wybranej daty są skanowane, a instytucje nie przechowują już zapisów papierowych \cite{digitalizacja}. Takie dokumenty trafiają później do specjalnych systemów pozwalających na zarządzanie nimi w łatwy i przejrzysty sposób. W przypadku bibliotek istnieje pojęcie systemu zarządzania biblioteką cyfrową, czyli oprogramowania, które zapewnia funkcje tworzenia i zarządzania zdigitalizowanymi zasobami biblioteki oraz świadczenia usług dla jej użytkowników. Tego rodzaju systemy zazwyczaj pozwalają na swobodne dodawanie specjalistycznych oprogramowań w celu zaspokojenia konkretnych potrzeb danej jednostki oraz mogą być sprzedawane zarówno przez dostawców komercyjnych, jak i być budowane w oparciu o zasoby typu open-source \cite{amollo2011digitization}. Przykładem takiego systemu jest dLibra, która pozwala udostępniać dokumenty pochodzące z bibliotek, instytucji pozarządowych, fundacji, jednostek publicznych, firm komercyjnych, a także zbiorów prywatnych. Istnieje też szersze pojęcie, a mianowicie wspomniana już biblioteka cyfrowa. Pojęcie to oznacza cały skomputeryzowany system sieciowy umożliwiający zapewnienie dostępu do wyszukiwania potrzebnych informacji dużej liczbie użytkowników biblioteki w jednoczesnym czasie i z dowolnego miejsca \cite{paliiits}. W porównaniu z tradycyjną biblioteką, biblioteka cyfrowa stanowi rewolucyjną zmianę, która zapewnia dużą szybkość i dokładność wyszukiwanych informacji. Tak długo, dopóki istnieje tytuł lub słowa kluczowe, poprzez dostęp do wyszukiwarki biblioteki cyfrowej czytelnik może w bardzo krótkim czasie uzyskać dostęp do potrzebnych mu materiałów \cite{xu2012importance}.
\newline \newline
Rysunki \ref{pierws} oraz \ref{drug} przedstawiają przykład cyfrowej biblioteki, stronę główną Mazowieckiej Biblioteki Cyfrowej oraz przykład wykorzystania panelu wyszukiwania do znalezienia interesującej użytkownika treści. W tym przypadku wyszukiwane było dzieło Henryka Sienkiewicza pt. ``Krzyżacy''. Po wyszukaniu otrzymano dostęp do czterech tomów jubileuszowego wydania tejże powieści, jest to doskonały przykład wartości jakie niesie za sobą digitalizacja, ponieważ to dzieło prawdopodobnie nie byłoby udostępnione do wypożyczenia ze względu na swoją unikatowość, lecz dzięki digitalizacji dostępne jest dla szerokiego grona użytkowników \cite{Mazowieckiego2022Mar}. Rysunki \ref{pierws} oraz \ref{drug} przedstawiają przykład cyfrowej biblioteki, stronę główną Mazowieckiej Biblioteki Cyfrowej oraz przykład wykorzystania panelu wyszukiwania do znalezienia interesującej użytkownika treści. W tym przypadku wyszukiwane było dzieło Henryka Sienkiewicza pt. ,,Krzyżacy''. Po wyszukaniu otrzymano dostęp do czterech tomów jubileuszowego wydania tejże powieści, jest to doskonały przykład wartości jakie niesie za sobą digitalizacja, ponieważ to dzieło prawdopodobnie nie byłoby udostępnione do wypożyczenia ze względu na swoją unikatowość, lecz dzięki digitalizacji dostępne jest dla szerokiego grona użytkowników \cite{Mazowieckiego2022Mar}.
\begin{figure}[h!] \begin{figure}[h!]
\centering \centering
@ -105,7 +105,7 @@ W przypadku dokumentu tekstowego metadane mogą zawierać informacje o tym, jak
Po skompletowaniu metadanych zarówno one, jak i pozyskane obrazy zostają umieszczone w systemie zarządzania biblioteką cyfrową, który został już opisany we wcześniejszym podrozdziale. Dokumenty znajdujące się już w systemie podobnie jak dokumenty fizyczne również podlegają konserwacji. Cyfrowa konserwacja to przede wszystkim nowe wyzwania stojące przed bibliotekami i archiwami cyfrowymi, które i tak już borykały się z koniecznością tradycyjnej (fizycznej) konserwacji książek, czy dokumentów. Konserwację cyfrową można definiować jako planowanie i alokację zasobów oraz zastosowanie metod i technik konserwatorskich niezbędnych do zapewnienia, aby informacje cyfrowe o trwałej wartości pozostały dostępne dla użytkowników przez bardzo długi czas \cite{hedstrom1997digital}. Pierwszą myślą odnośnie cyfrowej konserwacji jest bez wątpienia tworzenie regularnych kopii zapasowych, czy migracji danych, jednak myślenie że dotyczy ona wyłącznie tych kwestii jest błędne. Kopie zapasowe są doskonałą odpowiedzią na krótkoterminowe ryzyko związane z awarią nośników cyfrowych. Jeśli są one wykonane prawidłowo, to są w stanie zapewnić ochronę strumienia bitów ale nie rozwiązują takich problemów jak przestarzałe formaty plików, kwestie prawne oraz autentyczności i pewnego źródła pochodzenia. Kopie zapasowe mogą chronić dane przed przypadkowym usunięciem, przypadkowymi zmianami, działaniem wirusów i hakerów oraz katastrofami, takimi jak powodzie i pożary. Głównym problemem są zmiany technologiczne, starsze kopie cyfrowe mogą stać się niemożliwe do przeczytania przez dane oprogramowanie czy sprzęt, ponieważ ich nowsze wersje mogą nie być przystosowywane do odczytu przestarzałych plików. Ważne jest, aby zasoby były regularnie aktualizowane do odpowiednich formatów, a także aby dostęp do nich był nadzorowany, szczególnie jeśli mowa tu o plikach źródłowych, których pochodne trafiają później do cyfrowych bibliotek, gdzie dostępne są dla szerokiego grona odbiorców. Podsumowując, długoterminowa konserwacja nie odnosi się do pojęcia kopii zapasowych (konserwacja krótkoterminowa), długoterminowa konserwacja to przede wszystkim uodpornienie zbiorów na zmiany technologiczne \cite{corrado2017digital}. Po skompletowaniu metadanych zarówno one, jak i pozyskane obrazy zostają umieszczone w systemie zarządzania biblioteką cyfrową, który został już opisany we wcześniejszym podrozdziale. Dokumenty znajdujące się już w systemie podobnie jak dokumenty fizyczne również podlegają konserwacji. Cyfrowa konserwacja to przede wszystkim nowe wyzwania stojące przed bibliotekami i archiwami cyfrowymi, które i tak już borykały się z koniecznością tradycyjnej (fizycznej) konserwacji książek, czy dokumentów. Konserwację cyfrową można definiować jako planowanie i alokację zasobów oraz zastosowanie metod i technik konserwatorskich niezbędnych do zapewnienia, aby informacje cyfrowe o trwałej wartości pozostały dostępne dla użytkowników przez bardzo długi czas \cite{hedstrom1997digital}. Pierwszą myślą odnośnie cyfrowej konserwacji jest bez wątpienia tworzenie regularnych kopii zapasowych, czy migracji danych, jednak myślenie że dotyczy ona wyłącznie tych kwestii jest błędne. Kopie zapasowe są doskonałą odpowiedzią na krótkoterminowe ryzyko związane z awarią nośników cyfrowych. Jeśli są one wykonane prawidłowo, to są w stanie zapewnić ochronę strumienia bitów ale nie rozwiązują takich problemów jak przestarzałe formaty plików, kwestie prawne oraz autentyczności i pewnego źródła pochodzenia. Kopie zapasowe mogą chronić dane przed przypadkowym usunięciem, przypadkowymi zmianami, działaniem wirusów i hakerów oraz katastrofami, takimi jak powodzie i pożary. Głównym problemem są zmiany technologiczne, starsze kopie cyfrowe mogą stać się niemożliwe do przeczytania przez dane oprogramowanie czy sprzęt, ponieważ ich nowsze wersje mogą nie być przystosowywane do odczytu przestarzałych plików. Ważne jest, aby zasoby były regularnie aktualizowane do odpowiednich formatów, a także aby dostęp do nich był nadzorowany, szczególnie jeśli mowa tu o plikach źródłowych, których pochodne trafiają później do cyfrowych bibliotek, gdzie dostępne są dla szerokiego grona odbiorców. Podsumowując, długoterminowa konserwacja nie odnosi się do pojęcia kopii zapasowych (konserwacja krótkoterminowa), długoterminowa konserwacja to przede wszystkim uodpornienie zbiorów na zmiany technologiczne \cite{corrado2017digital}.
\newline \newline
Istnieje również pojęcie masowej cyfryzacji, czyli czegoś więcej aniżeli tylko projektu na dużą skalę jak np. digitalizacja kilku bibliotek miejskich zlecona przez władze danego miasta. Jest to digitalizacja materiałów na skalę przemysłową. Innymi słowy oznacza to przekształcanie całych bibliotek bez dokonywania selekcji poszczególnych materiałów z czym mamy do czynienia w przypadku pojedynczych instytucji. Celem masowej digitalizacji nie jest tworzenie wybranych kolekcji dzieł czy dokumentów, ale jak największej możliwej ich liczby. Aby zrobić to efektywnie, masowa digitalizacja opiera się na wydajnym fotografowaniu książek strona po stronie. Ludzki czynnik podczas masowej digitalizacji jest ograniczany do absolutnego minimum. Na samą myśl o masowej digitalizacji do głowy nasuwają się globalni liderzy technologiczni tacy jak Google. W pewnym momencie jednym z celów tej korporacji stała się masowa cyfryzacja zbiorów wielu różnych światowych bibliotek oraz księgarni, aby móc do swojego portfolio dodać zupełnie nową usługę. Efektem tego jest dobrze znana dzisiaj witryna Google Books, która pozwala na przeszukiwanie materiałów z możliwością podglądu kontekstu wyszukiwanych haseł \cite{COYLE2006641}. Jeśli chodzi o Google to wszystko zaczęło się w 2004 roku, kiedy to została ogłoszona ich współpraca z pięcioma dużymi amerykańskimi bibliotekami. W skład tej piątki wchodziła Nowojorska Biblioteka Publiczna oraz biblioteki uniwersytetów Harvard, Michigan, Oxford i Uniwersytetu Stanforda. Biblioteki miały wyłączne prawo wyboru pozycji, które zostaną przez firmę z Kalifornii zdigitalizowane, a także otrzymały ich cyfrowe kopie na własny użytek. Konkurencja dla Google'a okazała się być krótkotrwałą, Microsoft który tuż po Google'u rozpoczął prace nad własnym projektem digitalizacji we współpracy z Internet Archive zakończył swoje działania już w 2008 roku. Zebrana jednak przez nich w tym czasie kolekcja może budzić podziw, gdyż udało im się poddać procesowi cyfryzacji aż 750 tysięcy woluminów \cite{Jones2011Apr}. Na rysunkach \ref{google1} oraz \ref{google2} znajduje się przykładowy widok książki dostępnej w cyfrowej bibliotece Google, wraz z najważniejszą funkcjonalnością, jaką oferuje, czyli możliwością przeszukiwania interesujących fraz w tekście. Istnieje również pojęcie masowej cyfryzacji, czyli czegoś więcej aniżeli tylko projektu na dużą skalę jak np. digitalizacja kilku bibliotek miejskich zlecona przez władze danego miasta. Jest to digitalizacja materiałów na skalę przemysłową. Innymi słowy oznacza to przekształcanie całych bibliotek bez dokonywania selekcji poszczególnych materiałów z czym mamy do czynienia w przypadku pojedynczych instytucji. Celem masowej digitalizacji nie jest tworzenie wybranych kolekcji dzieł czy dokumentów, ale jak największej możliwej ich liczby. Aby zrobić to efektywnie, masowa digitalizacja opiera się na wydajnym fotografowaniu książek strona po stronie. Ludzki czynnik podczas masowej digitalizacji jest ograniczany do absolutnego minimum. Na samą myśl o masowej digitalizacji do głowy nasuwają się globalni liderzy technologiczni tacy jak Google. W pewnym momencie jednym z celów tej korporacji stała się masowa cyfryzacja zbiorów wielu różnych światowych bibliotek oraz księgarni, aby móc do swojego portfolio dodać zupełnie nową usługę. Efektem tego jest dobrze znana dzisiaj witryna Google Books, która pozwala na przeszukiwanie materiałów z możliwością podglądu kontekstu wyszukiwanych haseł \cite{COYLE2006641}. Jeśli chodzi o Google to wszystko zaczęło się w 2004 roku, kiedy to została ogłoszona ich współpraca z pięcioma dużymi amerykańskimi bibliotekami. W skład tej piątki wchodziła Nowojorska Biblioteka Publiczna oraz biblioteki uniwersytetów Harvard, Michigan, Oxford i Uniwersytetu Stanforda. Biblioteki miały wyłączne prawo wyboru pozycji, które zostaną przez firmę z Kalifornii zdigitalizowane, a także otrzymały ich cyfrowe kopie na własny użytek. Konkurencja dla Google okazała się być krótkotrwałą, Microsoft który tuż po Google rozpoczął prace nad własnym projektem digitalizacji we współpracy z Internet Archive zakończył swoje działania już w 2008 roku. Zebrana jednak przez nich w tym czasie kolekcja może budzić podziw, gdyż udało im się poddać procesowi cyfryzacji aż 750 tysięcy woluminów \cite{Jones2011Apr}. Na rysunkach \ref{google1} oraz \ref{google2} znajduje się przykładowy widok książki dostępnej w cyfrowej bibliotece Google, wraz z najważniejszą funkcjonalnością, jaką oferuje, czyli możliwością przeszukiwania interesujących fraz w tekście.
\newline \newline
\begin{figure}[h!] \begin{figure}[h!]

View File

@ -2,29 +2,30 @@
% !TeX spellcheck = pl_PL % !TeX spellcheck = pl_PL
\chapter{Podstawy teoretyczne sieci neuronowych}\hypertarget{chap:2}{} \chapter{Podstawy teoretyczne sieci neuronowych}\hypertarget{chap:2}{}
Niniejsza praca polega na przeprowadzeniu eksperymentu na danych zebranych w ramach omawianego na późniejszych stronach projektu powstałego z ramienia inicjatywy digitalizacyjnej Chronicling America, t.j. Newspaper Navigator. Z racji tego istnieje naturalna potrzeba wytłumaczenia pojęcia, jakimi są głębokie sieci neuronowe ze szczególnym naciskiem na sieci przetwarzające obraz, ponieważ technologia ta jest kluczowym elementem całego projektu Newspaper Navigator. Celem niniejszej pracy jest przeprowadzenie eksperymentu na danych zebranych w ramach omawianego na późniejszych stronach projektu powstałego z ramienia inicjatywy digitalizacyjnej Chronicling America, t.j. Newspaper Navigator. Z racji tego istnieje naturalna potrzeba wytłumaczenia pojęcia, jakimi są głębokie sieci neuronowe ze szczególnym naciskiem na sieci przetwarzające obraz, ponieważ technologia ta jest kluczowym elementem całego projektu Newspaper Navigator.
\section{Podstawowe informacje o sieciach neuronowych} \section{Podstawowe informacje o sieciach neuronowych}
Najprościej mówiąc i nie wdając się jeszcze zanadto w szczegóły sieć neuronowa jest to stos połączonych ze sobą warstw na które składają się neurony, czyli podstawowe jednostki obliczeniowe w sieciach. Wyróżniamy warstwę wejściową, ukryte warstwy stanowiące środek sieci, a także warstwę wyjściową. Z jednej strony wprowadza się dane, a z drugiej strony otrzymuje się ich przetworzoną postać. Każda warstwa wykonuje serię operacji matematycznych na otrzymanych danych, a także posiada zestaw parametrów podlegających modyfikacji w procesie optymalizacji. Przedstawiony na rycinie \ref{DNN} typ sieci neuronowych to najbardziej popularny typ, nazywany w pełni połączoną siecią (\emph{z ang. Fully Connected Network}). W sieci w pełni połączonej każda jednostka wyjściowa jest obliczana jako suma ważona wszystkich wejść. Termin ``w pełni połączon'' pochodzi właśnie od tego zachowania: każde wyjście jest połączone z każdym wejściem \cite{osinga2018deep}. Neurony zawarte w warstwie wejściowej (\emph{z ang. Input Layer}) wprowadzają do modelu informacje zewnętrzne, nie wykonują się tutaj żadne operacje matematyczne, jedynie wprowadza się dane. Liczba neuronów w warstwie wejściowej zależy od danych treningowych, od ich wymiaru. Tradycyjnie dla warstwy wejściowej wygląda to tak jak na wykresie \ref{neurony_licz}. Najprościej mówiąc i nie wdając się jeszcze zanadto w szczegóły sieć neuronowa jest to stos połączonych ze sobą warstw, na które składają się neurony, czyli podstawowe jednostki obliczeniowe w sieciach. Wyróżniamy warstwę wejściową, ukryte warstwy stanowiące wnętrze sieci, a także warstwę wyjściową. Z jednej strony wprowadza się dane, a z drugiej strony otrzymuje się ich przetworzoną postać. Każda warstwa wykonuje serię operacji matematycznych na otrzymanych danych, a także posiada zestaw parametrów (wag) podlegających modyfikacji w procesie optymalizacji. Przedstawiony na rycinie \ref{DNN} typ sieci neuronowych to najbardziej popularny typ, nazywany w pełni połączoną siecią (\emph{z ang. Fully Connected Network}). W sieci w pełni połączonej każda jednostka wyjściowa jest obliczana jako suma ważona wszystkich wejść. Termin ,,w pełni połączona'' pochodzi właśnie od tego zachowania: każde wyjście jest połączone z każdym wejściem \cite{osinga2018deep}. Neurony zawarte w warstwie wejściowej (\emph{z ang. Input Layer}) wprowadzają do modelu informacje zewnętrzne, nie wykonują się tutaj żadne operacje matematyczne, jedynie wprowadza się dane. Liczba neuronów w warstwie wejściowej zależy od danych uczących, od ich wymiaru. Tradycyjnie dla warstwy wejściowej wygląda to tak jak na rysunku \ref{neurony_licz}.
\begin{equation} \begin{equation}
Liczba\: neuronow = Liczba\: cech\: w\: danych\: treningowych + 1 Liczba\: neuronow = Liczba\: cech\: w\: danych\: treningowych + 1
\label{neurony_licz} \label{neurony_licz}
\end{equation} \end{equation}
Wyrażenie '+ 1' w powyższym wzorze odnosi się do wyrazu wolnego lub inaczej obciążenia (\emph{z ang. bias}), który intuicyjnie pełni podobne zadanie przy sieciach neuronowych jak ma to miejsce w klasycznej regresji liniowej. Wyraz wolny to po prostu stała wartość. Obciążenie jest wykorzystywane do zrównoważenia wyniku, służy do przesunięcia wyniku funkcji aktywacji (o której więcej w dalszej części pracy) w stronę dodatnią lub ujemną. Najważniejsze operacje odbywają się za to w warstwach ukrytych (\emph{z ang. hidden layers}), zgromadzone tam neurony przetwarzają informacje zgromadzone w warstwie wejściowej, a następnie przekazują je do warstwy wyjściowej. Warstw ukrytych w sieciach może być zero lub kilka, nie jest to w żaden sposób regulowane, a dotyczy od danego przypadku oraz wizji twórcy konkretnej sieci. Im bardziej skomplikowany przypadek ma dana sieć rozwiązać, tym zazwyczaj z większej liczby ukrytych warstw musi się ona składać \cite{Malik2021Dec}. Wyrażenie '+ 1' w powyższym wzorze odnosi się do wyrazu wolnego lub inaczej obciążenia (\emph{z ang. bias}), który intuicyjnie pełni podobne zadanie przy sieciach neuronowych jak ma to miejsce w klasycznej regresji liniowej. Wyraz wolny to po prostu stała wartość. Obciążenie jest wykorzystywane do zrównoważenia wyniku, służy do przesunięcia wyniku funkcji aktywacji (o której więcej w dalszej części pracy) w stronę dodatnią lub ujemną. Najważniejsze operacje odbywają się za to w warstwach ukrytych (\emph{z ang. hidden layers}), zgromadzone tam neurony przetwarzają informacje zebrane w warstwie wejściowej, a następnie przekazują je do warstwy wyjściowej. Warstw ukrytych w sieciach może być zero lub kilka, nie jest to w żaden sposób regulowane, a dotyczy od danego przypadku oraz wizji twórcy konkretnej sieci. Im bardziej skomplikowany przypadek ma dana sieć rozwiązać, tym zazwyczaj z większej liczby ukrytych warstw musi się ona składać \cite{Malik2021Dec}.
\begin{figure}[h!] \begin{figure}[h!]
\centering \centering
\includegraphics[width=0.85\textwidth]{images/nn2.png} \includegraphics[width=0.85\textwidth]{images/nn2.png}
\caption{Wizualizacja podstawowej architektury sieci neuronowej} \caption{Wizualizacja podstawowej architektury sieci neuronowej}
\label{DNN} \label{DNN}
\ref{neuronymoje}
\end{figure} \end{figure}
Neurony w każda warstwie połączone są krawędziami (reprezentowane na powyższym obrazie jako strzałki łączące poszczególne neurony ze sobą), a każda z krawędzi posiada wagę. Pojedynczy neuron zatem jest sumą ważoną wartości z poprzedniej warstwy a także dodaje się do nich wyraz wolny, w przypadku pierwszej warstwy ukrytej tymi wartościami jest jeden wiersz wartości wszystkich cechy zbioru danych. Wagi podlegają optymalizacji w trakcie procesu uczenia sieci. Ich wartość jest o tyle kluczowa, że niektóre cechy w danych będą miały większe lub mniejsze znaczenie dla przyszłej predykcji, ta właśnie ważność jest regulowana przez wagi. Początkowo wagi mają ustawiane wartości w postaci małych liczb losowych \cite{Jain2021Dec}. Wzór \ref{wyrazwol} określa zachodzącą operacje wewnątrz neuronów. Neurony w każda warstwie połączone są krawędziami (reprezentowane na rysunku \ref{neuronymoje} jako linie łączące poszczególne neurony ze sobą), a każda z krawędzi posiada wagę. Pojedynczy neuron zatem jest sumą ważoną wartości z poprzedniej warstwy a także dodaje się do nich wyraz wolny, w przypadku pierwszej warstwy ukrytej tymi wartościami jest jeden wiersz wartości wszystkich cech zbioru danych. Wagi podlegają optymalizacji w trakcie procesu uczenia sieci. Ich wartość jest o tyle kluczowa, że niektóre cechy w danych będą miały większe lub mniejsze znaczenie dla przyszłej predykcji, to właśnie jest regulowana przez wagi. Początkowo wagi mają ustawiane wartości w postaci małych liczb losowych \cite{Jain2021Dec}. Wzór \ref{wyrazwol} określa zachodzącą operacje wewnątrz neuronów.
\begin{equation} \begin{equation}
Y = \sum (wagi * dane\: wejsciowe) + wyraz\: wolny Y = \sum (wagi * dane\: wejsciowe) + wyraz\: wolny
\label{wyrazwol} \label{wyrazwol}
\end{equation} \end{equation}
Zanim wyliczona suma zostanie przekazana do kolejny ukrytej warstwy lub warstwy wyjściowej nakłada się na nią nieliniowość, poprzez tak zwaną funkcje aktywacji (\emph{z ang. activation function}). Funkcja aktywacji dokonuje transformacji powstałej sumy ważonej w dane wyjściowe warstwy, dzieje się to w celu ułatwienia sieci uczenia się złożonych (nieliniowych) wzorców w danych. Funkcje aktywacji zazwyczaj są różniczkowalne, co oznacza, że dla danej wartości wejściowej można obliczyć pochodną pierwszego rzędu. Jest to konieczne, z racji tego, że sieci neuronowe są zwykle trenowane z wykorzystaniem algorytmu wstecznej propagacji, który wymaga wyliczenia pochodnej na błędzie predykcji w celu późniejszej optymalizacji wag sieci \cite{BibEntry2021Jan_active}. Ponadto wartość neurona powinna być kontrolowana i zawierać się w pewnym przedziale. Jeżeli ta wartość nie jest ograniczona do pewnego limitu, wówczas może przybierać bardzo duże wartości, co w przypadku bardzo głębokich sieci neuronowych, które mają miliony parametrów może prowadzić do poważnych problemów obliczeniowych. Ogólna postać funkcji aktywacji prezentuje wzór \ref{activo}. Zanim wyliczona suma zostanie przekazana do kolejny ukrytej warstwy lub warstwy wyjściowej, nakłada się na nią pewną operacje nieliniową, poprzez tak zwaną funkcje aktywacji (\emph{z ang. activation function}). Funkcja aktywacji dokonuje transformacji powstałej sumy ważonej w dane wyjściowe warstwy, dzieje się to w celu ułatwienia sieci uczenia się złożonych (nieliniowych) wzorców w danych. Funkcje aktywacji zazwyczaj są różniczkowalne, co oznacza, że dla danej wartości wejściowej można obliczyć pochodną pierwszego rzędu. Jest to konieczne, z racji tego, że sieci neuronowe są zwykle uczone z wykorzystaniem algorytmu wstecznej propagacji, który wymaga wyliczenia pochodnej na błędzie predykcji w celu późniejszej optymalizacji wag sieci \cite{BibEntry2021Jan_active}. Ponadto wartość neuronu powinna być kontrolowana i zawierać się w pewnym przedziale. Jeżeli ta wartość nie jest ograniczona do pewnego limitu, wówczas może przybierać bardzo duże wartości, co w przypadku bardzo głębokich sieci neuronowych, które mają miliony parametrów może prowadzić do poważnych problemów obliczeniowych. Ogólna postać funkcji aktywacji prezentuje wzór \ref{activo}.
\begin{equation} \begin{equation}
Y = f( \sum (wagi * dane\: wejsciowe) + wyraz\: wolny) Y = f( \sum (wagi * dane\: wejsciowe) + wyraz\: wolny)
\label{activo} \label{activo}
@ -48,45 +49,49 @@ Najczęściej stosowane funkcje aktywacji przedstawia tabela \ref{tab_activ}.
\end{table} \end{table}
\clearpage \clearpage
Po nałożeniu funkcji aktywacji na ważoną sumę cały proces powtarza się dla kolejnych warstw. Ostatnim krokiem jest przekazanie wartości do warstwy wyjściowej sieci, gdzie liczony jest finalny błąd predykcji. Cały taki proces nazywamy propagacją w przód (\emph{z ang. forward propagation}) \cite{Jain2021Dec_activatio}. Na poniższej rycinie możemy zauważyć proces opisany powyżej w wersji wizualnej. W tym przypadku dla uproszczenia sieć neuronowa składa się z trzech warstw: 1 wejściowej, 1 ukrytej i 1 wyjściowej. Warstwy wejściowa i ukryta zawierają trzy neurony, a warstwa wyjściowa zaś tylko jeden. Poszczególne wartości w sieci na każdym z etapów przykładu algorytmu propagacji w przód prezentują rysunek \ref{layers}. Po nałożeniu funkcji aktywacji na ważoną sumę cały proces powtarza się dla kolejnych warstw. Ostatnim krokiem jest przekazanie wartości do warstwy wyjściowej sieci, gdzie liczony jest finalny błąd predykcji. Cały taki proces nazywamy propagacją w przód (\emph{z ang. forward propagation}) \cite{Jain2021Dec_activatio}. Powyżej opisany proces prezentuje rysunek \ref{layers}. Przedstawione zostały wartości wag i neuronów dla każdej warstwy sieci prezentując algorytm propagacji w przód. W tym przypadku dla uproszczenia sieć neuronowa składa się z trzech warstw: jednej wejściowej, jednej ukrytej i jednej wyjściowej. Warstwy wejściowa i ukryta zawierają trzy neurony, a warstwa wyjściowa zaś tylko jeden.
\begin{figure}[h!] \begin{figure}[h!]
\centering \centering
\includegraphics[width=1\textwidth]{images/for_prop.png} \includegraphics[width=0.7\textwidth]{images/for_prop.png}
\caption{Wizualizacja algorytmu propagacji w przód \cite{BibEntry2020Aug_nn_guide}} \caption{Wizualizacja algorytmu propagacji w przód \cite{BibEntry2020Aug_nn_guide}}
\label{layers} \label{layers}
\end{figure} \end{figure}
Przykładowe wyliczenia sumy ważonej dla neurona 'h1': Przykładowe wyliczenia sumy ważonej dla neuronu 'h1':
\begin{equation} \begin{equation}
w1*x1 + w2*x2 + w3*x3 = 1*0,9 + 0*0,8 + 1*0,1 = 1 w1*x1 + w2*x2 + w3*x3 = 1*0,9 + 0*0,8 + 1*0,1 = 1
\end{equation} \end{equation}
Następnie na wyliczoną sumę ważoną nakłada się nieliniowość (w tym wypadku sigmoid): Następnie na wyliczoną sumę ważoną nakłada się nieliniowość (w tym wypadku sigmoidę):
\begin{equation} \begin{equation}
h1 = \sigma(1) = \dfrac{1}{1+e^{-1}} \approx 0,73 h1 = \sigma(1) = \dfrac{1}{1+e^{-1}} \approx 0,73
\end{equation} \end{equation}
Identycznie postępujemy dla kolejnych neuronów warstwy ukrytej, a następnie dla warstwy wyjściowej. Z racji tego, że inicjalne wagi są losowe, wartość neuronu wyjściowego jest daleka od wartości prawdziwej. W tym przypadku błąd predykcji równy jest +0,77, ponieważ wartość docelowa dla punktu danych na podstawie którego została wyliczona predykcja jest równa 0. Aby przybliżyć wartość predykcji do wartości rzeczywistej następuje proces uczenia sieci, tak zwany algorytm propagacji wstecznej (\emph{z ang backward propagation}), czyli krótko mówiąc optymalizacji wag sieci \cite{BibEntry2020Aug_nn_guide}.
Identycznie postępujemy dla kolejnych neuronów warstwy ukrytej, a następnie dla warstwy wyjściowej. W tym przypadku błąd predykcji, czyli różnica między wartością prawdziwą a wartością oszacowaną, jest równy +0,77. Zakładając, że dana sieć zwraca wartości z przedziału od 0 do 1 oraz że 0 jest wartością prawdziwą, nietrudno dojść do wniosku, że wartość neuronu wyjściowego jest daleka od wartości prawdziwej. Wynika to z faktu, że wagi początkowe są wartościami losowymi. Aby przybliżyć wartość predykcji do wartości prawdziwej, następuje proces uczenia się sieci, tzw. algorytm propagacji wstecznej (\emph{z ang backward propagation}), czyli krótko mówiąc optymalizacji wag sieci \cite{BibEntry2020Aug_nn_guide}.
\newline \newline
Zanim jednak przejdziemy do algorytmu propagacji wstecznej stosownym wydaje się być wytłumaczenie pojęcia funkcji kosztu lub inaczej straty (\emph{z ang. cost/loss function}). W obrębie zagadnień związanych z uczeniem maszynowym pod tym pojęciem określa się funkcje, która bada różnice pomiędzy wartościami oczekiwanym na wyjściu sieci neuronowej, a wartościami jakie zostały zwrócone (predykcjami). Funkcja ta określa jak bardzo sieć myli się podczas predykcji wartości, poprzez wyliczenie błędu jakimi obciążone są jej wyniki. Pojęcie funkcji kosztu różni się w zależności od przypadku, tj. regresji, klasyfikacji binarnej czy klasyfikacji wieloklasowej. W przypadku regresji wyliczany jest dystans poszczególnych wartości rzeczywistych od krzywej predykcji \cite{BibEntry2021Mar_loss_cost}. Celem modelu podczas etapu treningu jest minimalizacja funkcji kosztu, czyli minimalizacji błędów jakie są przez niego popełnianie. Najczęściej używane funkcje kosztu przy regresji to: Zanim jednak przejdziemy do algorytmu propagacji wstecznej stosownym wydaje się być wytłumaczenie pojęcia funkcji kosztu lub inaczej straty (\emph{z ang. cost/loss function}). W obrębie zagadnień związanych z uczeniem maszynowym pod tym pojęciem określa się funkcje, które badają różnice pomiędzy wartościami oczekiwanym na wyjściu sieci neuronowej a wartościami jakie zostały zwrócone (predykcjami). Funkcja ta określa, jak bardzo sieć myli się podczas predykcji wartości, poprzez wyliczenie błędu, jakimi obciążone są jej wyniki. Pojęcie funkcji kosztu różni się w zależności od przypadku, tj. regresji, klasyfikacji binarnej czy klasyfikacji wieloklasowej. W przypadku regresji wyliczany jest dystans między poszczególnymi wartościami rzeczywistymi od krzywej predykcji \cite{BibEntry2021Mar_loss_cost}. Celem modelu podczas etapu treningu jest minimalizacja funkcji kosztu, czyli minimalizacji błędów, jakie są przez niego popełnianie. Najczęściej używane funkcje kosztu przy regresji to:
\begin{equation} \begin{equation}
MSE = \dfrac{1}{n}\sum_{n=1}^{n}(y-y')^2 MSE = \dfrac{1}{n}\sum(y-y')^2
\end{equation} \end{equation}
MSE, czyli błąd średniokwadratowy (\emph{z ang. mean squared error}) oblicza średnią kwadratowych różnic między wartościami rzeczywistymi a wartościami przewidywanymi. Cechą charakterystyczną tej funkcji jest to, że model jest bardziej karcony za duże błędy. MSE, czyli błąd średniokwadratowy (\emph{z ang. mean squared error}) oblicza średnią kwadratowych różnic między wartościami rzeczywistymi a wartościami przewidywanymi. Cechą charakterystyczną tej funkcji jest to, że model jest bardziej ,,karcony'' za duże błędy.
\begin{equation} \begin{equation}
MAE = \dfrac{1}{n}\sum_{n=1}^{n}|y-y'| MAE = \dfrac{1}{n}\sum|y-y'|
\end{equation} \end{equation}
MAE, czyli średni błąd absolutny (\emph{z ang. mean absolute error}) oblicza średnią sumy różnic bezwzględnych między wartościami rzeczywistymi a wartościami przewidywanymi. Charakteryzuje się większą odpornością na wartości odstające (\emph{z ang. outliers}) występujące w rozkładzie zmiennej objaśnianej. MAE, czyli średni błąd bezwzględny (\emph{z ang. mean absolute error}) oblicza średnią sumy różnic bezwzględnych między wartościami rzeczywistymi a wartościami przewidywanymi. Charakteryzuje się większą odpornością na wartości odstające (\emph{z ang. outliers}) występujące w rozkładzie zmiennej objaśnianej.
\begin{equation} \begin{equation}
MSLE = \dfrac{1}{n}\sum_{n=1}^{n}(\log(y+1)-\log(y'+1))^2 MSLE = \dfrac{1}{n}\sum(\log(y+1)-\log(y'+1))^2
\end{equation} \end{equation}
MSLE, czyli błąd średniokwadratowy zlogarytmizowany (\emph{z ang. mean squared logarithmic error}) obliczany jest tak samo jak błąd średniokwadratowy, z tą różnicą, że używany jest logarytm naturalny wartości przewidywanej i rzeczywistej zmiennej objaśnianej. Stosowany jest najczęściej w sytuacjach, kiedy nie chcemy aby model był tak mocno karany w przypadku dużych wartości błędu jak dzieje się to w przypadku MSE. Oprócz tego często używa się również wersji błędu średniokwadratowego oraz błędu średniokwadratowego zlogarytmizowanego zawierających pierwiastek, są to kolejno RMSE oraz RMSLE. Interpretacja ich jest o tyle prostsza, że operujemy w tych samych jednostkach, a nie jak w przypadku standardowych wersji kwadratach tych jednostek. MAPE to z kolei odpowiednik MAE w którym liczony jest średni błąd absolutny wyrażony procentowo. Te metryki jednak częściej stosowane są przy prezentacji wyników, aniżeli bezpośrednio jako funkcje straty w modelach między innymi dzięki łatwej do zrozumienia, dla osób mniej biegłych technicznie, interpretacji \cite{BibEntry2021Mar_loss_details}. W kontekście klasyfikacji funkcja straty mierzy, jak często model źle klasyfikuje przynależność obserwacji do poszczególnych etykiet. W przypadku klasyfikacji binarnych generalnie problem polega na przewidywaniu wartości 0 lub 1 dla pierwszej lub drugiej klasy. Jest to realizowane jako przewidywanie prawdopodobieństwa, aby zdecydować, czy dany element należy do klasy pierwszej czy drugiej. Najczęściej stosowaną miarą w przypadku problemów klasyfikacyjnych jest BCE. MSLE, czyli błąd średniokwadratowy zlogarytmizowany (\emph{z ang. mean squared logarithmic error}) obliczany jest tak samo jak błąd średniokwadratowy, z tą różnicą, że używany jest logarytm naturalny wartości przewidywanej i rzeczywistej zmiennej objaśnianej. Stosowany jest najczęściej w sytuacjach, kiedy nie chcemy aby model był tak mocno karany w przypadku dużych wartości błędu, jak dzieje się to w przypadku MSE. Oprócz tego często używa się również wersji błędu średniokwadratowego oraz błędu średniokwadratowego zlogarytmizowanego zawierających pierwiastek, są to kolejno RMSE oraz RMSLE. Interpretacja ich jest o tyle prostsza, że operujemy w tych samych jednostkach, a nie jak w przypadku standardowych wersji kwadratach tych jednostek. MAPE to z kolei odpowiednik MAE w którym liczony jest średni błąd absolutny wyrażony procentowo. Te metryki jednak częściej stosowane są przy prezentacji wyników, aniżeli bezpośrednio jako funkcje straty w modelach między innymi dzięki łatwej do zrozumienia, dla osób mniej biegłych technicznie, interpretacji \cite{BibEntry2021Mar_loss_details}.
\begin{equation}
BCE = -\dfrac{1}{n}\sum_{n=1}^{n}(y\log(p) + (1 - y)\log(1 - p))
\end{equation}
BCE, czyli binarna entropia krzyżowa (\emph{z ang. binary cross-entropy}) jest powszechnie stosowaną funkcją straty w problemie klasyfikacji binarnej (istnieją tylko dwie klasy, 0 lub 1). Mierzy on wydajność modelu klasyfikacyjnego, którego wyjście jest wartością prawdopodobieństwa pomiędzy 0 a 1. Funcja straty wzrasta, jeśli przewidywane prawdopodobieństwo różni się od rzeczywistej etykiety. Teoretycznie doskonały model ma binarną stratę cross-entropii równą 0 \cite{Kumar2021Dec_class_loss}. Klasyfikacja wieloklasowa to te problemy modelowania predykcyjnego, w których przykłady są przypisane do jednej z więcej niż dwóch klas. Problem jest często implementowany jako przewidywanie prawdopodobieństwa przynależności przykładu do każdej znanej klasy. W przypadku tego rodzaju problemów najpopularniejszą funkcją straty jest również entropia krzyżowa. Tym razem obliczana jest binarna entropia krzyżowa dla każdej klasy osobno, a następnie sumuje się ją dla pełnej straty \cite{Martinek2022Mar_muulti_class_loss}.
\newline \newline
Skoro pojęcie funkcji straty zostało już omówione możliwe jest przejście do algorytmu propagacji wstecznej, który odpowiada za tak zwany proces uczenia się w przypadku sieci neuronowych. Jak wskazuje już sama nazwa podąża się tym razem w odwrotnym kierunki aniżeli podczas algorytmu propagacji w przód (od warstwy wejściowej, przez warstwy ukryte, aż do warstwy wyjściowej). Celem w tym przypadku jest minimalizacja funkcji kosztu poprzez dostosowanie wag sieci. Wagi aktualizowane są w ten sposób, aby ich zmiany powodowały, że rzeczywiste wyjście sieci jest bliższe wyjściu docelowemu, minimalizując w ten sposób błąd dla każdego neuronu wyjściowego i sieci jako całości. Zmiany wag zachodzą sekwencyjnie od ostatniej do pierwszej warstwy. Poziom dostosowania jest określany przez gradienty funkcji kosztu względem wag. Gradient funkcji jest wektorem pochodnych cząstkowych tej funkcji. Pochodna funkcji mierzy wrażliwość na zmianę wartości wyjściowej w odniesieniu do zmiany jej wartości wejściowej. Innymi słowy, pochodna mówi nam, w jakim kierunku zmierza funkcja. Gradient zaś pokazuje, jak bardzo musi zmienić się jej parametr (w kierunku dodatnim lub ujemnym), aby zminimalizować daną funkcje. Rozważmy następujący wycinek sieci przedstawiający jeden neuron wraz z połączeniami. Wycinek ten przedstawia rycina \ref{neuuro}. W kontekście klasyfikacji funkcja straty mierzy, jak często model źle klasyfikuje przynależność obserwacji do poszczególnych etykiet. W przypadku klasyfikacji binarnych generalnie problem polega na przewidywaniu wartości 0 lub 1 dla pierwszej lub drugiej klasy. Jest to realizowane jako przewidywanie prawdopodobieństwa, aby zdecydować, czy dany element należy do klasy pierwszej czy drugiej. Najczęściej stosowaną miarą w przypadku problemów klasyfikacji jest BCE.
\begin{equation}
BCE = -\dfrac{1}{n}\sum(y\log(p) + (1 - y)\log(1 - p))
\end{equation}
BCE, czyli binarna entropia krzyżowa (\emph{z ang. binary cross-entropy}) jest powszechnie stosowaną funkcją straty w problemie klasyfikacji binarnej (istnieją tylko dwie klasy, 0 lub 1). Mierzy on wydajność modelu klasyfikacji, którego wyjście jest wartością prawdopodobieństwa pomiędzy 0 a 1. Funcja straty wzrasta tym bardziej, im przewidywane prawdopodobieństwo różni się od rzeczywistej etykiety. Teoretycznie doskonały model ma binarną stratę cross-entropii równą 0 \cite{Kumar2021Dec_class_loss}. Z kolei klasyfikacja wieloklasowa to te problemy modelowania predykcyjnego, w których przykłady są przypisane do jednej z więcej niż dwóch klas. Problem jest często implementowany jako przewidywanie prawdopodobieństwa przynależności przykładu do każdej znanej klasy. W przypadku tego rodzaju problemów najpopularniejszą funkcją straty jest również entropia krzyżowa. Tym razem obliczana jest binarna entropia krzyżowa dla każdej klasy osobno, a następnie sumuje się ją dla pełnej straty \cite{Martinek2022Mar_muulti_class_loss}.
\newline
Skoro pojęcie funkcji straty zostało już omówione możliwe jest przejście do algorytmu propagacji wstecznej, który odpowiada za tak zwany proces uczenia się w przypadku sieci neuronowych. Jak wskazuje już sama nazwa, podąża się tym razem w odwrotnym kierunki aniżeli podczas algorytmu propagacji w przód (od warstwy wejściowej, przez warstwy ukryte, aż do warstwy wyjściowej). Celem w tym przypadku jest minimalizacja funkcji kosztu poprzez dostosowanie wag sieci. Wagi aktualizowane są w ten sposób, aby ich zmiany powodowały, że rzeczywiste wyjście sieci jest bliższe wyjściu docelowemu, minimalizując w ten sposób błąd dla każdego neuronu wyjściowego i sieci jako całości. Zmiany wag zachodzą sekwencyjnie od ostatniej do pierwszej warstwy. Poziom dostosowania jest określany przez gradienty funkcji kosztu względem wag. Gradient funkcji jest wektorem pochodnych cząstkowych tej funkcji. Pochodna funkcji mierzy wrażliwość na zmianę wartości wyjściowej w odniesieniu do zmiany jej wartości wejściowej. Innymi słowy, pochodna mówi nam, w jakim kierunku zmierza funkcja. Gradient zaś pokazuje, jak bardzo musi zmienić się jej parametr (w kierunku dodatnim lub ujemnym), aby zminimalizować daną funkcje. Rozważmy następujący wycinek sieci przedstawiający jeden neuron wraz z połączeniami. Wycinek ten przedstawia rycina \ref{neuuro}.
\begin{figure}[h!] \begin{figure}[h!]
\centering \centering
\includegraphics[width=0.5\textwidth]{images/nn_part_for_backprop.png} \includegraphics[width=0.5\textwidth]{images/nn_part_for_backprop.png}
@ -99,19 +104,19 @@ Z algorytmu propagacji w przód wiadome jest, że:
\sigma(z) = \dfrac{1}{1+e^{-z}} \sigma(z) = \dfrac{1}{1+e^{-z}}
\end{equation} \end{equation}
\begin{equation} \begin{equation}
z = \sum w*x= w1*x1 + w2*x2 + w3*x3 z = \sum w*x= w_1*x_1 + w_2*x_2 + w_3*x_3
\end{equation} \end{equation}
Zakładając, że chcemy zbadać jaka zmiana w1 spowoduje minimalizacje funkcji kosztu, oznaczmy ją jako E, musimy zastosować regułę łańcuchową (\emph{z ang. chain rule}) służącą do obliczania pochodnych funkcji złożonych. Opisuje to wzór \ref{chain}. Zakładając, że chcemy zbadać jaka zmiana w1 spowoduje minimalizacje funkcji kosztu, oznaczmy ją jako E, musimy zastosować regułę łańcuchową (\emph{z ang. chain rule}) służącą do obliczania pochodnych funkcji złożonych. Opisuje to wzór \ref{chain}.
\begin{equation} \begin{equation}
\frac{\partial E}{\partial w1} = \frac{\partial E}{\partial \sigma(z)} * \frac{\partial \sigma(z)}{\partial z} * \frac{\partial z}{\partial w1} \frac{\partial E}{\partial w_1} = \frac{\partial E}{\partial \sigma(z)} * \frac{\partial \sigma(z)}{\partial z} * \frac{\partial z}{\partial w_1}
\label{chain} \label{chain}
\end{equation} \end{equation}
Zaktualizowana wartość wagi w1 prezentuje przykład \ref{w1}. Zaktualizowana wartość wagi $w_1$ prezentuje przykład \ref{w1}.
\begin{equation} \begin{equation}
w1' = w1 - (\frac{\partial E}{\partial w1} * lr) w_1' = w_1 - (\frac{\partial E}{\partial w_1} * lr)
\label{w1} \label{w1}
\end{equation} \end{equation}
Powyższy proces nosi nazwę metody gradientu prostego (\emph{z ang. gradient descent}). Pod symbolem 'lr' kryje się parametr oznaczający długość kroku (\emph{z ang. learning rate}), jaki zostanie wykonany w stronę minimum funkcji podczas jednego przejścia procesu optymalizacji wag. Parametr ten jest ustawiany z góry podczas deklarowania parametrów sieci. Używany jest on w celu uniknięcia sytuacji, w której algorytm pominie minimum funkcji z powodu wykonanej zbyt dużej modyfikacji wagi względem jej pierwotnego stanu. Ponieważ proces propagacji wstecznej jest wykonywany wielokrotnie, tak samo jak propagacji w przód, a nie jednorazowo (1 epoka = 1 przejście sieci w przód i w tył) wagi mogą być uaktualniane o mniejsze wartości tym samym zabezpieczając przed pominięciem minimum funkcji. Oczywiście krok ten nie może być również zbyt mały, ponieważ proces optymalizacji będzie wówczas trwał zbyt długo, a przy tym pochłaniał zbyt dużo mocy obliczeniowej. Dobór tego parametru jest zazwyczaj serią prób i błędów, zanim dojdzie się do jego odpowiedniej wartości. Wpływ długości kroku na znajdowanie minimum funkcji obrazuje rycina \ref{minim}. Powyższy proces nosi nazwę metody gradientu prostego (\emph{z ang. gradient descent}). Pod symbolem 'lr' kryje się parametr oznaczający długość kroku (\emph{z ang. learning rate}), jaki zostanie wykonany w stronę minimum funkcji podczas jednego przejścia procesu optymalizacji wag. Parametr ten jest ustawiany z góry podczas deklarowania parametrów sieci. Używany jest on w celu uniknięcia sytuacji, w której algorytm pominie minimum funkcji z powodu wykonanej zbyt dużej modyfikacji wagi względem jej pierwotnego stanu. Ponieważ proces propagacji wstecznej jest wykonywany wielokrotnie, tak samo jak propagacji w przód, a nie jednorazowo przez cały zbiór uczący (1 epoka = 1 przejście sieci w przód i w tył), wagi mogą być uaktualniane o mniejsze wartości tym samym zabezpieczając przed pominięciem minimum funkcji. Oczywiście krok ten nie może być również zbyt mały, ponieważ proces optymalizacji będzie wówczas trwał zbyt długo, a przy tym pochłaniał zbyt dużo mocy obliczeniowej. Dobór tego parametru jest zazwyczaj serią prób i błędów, zanim dojdzie się do jego odpowiedniej wartości. Wpływ długości kroku na znajdowanie minimum funkcji obrazuje rycina \ref{minim}.
\begin{figure}[h!] \begin{figure}[h!]
\centering \centering
\includegraphics[width=1\textwidth]{images/lr.png} \includegraphics[width=1\textwidth]{images/lr.png}
@ -119,29 +124,29 @@ Powyższy proces nosi nazwę metody gradientu prostego (\emph{z ang. gradient de
\label{minim} \label{minim}
\end{figure} \end{figure}
Cały proces opisany powyżej wykonywany jest dla każdej wagi jaka znajduje się w sieci, idąc po kolei warstwa po warstwie, a zaczynając od warstwy wyjściowej sieci \cite{BibEntry2020Aug_nn_guide}. Podejście do procesu optymalizacji wag przy dzisiejszych architekturach sieci neuronowych zależne jest od wybranego optymalizatora. Do najpopularniejszych aktualnie optymalizatorów należą optymalizatory adaptacyjne, które dostosowują długość kroku automatycznie w trakcie procesu uczenia się sieci, takie jak: ADAM, RMSprop, czy AdaDelta. Po wykonaniu się ostatniej epoki, aktualne wartości wag stają się finalnymi wagami w sieci i będą wykorzystywane przy predykcji na zbiorze testowym. Cały proces opisany powyżej wykonywany jest dla każdej wagi, jaka znajduje się w sieci, idąc po kolei warstwa po warstwie, a zaczynając od warstwy wyjściowej sieci \cite{BibEntry2020Aug_nn_guide}. Podejście do procesu optymalizacji wag przy dzisiejszych architekturach sieci neuronowych zależne jest od wybranego optymalizatora. Do najpopularniejszych aktualnie optymalizatorów należą optymalizatory adaptacyjne, które dostosowują długość kroku automatycznie w trakcie procesu uczenia się sieci, takie jak: ADAM \cite{Kingma2014Dec}, RMSprop \cite{rmsprop_unpublished_Hinton}, czy AdaDelta \cite{Zeiler2012Dec}. Po wykonaniu się ostatniej epoki, aktualne wartości wag stają się finalnymi wagami w sieci i będą wykorzystywane przy predykcji na zbiorze testowym.
\newline \clearpage
\section{Konwolucyjne sieci neuronowe przetwarzające obraz} \section{Splotowe sieci neuronowe przetwarzające obraz}
\bigbreak \bigbreak
W przypadku danych wejściowych, którymi są obrazy do czynienia mamy z ich reprezentacją macierzową. Jej elementy to poszczególne występujące na zdjęciu piksele. Jeżeli rozważylibyśmy przepuszczenie takich danych przez, wcześniej omówione, klasyczne w pełni połączone sieci wówczas z dużą dozą prawdopodobieństwa bylibyśmy świadkami ich problemów ze zbyt dużą złożonością obliczeniową zadania. Jest to spowodowane, tym że obrazy z natury są bardzo duże, ich rozdzielczość określa wielkość reprezentującej jej macierzy. W tym momencie warto dodać, że na tym liczba elementów wchodzących w skład jednego wejścia do modelu się nie kończy, bowiem każdy piksel może przybierać jeden z 3 kolorów (wedle modelu przestrzeni barw RGB). Wówczas pojedyncze wejście modelu dla obrazu o popularnej rozdzielczości 256x256 pikseli w rzeczywistości reprezentuje liczba 256×256×3. Zakładając model o jednej warstwie ukrytej z 1000 neuronów, warstwa ta dysponować będzie prawie 200 milionami parametrów, podlegającymi procesom optymalizacji podczas przechodzenia algorytmu propagacji wstecznej. Z racji tego, że modele obrazów wymagają dość dużej liczby warstw, aby dobrze radzić sobie z klasyfikacją, to wówczas używając sieci w pełni połączonych, otrzymalibyśmy miliardy parametrów. Przy tak dużej liczbie parametrów uniknięcie problemu nadmiernego dostosowania modelu jest prawie niemożliwe. Korzystając z architektury konwolucyjnych sieci neuronowych (\emph{z ang. convolutional neural networks - CNN}) otrzymujemy znacznie mniejszą liczbę parametrów, skuteczniejsze modele, a także dużo krótszy czas ich trenowania \cite{osinga2018deep}. CNN to wyspecjalizowane sieci do danych o topologii przypominającej siatkę, dlatego właśnie świetnie spisują się w przypadku obrazów. Stosuje się je również do szeregów czasowych, gdzie za takową siatkę odpowiada interwał czasowy. Sama architektura tych sieci znacznie różni się od tej przedstawionej w pierwszym podrozdziale choć istota pozostaje wciąż taka sama, co przedstawia rycina \ref{convner}. W przypadku danych wejściowych, którymi są obrazy, do czynienia mamy z ich reprezentacją macierzową. Jej elementy to poszczególne występujące na zdjęciu piksele. Jeżeli rozważylibyśmy przepuszczenie takich danych przez, wcześniej omówione, klasyczne w pełni połączone sieci wówczas z dużą dozą prawdopodobieństwa bylibyśmy świadkami ich problemów ze zbyt dużą złożonością obliczeniową zadania. Jest to spowodowane, tym że obrazy z natury są bardzo duże, ich rozdzielczość określa wielkość reprezentującej jej macierzy. W tym momencie warto dodać, że na tym liczba elementów wchodzących w skład jednego wejścia do modelu się nie kończy, bowiem każdy piksel może przybierać jeden z 3 kolorów (wedle modelu przestrzeni barw RGB). Wówczas pojedyncze wejście modelu dla obrazu o popularnej rozdzielczości 256x256 pikseli w rzeczywistości reprezentuje liczba 256×256×3. Zakładając model o jednej warstwie ukrytej z 1000 neuronów, warstwa ta dysponować będzie prawie 200 milionami parametrów, podlegającymi procesom optymalizacji podczas przechodzenia algorytmu propagacji wstecznej. Z racji tego, że modele obrazów wymagają dość dużej liczby warstw, aby dobrze radzić sobie z klasyfikacją, to wówczas używając sieci w pełni połączonych, otrzymalibyśmy miliardy parametrów. Przy tak dużej liczbie parametrów uniknięcie problemu nadmiernego dostosowania modelu jest prawie niemożliwe. Korzystając z architektury splotowych sieci neuronowych (\emph{z ang. convolutional neural networks - CNN}), potocznie nazywanych konwolucyjnymi, otrzymujemy znacznie mniejszą liczbę parametrów, skuteczniejsze modele, a także dużo krótszy czas ich trenowania \cite{osinga2018deep}. CNN to wyspecjalizowane sieci do danych o topologii przypominającej siatkę, dlatego właśnie świetnie spisują się w przypadku obrazów. Stosuje się je również do szeregów czasowych, gdzie za takową siatkę odpowiada interwał czasowy. Sama architektura tych sieci znacznie różni się od tej przedstawionej w pierwszym podrozdziale choć istota pozostaje wciąż taka sama, co przedstawia rycina \ref{convner}.
\clearpage \clearpage
\begin{figure}[h!] \begin{figure}[h!]
\centering \centering
\includegraphics[width=1\textwidth]{images/cnn.png} \includegraphics[width=1\textwidth]{images/cnn.png}
\caption{Architektura konwolucyjnych sieci neuronowych \cite{Sharma2020May_cnn_png}} \caption{Architektura splotowych sieci neuronowych \cite{Sharma2020May_cnn_png}}
\label{convner} \label{convner}
\end{figure} \end{figure}
Istotą konwolucyjnych sieci neuronowych jak wskazuje już na to sama ich nazwa jest operacja matematyczna zwaną konwolucją. Konwolucja pozwala wyostrzyć pewne elementy obrazu poprzez użycie tak zwanego jądra lub inaczej filtra (\emph{z ang. kernel lub filter}). Istotą splotowych sieci neuronowych jest operacja matematyczna zwaną splotem lub inaczej konwolucją (\emph{z ang. convolution}). Splot pozwala wyostrzyć pewne elementy obrazu poprzez użycie tak zwanego jądra lub inaczej filtra (\emph{z ang. kernel} lub \emph{filter}).
\begin{figure}[h!] \begin{figure}[h!]
\centering \centering
\includegraphics[width=0.5\textwidth]{images/kernels.png} \includegraphics[width=0.5\textwidth]{images/kernels.png}
\caption{Przykładowe filtry i ich wpływ na obraz \cite{ContributorstoWikimediaprojects2022May}} \caption{Przykładowe filtry i ich wpływ na obraz \cite{ContributorstoWikimediaprojects2022May}}
\end{figure} \end{figure}
\clearpage
Pozwala to lepiej klasyfikować obraz, gdyż jego cechy są dla sieci, w cudzysłowie, lepiej widoczne. Filtry to mniejsze macierze o losowych parametrach, których to wartości koryguje algorytm propagacji wstecznej, dlatego intuicyjnie można utożsamiać je z wagami jakie występowały w przypadku w pełni połączonych sieci. Filtrów zazwyczaj nakłada się wiele, dla przykładu przy zadaniu rozpoznawania twarzy jeden filtr może uwypuklać oczy, drugi uszy, kolejny linie włosów i tak dalej. Oprócz tego takie podejście redukuje również szum, czyli niepotrzebne elementy obrazu przestają mieć znaczenie. Przykładowe filtry i ich wpływ na obraz przedstawione zostały w tabeli na obrazku powyżej. Wracając jednak do istoty konwolucji, dokonuje ona modyfikacji części obrazu. Filtr przechodzi krok po kroku po zdjęciu i przemnaża wartości zwracając wynik (zarówno wielkość filtra, jak i krok to parametry modyfikowalne podczas implementacji sieci). Wizualizacja tego procesu przedstawiona została na rysunku \ref{fe}. Pozwala to lepiej klasyfikować obraz, gdyż jego cechy są dla sieci, można by powiedzieć, lepiej widoczne. Filtry to mniejsze macierze o losowych parametrach, których to wartości koryguje algorytm propagacji wstecznej, dlatego intuicyjnie można utożsamiać je z wagami jakie występowały w przypadku w pełni połączonych sieci. Filtrów zazwyczaj nakłada się wiele, dla przykładu przy zadaniu rozpoznawania twarzy jeden filtr może uwypuklać oczy, drugi uszy, kolejny linie włosów i tak dalej. Oprócz tego takie podejście redukuje również szum, czyli niepotrzebne elementy obrazu przestają mieć znaczenie. Przykładowe filtry i ich wpływ na obraz przedstawione zostały w tabeli na obrazku powyżej. Wracając jednak do istoty konwolucji, dokonuje ona modyfikacji części obrazu. Filtr przechodzi krok po kroku po obrazie i przemnaża wartości zwracając wynik (zarówno wielkość filtra, jak i krok to parametry modyfikowalne podczas implementacji sieci). Wizualizacja tego procesu przedstawiona została na rysunku \ref{fe}.
\begin{figure}[h!] \begin{figure}[h!]
\centering \centering
\includegraphics[width=1\textwidth]{images/kernel_cnn_vis.png} \includegraphics[width=1\textwidth]{images/kernel_cnn_vis.png}
@ -149,23 +154,26 @@ Pozwala to lepiej klasyfikować obraz, gdyż jego cechy są dla sieci, w cudzys
\label{fe} \label{fe}
\end{figure} \end{figure}
Wobec tego konwolucja tworzy nam nowy, mniejszy obraz zawierający już wyekstrahowane cechy obrazu pierwotnego, który posłuży jako wejście kolejnej warstwy sieci. Taki obraz nazywany jest mapą cech (\emph{z ang. feature map}). Wyekstrahowane cechy w postaci mapy są o tyle znaczące, że dzięki temu ich lokalizacja na obrazie przestaje mieć znaczenie, a liczy się jedynie fakt ich występowania. Przy późniejszej predykcji zmiana położenia danej cechy nie będzie zatem znacząca w kontekście wyniku. Oczywiście jak każda architektura sieci neuronowych może być ona wielowarstwowa, wówczas wszystko wygląda identycznie, a proces powtarzany jest kilkukrotnie powodując wykrywanie subcech poszczególnych cech. Oprócz wspomnianych wcześniej dwóch hiperparametrów, tj. kroku (\emph{z ang. stride}) oraz wielkości (\emph{z ang. size}), dysponujemy także wypełnieniem (\emph{z ang. padding}). Wypełnienie odpowiada za poszerzenie granic obrazu, dzięki czemu możliwa jest ekstrakcja większej ilości cech, a co za tym idzie większa ilość informacji jest przetwarzana wewnątrz sieci. Takie działanie odbywa się kosztem wydajności. Następnym krokiem jest nałożenie na otrzymaną mapę cech nieliniowości, poprzez zastosowanie funkcji aktywacji, podobnie jak miało to miejsce w przypadku w pełni połączonych sieci. W przypadku CNN praktycznie zawsze jest to funkcja ReLU. Nieliniowość jest przyczyną tak dobrej skuteczności sieci neuronowych, ponieważ pozwala znajdować skomplikowane zależności w danych, których nie sposób zapisać jako kombinacje liniową. Funkcja aktywacji w tym wypadku pozwala zadecydować, czy dany neuron będzie miał znaczący udział w późniejszej predykcji, czy też nie. W przypadku konwolucyjnych sieci neuronowych przetwarzane wartości piksele interpretować możemy jako neurony, zaś parametry macierzy filtrów jako wagi \cite{albawi2017understanding}. Wobec tego splot tworzy nam nowy, mniejszy ,,obraz'' zawierający już wyekstrahowane cechy obrazu pierwotnego, który posłuży jako wejście kolejnej warstwy sieci. Taki obraz nazywany jest mapą cech (\emph{z ang. feature map}). Wyekstrahowane cechy w postaci mapy są o tyle znaczące, że dzięki temu ich lokalizacja na obrazie przestaje mieć znaczenie, a liczy się jedynie fakt ich występowania. Przy późniejszej predykcji zmiana położenia danej cechy nie będzie zatem znacząca w kontekście wyniku. Oczywiście jak każda architektura sieci neuronowych może być ona wielowarstwowa, wówczas wszystko wygląda identycznie, a proces powtarzany jest kilkukrotnie powodując wykrywanie subcech poszczególnych cech.
\newline \newline
Zgodnie z rysunkiem 2.5 kolejnym elementem architektury konwolucyjncyh sieci neuronowych jest krok o nazwie łączenie (\emph{z ang. pooling}). Konwolucyjna warstwa, której wyjście stanowi wejście dla warstwy pooling'u, powoduje redundancje danych. Część tych samych cech została wyekstrahowana w kolejnych przesunięciach filtra. Na potrzeby wizualizacji tego tematu, jeżeli użyty zostanie filtr wykrywający krawędzie poziome na obrazie i znajdzie on silną krawędź w określonym miejscu, to wówczas z dużą dozą prawdopodobieństwa ta sama cecha znajdzie się również w miejscu przesunięciu filtra o przykładowo 1 piksel w lewo, czy prawo. Zatem po wykonaniu konwolucji wypadałoby nieco zmniejszyć wymiarowość przetwarzanych danych. Zmniejszając rozmiar obrazu, zmniejszamy liczbę parametrów do wytrenowania, czym skracamy zarówno czas działania sieci, jak i poziom jej obliczeniowego skomplikowania. Za właśnie ten proces odpowiada warstwa pooling'u. Co warte podkreślenia pomimo redukcji wymiaru nie tracimy wówczas praktycznie żadnych informacji. Dzieje się tak, ponieważ nie interesuje nas wartość każdego piksela po konwolucji, a jednie te wartości, które dają silny sygnał sieci. W praktyce proces ten wygląda w ten sposób, że kilka sąsiednich pikseli przykładowo o rozmiarze 2x2 mapowana jest na 1 piksel (rozmiar podobnie jak w przypadku filtrów jest hiperparametrem deklarowanym podczas implementacji sieci). Zadeklarowane okno, również jak w przypadku filtrów, przechodzi wzdłuż i w szerz po całym obrazie. 2 najpopularniejsze i praktycznie jedyne stosowane rodzaje łączenia to: Oprócz wspomnianych wcześniej dwóch hiperparametrów, tj. kroku (\emph{z ang. stride}) oraz wielkości (\emph{z ang. size}), dysponujemy także wypełnieniem (\emph{z ang. padding}). Wypełnienie odpowiada za poszerzenie granic obrazu, dzięki czemu możliwa jest ekstrakcja większej ilości cech, a co za tym idzie większa ilość informacji jest przetwarzana wewnątrz sieci. Takie działanie odbywa się kosztem wydajności. Następnym krokiem jest nałożenie na otrzymaną mapę cech nieliniowości, poprzez zastosowanie funkcji aktywacji, podobnie jak miało to miejsce w przypadku w pełni połączonych sieci. W przypadku CNN praktycznie zawsze jest to funkcja ReLU. Nieliniowość jest przyczyną tak dobrej skuteczności sieci neuronowych, ponieważ pozwala znajdować skomplikowane zależności w danych, których nie sposób zapisać jako kombinacje liniową. Funkcja aktywacji w tym wypadku pozwala zadecydować, czy dany neuron będzie miał znaczący udział w późniejszej predykcji, czy też nie. W przypadku konwolucyjnych sieci neuronowych przetwarzane wartości piksele interpretować możemy jako neurony, zaś parametry macierzy filtrów jako wagi \cite{albawi2017understanding}.
\newline
Zgodnie z rysunkiem \ref{convner} kolejnym elementem architektury splotowych sieci neuronowych jest krok o nazwie łączenie (\emph{z ang. pooling}). Konwolucyjna warstwa, której wyjście stanowi wejście dla warstwy poolingu, powoduje redundancje danych. Część tych samych cech została wyekstrahowana w kolejnych przesunięciach filtra. Na potrzeby wizualizacji tego tematu, jeżeli użyty zostanie filtr wykrywający krawędzie poziome na obrazie i znajdzie on silną krawędź w określonym miejscu, to wówczas z dużą dozą prawdopodobieństwa ta sama cecha znajdzie się również w miejscu przesunięciu filtra o przykładowo 1 piksel w lewo, czy prawo. Zatem po wykonaniu splotu wypadałoby nieco zmniejszyć wymiarowość przetwarzanych danych. Zmniejszając rozmiar obrazu, zmniejszamy liczbę parametrów do wytrenowania, czym skracamy zarówno czas działania sieci, jak i poziom jej obliczeniowego skomplikowania. Za właśnie ten proces odpowiada warstwa poolingu. Co warte podkreślenia pomimo redukcji wymiaru nie tracimy wówczas praktycznie żadnych informacji. Dzieje się tak, ponieważ nie interesuje nas wartość każdego piksela po konwolucji, a jedynie te wartości, które dają silny sygnał sieci. W praktyce proces ten wygląda w ten sposób, że kilka sąsiednich pikseli przykładowo o rozmiarze 2x2 mapowana jest na 1 piksel (rozmiar podobnie jak w przypadku filtrów jest hiperparametrem deklarowanym podczas implementacji sieci). Zadeklarowane okno, również jak w przypadku filtrów, przechodzi wzdłuż i wszerz po całym obrazie. Dwa najpopularniejsze i praktycznie jedyne stosowane rodzaje łączenia to:
\begin{enumerate} \begin{enumerate}
\item \textbf{pooling} -- mapowaną wartością jest maksymalna wartość wynikająca z sąsiednich wartości pikseli, \item \textbf{pooling} -- mapowaną wartością jest maksymalna wartość wynikająca z sąsiednich wartości pikseli,
\item \textbf{average pooling} -- mapowaną wartością jest średnia wartość wynikająca z sąsiednich wartości pikseli. \item \textbf{average pooling} -- mapowaną wartością jest średnia wartość wynikająca z sąsiednich wartości pikseli.
\end{enumerate} \end{enumerate}
Dzięki zastosowania warstwy pooling'u sieci łatwiej jest identyfikować te cechy obrazu, których sygnał jest najsilniejszy \cite{Yamashita2018Aug}. Proces ten wizualizuje rysunek \ref{poole}. Dzięki zastosowania warstwy poolingu sieci łatwiej jest identyfikować te cechy obrazu, których sygnał jest najsilniejszy \cite{Yamashita2018Aug}. Proces ten wizualizuje rysunek \ref{poole}.
\begin{figure}[h!] \begin{figure}[h!]
\centering \centering
\includegraphics[width=0.6\textwidth]{images/pool.png} \includegraphics[width=0.6\textwidth]{images/pool.png}
\caption{Wizualizacja procesu zachodzącego w warstwie pooling'u \cite{Yani2019May}} \caption{Wizualizacja procesu zachodzącego w warstwie poolingu \cite{Yani2019May}}
\label{poole} \label{poole}
\end{figure} \end{figure}
Ostatnią warstwą CNN jest, znana już z opisywanej w poprzednim podrozdziale klasycznej architektury sieci neuronowych, warstwa w pełni połączona (\emph{z ang. fully connected layer}). Warstwa ta odpowiedzialna jest za klasyfikacje. Używając funkcji aktywacji softmax (lub wcześniej scharakteryzowana funkcja sigmoid), opisanej wzorem \ref{wzorel}, otrzymaną predykcją będzie prawdopodobieństwo przynależności obrazu do danej klasy. Ostatnią warstwą CNN jest, znana już z opisywanej w poprzednim podrozdziale klasycznej architektury sieci neuronowych, warstwa w pełni połączona (\emph{z ang. fully connected layer}). Warstwa ta odpowiedzialna jest za klasyfikacje. Używając funkcji aktywacji softmax (lub wcześniej scharakteryzowana funkcja sigmoidalna), opisanej wzorem \ref{wzorel}, otrzymaną predykcją będzie prawdopodobieństwo przynależności obrazu do danej klasy.
\begin{eqnarray} \begin{eqnarray}
\sigma(y_{i}) = \left(\frac{e^{y_{i}}}{ \sum\limits_{j} e^{y_{j}}}\right)\: \sigma(y_{i}) = \left(\frac{e^{y_{i}}}{ \sum\limits_{j} e^{y_{j}}}\right)\:
j = 1,...,n j = 1,...,n
@ -178,8 +186,10 @@ y \rightarrow
\longrightarrow \longrightarrow
\left[\frac{e^{y_{i}}}{ \sum\limits_{j} e^{y_{j}}}\right] \left[\frac{e^{y_{i}}}{ \sum\limits_{j} e^{y_{j}}}\right]
\longrightarrow \longrightarrow
\begin{bmatrix}{0,7}\\{0,2}\\{0,1}\end{bmatrix} \begin{bmatrix}{0,7}\\{0,2}\\{0,1}\end{bmatrix} = 1
= 1
\label{matrixmatrix} \label{matrixmatrix}
\end{eqnarray} \end{eqnarray}
Tak samo jak w klasycznej architekturze sieci w tej warstwie liczony jest błąd predykcji, który korygowany będzie poprzez algorytm propagacji wstecznej, czyli optymalizacji wag, a w tym przypadku parametrów macierzy filtrów. W CNN możemy zadeklarować więcej niż jedną warstwę w pełni połączoną, jest to podyktowane już charakterystyką danego zbioru treningowego. To samo dotyczy zresztą pozostałych warstw, co zostało już poruszone wcześniej w tym podrozdziale, a także demonstrowane jest na, znajdującym się wyżej, rysunku 2.5 \cite{BibEntry2022Jun_cnn_output}. \begin{equation}
0,7 + 0,2 + 0,1 = 1
\end{equation}
Tak samo jak w klasycznej architekturze sieci w tej warstwie liczony jest błąd predykcji, który korygowany będzie poprzez algorytm propagacji wstecznej, czyli optymalizacji wag, a w tym przypadku parametrów macierzy filtrów. W CNN możemy zadeklarować więcej niż jedną warstwę w pełni połączoną, jest to podyktowane już charakterystyką danego zbioru treningowego. To samo dotyczy zresztą pozostałych warstw, co zostało już poruszone wcześniej w tym podrozdziale, a także zademonstrowane jest na rysunku 2.5 \cite{BibEntry2022Jun_cnn_output}.

View File

@ -59,15 +59,15 @@ Interfejs internetowej aplikacji do przeszukiwania i przeglądania zbiorów zebr
\end{figure} \end{figure}
\clearpage \clearpage
Ze strony internetowej Chronicling America mamy swobodny dostęp do bazy wszystkich skolekcjonowanych w ramach tego projektu obrazów. Na dzień dzisiejszy zbiór ten obfituje w 19\,706\,097 zdjęć pojedynczych stron gazet. Liczba ta przekłada się na około 3\,750 historyczne gazety, czyli ponad 2,5 miliona egzemplarzy. Aby przeszukiwać bazę danych możemy wybrać z takich opcji filtrowania jak: filtrowanie po regionie z którego pochodzą oraz po zakresie dat ich wydawania. Zważając na ilość metadanych jakie zostały zebrane i ilość informacji jakie przechowywane są w bazie Chronicling America na temat każdej z gazet liczba filtrów jest jednak dość mała, chociaż możliwość przeszukiwania tekstu obrazów po dowolnych frazach i fakt, że podkreślane są one w wynikach wydaje się zaspokajać większość potrzeb z tym związanych. Jest to zdecydowanie najważniejsza funkcjonalność jaką oferuje ta witryna. Dzięki zastosowaniu technologii OCR możemy wyszukać dowolną frazę wpisując ją w panel wyszukiwania w prawym górnym rogu. Wyjątkowo interesującym rozwiązaniem jest podkreślenie na każdym z rezultatów wyszukiwanej frazy, co znacznie ułatwia wyszukiwanie interesujących treści, już później na etapie samych wyników. Przykład działania zademonstruje wyszukując frazę "polish" w celu znalezienia jakichkolwiek polskich gazet wydawanych na terenie Stanów Zjednoczonych skolekcjonowanych w trakcie trwania projektu Chronicling America. Ze strony internetowej Chronicling America mamy swobodny dostęp do bazy wszystkich skolekcjonowanych w ramach tego projektu obrazów. Na dzień dzisiejszy zbiór ten obfituje w 19\,706\,097 zdjęć pojedynczych stron gazet. Liczba ta przekłada się na około 3\,750 historyczne gazety, czyli ponad 2,5 miliona egzemplarzy. Aby przeszukiwać bazę danych możemy wybrać z takich opcji filtrowania jak: filtrowanie po regionie z którego pochodzą oraz po zakresie dat ich wydawania. Zważając na ilość metadanych jakie zostały zebrane i ilość informacji jakie przechowywane są w bazie Chronicling America na temat każdej z gazet liczba filtrów jest jednak dość mała, chociaż możliwość przeszukiwania tekstu obrazów po dowolnych frazach i fakt, że podkreślane są one w wynikach wydaje się zaspokajać większość potrzeb z tym związanych. Jest to zdecydowanie najważniejsza funkcjonalność jaką oferuje ta witryna. Dzięki zastosowaniu technologii OCR możemy wyszukać dowolną frazę wpisując ją w panel wyszukiwania w prawym górnym rogu. Wyjątkowo interesującym rozwiązaniem jest podkreślenie na każdym z rezultatów wyszukiwanej frazy, co znacznie ułatwia wyszukiwanie interesujących treści, już później na etapie samych wyników. Przykład działania zademonstruje wyszukując frazę ,,polish'' w celu znalezienia jakichkolwiek polskich gazet wydawanych na terenie Stanów Zjednoczonych skolekcjonowanych w trakcie trwania projektu Chronicling America.
\begin{figure}[h!] \begin{figure}[h!]
\centering \centering
\includegraphics[width=0.9\textwidth]{images/polish_ca.png} \includegraphics[width=0.9\textwidth]{images/polish_ca.png}
\caption{Wyniki wyszukiwania frazy "polish" na stronie głównej projektu Chronicling America \cite{Humanities2022Jun_CA_inter}} \caption{Wyniki wyszukiwania frazy ,,polish'' na stronie głównej projektu Chronicling America \cite{Humanities2022Jun_CA_inter}}
\end{figure} \end{figure}
Po wpisaniu tej frazy w wyszukiwarkę otrzymaliśmy aż 1\,350\,355 wyników, jednak przez identyczną pisownie w języku angielskim jak słowo polerować zapewne większość z tych wyników nie dotyczy wzmianek o Polakach czy Polsce. Jednakże już na pierwszy rzut oka dostrzec możemy takie pozycje jak "Dziennik Chicagowski" czy pismo "Katolik". Po wpisaniu tej frazy w wyszukiwarkę otrzymaliśmy aż 1\,350\,355 wyników, jednak przez identyczną pisownie w języku angielskim jak słowo polerować zapewne większość z tych wyników nie dotyczy wzmianek o Polakach czy Polsce. Jednakże już na pierwszy rzut oka dostrzec możemy takie pozycje jak ,,Dziennik Chicagowski'' czy pismo ,,Katolik''.
\begin{figure}[h!] \begin{figure}[h!]
\centering \centering
@ -78,16 +78,16 @@ Po wpisaniu tej frazy w wyszukiwarkę otrzymaliśmy aż 1\,350\,355 wyników, je
\label{katol} \label{katol}
\end{figure} \end{figure}
Zaprezentowane na rysunku \ref{katol} czasopismo to "Katolik", wydanie z dnia 12 kwietnia 1894 roku. Pod tą nazwą pismo to wydawane było jednak jedynie przez 2 lata (1893-1895) swojej historii. Szerzej znane może jako "Wiarus", który zadebiutował w 1886 roku w stanie Minnesota, a dokładniej w miejscowości Winona, która stanowiła centrum polskiej emigracji dla tego stanu. Treści w niej przedstawiane były w większości w języku polskim, chociaż już na prezentowanej stronie można zauważyć również treści w języku angielskim. Sam "Wiarus" ma bardzo ciekawą historie, ponieważ już same początki tego pisma nie należały do najprostszych, mimo ambicji zarządu wydawnictwa. Po utracie dwóch redaktorów w ciągu dziesięciu numerów, w tym jednego rosyjskiego szpiega, który wypełniał gazetę antypolskimi nastrojami, wydawnictwo dość niechętnie zatrudniło Hieronima Derdowskiego, byłego redaktora gazety "Pielgrzym Polski" z Detroit o dość szemranej przeszłości. Derdowski był z pochodzenia Kaszubą i właśnie swojemu pochodzeniu zawdzięcza on sukces jaki udało mu się osiągnąć, ponieważ to Winony masowo emigrowali właśnie Kaszubi. Dzięki znajomości języka kaszubskiego szybko nawiązał on kontakt z osadnikami w Winonie. Rozpowszechniając język polski, edukując, a także przystosowując polską ludność do życia w Ameryce, Derdowski odniósł tak duży sukces, że 19 września 1889 r. udało mu się nabyć całe wydawnictwo. Jak jednak bywa z każdym sukcesem, a co za tym idzie i rozgłosem, "Wiarus" otrzymywał również głosy sprzeciwu ze względu na ataki na osoby publiczne jakich dokonywał Derdowski w swojej gazecie. Największy sprzeciw i wystawienie na publiczną debatę przyniosła zmiana nazwy pisma na "Katolik", które jednak ugięło się pod naporem opinii publicznej i po dwóch latach powróciło do swojej pierwotnej nazwy. Gazeta wydawana była nawet po śmierci Derdowskiego, wciąż głosząc jego poglądy aż do 1919 roku. Historia ta to zaledwie streszczenie informacji jakie zawarte są dla tej gazet na stronie Chronicling Amercica, jest to o tyle imponujące że przedstawiona jest tam cała historia dość niszowego pisma i to w dodatku w obcym dla amerykanów języku, co podkreśla nakład prac i staranność z jakim przeprowadzony został ten projekt. Zrzut ekranu ze strony z informacjami na temat pisma "Katolik" przedstawiony został ponieżej. Dla każdej gazety istnieje też możliwość pobrania transkryptu, jednakże jak nie trudno zauważyć w tym przypadku jakościowo nie należy on do najlepszych. Możliwe jest jednak zrozumienie sensu przewodniego prezentowanej treści, co jest już i tak dużym sukcesem zważając na to, że polsko języczne treści to zaledwie mikroskopijna część zbioru i nie są one zbiorem docelowym, a jedynie dodatkiem wzbogacającym bujną historie amerykańskiego piśmiennictwa \cite{Humanities2022Jun_ca_katol}. Zaprezentowane na rysunku \ref{katol} czasopismo to ,,Katolik'', wydanie z dnia 12 kwietnia 1894 roku. Pod tą nazwą pismo to wydawane było jednak jedynie przez 2 lata (1893-1895) swojej historii. Szerzej znane może jako ,,Wiarus'', który zadebiutował w 1886 roku w stanie Minnesota, a dokładniej w miejscowości Winona, która stanowiła centrum polskiej emigracji dla tego stanu. Treści w niej przedstawiane były w większości w języku polskim, chociaż już na prezentowanej stronie można zauważyć również treści w języku angielskim. Sam ,,Wiarus'' ma bardzo ciekawą historie, ponieważ już same początki tego pisma nie należały do najprostszych, mimo ambicji zarządu wydawnictwa. Po utracie dwóch redaktorów w ciągu dziesięciu numerów, w tym jednego rosyjskiego szpiega, który wypełniał gazetę antypolskimi nastrojami, wydawnictwo dość niechętnie zatrudniło Hieronima Derdowskiego, byłego redaktora gazety ,,Pielgrzym Polski'' z Detroit o dość szemranej przeszłości. Derdowski był z pochodzenia Kaszubą i właśnie swojemu pochodzeniu zawdzięcza on sukces jaki udało mu się osiągnąć, ponieważ to Winony masowo emigrowali właśnie Kaszubi. Dzięki znajomości języka kaszubskiego szybko nawiązał on kontakt z osadnikami w Winonie. Rozpowszechniając język polski, edukując, a także przystosowując polską ludność do życia w Ameryce, Derdowski odniósł tak duży sukces, że 19 września 1889 r. udało mu się nabyć całe wydawnictwo. Jak jednak bywa z każdym sukcesem, a co za tym idzie i rozgłosem, ,,Wiarus'' otrzymywał również głosy sprzeciwu ze względu na ataki na osoby publiczne jakich dokonywał Derdowski w swojej gazecie. Największy sprzeciw i wystawienie na publiczną debatę przyniosła zmiana nazwy pisma na ,,Katolik'', które jednak ugięło się pod naporem opinii publicznej i po dwóch latach powróciło do swojej pierwotnej nazwy. Gazeta wydawana była nawet po śmierci Derdowskiego, wciąż głosząc jego poglądy aż do 1919 roku. Historia ta to zaledwie streszczenie informacji jakie zawarte są dla tej gazet na stronie Chronicling Amercica, jest to o tyle imponujące że przedstawiona jest tam cała historia dość niszowego pisma i to w dodatku w obcym dla amerykanów języku, co podkreśla nakład prac i staranność z jakim przeprowadzony został ten projekt. Zrzut ekranu ze strony z informacjami na temat pisma ,,Katolik'' przedstawiony został ponieżej. Dla każdej gazety istnieje też możliwość pobrania transkryptu, jednakże jak nie trudno zauważyć w tym przypadku jakościowo nie należy on do najlepszych. Możliwe jest jednak zrozumienie sensu przewodniego prezentowanej treści, co jest już i tak dużym sukcesem zważając na to, że polsko języczne treści to zaledwie mikroskopijna część zbioru i nie są one zbiorem docelowym, a jedynie dodatkiem wzbogacającym bujną historie amerykańskiego piśmiennictwa \cite{Humanities2022Jun_ca_katol}.
\clearpage \clearpage
\begin{figure}[h!] \begin{figure}[h!]
\centering \centering
\includegraphics[width=0.85\textwidth]{images/stron_info_katol.png} \includegraphics[width=0.85\textwidth]{images/stron_info_katol.png}
\caption{Strona informacyjna dla czasopisma "Katolik" \cite{Humanities2022Jun_ca_katol}} \caption{Strona informacyjna dla czasopisma ,,Katolik'' \cite{Humanities2022Jun_ca_katol}}
\end{figure} \end{figure}
Strona Chronicling America nie oferuje jednak dostępu do żadnych statystyk związanych ze skolekcjonowanym zbiorem, dlatego aby uniknąć żmudnego ręcznego zapisywania liczebności wynikła potrzeba skorzystania z technik web scraping'u, dzięki temu zostały pozyskane takie dane jak rozkład liczebności stron gazet ze względu na lata wydawania czy region z którego pochodzą. Strona Chronicling America nie oferuje jednak dostępu do żadnych statystyk związanych ze skolekcjonowanym zbiorem, dlatego aby uniknąć żmudnego ręcznego zapisywania liczebności wynikła potrzeba skorzystania z technik web scrapingu, dzięki temu zostały pozyskane takie dane jak rozkład liczebności stron gazet ze względu na lata wydawania czy region z którego pochodzą.
\newline \newline
\begin{figure}[h!] \begin{figure}[h!]
@ -107,7 +107,7 @@ Rycina \ref{wykres0} przedstawia wykres z liczebnościami zebranych obrazów str
\label{wykres1} \label{wykres1}
\end{figure} \end{figure}
Na rysunku \ref{wykres1} zaprezentowany został wykres liczebności gazet jakie zostały zebrane w ramach Chronicling America do których dostęp możliwy jest z wykorzystaniem przedstawianego interfejsu. Jak widzimy na samym szycie plasuje się stan Virginia, który to dysponuje zbiorem 125 tysięcy gazet przeznaczonych do digitalizacji w ramach projektu. Tuż za nim znajduje się District od Columbia, co jest w pełni zrozumiałe ze względu na jego główną siedzibę, Waszyngton, jednocześnie będący stolicą Stanów Zjednoczonych, choć i tak dziwić może fakt, że nie znajduje się on na miejscu pierwszym. Szczególne zainteresowanie wzbudza jedna pozycja w tym rankingu, a mianowicie pozycja ostatnia "Piedmont". Pomimo, że na stronie w opcji filtrowania mamy dostępne filtrowanie po stanach, to znalazły się tutaj też miejsca takie jak Puerto Rico czy Wyspy Dziewicze (\emph{z ang. Virgin Islands}) i wspomniany wcześniej, zamykający ranking z zaledwie 773 zdigitalizowanymi pozycjami, Piedmont. Jest to o tyle zaskakujące, że nie jest to ani stan ani terytorium zależne, jak chociażby Wyspy Dziewicze, a jest to region płaskowyżu położony we wschodnich Stanach Zjednoczonych rozciągający się od Nowego Jorku na północy do środkowej Alabamy na południu. Nie sposób jednak znaleźć informacji z jakich pobudek miejsce to znalazło się w listingu "stanów" w opcji filtrowania i czy aby na pewno jest to poprawne miejsce, a nie swego rodzaju niedopatrzenie. Na rysunku \ref{wykres1} zaprezentowany został wykres liczebności gazet jakie zostały zebrane w ramach Chronicling America do których dostęp możliwy jest z wykorzystaniem przedstawianego interfejsu. Jak widzimy na samym szycie plasuje się stan Virginia, który to dysponuje zbiorem 125 tysięcy gazet przeznaczonych do digitalizacji w ramach projektu. Tuż za nim znajduje się District od Columbia, co jest w pełni zrozumiałe ze względu na jego główną siedzibę, Waszyngton, jednocześnie będący stolicą Stanów Zjednoczonych, choć i tak dziwić może fakt, że nie znajduje się on na miejscu pierwszym. Szczególne zainteresowanie wzbudza jedna pozycja w tym rankingu, a mianowicie pozycja ostatnia ,,Piedmont''. Pomimo, że na stronie w opcji filtrowania mamy dostępne filtrowanie po stanach, to znalazły się tutaj też miejsca takie jak Puerto Rico czy Wyspy Dziewicze (\emph{z ang. Virgin Islands}) i wspomniany wcześniej, zamykający ranking z zaledwie 773 zdigitalizowanymi pozycjami, Piedmont. Jest to o tyle zaskakujące, że nie jest to ani stan ani terytorium zależne, jak chociażby Wyspy Dziewicze, a jest to region płaskowyżu położony we wschodnich Stanach Zjednoczonych rozciągający się od Nowego Jorku na północy do środkowej Alabamy na południu. Nie sposób jednak znaleźć informacji z jakich pobudek miejsce to znalazło się w listingu ,,stanów'' w opcji filtrowania i czy aby na pewno jest to poprawne miejsce, a nie swego rodzaju niedopatrzenie.
\clearpage \clearpage
\begin{figure}[h!] \begin{figure}[h!]
@ -124,7 +124,7 @@ Z ramienia Chronicling America narodził się kolejny projekt, który stanowi na
\section{Opis podejścia Newspaper Navigator} \section{Opis podejścia Newspaper Navigator}
Newspaper Navigator to nazwa eksperymentu z dziedziny uczenia maszynowego, a będąc bardziej precyzyjnym głębokich sieci neuronowych, opartego wyłącznie na zbiorze danych wyodrębnionym ze skolekcjonowanych pozycji podczas projektu Chronicling America. Ten pilotażowy projekt oferował możliwość zbadania historycznych relacji gazetowych z I wojny światowej i przyczynienia się do cyfrowej nauki w tym samym czasie. Zawartość wizualna gazet została zidentyfikowana przy użyciu modelu wykrywania obiektów wytrenowanego na stronach gazet pochodzących z okresu pierwszej wojny światowej. Adnotacje do tych materiałów zostały zebrane w ramach projektu crowdsourcing'owego Beyond Words. Projekt ten był przeprowadzony latach 2017-2021, a w ramach niego Biblioteka Kongresu poprosiła społeczeństwo o identyfikacje wizualnych elementów znajdujących się w przygotowanym pod projekt Newspaper Navigator zbiorze. Wolontariusze mieli do wykonania 1 lub więcej z 3 możliwych rodzajów zadań, po pierwsze było ta wspomniana już identyfikacja, po drugie transkrypcja, oraz po trzecie weryfikacja poprawności zaznaczonych przez innych wolontariuszy treści. W rezultacie powstały adnotacje do treści wizualnych pojawiających się na skolekcjonowanych stronach gazet, które dzielą się na następujące kategorie: Newspaper Navigator to nazwa eksperymentu z dziedziny uczenia maszynowego, a będąc bardziej precyzyjnym głębokich sieci neuronowych, opartego wyłącznie na zbiorze danych wyodrębnionym ze skolekcjonowanych pozycji podczas projektu Chronicling America. Ten pilotażowy projekt oferował możliwość zbadania historycznych relacji gazetowych z I wojny światowej i przyczynienia się do cyfrowej nauki w tym samym czasie. Zawartość wizualna gazet została zidentyfikowana przy użyciu modelu wykrywania obiektów wytrenowanego na stronach gazet pochodzących z okresu pierwszej wojny światowej. Adnotacje do tych materiałów zostały zebrane w ramach projektu crowdsourcingowego Beyond Words. Projekt ten był przeprowadzony latach 2017-2021, a w ramach niego Biblioteka Kongresu poprosiła społeczeństwo o identyfikacje wizualnych elementów znajdujących się w przygotowanym pod projekt Newspaper Navigator zbiorze. Wolontariusze mieli do wykonania 1 lub więcej z 3 możliwych rodzajów zadań, po pierwsze było ta wspomniana już identyfikacja, po drugie transkrypcja, oraz po trzecie weryfikacja poprawności zaznaczonych przez innych wolontariuszy treści. W rezultacie powstały adnotacje do treści wizualnych pojawiających się na skolekcjonowanych stronach gazet, które dzielą się na następujące kategorie:
\begin{enumerate} \begin{enumerate}
\item[$\bullet$] Fotografie \item[$\bullet$] Fotografie
\item[$\bullet$] Ilustracje \item[$\bullet$] Ilustracje

View File

@ -99,7 +99,7 @@ Z kolei rozkład odpowiadającym im adnotacją prezentuje tabela \ref{liczebnosc
\label{liczebnosc_moja2} \label{liczebnosc_moja2}
\end{table} \end{table}
Porównując tabele przedstawione powyżej z tabelami odnoszącymi się do klas występujących w projekcie Newspaper Navigator, które przedstawione zostały w poprzednim rozdziale, zauważyć można brak jednej klasy, a mianowicie klasy "Karykatura". W rzeczywistości treści wizualne należące do tej klasy były bardzo podobne do tych należących do klasy "Komiksy", dlatego też podjęta została decyzja o połączeniu tych dwóch klas. Obserwacje, które wcześniej były dość kłopotliwe dla modelu, po tej zamianie przestały sprawiać trudności na etapie klasyfikacji. Decyzja ta pozytywnie wpłynęła na ogólną wydajność modelu. Praktycznie wszystkie obserwacje dla etykiety "Karykatura" przedstawione były i tak w formie komiksu, o czym też informuje nas dość dobitnie angielska nazwa tej etykiety: "editorial cartoon". Porównując tabele przedstawione powyżej z tabelami odnoszącymi się do klas występujących w projekcie Newspaper Navigator, które przedstawione zostały w poprzednim rozdziale, zauważyć można brak jednej klasy, a mianowicie klasy ,,Karykatura''. W rzeczywistości treści wizualne należące do tej klasy były bardzo podobne do tych należących do klasy ,,Komiksy'', dlatego też podjęta została decyzja o połączeniu tych dwóch klas. Obserwacje, które wcześniej były dość kłopotliwe dla modelu, po tej zamianie przestały sprawiać trudności na etapie klasyfikacji. Decyzja ta pozytywnie wpłynęła na ogólną wydajność modelu. Praktycznie wszystkie obserwacje dla etykiety ,,Karykatura'' przedstawione były i tak w formie komiksu, o czym też informuje nas dość dobitnie angielska nazwa tej etykiety: ,,editorial cartoon''.
\newline \newline
Jeśli chodzi o samą liczebność adnotacji zbiór Newspaper Navigator oraz ten użyty na potrzeby tego eksperymentu jest identyczny, co warto podkreślić, ponieważ pozwoli to swobodnie porównywać wyniki między projektami. Adnotacje, które zostały pobrane z repozytorium Newspaper Navigator, odpowiadały przeskalowanym już na potrzeby projektu zdjęciom, dlatego też pojawiła się potrzeba dostosowania ich do pozyskanych zdjęć o wyższej rozdzielczości. Oryginalne adnotacje zawierały również rozmiar zdjęcia, któremu odpowiadają, dlatego też nie było większych problemów ze stworzeniem algorytmu do skalowania. Niektóre adnotacje znajdowały się poza granicami pozyskanych obrazów, co musiało być efektem błędów powstałych w trakcie tworzenia adnotacji. Wszystkie tego rodzaju obserwacje zostały poprawione w taki sposób, że zostały nałożone na nie odpowiednie ograniczenia. Statystyki dotyczące tej procedury przedstawia tabela \ref{tab_problem}. Jeśli chodzi o samą liczebność adnotacji zbiór Newspaper Navigator oraz ten użyty na potrzeby tego eksperymentu jest identyczny, co warto podkreślić, ponieważ pozwoli to swobodnie porównywać wyniki między projektami. Adnotacje, które zostały pobrane z repozytorium Newspaper Navigator, odpowiadały przeskalowanym już na potrzeby projektu zdjęciom, dlatego też pojawiła się potrzeba dostosowania ich do pozyskanych zdjęć o wyższej rozdzielczości. Oryginalne adnotacje zawierały również rozmiar zdjęcia, któremu odpowiadają, dlatego też nie było większych problemów ze stworzeniem algorytmu do skalowania. Niektóre adnotacje znajdowały się poza granicami pozyskanych obrazów, co musiało być efektem błędów powstałych w trakcie tworzenia adnotacji. Wszystkie tego rodzaju obserwacje zostały poprawione w taki sposób, że zostały nałożone na nie odpowiednie ograniczenia. Statystyki dotyczące tej procedury przedstawia tabela \ref{tab_problem}.
@ -397,7 +397,7 @@ Poniżej zaś przygotowane zostało zestawienie predykcji (obrazki po lewej stro
\clearpage \clearpage
\subsection{Eksperyment z polską współczesną gazetą} \subsection{Eksperyment z polską współczesną gazetą}
Dla zaspokojenia ciekawości model został również przetestowany na względnie nowej, oczywiście w odniesieniu do posiadanego zbioru, gazecie. Dodatkowo nie była to gazeta pochodząca ze Stanów Zjednoczonych, a wydawany na terenie naszego kraju "Głos Wielkopolski". Niestety, jak zresztą można było się tego spodziewać, wyniki predykcji prezentują się dość słabo. Na zdjęciu \ref{nowa1} tylko 4 z 12 predykcji można uznać jako trafione, są to kolejno idąc od góry tytuł "Przez Wielkopolskę przejdzie 26. Blues Express!", tytuł "W środę w stan spoczynku ma przejść kilkunastu sędziów i prezes SN", reklama Lotto, a także fotografia policjanta w radiowozie. Pozostałe predykcje, nie mają większego sensu. Ciekawe jednak są dolne predykcje, ponieważ dziwić może fakt, iż nie zostały one sklasyfikowane jako tytuł, lecz jako reklama. Na pierwszy rzut oka wydawać się może, że ich struktura znacznie bardziej pasuje właśnie do etykiety 'Tytuł'. Dla zaspokojenia ciekawości model został również przetestowany na względnie nowej, oczywiście w odniesieniu do posiadanego zbioru, gazecie. Dodatkowo nie była to gazeta pochodząca ze Stanów Zjednoczonych, a wydawany na terenie naszego kraju ,,Głos Wielkopolski''. Niestety, jak zresztą można było się tego spodziewać, wyniki predykcji prezentują się dość słabo. Na zdjęciu \ref{nowa1} tylko 4 z 12 predykcji można uznać jako trafione, są to kolejno idąc od góry tytuł ,,Przez Wielkopolskę przejdzie 26. Blues Express!'', tytuł ,,W środę w stan spoczynku ma przejść kilkunastu sędziów i prezes SN'', reklama Lotto, a także fotografia policjanta w radiowozie. Pozostałe predykcje, nie mają większego sensu. Ciekawe jednak są dolne predykcje, ponieważ dziwić może fakt, iż nie zostały one sklasyfikowane jako tytuł, lecz jako reklama. Na pierwszy rzut oka wydawać się może, że ich struktura znacznie bardziej pasuje właśnie do etykiety 'Tytuł'.
\begin{figure}[h!] \begin{figure}[h!]
\centering \centering
\includegraphics[width=0.72\textwidth]{images/nowa1.png} \includegraphics[width=0.72\textwidth]{images/nowa1.png}