Prezentacja

Ludzie nie rozpoczynają swojej intuicji bez przygotowania. Czytając ten artykuł, zobaczysz każde słowo w zależności od tego, jak rozumiesz poprzednie słowa. Nie odrzucasz wszystkiego i nie zaczynasz znowu myśleć bez przygotowania. Twoje rozważania są staranne.

Konwencjonalne sieci neuronowe nie mogą tego zrobić i wydaje się, że jest to znaczący niedostatek. Na przykład, wyobraź sobie, że musisz zorganizować jakąś okazję w każdym momencie filmu. Nie wiadomo jak konwencjonalny system neuronowy mógłby wykorzystać swoje myślenie o dawnych okazjach w filmie, aby doradzić te późniejsze.

Powtarzające się sieci neuronowe rozwiązują ten problem. Są to systemy z kręgami, które umożliwiają przetrwanie danych.

W powyższym zarysie, bryła układu nerwowego A, widzi pewne informacje xt i daje warte ht. Koło umożliwia przekazywanie danych począwszy od jednego etapu systemu, a następnie do następnego. Przerywany system neuronowy może być uważany za liczne duplikaty podobnego systemu, z których każdy przekazuje wiadomość następcy. Pomyśl o tym, co się dzieje w przypadku rozwinięcia kręgu:

Ta łańcuchowa natura odkrywa, że powtarzające się systemy nerwowe są osobiście identyfikowane z grupami i zapisami. Są one regularną inżynierią systemów neuronowych do wykorzystania w takich informacjach. Co więcej, z pewnością są one wykorzystywane! W ciągu ostatnich kilku lat dokonano niezwykłych osiągnięć w zastosowaniu RNN do różnych zagadnień: rozpoznawania dyskursu, wyświetlania języka, interpretacji, tworzenia napisów do obrazów… Lista ta jest długa.

Mimo, że nie jest to jeszcze obowiązkowe, to warto, aby użytkownik zrozumiał czym są WordVector. Oto mój poprzedni blog o Word2Vec, procedura tworzenia Wektorów Worda.
Czym są Powtarzające się Systemy Neuronowe

Rażącym ograniczeniem systemów nerwowych waniliowych (a ponadto systemów konwulsyjnych) jest to, że ich interfejs programistyczny jest nadmiernie rozbudowany: rozpoznają one wektor o stałej wielkości jako informację (np. obrazek) i wytwarzają wektor o stałej wielkości jako plon (np. prawdopodobieństwa różnych klas). Nie tylko to: modele te odtwarzają to mapowanie wykorzystując stałą miarę postępów obliczeniowych (np. liczbę warstw w modelu).

Centralnym wyjaśnieniem, że siatki powtarzalne są tym bardziej energetyzujące, że umożliwiają nam pracę nad kolejnymi wektorami: Ustalenia w informacji, wydajności, a w najszerszym przypadku obu.

Kilka modeli może sprawić, że będzie to coraz bardziej konkretne:

Każdy kształt kwadratowy jest wektorem, a śruby przemawiają do nośności (np. duplikat ramy). Wektory informacyjne są w kolorze czerwonym, wektory wydajności są w kolorze niebieskim, a wektory zielone utrzymują stan RNN (więcej na ten temat wkrótce). Od lewej do prawej:

Waniliowa metoda pracy bez RNN, od stałego wkładu do stałego wkładu do wydajności (np. grupowanie obrazów).

Grupowanie wydajności (np. napisy do zdjęć robią zdjęcie i dają zdanie).

Grupowanie wkładu (np. badanie opinii, w przypadku gdy dane zdanie jest delegowane, przekazując pozytywne lub negatywne założenie)

Informacje o sukcesji i zysku z aranżacji (na przykład interpretacja maszynowa: RNN przenika zdanie w języku angielskim, a następnie daje zdanie w języku francuskim).

Dopasowanie informacji o grupowaniu i wydajności (np. układ wideo, w którym chcemy zaznaczyć każdą klatkę filmu).

Zauważ, że dla każdej sytuacji nie ma z góry określonych imperatywów dotyczących kolejności długości w świetle faktu, że powtarzalna zmiana (zielony) jest stała i może być stosowana tyle samo razy, ile chcemy.
RNN Obliczenia

