Jak może istnieć dwu-warstwowa sieć neuronowa z jedną warstwą ukrytą⁇

0

Autentyczne zadanie z jednego z poprzednich egzaminów:

Narysuj dwu-warstwową sieć neuronową z jedną warstwą ukrytą i z jednym neuronem w warstwie wyjściowej. Wszystkie neurony są aktywowane funkcjami progowymi, a neuron wyjściowy powinien zwracać wartość 1 wtedy i tylko wtedy, gdy punkt na wjeściu (sic!) (x1, x2) znajduje się w zaciemnionym obszarze.

Zaznacz na rysunku dokładnie wartości progowe neuronów oraz wag krawędzi.

„Zaciemniony obszar” to jest prostokąt [<-0,5; -1>, <2; 1>]. Ale nie to jest istotne.

Istotne jest to: JAK MOŻE istnieć dwuwarstwowa sieć neuronowa z jedną warstwą ukrytą?? Warstwa ukryta to warstwa, która nie jest ani wejściowa, ani wyjściowa; tak więc sieć neuronowa z warstwą ukrytą będzie TRÓJwarstwowa a nie dwuwarstwowa - bo będzie musiała być warstwa wejściowa, ukryta i wyjściowa a to razem 3!

Czy mnie coś zamroczyło, czy treść tego zadania jest rzeczywiście sprzeczna?

3

Warstwy wejściowej zazwyczaj się nie liczy, więc dwuwarstwowa sieć ma fizycznie trzy warstwy (wejście + ukrytą + wyjście).

0

Zależy jak to jest przedstawiane na rysunkach to różnie to może być interpretowane, warstwa wejściowa jest chyba umowna. Różne są też praktyczne implementacje, np. taka sieć neuronowa MLP (standardowa trójwarstwowa czyli w tym przypadku wejściowa, ukrywa, wyjściowa) w bibliotece AForge.NET (AForge.Neuro) jest tak właśnie zaimplementowana czyli jakby dwie warstwy (obrazowane klasami C#), jedna obrazującą warstwę ukrytą i wyjściową a wejściowej jakby nie ma tylko są pobierane wartości z wejść. Trzy warstwy z jedną wejściową są chyba często prezentowane żeby to było łatwe do zrozumienia przez studentów.

0
drorat1 napisał(a):

a wejściowej jakby nie ma tylko są pobierane wartości z wejść. Trzy warstwy z jedną wejściową są chyba często prezentowane żeby to było łatwe do zrozumienia przez studentów.

Zaraz - to znaczy, że nie wolno mi w tym zadaniu robić żadnej logiki w warstwie wejściowej? Bo z tego, co piszesz, to rozumiałbym, że warstwa wejściowa jedynie i wyłącznie forwarduje to, co otrzymuje ;/

A ja bym już chciał dać neuronom w warstwie wejściowej progi i co więcej, dać 4 neurony w warstwie wejściowej, po 2 na każdą współrzędną wejścia. Taka warstwa wejściowa nie może być tylko domyślna i jej prezentacja zawiera w sobie więcej informacji niż tylko ułatwienie zrozumienia konstukcji sieci ;/

0
kmph napisał(a):

nie wolno mi w tym zadaniu robić żadnej logiki w warstwie wejściowej?

Nie wiem, czy „nie wolno”, ale czasami taką logikę widziałem. Zazwyczaj jednak funkcja aktywacji warstwy wejściowej jest liniowa (czyli po prostu pchasz wejście dalej). Jest też dropout, ale nie wiem, czy to uważasz za „logikę”.

0
Afish napisał(a):

Zazwyczaj jednak funkcja aktywacji warstwy wejściowej jest liniowa (czyli po prostu pchasz wejście dalej).

Treść zadania każe, by wszystkie neurony były aktywowane funkcjami progowymi.

Rozwiązanie tego zadania wyobrażam sobie tak:

title

Bez zduplikowania danych w warstwie wejściowej (każda współrzędna idzie do 2 neuronów) i dania nietrywialnych progów (gdzie „nietrywialnych” znaczy tyle, co „nie można ich po prostu wymazać i twierdzić, że są oczywiste i domyślne”) nie widzę, jak można by zrobić to zadanie.

Dlatego zaniepokoiło mnie, jak mówiliście, że „sieć z warstwami wejścia, ukrytą i wyjścia określa się jako dwuwarstwową, bo warstwa wejścia jest tylko domyślna”, bo to jakby znaczyło, że każde rozwiązanie tego zadania, które stanie się niezrozumiałe lub błędne po wymazaniu warstwy wejściowej, jest rozwiązaniem nieprawidłowym (bo warstwa wejściowa „robi za dużo”).

Od biedy mógłbym wymazać warstwę wyjściową (twierdzić, że jest w domyśle jeden neuron o standardowym progu ≥1 i wadze 1), wymagałoby to tylko podzielenia wag aksonów między warstwą ukrytą a wyjściową przez 2, ale nie mógłbym tego zrobić z warstwą wejściową!

EDIT: To znaczy oczywiście można rozwiązać to zadanie z warstwą wejściową tylko forwardującą wejście:

title

No ale treść zadania mówi wyraźnie: „Wszystkie neurony są aktywowane funkcjami progowymi”, więc jakby takie rozwiązanie odpada.

A może w domyśle jest, że wszystkie neurony oprócz tych z warstwy wejściowej aktywowane są funkcjami progowymi?

0

Nie wiem czy treść tego zadania ma zmuszać do myślenia czy też ma być dokładnie odwrotnie ale tutaj zobrazuję to na podstawie rysunków wygenerowanych zresztą programem do symulacji SSN który sam sobie zresztą kiedyś napisałem.

Załóżmy że nie masz żadnej warstwy ukrytej a tylko operujesz na możliwościach jakie daje perceptron prosty (problemy lioniowo separowalne, taki sobie np. z XOR nie poradzi):

title

Ale tu masz warstwę wyjściową (fioletowe kółko i progowa funkcja aktywacji) i wejściową (zielone kółka) gdzie de facto tylko pchasz wejścia dalej a funkcja aktywacji jest liniowa. Równie dobrze można by to było uznać tylko za wejścia. A tu niżej masz SSN z jedną warstwą ukrytą, wg. podobnych założeń:

title

Czyli dwie warstwy (fioletowe kółka obrazujące neurony z progową funkcją aktywacji), ukryta i wyjściowa oraz wejściowa gdzie de facto też pchasz wejścia dalej do warstwy ukrytej. Ja tu raczej nie widzę problemu, no może poza takim czy to będzie uznane przez prowadzącego taki egzamin czy też nie ale to jest tylko jedna z możliwych interpretacji rozwiązania problemu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1