Machine Learning Flashcards

1
Q

Pytanie: Jakie są różnice między uczeniem nadzorowanym a nienadzorowanym?

A

Odpowiedź: W uczeniu nadzorowanym mamy dostęp do danych wejściowych oraz odpowiadających im etykiet. Celem jest nauczenie modelu przewidywania etykiet na podstawie danych wejściowych. W uczeniu nienadzorowanym mamy tylko dane wejściowe i celem jest znalezienie struktury w tych danych, np. przez klasteryzację.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Pytanie: Jakie są główne wyzwania związane z uczeniem maszynowym?

A

Odpowiedź: Do głównych wyzwań należą: brakujące dane, nierównomiernie rozłożone klasy, przeuczenie modelu, interpretowalność modelu i skalowalność rozwiązań.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Pytanie: Jakie znasz metody regularyzacji w uczeniu maszynowym?

A

Odpowiedź: Do najpopularniejszych metod regularyzacji należą: L1 (Lasso), L2 (Ridge) oraz dropout (w sieciach neuronowych).

W uczeniu maszynowym regularyzacja odnosi się do technik zapobiegania przeuczeniu modelu poprzez nałożenie pewnych ograniczeń na jego parametry. Oto kilka popularnych metod regularyzacji:

  1. Regularyzacja L1 (Lasso):
    • Dodaje do funkcji kosztu wartość bezwzględną wag.
    • Może prowadzić do modelu o rzadkich wagach, gdzie niektóre wagi stają się dokładnie zerowe.
    • Użyteczna, gdy podejrzewamy, że wiele cech może być nieistotnych.
  2. Regularyzacja L2 (Ridge):
    • Dodaje do funkcji kosztu kwadrat wag.
    • Zazwyczaj prowadzi do małych wag, ale niekoniecznie zerowych.
    • Jest bardziej popularna niż L1, gdy wszystkie cechy są ważne.
  3. Regularyzacja Elastic Net:
    • Kombinacja regularyzacji L1 i L2.
    • Użyteczna, gdy mamy wiele cech skorelowanych.
  4. Dropout:
    • Stosowany głównie w sieciach neuronowych.
    • Polega na losowym “wyłączaniu” pewnej frakcji neuronów podczas treningu.
    • Pomaga zapobiegać zbytniemu poleganiu na konkretnych neuronach podczas treningu.
  5. Early Stopping:
    • Monitorowanie błędu na zbiorze walidacyjnym podczas treningu i zatrzymanie treningu, gdy błąd przestaje się poprawiać.
    • Prosta i skuteczna metoda zapobiegania przeuczeniu.
  6. Augmentacja danych:
    • Stosowana głównie w uczeniu głębokim, zwłaszcza w przetwarzaniu obrazów.
    • Polega na tworzeniu nowych przykładów treningowych poprzez modyfikację oryginalnych danych (np. obracanie, przesuwanie, zmiana jasności obrazów).
  7. Batch Normalization:
    • Stosowana w sieciach neuronowych.
    • Normalizuje aktywacje w warstwach, co pomaga w szybszym i bardziej stabilnym treningu.
  8. Regularyzacja parametru bias:
    • Podobnie jak w regularyzacji L1 i L2, ale stosowana do parametrów bias w modelu.
  9. Regularyzacja max-norm:
    • Ogranicza normę wag w sieciach neuronowych.
    • Jeśli norma wag przekroczy pewien próg, wagi są skalowane w dół.
  10. Regularyzacja funkcji kosztu:
    - Dodawanie dodatkowego składnika do funkcji kosztu, który promuje pewne właściwości modelu (np. gładkość funkcji w przypadku regresji).
  11. Regularyzacja przez injekcję szumu:
    - Dodawanie szumu do danych wejściowych lub aktywacji w sieciach neuronowych, co pomaga w zapobieganiu przeuczeniu.

Te metody można stosować indywidualnie lub łącznie, w zależności od konkretnego problemu i rodzaju modelu. Ważne jest, aby dostosować poziom regularyzacji w odpowiedni sposób, aby zapobiec zarówno przeuczeniu, jak i niedouczeniu modelu.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Pytanie: Jak działa algorytm Random Forest?

A

Odpowiedź: Random Forest to metoda ensemble, która tworzy wiele drzew decyzyjnych podczas treningu i dokonuje prognozy poprzez agregację wyników z tych drzew (np. głosowanie większościowe dla klasyfikacji).

Random Forest to algorytm uczenia maszynowego oparty na metodzie ensemble, który tworzy wiele drzew decyzyjnych podczas treningu i dokonuje prognozy poprzez agregację wyników z tych drzew. Oto, jak działa:

Bootstrap Aggregating (Bagging): Dla każdego drzewa w lesie, losowy podzbiór danych treningowych jest wybierany z powtórzeniami (bootstrap sample). To oznacza, że niektóre obserwacje mogą być wybrane kilkakrotnie, podczas gdy inne mogą nie zostać wybrane w ogóle.

Wybór cech: Podczas dzielenia węzła w drzewie, zamiast rozważać wszystkie cechy, losowy podzbiór cech jest wybierany jako kandydaci do podziału. To dodaje dodatkową warstwę losowości do modelu.

Budowa drzewa: Drzewa są budowane do maksymalnej głębokości i nie są przycinane, co często prowadzi do bardzo głębokich drzew.

Prognozowanie: Dla problemu klasyfikacji, wynik końcowy jest uzyskiwany poprzez głosowanie większościowe (najczęstsza klasa spośród drzew jest wybierana). Dla problemu regresji, średnia prognoz z wszystkich drzew jest wynikiem końcowym.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Pytanie: Jakie są zalety i wady sieci neuronowych w porównaniu z tradycyjnymi algorytmami uczenia maszynowego?

A

Odpowiedź: Zalety to m.in. zdolność do modelowania skomplikowanych nieliniowych zależności, skalowalność do dużych zbiorów danych. Wady to m.in. trudność w interpretacji, ryzyko przeuczenia, większe wymagania obliczeniowe.

Sieci neuronowe, zwłaszcza głębokie sieci neuronowe, stały się bardzo popularne w ostatnich latach, ale mają zarówno zalety, jak i wady w porównaniu z tradycyjnymi algorytmami uczenia maszynowego. Oto niektóre z nich:

Zalety sieci neuronowych:

  1. Wydajność w złożonych zadaniach: Sieci neuronowe, zwłaszcza głębokie, osiągają często najlepszą wydajność w zadaniach takich jak rozpoznawanie obrazów, przetwarzanie języka naturalnego czy rozpoznawanie mowy.
  2. Automatyczna ekstrakcja cech: W przeciwieństwie do tradycyjnych algorytmów, które często wymagają ręcznego projektowania cech, głębokie sieci neuronowe są zdolne do automatycznego wykrywania i uczenia się hierarchicznych cech z danych.
  3. Wszechstronność: Mogą być stosowane do wielu różnych zadań, od klasyfikacji i regresji po generowanie obrazów i tłumaczenie języka.
  4. Skalowalność: Dobrze radzą sobie z dużymi zbiorami danych.