Więc jak oni to osiągają?

Uznają wektor informacyjny x i podają wektor wydajności y. Niemniej jednak, pilnie na substancję tego wektora wydajności wpływają nie tylko informacje, które właśnie wprowadziłeś, ale także cała historia źródeł danych, w których byłeś wcześniej. Skomponowany jako klasa, interfejs programowania RNNN składa się z samodzielnej pracy krok po kroku:

rnn = RNN()

y = rnn.step(x) # x to wektor informacyjny, y to wektor wydajności RNN

Klasa RNN ma pewien wewnętrzny wyraz tego, że ma możliwość odświeżenia się za każdym razem, gdy jest wywoływany krok. W najmniej trudnym przypadku, stan ten obejmuje samotny owinięty wektor h. Oto wykonanie pracy progresyjnej w waniliowym RNN: Osłonięty stan self.h jest wprowadzany wektorem zerowym. Praca np.tanh (dygresja hiperboliczna) aktualizuje nieliniowość, która przygniata inicjacje do zakresu [-1, 1].
klasa RNN:

def step(self, x):

aktualizuje stan ukryty

self.h = np.tanh(np.dot(self.W_hhh, self.h) + np.dot(self.W_xh, x)))

obliczyć wektor wyjściowy

y = np.dot(self.W_hy, self.h)

wrócić y
Powyższe określa przepustowość waniliowego RNN. Parametry tego RNN to trzy matryce –
W_hhh : Matryca oparta na Poprzednim Ukrytym Stanie
W_xh : Matryca oparta na bieżącym wejściu
W_hy : Matryca oparta o stan ukryty i wyjście
Więc jak to działa

Istnieją dwa terminy w obrębie opalenizny: jeden zależy od poprzedniego stanu spowitego w całunie, a drugi od obecnych informacji. W numpy np.dot jest augmentacja sieci. Te dwa pojęcia współpracują z rozszerzeniem, a następnie zostają zgniecione przez tanh do wektora nowego stanu.
Matematyczna notacja dla ukrytej aktualizacji stanu to –

gdzie tanh jest nakładany elementarnie.
Wprowadzamy sieci RNN o nieregularnych liczbach i większa część pracy podczas przygotowań idzie na znalezienie sieci, które oferują wejście do uwodzicielskich zachowań, jak oszacowano z niektórych niefortunnych pracy, która komunikuje swoje skłonności do jakiego rodzaju plonów y chcesz znaleźć w świetle swoich sukcesji informacyjnych x
Znajdziemy w kawałku, RNN łączy wektor informacji z ich wektorem stanu o stałej (jeszcze nauczonej) zdolności do dostarczania innego wektora stanu.
Teraz zagłębiając się w to…
y1 = rnn1.step(x)
y = rnn2.step(y1)
Pod koniec dnia, mamy dwa oddzielne RNN: Jeden RNN przyjmuje wektory informacyjne, a drugi RNN otrzymuje wydajność pierwszego RNN jako informację. Ale żaden z tych RNN nie wie ani nie dba o to – to wszystko, tylko wektory wchodzące i wychodzące, i kilka kątów przechodzących przez każdy moduł podczas backpropagacji.

Chciałbym szybko odnieść się do dużej części z nas, która w porównaniu z tym, co pokazałem powyżej, nazywa się organizacją długiej pamięci chwilowej (LSTM), korzysta z marginalnie niespodziewanego planu. LSTM jest specyficznym rodzajem systemu przerywanego, który działa nieco lepiej, co wynika z jego dominujących warunków aktualizacji i pewnych angażujących elementów backpropagacji. Nie będę się zagłębiał w subtelności, ale wszystko, co powiedziałem o RNN pozostaje dokładnie takie samo, z wyjątkiem struktury naukowej do przetwarzania aktualizacji (linia self.h = … ) robi się nieco bardziej zagmatwana. Od tego momentu będę używał zwrotów “RNN/LSTM” odwrotnie, jednak wszystkie badania w tym poście używają LSTM.