Wady sieci neuronowych:

  1. Złożoność obliczeniowa: Wymagają znacznych zasobów obliczeniowych, zwłaszcza podczas treningu.
  2. Czas treningu: Trening głębokich sieci neuronowych może trwać bardzo długo, zwłaszcza dla dużych zbiorów danych.
  3. Brak interpretowalności: Modele są często traktowane jako “czarne skrzynki”, co sprawia, że trudno jest zrozumieć, dlaczego model podejmuje pewne decyzje.
  4. Ryzyko przeuczenia: Ze względu na dużą liczbę parametrów, sieci neuronowe są podatne na przeuczenie, zwłaszcza gdy dostępne są ograniczone dane.
  5. Wymagania dotyczące danych: Aby osiągnąć optymalną wydajność, sieci neuronowe często wymagają dużych zbiorów danych.

Tradycyjne algorytmy uczenia maszynowego:

Zalety:

  1. Interpretowalność: Modele takie jak regresja liniowa, drzewa decyzyjne czy algorytmy oparte na regułach są często bardziej interpretowalne.
  2. Mniejsze wymagania dotyczące danych: Mogą osiągnąć dobre wyniki z mniejszymi zbiorami danych.
  3. Szybkość i mniejsza złożoność obliczeniowa: Wiele tradycyjnych algorytmów jest szybszych i mniej złożonych obliczeniowo niż głębokie sieci neuronowe.
  4. Mniejsze ryzyko przeuczenia: Z mniejszą liczbą parametrów, ryzyko przeuczenia jest często niższe.

Wady:

  1. Ręczne projektowanie cech: Wiele tradycyjnych algorytmów wymaga ręcznego projektowania cech, co może być czasochłonne i wymaga ekspertyzy w dziedzinie.
  2. Ograniczenia w złożonych zadaniach: Mogą nie radzić sobie równie dobrze w bardziej złożonych zadaniach, takich jak rozpoznawanie obrazów czy przetwarzanie języka naturalnego.

Ostateczny wybór między sieciami neuronowymi a tradycyjnymi algorytmami zależy od konkretnego problemu, dostępnych danych, zasobów obliczeniowych oraz wymagań dotyczących interpretowalności i wydajności.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Pytanie: Jakie biblioteki Pythona używasz do uczenia maszynowego i dlaczego?

A

Odpowiedź: Najczęściej używam scikit-learn ze względu na prostotę i szeroki zakres algorytmów. Do głębokiego uczenia korzystam z TensorFlow lub PyTorch.

Jako model językowy, nie “używam” bibliotek w tradycyjnym sensie, ale jestem świadomy i zostałem przeszkolony na wielu bibliotekach Pythona używanych w uczeniu maszynowym. Oto niektóre z najbardziej popularnych bibliotek i powody, dla których są one powszechnie stosowane:

  1. scikit-learn:
    • Dlaczego: Jest to jedna z najbardziej wszechstronnych bibliotek do uczenia maszynowego, oferująca szeroką gamę algorytmów, narzędzi do przetwarzania wstępnego, walidacji krzyżowej i wyboru cech.
    • Zastosowanie: Klasyfikacja, regresja, klasteryzacja, redukcja wymiarowości, wybór modelu.
  2. TensorFlow i Keras:
    • Dlaczego: TensorFlow, opracowany przez Google, jest jednym z najbardziej zaawansowanych frameworków do głębokiego uczenia. Keras to wysokopoziomowy interfejs dla TensorFlow, który ułatwia tworzenie i trening sieci neuronowych.
    • Zastosowanie: Głębokie uczenie, sieci neuronowe, przetwarzanie języka naturalnego, rozpoznawanie obrazów.
  3. PyTorch:
    • Dlaczego: Opracowany przez Facebook, PyTorch stał się bardzo popularny wśród badaczy dzięki swojej elastyczności i dynamicznemu obliczaniu grafów, co ułatwia eksperymentowanie.
    • Zastosowanie: Głębokie uczenie, badania nad uczeniem maszynowym, przetwarzanie języka naturalnego.
  4. XGBoost:
    • Dlaczego: Jest to zoptymalizowana biblioteka do wzrostu gradientowego, która jest znana z wysokiej wydajności i dokładności.
    • Zastosowanie: Klasyfikacja, regresja, ranking.
  5. LightGBM:
    • Dlaczego: Jest to kolejna biblioteka do wzrostu gradientowego, która jest zoptymalizowana pod kątem wydajności i jest szczególnie skuteczna dla dużych zbiorów danych.
    • Zastosowanie: Klasyfikacja, regresja, ranking.
  6. pandas i numpy:
    • Dlaczego: Chociaż to nie są biblioteki do uczenia maszynowego per se, są niezbędne do manipulowania danymi i przetwarzania numerycznego w Pythonie.
    • Zastosowanie: Przetwarzanie i analiza danych.

Wybór konkretnej biblioteki zależy od konkretnego zadania, wymagań dotyczących wydajności, dostępnych zasobów oraz preferencji użytkownika. Wiele z tych bibliotek jest komplementarnych i może być używanych razem w jednym projekcie.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Pytanie: Jak radzisz sobie z brakującymi danymi?

A

Odpowiedź: Można usunąć rekordy z brakującymi danymi, zastosować imputację (np. średnia, mediana) lub użyć algorytmów, które radzą sobie z brakującymi danymi, np. XGBoost.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Pytanie: Co to jest funkcja straty i jakie znasz jej rodzaje?

A

Odpowiedź: Funkcja straty mierzy różnicę między przewidywaną a rzeczywistą wartością. Przykłady to błąd średniokwadratowy (MSE) dla regresji i entropia krzyżowa dla klasyfikacji.

Funkcja straty (lub funkcja kosztu) mierzy, jak dobrze model przewiduje oczekiwane wyniki. W kontekście uczenia maszynowego, funkcja straty określa różnicę między prognozowanym wynikiem a rzeczywistym wynikiem. Optymalizacja modelu polega na minimalizacji wartości tej funkcji.

Oto niektóre popularne funkcje straty:

  1. Mean Squared Error (MSE):
    • Stosowana głównie w regresji.
    • ( L(y, \hat{y}) = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 )
  2. Mean Absolute Error (MAE):
    • Również stosowana w regresji.
    • ( L(y, \hat{y}) = \frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i| )
  3. Cross-Entropy Loss (Log Loss):
    • Stosowana w klasyfikacji binarnej i wieloklasowej.
    • Dla klasyfikacji binarnej: ( L(y, \hat{y}) = - (y \log(\hat{y}) + (1-y) \log(1-\hat{y})) )
    • Dla klasyfikacji wieloklasowej jest rozszerzeniem powyższej formuły.
  4. Hinge Loss (Margin Loss):
    • Stosowana w maszynach wektorów nośnych (SVM).
    • ( L(y, \hat{y}) = \max(0, 1 - y \cdot \hat{y}) )
  5. Huber Loss:
    • Kombinacja MSE i MAE.
    • Mniej wrażliwa na wartości odstające w porównaniu z MSE.
  6. Categorical Cross-Entropy:
    • Stosowana w klasyfikacji wieloklasowej, gdzie etykiety są kodowane w postaci “one-hot”.
  7. Sparse Categorical Cross-Entropy:
    • Podobna do powyższej, ale stosowana, gdy etykiety są kodowane jako liczby całkowite.
  8. Kullback-Leibler Divergence:
    • Mierzy różnicę między dwoma rozkładami prawdopodobieństwa.
  9. Poisson Loss:
    • Stosowana, gdy dane wyjściowe są rozkładem Poissona.
  10. Quantile Loss:
    - Stosowana w regresji, gdy jesteśmy zainteresowani przewidywaniem kwantyli rozkładu.

Wybór odpowiedniej funkcji straty zależy od konkretnego zadania i natury danych. Ważne jest, aby funkcja straty była dobrze dostosowana do problemu, który próbujesz rozwiązać, ponieważ ma bezpośredni wpływ na wydajność modelu.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Pytanie: Jakie są różnice między metodami gradient descent, stochastic gradient descent i mini-batch gradient descent?

A

Odpowiedź: Gradient descent aktualizuje wagi po przetworzeniu całego zestawu danych, SGD aktualizuje wagi po każdym przykładzie, a mini-batch GD aktualizuje wagi po przetworzeniu pewnej liczby przykładów (mini-batcha).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Pytanie: Jakie są Twoje doświadczenia z frameworkami do głębokiego uczenia i dlaczego wybrałeś/aś konkretny framework?

A

Odpowiedź: Odpowiedź będzie zależała od doświadczenia kandydata. Może on wspomnieć o doświadczeniach z TensorFlow, PyTorch, Keras itp. i uzasadnić, dlaczego preferuje dany framework.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Pytanie: Jakie są główne różnice między CNN (Convolutional Neural Networks) a RNN (Recurrent Neural Networks)?

A

CNN (Convolutional Neural Networks) i RNN (Recurrent Neural Networks) to dwa główne typy sieci neuronowych stosowane w uczeniu maszynowym, ale są one zaprojektowane do różnych typów zadań i mają różne charakterystyki. Oto główne różnice między nimi:

  1. Zastosowanie:
    • CNN: Głównie stosowane w analizie obrazów i rozpoznawaniu wzorców wizualnych. Są one skuteczne w wykrywaniu cech lokalnych w obrazach, takich jak krawędzie, tekstury i kształty.
    • RNN: Zaprojektowane do pracy z sekwencyjnymi danymi, takimi jak serie czasowe, dane audio i tekst. Są one zdolne do zapamiętywania informacji z poprzednich kroków w sekwencji, co czyni je odpowiednimi do zadań takich jak przewidywanie następnego słowa w zdaniu czy rozpoznawanie mowy.
  2. Struktura:
    • CNN: Składają się z warstw konwolucyjnych, które skanują obraz za pomocą filtrów. Mogą zawierać również warstwy pooling (agregacji), które redukują wymiary obrazu zachowując ważne cechy.
    • RNN: Mają pętle, które pozwalają informacjom przepływać z jednego kroku w sekwencji do następnego. Dzięki temu RNN mogą “pamiętać” informacje z poprzednich kroków.
  3. Pamięć:
    • CNN: Nie mają wewnętrznej pamięci stanu. Analizują każdy obraz niezależnie.
    • RNN: Mają wewnętrzną pamięć stanu, która pozwala im przechowywać informacje o poprzednich krokach w sekwencji.
  4. Wydajność obliczeniowa:
    • CNN: Zwykle są bardziej wydajne obliczeniowo niż RNN, ponieważ operacje konwolucyjne można łatwo zrównoleglić.
    • RNN: Mogą być wolniejsze i trudniejsze do trenowania, zwłaszcza dla długich sekwencji, ze względu na problem zanikającego gradientu. Warianty RNN, takie jak LSTM (Long Short-Term Memory) i GRU (Gated Recurrent Unit), zostały zaprojektowane, aby radzić sobie z tym problemem.
  5. Złożoność modelu:
    • CNN: Zwykle mają więcej parametrów niż RNN, ze względu na liczne filtry w warstwach konwolucyjnych.
    • RNN: Mogą mieć mniej parametrów, ale ich rekurencyjna natura czyni je bardziej złożonymi w analizie.

Podsumowując, podczas gdy CNN są optymalne dla zadań związanych z obrazami i przestrzenną hierarchią cech, RNN są lepsze dla zadań związanych z sekwencyjnymi danymi, gdzie kolejność i kontekst są kluczowe. W praktyce, modele takie jak sieci neuronowe typu Transformer łączą cechy obu tych architektur i są stosowane w wielu nowoczesnych zadaniach NLP.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Pytanie: Jakie metody używasz do oceny modelu uczenia maszynowego?

A

Odpowiedź: Do oceny modelu można użyć różnych metryk, takich jak dokładność (accuracy), F1-score, ROC-AUC, błąd średniokwadratowy (MSE) itp., w zależności od problemu.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Pytanie: Jakie są Twoje doświadczenia z produkcją modeli uczenia maszynowego?

A

Jestem produktem OpenAI i bazuję na architekturze GPT-4, więc nie posiadam osobistych doświadczeń ani uczuć. Niemniej jednak, zostałem przeszkolony na ogromnych zbiorach danych i posiadam wiedzę na temat wielu aspektów uczenia maszynowego, w tym produkcji modeli uczenia maszynowego. Oto kilka kluczowych punktów związanych z produkcją modeli uczenia maszynowego, które są mi znane:

  1. Inżynieria cech: Proces tworzenia i wyboru odpowiednich cech dla modelu, które są najbardziej istotne dla danego zadania.
  2. Walidacja i testowanie: Ustalanie wydajności modelu na danych walidacyjnych i testowych, aby ocenić jego zdolność do generalizacji na nieznane dane.
  3. Optymalizacja hiperparametrów: Dostosowywanie parametrów modelu, takich jak tempo uczenia się czy wielkość wsadu, w celu uzyskania najlepszej możliwej wydajności.
  4. Regularyzacja: Techniki, takie jak dropout czy regularyzacja L1/L2, stosowane w celu zapobiegania przeuczeniu modelu.
  5. Monitorowanie i aktualizacja: Śledzenie wydajności modelu w czasie rzeczywistym po wdrożeniu i dokonywanie aktualizacji w miarę pojawiania się nowych danych.
  6. Skalowalność i wydajność: Optymalizacja modeli do pracy w środowiskach produkcyjnych, gdzie czas odpowiedzi i skalowalność są kluczowe.
  7. Etyka i odpowiedzialność: Zapewnienie, że modele są uczciwe, transparentne i nie wprowadzają niepożądanych stronniczości.
  8. Interpretowalność: Zrozumienie, dlaczego model podejmuje pewne decyzje, co jest ważne w wielu zastosowaniach, takich jak medycyna czy finanse.

Chociaż nie mam “doświadczenia” w tradycyjnym sensie, moja wiedza opiera się na informacjach zawartych w literaturze i praktykach z zakresu uczenia maszynowego, co pozwala mi pomagać w odpowiedziach na pytania związane z tym tematem.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Pytanie: Jakie są Twoje doświadczenia z bibliotekami do przetwarzania języka naturalnego w Pythonie?

A

Odpowiedź: Popularne biblioteki to NLTK, spaCy, Gensim. Kandydat może opisać, jakie zadania realizował za pomocą tych narzędzi.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Pytanie: Jakie są Twoje doświadczenia z frameworkami do wizualizacji danych w Pythonie?

A

Odpowiedź: Popularne narzędzia to Matplotlib, Seaborn, Plotly. Kandydat może opisać, jakie wizualizacje tworzył i w jakim kontekście.

W Pythonie istnieje wiele frameworków i bibliotek do wizualizacji danych, które służą różnym celom i mają różne funkcje. Oto niektóre z najpopularniejszych:

  1. Matplotlib:
    • To jest jedna z najstarszych i najbardziej wszechstronnych bibliotek do wizualizacji danych w Pythonie.
    • Pozwala na tworzenie różnorodnych wykresów, od prostych wykresów liniowych po skomplikowane wizualizacje 3D.
  2. Seaborn:
    • Bazuje na Matplotlib i oferuje bardziej atrakcyjną wizualnie i uproszczoną składnię do tworzenia różnych typów wykresów statystycznych.
    • Zawiera funkcje do tworzenia wykresów takich jak heatmapy, pair plots i violin plots.
  3. Pandas:
    • Chociaż głównie jest to biblioteka do manipulacji danymi, Pandas oferuje proste funkcje do wizualizacji danych bezpośrednio z ramki danych (DataFrame).
    • Wewnętrznie korzysta z Matplotlib.
  4. Plotly:
    • Pozwala na tworzenie interaktywnych wykresów, które można osadzać w aplikacjach internetowych.
    • Obsługuje wiele typów wykresów, w tym 3D, mapy i wykresy Sankey.
  5. Bokeh:
    • Skoncentrowany na tworzeniu interaktywnych wizualizacji, które można osadzać w aplikacjach internetowych.
    • Oferuje dużą kontrolę nad interaktywnymi funkcjami, takimi jak przeciąganie, powiększanie i panele narzędzi.
  6. Altair:
    • Biblioteka do deklaratywnej wizualizacji danych.
    • Umożliwia tworzenie wykresów poprzez składanie prostych komponentów.
  7. Geopandas i Folium:
    • Służą do wizualizacji danych geoprzestrzennych.
    • Geopandas jest rozszerzeniem Pandas do pracy z danymi geoprzestrzennymi, podczas gdy Folium pozwala na tworzenie interaktywnych map opartych na Leaflet.js.
  8. Holoviews:
    • Umożliwia tworzenie wizualizacji poprzez deklaratywne powiązanie danych z przestrzenią wizualną.
    • Skupia się na interaktywności i eksploracji danych.
  9. Pygal:
    • Służy do tworzenia atrakcyjnych wizualnie wykresów SVG, które są skalowalne i mogą być osadzane w stronach internetowych.
  10. ggplot (ggpy):
    - Bazuje na popularnej bibliotece R ggplot2 i oferuje podobną składnię w Pythonie.

Wybór odpowiedniej biblioteki zależy od konkretnego zadania, typu danych, wymagań dotyczących interaktywności oraz preferencji użytkownika. Wiele z tych bibliotek jest komplementarnych i może być używanych razem w jednym projekcie.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Pytanie: Jakie są podstawowe składniki sieci neuronowej?

A

Odpowiedź: Podstawowe składniki to neurony (lub węzły), warstwy (wejściowa, ukryta/e, wyjściowa) oraz połączenia między neuronami związane z wagami.

Sieć neuronowa składa się z wielu składników, które współpracują, aby przetwarzać dane i dokonywać prognoz. Oto podstawowe składniki sieci neuronowej:

  1. Neurony (węzły):
    • Są to podstawowe jednostki przetwarzania w sieci neuronowej. Każdy neuron przyjmuje pewne wejście, przetwarza je i przekazuje dalej.
  2. Warstwy:
    • Warstwa wejściowa: Przyjmuje dane wejściowe i przekazuje je do następnej warstwy.
    • Warstwy ukryte: Są to warstwy między warstwą wejściową a wyjściową. Mogą być jedna lub wiele warstw ukrytych w sieci neuronowej.
    • Warstwa wyjściowa: Przetwarza dane z ostatniej warstwy ukrytej i generuje wynik sieci.
  3. Połączenia i wagi:
    • Neurony w sieci są połączone ze sobą poprzez połączenia, które mają przypisane wagi. Wagi te są dostosowywane podczas procesu uczenia się w celu poprawy wydajności sieci.
  4. Funkcja aktywacji:
    • Jest to funkcja matematyczna stosowana w neuronie, która decyduje, czy i jak aktywować neuron. Popularne funkcje aktywacji to ReLU (Rectified Linear Unit), sigmoid, tanh i softmax.
  5. Funkcja straty (kosztu):
    • Określa, jak dobrze sieć wykonuje swoje zadanie. Jest używana podczas treningu sieci do dostosowywania wag w odpowiedzi na błąd między prognozowanym a rzeczywistym wynikiem.
  6. Optymalizator:
    • Jest to algorytm, który dostosowuje wagi sieci w celu zminimalizowania funkcji straty. Popularne optymalizatory to SGD (Stochastic Gradient Descent), Adam, RMSprop i wiele innych.
  7. Bias (obciążenie):
    • Jest to dodatkowy parametr w neuronie, który pozwala na przesunięcie funkcji aktywacji. Działa podobnie do stałej w równaniu liniowym.
  8. Propagacja wsteczna (Backpropagation):
    • Jest to kluczowy algorytm w uczeniu się sieci neuronowych, który polega na obliczaniu gradientu funkcji straty względem wag sieci i dostosowywaniu wag w odpowiedzi na ten gradient.
  9. Dropout, regularyzacja i inne techniki:
    • Są to techniki stosowane w celu poprawy zdolności sieci do generalizacji i zapobiegania przeuczeniu.

Te składniki współpracują ze sobą, tworząc skomplikowaną sieć, która może uczyć się wzorców w danych i dokonywać prognoz na podstawie tych wzorców. W zależności od konkretnego zastosowania i architektury, sieci neuronowe mogą mieć różne dodatkowe składniki i modyfikacje.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Pytanie: Co to jest funkcja aktywacji i jakie są jej typy?

A

Odpowiedź: Funkcja aktywacji decyduje, czy neuron powinien być aktywowany, czyli czy powinien przekazywać informacje dalej. Przykłady to: ReLU, sigmoid, tanh, softmax.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Pytanie: Co to jest backpropagation?

A

Odpowiedź: Backpropagation to algorytm używany do uczenia sieci neuronowych, który aktualizuje wagi w sieci w celu zminimalizowania błędu.

Backpropagation, czyli wsteczna propagacja błędu, to algorytm używany w uczeniu się sieci neuronowych. Jest to metoda uczenia nadzorowanego, która polega na minimalizacji błędu sieci poprzez dostosowywanie wag w odpowiedzi na różnicę między prognozowanym wynikiem a rzeczywistym wynikiem. Backpropagation jest kluczowym elementem w procesie trenowania wielu rodzajów sieci neuronowych, w tym głębokich sieci neuronowych.

Oto, jak działa backpropagation:

  1. Propagacja w przód:
    • Dla danego wejścia obliczane jest wyjście sieci neuronowej poprzez przekazywanie wejścia przez wszystkie warstwy sieci aż do warstwy wyjściowej.
  2. Obliczenie błędu:
    • Po obliczeniu wyjścia sieci, obliczany jest błąd, który jest różnicą między prognozowanym wynikiem a rzeczywistym wynikiem. Najczęściej używana jest do tego funkcja straty, np. błąd średniokwadratowy.
  3. Propagacja wsteczna błędu:
    • Błąd jest następnie propagowany wstecznie przez sieć, zaczynając od warstwy wyjściowej. Dla każdej wagi obliczany jest gradient funkcji straty względem tej wagi. Gradient ten określa, w jakim kierunku i o ile należy dostosować wagę, aby zminimalizować błąd.
    • Używając reguły łańcuchowej z rachunku różniczkowego, obliczane są pochodne cząstkowe funkcji straty względem każdej wagi w sieci.
  4. Aktualizacja wag:
    • Po obliczeniu gradientów, wagi sieci są aktualizowane w kierunku, który zmniejsza błąd. Do aktualizacji wag używany jest optymalizator, np. stochastyczny spadek gradientu (SGD), który określa, jak duże kroki należy podjąć w kierunku minimalizacji błędu.
  5. Iteracja:
    • Powyższe kroki są powtarzane dla wielu próbek (lub wsadów próbek) z zestawu treningowego aż do momentu, gdy błąd sieci osiągnie akceptowalny poziom lub przestanie się znacząco zmniejszać.

Backpropagation jest kluczowym algorytmem, który umożliwił skuteczne trenowanie głębokich sieci neuronowych i przyczynił się do obecnego boomu w dziedzinie głębokiego uczenia.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Pytanie: Jakie są podstawowe składniki sieci neuronowej?

A

Odpowiedź: Podstawowe składniki to neurony (lub węzły), warstwy (wejściowa, ukryta, wyjściowa) oraz połączenia między neuronami związane z wagami.

20
Q

Pytanie: Co to jest funkcja aktywacji i jakie są jej typy?

A

Odpowiedź: Funkcja aktywacji decyduje, czy neuron powinien być aktywowany, czyli czy powinien przekazywać informacje dalej. Przykłady to ReLU, sigmoid, tanh i softmax.

21
Q

Pytanie: Jakie są główne różnice między sieciami Feedforward a sieciami konwolucyjnymi (CNN)?

A

Odpowiedź: Sieci Feedforward przekazują informacje tylko w jednym kierunku, od wejścia do wyjścia. CNN są zaprojektowane specjalnie do przetwarzania obrazów i zawierają warstwy konwolucyjne, które skanują obraz w poszukiwaniu lokalnych cech.

Feedforward to termin używany w kontekście sieci neuronowych, który opisuje typ sieci, w której informacje przepływają tylko w jednym kierunku: od wejścia, przez ewentualne warstwy ukryte, do wyjścia. W sieciach feedforward nie ma cykli ani pętli; inaczej mówiąc, żaden neuron w sieci nie wysyła swojego wyjścia z powrotem do siebie ani do swoich poprzedników.

Główne cechy sieci feedforward:
1. Informacje przepływają w jednym kierunku.
2. Nie mają pamięci ani stanu z poprzednich wejść.
3. Są stosunkowo proste w implementacji i analizie.

Alternatywy dla sieci feedforward:

  1. Recurrent Neural Networks (RNNs): Są to sieci, które mają pętle, co pozwala im na przechowywanie informacji z poprzednich wejść. Dzięki temu RNNs są zdolne do przetwarzania sekwencji danych i mają “pamięć” poprzednich wejść.
  2. Convolutional Neural Networks (CNNs): Specjalizują się w przetwarzaniu danych o strukturze siatki, takich jak obrazy. Chociaż są to sieci feedforward, mają specjalne warstwy konwolucyjne, które przetwarzają lokalne obszary wejścia.
  3. Long Short-Term Memory (LSTM) i Gated Recurrent Units (GRU): Są to specjalne rodzaje RNNs zaprojektowane do lepszego przechowywania długoterminowych zależności w sekwencjach danych.
  4. Transformers: To architektura, która wykorzystuje mechanizmy uwagi do przetwarzania sekwencji danych. Transformers stały się popularne w przetwarzaniu języka naturalnego dzięki modelom takim jak BERT i GPT.
  5. Residual Networks (ResNets): Chociaż są to technicznie sieci feedforward, mają “połączenia skrótowe” (residual connections), które omijają jedną lub więcej warstw, co pomaga w treningu głębszych sieci.

Wybór między siecią feedforward a jej alternatywami zależy od konkretnego zadania i rodzaju danych. Na przykład, dla sekwencyjnych danych, takich jak serie czasowe lub tekst, RNNs lub Transformers mogą być bardziej odpowiednie, podczas gdy dla obrazów CNNs są często wyborem numer jeden.

22
Q

Pytanie: Co to jest dropout w kontekście sieci neuronowych?

A

Odpowiedź: Dropout to technika regularyzacji, która polega na losowym “wyłączaniu” pewnej frakcji neuronów podczas treningu, co pomaga zapobiegać przeuczeniu.

23
Q

Pytanie: Jakie są zalety i wady używania sieci neuronowych w porównaniu z innymi algorytmami uczenia maszynowego?

A

Odpowiedź: Zalety to zdolność do modelowania skomplikowanych nieliniowych zależności i automatyczna ekstrakcja cech. Wady to trudność w interpretacji, ryzyko przeuczenia i duże wymagania obliczeniowe.

24
Q

Pytanie: Co to jest transfer learning?

A

Odpowiedź: Transfer learning polega na wykorzystaniu wstępnie wytrenowanego modelu na jednym zadaniu do rozwiązania innego, związanego zadania. Pozwala to na szybsze trenowanie i wymaga mniej danych.

25
Q

Pytanie: Jakie są różnice między uczeniem maszynowym a głębokim uczeniem?

A

Odpowiedź: Głębokie uczenie to podzbiór uczenia maszynowego, który korzysta z głębokich sieci neuronowych. Uczenie maszynowe może korzystać z różnorodnych algorytmów, niekoniecznie opartych na sieciach neuronowych.

26
Q

Pytanie: Co to jest GAN (Generative Adversarial Network)?

A

GAN (Generative Adversarial Network, czyli Generatywna Sieć Adwersaryjna) to rodzaj algorytmu uczenia maszynowego zaprojektowanego do generowania nowych, wcześniej niewidzianych danych, które są podobne do pewnego zestawu danych treningowych. GAN został zaproponowany przez Iana Goodfellowa i jego współpracowników w 2014 roku.

GAN składa się z dwóch sieci neuronowych, które są trenowane jednocześnie przez adwersaryjny proces:

  1. Generator: Dąży do generowania danych. Bierze losowy szum jako wejście i generuje dane.
  2. Dyskryminator: Dąży do rozróżniania między prawdziwymi danymi a danymi wygenerowanymi przez generator.

Proces treningu:

  1. Generator otrzymuje losowy szum i produkuje dane.
  2. Dyskryminator ocenia, czy dane są prawdziwe (z prawdziwego zestawu danych) czy fałszywe (wygenerowane przez generator).
  3. Błąd dyskryminatora jest następnie używany do trenowania generatora, aby poprawić jego zdolność do oszukiwania dyskryminatora.
  4. Proces jest powtarzany wielokrotnie.

Celem generatora jest oszukiwanie dyskryminatora, zmuszając go do klasyfikowania danych wygenerowanych jako prawdziwe. Celem dyskryminatora jest poprawne klasyfikowanie danych jako prawdziwe lub fałszywe. Gdy GAN jest odpowiednio wytrenowany, generator jest w stanie produkować dane, które są niemal nieodróżnialne od prawdziwych danych.

Zastosowania GAN:

  • Generowanie obrazów: Tworzenie realistycznych obrazów, które wcześniej nie istniały (np. twarze ludzi).
  • Sztuka i twórczość: Generowanie muzyki, obrazów czy innych form sztuki.
  • Super-rozdzielczość: Poprawa jakości obrazów.
  • Transfer stylu: Przenoszenie stylu z jednego obrazu na inny.
  • Generowanie danych: Tworzenie syntetycznych zestawów danych dla treningu innych modeli.
  • Symulacje i gry: Generowanie realistycznych środowisk i postaci.

GAN-y są potężnym narzędziem w dziedzinie uczenia maszynowego, ale mogą być trudne w treningu i wymagają starannego doboru architektury i parametrów.

27
Q

Pytanie: Jakie są Twoje doświadczenia z modelami NLP (Natural Language Processing)?

A

Odpowiedź: Odpowiedź będzie zależała od doświadczenia kandydata. Może on opisać projekty związane z analizą tekstu, tłumaczeniem maszynowym, generowaniem tekstu itp.

28
Q

Pytanie: Co to jest word embedding i jakie są jego zalety w przetwarzaniu języka naturalnego?

A

Odpowiedź: Word embedding to technika przekształcania słów w wektory o stałej długości w taki sposób, że słowa o podobnym znaczeniu mają podobne wektory. Zalety to redukcja wymiarowości, uchwycenie kontekstualnych zależności między słowami i możliwość operacji na wektorach (np. król - mężczyzna + kobieta = królowa).

29
Q

Pytanie: Jakie biblioteki w Pythonie używasz do implementacji sieci neuronowych?

A

Odpowiedź: Do implementacji sieci neuronowych najczęściej używam TensorFlow (wraz z wysokopoziomowym API Keras) oraz PyTorch.

30
Q

Pytanie: Jak w Keras zdefiniujesz prostą sieć neuronową typu Feedforward?

A

from keras.models import Sequential
from keras.layers import Dense

model = Sequential()
model.add(Dense(32, input_dim=8, activation=’relu’))
model.add(Dense(16, activation=’relu’))
model.add(Dense(1, activation=’sigmoid’))

albo
# model.add(Dense(units=10, activation=’softmax’))

Kompilacja modelu
model.compile(optimizer=’adam’, loss=’categorical_crossentropy’, metrics=[‘accuracy’])

Podsumowanie modelu
model.summary()

model.fit(…
model.evaluate(…
model.predict(

31
Q

Pytanie: Jak radzisz sobie z przeuczeniem modelu w Pythonie?

A

Odpowiedź: Można zastosować różne techniki, takie jak regularyzacja (L1, L2), dropout (w sieciach neuronowych) czy też zwiększenie ilości danych poprzez augmentację.

32
Q

Pytanie: Jak w scikit-learn przeprowadzisz podział danych na zbiór treningowy i testowy?

A

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

33
Q

Pytanie: Jakie znasz funkcje straty w Keras dla problemów klasyfikacji i regresji?

A

Odpowiedź: Dla klasyfikacji często używam categorical_crossentropy lub binary_crossentropy, a dla regresji mean_squared_error.

34
Q

Pytanie: Jakie są różnice między TensorFlow a PyTorch w kontekście implementacji i badania modeli?

A

Odpowiedź: TensorFlow jest bardziej “statyczny” z predefiniowanym grafem obliczeń, podczas gdy PyTorch oferuje dynamiczny graf obliczeń, co jest bardziej intuicyjne i ułatwia debugowanie. TensorFlow ma silne wsparcie dla produkcji, podczas gdy PyTorch jest często preferowany w badaniach akademickich.

35
Q

Pytanie: Jak w Keras zaimplementujesz technikę dropout?

A

from keras.layers import Dropout

model.add(Dropout(0.5))

36
Q

Pytanie: Jak przeprowadzasz normalizację danych w scikit-learn?

A

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

W Pandas:
df_normalized = (df - df.min()) / (df.max() - df.min())
df_standardized = (df - df.mean()) / df.std()

37
Q

Pytanie: Jakie znasz techniki augmentacji danych w kontekście przetwarzania obrazów?

A

Odpowiedź: W obróbce obrazów często stosuje się obracanie, przesunięcie, zmianę skali, odbicie lustrzane, zmianę jasności i kontrastu czy też szum. Biblioteki takie jak ImageDataGenerator w Keras umożliwiają łatwą augmentację.

Augmentacja danych to technika sztucznego zwiększania rozmiaru zestawu danych poprzez wprowadzenie niewielkich modyfikacji do oryginalnych danych. W kontekście przetwarzania obrazów, augmentacja jest często stosowana w celu zwiększenia różnorodności danych treningowych i zapobiegania nadmiernemu dopasowaniu (overfitting) w modelach głębokiego uczenia. Oto kilka popularnych technik augmentacji danych dla obrazów:

  1. Obrót (Rotation):
    • Obracanie obrazu o określony kąt.
  2. Przesunięcie (Translation):
    • Przesuwanie obrazu w poziomie lub pionie.
  3. Skalowanie (Scaling):
    • Zmiana rozmiaru obrazu, powiększanie lub pomniejszanie.
  4. Odbicie (Flip):
    • Odbijanie obrazu w poziomie lub pionie.
  5. Zmiana jasności i kontrastu:
    • Modyfikacja jasności i kontrastu obrazu.
  6. Zniekształcenie (Warping):
    • Lekkie zniekształcenie obrazu.
  7. Zaszumienie (Noise Injection):
    • Dodawanie losowego szumu do obrazu.
  8. Zmiana odcienia (Hue and Saturation Adjustment):
    • Modyfikacja odcienia i nasycenia kolorów obrazu.
  9. Random Crop:
    • Wycinanie losowego fragmentu obrazu.
  10. Zoom:
    - Powiększanie lub pomniejszanie określonej części obrazu.
  11. Shear Transformation:
    - Przesunięcie jednej części obrazu względem innej wzdłuż osi x lub y.
  12. Elastyczne deformacje (Elastic Transformations):
    - Symulacja fal w obrazie, co prowadzi do deformacji.
  13. Random Erase lub Cutout:
    - Usuwanie losowego fragmentu obrazu i zastępowanie go jednolitym kolorem.
  14. Mixup i CutMix:
    - Kombinowanie dwóch obrazów w różnych proporcjach lub wycinanie fragmentu jednego obrazu i wstawianie go
38
Q

Pytanie: Jak w scikit-learn zastosujesz walidację krzyżową?

A

from sklearn.model_selection import cross_val_score

scores = cross_val_score(model, X, y, cv=5)

Walidacja krzyżowa to technika oceny modelu poprzez podział zestawu danych na kilka podzbiorów i przeprowadzenie wielokrotnego treningu i testowania modelu na różnych kombinacjach tych podzbiorów. Istnieją różne warianty walidacji krzyżowej, w tym k-krotna walidacja krzyżowa (k-fold) i stratyfikowana walidacja krzyżowa (stratified k-fold). Oto wyjaśnienie różnic między nimi:

  1. Zwykła walidacja krzyżowa (Holdout Cross-Validation):
    • Zestaw danych jest dzielony na dwa podzbiory: zestaw treningowy i zestaw testowy.
    • Model jest trenowany na zestawie treningowym i oceniany na zestawie testowym.
    • Jest to najprostsza forma walidacji krzyżowej i jest podatna na zmienność wyników w zależności od tego, jak dane są dzielone.
  2. K-krotna walidacja krzyżowa (K-Fold Cross-Validation):
    • Zestaw danych jest dzielony na k równych podzbiorów.
    • Model jest trenowany k razy, za każdym razem używając innego podzbioru jako zestawu testowego, a pozostałych k-1 podzbiorów jako zestawu treningowego.
    • Wyniki są uśredniane, aby uzyskać końcową ocenę modelu.
    • Jest mniej podatna na zmienność w porównaniu z zwykłą walidacją krzyżową, ponieważ model jest oceniany na różnych podzbiorach danych.
  3. Stratyfikowana k-krotna walidacja krzyżowa (Stratified K-Fold Cross-Validation):
    • Podobnie jak w k-krotnej walidacji krzyżowej, zestaw danych jest dzielony na k podzbiorów.
    • Kluczową różnicą jest to, że podziały są dokonywane w taki sposób, aby każdy podzbiór miał tę samą proporcję klas co oryginalny zestaw danych.
    • Jest to szczególnie przydatne w przypadku niezrównoważonych zestawów danych, gdzie jedna klasa jest znacznie mniej reprezentowana niż inne.
    • Zapewnia, że każdy podzbiór zachowuje proporcje klas, co prowadzi do bardziej stabilnych i wiarygodnych ocen modelu.

Podsumowując, podczas gdy zwykła walidacja krzyżowa dzieli dane tylko raz, k-krotna walidacja krzyżowa dzieli dane na k podzbiorów i przeprowadza trening i testowanie k razy. Stratyfikowana walidacja krzyżowa dodaje dodatkowy krok, aby zapewnić, że proporcje klas są zachowane w każdym podziale. Wybór odpowiedniej metody zależy od charakterystyki danych i wymagań projektu.

39
Q

Pytanie: Jak w Keras możesz zapisywać postępy treningu modelu?

A

from keras.callbacks import ModelCheckpoint

checkpoint = ModelCheckpoint(‘model-{epoch:03d}.h5’, save_best_only=True, monitor=’val_loss’)
model.fit(X_train, y_train, validation_data=(X_test, y_test), callbacks=[checkpoint])

40
Q

Pytanie: Jakie znasz metody regularyzacji w PyTorch?

A

Odpowiedź: W PyTorch można stosować regularyzację L1 i L2 poprzez dodanie odpowiednich składników do funkcji straty lub korzystając z parametrów weight_decay w optymalizatorach.

41
Q

Pytanie: Jak w scikit-learn zastosujesz algorytm Random Forest?

A

from sklearn.ensemble import RandomForestClassifier

clf = RandomForestClassifier(n_estimators=100)
clf.fit(X_train, y_train)
predictions = clf.predict(X_test)

42
Q

Pytanie: Jak w Keras zaimplementujesz sieć konwolucyjną (CNN) dla problemu klasyfikacji obrazów?

A

from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D, Flatten, Dense

Inicjalizacja modelu sekwencyjnego
model = Sequential()

Dodanie warstwy konwolucyjnej
model.add(Conv2D(filters=32, kernel_size=(3, 3), activation=’relu’, input_shape=(64, 64, 3)))
# filters: liczba filtrów (jąder) konwolucyjnych
# kernel_size: rozmiar jądra konwolucyjnego
# activation: funkcja aktywacji
# input_shape: kształt wejściowego obrazu (w tym przypadku obrazy 64x64 z 3 kanałami kolorów)

Dodanie warstwy pooling (subsampling)
model.add(MaxPooling2D(pool_size=(2, 2)))
# pool_size: rozmiar okna pooling

Dodanie kolejnej warstwy konwolucyjnej i pooling
model.add(Conv2D(filters=64, kernel_size=(3, 3), activation=’relu’))
model.add(MaxPooling2D(pool_size=(2, 2)))

Spłaszczenie - konwersja 2D macierzy do wektora
model.add(Flatten())

Dodanie w pełni połączonej warstwy (Dense)
model.add(Dense(units=128, activation=’relu’))
# units: liczba neuronów w warstwie

Dodanie warstwy wyjściowej
model.add(Dense(units=10, activation=’softmax’))
# units: liczba klas wyjściowych (np. 10 dla klasyfikacji obrazów z 10 kategoriami)
# activation: funkcja aktywacji softmax dla wieloklasowej klasyfikacji

Kompilacja modelu
model.compile(optimizer=’adam’, loss=’categorical_crossentropy’, metrics=[‘accuracy’])
# optimizer: optymalizator do aktualizacji wag
# loss: funkcja straty
# metrics: metryki do monitorowania podczas treningu

Podsumowanie modelu
model.summary()

43
Q

Pytanie: Jakie są różnice między optymalizatorami SGD, Adam i RMSprop w kontekście uczenia sieci neuronowych?

A

Odpowiedź: SGD to prosty algorytm spadku gradientu, który aktualizuje każdy parametr w oparciu o gradient. Adam łączy zalety dwóch innych rozszerzeń SGD, AdaGrad i RMSProp. RMSprop to optymalizator, który dostosowuje tempo uczenia się dla każdego z parametrów.

44
Q

Pytanie: Jak w PyTorch przekształcisz tensor na numpy array?

A

numpy_array = tensor.cpu().detach().numpy()

Tensor to matematyczny obiekt używany w dziedzinach takich jak fizyka i inżynieria, a także w uczeniu maszynowym i głębokim uczeniu. W kontekście uczenia maszynowego i głębokiego uczenia, tensor jest wielowymiarową tablicą lub listą. Można go postrzegać jako uogólnienie skalara, wektora i macierzy do wyższych wymiarów.

Oto kilka przykładów dla lepszego zrozumienia:

  1. Skalar: Jest to tensor zerowego rzędu. Przykład: liczba ( c = 5 ).
  2. Wektor: Jest to tensor pierwszego rzędu. Przykład: ( v = [1, 2, 3] ).
  3. Macierz: Jest to tensor drugiego rzędu. Przykład:
    [
    M = \begin{bmatrix}
    1 & 2
    3 & 4
    5 & 6
    \end{bmatrix}
    ]
  4. 3-wymiarowy Tensor: Można go postrzegać jako stos macierzy. Przykład:
    [
    T = \begin{bmatrix}
    \begin{bmatrix}
    1 & 2
    3 & 4
    \end{bmatrix}
    ,
    \begin{bmatrix}
    5 & 6
    7 & 8
    \end{bmatrix}
    \end{bmatrix}
    ]

I tak dalej dla wyższych wymiarów.

W kontekście bibliotek do głębokiego uczenia, takich jak TensorFlow czy PyTorch, tensor jest podstawowym obiektem używanym do przechowywania i manipulowania danymi. Te biblioteki oferują wiele operacji tensorowych, które są zoptymalizowane do działania na GPU, co przyspiesza obliczenia, szczególnie w przypadku dużych modeli głębokiego uczenia.

45
Q

Pytanie: Jak w scikit-learn przeprowadzisz redukcję wymiarowości danych?

A

from sklearn.decomposition import PCA

pca = PCA(n_components=2)
X_reduced = pca.fit_transform(X)

W scikit-learn istnieje wiele technik do redukcji wymiarowości danych. Redukcja wymiarowości jest często stosowana w celu zmniejszenia złożoności obliczeniowej, wizualizacji danych wielowymiarowych oraz walki z przekleństwem wymiarowości. Oto kilka popularnych technik redukcji wymiarowości dostępnych w scikit-learn:

46
Q

Pytanie: Jak w Keras możesz monitorować postępy treningu za pomocą TensorBoard?

A

from keras.callbacks import TensorBoard

tensorboard = TensorBoard(log_dir=’./logs’)
model.fit(X_train, y_train, validation_data=(X_test, y_test), callbacks=[tensorboard])

TensorBoard to narzędzie wizualizacji dostarczane z TensorFlow, które pozwala na monitorowanie postępów treningu, wizualizację metryk, architektury modelu, dystrybucji wag i wiele innych. Aby monitorować postępy treningu w Keras za pomocą TensorBoard, można postępować następująco:

  1. Instalacja TensorBoard:
    Jeśli jeszcze nie masz zainstalowanego TensorBoard, możesz zainstalować go za pomocą pip:
    pip install tensorboard
  2. Ustawienie Callback dla TensorBoard:
    W Keras musisz dodać TensorBoard jako callback podczas treningu modelu.

```python
from keras.callbacks import TensorBoard

Utwórz folder do przechowywania logów
log_dir = “./logs”

Ustaw callback
tensorboard_callback = TensorBoard(log_dir=log_dir, histogram_freq=1, write_graph=True)

Trenuj model z dodanym callbackiem
model.fit(X_train, y_train, epochs=10, callbacks=[tensorboard_callback])
~~~

  1. Uruchomienie TensorBoard:
    Po zakończeniu treningu możesz uruchomić TensorBoard z linii poleceń, wskazując folder z logami:
tensorboard --logdir=./logs

Następnie otwórz przeglądarkę i przejdź do adresu http://localhost:6006/, aby zobaczyć interfejs TensorBoard.

  1. Dodatkowe opcje:
    • histogram_freq: Określa, jak często histogramy aktywacji/wag powinny być komputowane. Ustawienie histogram_freq=1 oblicza histogramy po każdej epoce.
    • write_graph: Jeśli ustawione na True, wizualizuje graf modelu.
    • write_images: Jeśli ustawione na True, zapisuje wizualizacje wag modelu jako obrazy.

Pamiętaj, że korzystanie z TensorBoard podczas treningu może nieco spowolnić proces, zwłaszcza jeśli zapisujesz dużo informacji po każdej epoce. Dlatego warto dostosować parametry callbacku do własnych potrzeb.

47
Q

Czym są zbiory train, test i validation?

A

Zbiory train (treningowy), test (testowy) i validation (walidacyjny) to podzbiory zestawu danych używane w procesie tworzenia i oceny modeli uczenia maszynowego. Każdy z tych zbiorów pełni specyficzną rolę:

  1. Zbiór treningowy (Train Set):
    • Jest to podzbiór danych używany do trenowania modelu.
    • Na podstawie tego zbioru model aktualizuje swoje wagi i parametry w celu minimalizacji błędu.
    • Zawiera większość dostępnych danych (np. 60-80% całego zestawu).
  2. Zbiór walidacyjny (Validation Set):
    • Jest to podzbiór danych używany do oceny modelu podczas treningu, ale nie jest używany do bezpośredniego trenowania modelu.
    • Umożliwia dostosowywanie hiperparametrów modelu (np. współczynnik uczenia, architektura sieci) i wczesne zatrzymywanie treningu (early stopping) w celu zapobiegania nadmiernemu dopasowaniu.
    • Jest to “pośredni” zbiór, który pozwala na ocenę modelu na danych, które nie były używane do bezpośredniego treningu, ale przed przeprowadzeniem końcowej oceny na zbiorze testowym.
  3. Zbiór testowy (Test Set):
    • Jest to podzbiór danych używany do końcowej oceny modelu po zakończeniu procesu treningu.
    • Pozwala ocenić, jak dobrze model radzi sobie z niewidzianymi wcześniej danymi i przewidzieć, jak będzie działać w rzeczywistych warunkach.
    • Modelu nie powinno się dostosowywać ani modyfikować na podstawie wyników uzyskanych na zbiorze testowym.

Podział danych na te trzy zbiory ma na celu zapewnienie, że model będzie dobrze generalizować na nowych, niewidzianych wcześniej danych. Jeśli model osiąga dobre wyniki na zbiorze treningowym, ale słabe na zbiorze walidacyjnym lub testowym, może to wskazywać na problem nadmiernego dopasowania (overfitting), co oznacza, że model zbyt dokładnie dopasował się do danych treningowych i nie radzi sobie dobrze z nowymi danymi.