Rekurentní neuronové sítě

Intermediate Deep Learning with PyTorch

Michal Oleszak

Machine Learning Engineer

Rekurentní neuron

  • Dopředné sítě
  • RNN: mají zpětná spojení
  • Rekurentní neuron:
    • Vstup x
    • Výstup y
    • Skrytý stav h
  • V PyTorch: nn.RNN()

Schéma jednoduchého RNN neuronu: neuron aplikující váhy a aktivaci přijímá vstup x a produkuje výstupy y a h, kde h je přiváděno zpět do sebe.

Intermediate Deep Learning with PyTorch

Rozvinutí rekurentního neuronu v čase

Schéma rekurentního neuronu. V časovém kroku 0 přijímá vstupy h0 a x0 a produkuje výstupy y0 a h1.

Intermediate Deep Learning with PyTorch

Rozvinutí rekurentního neuronu v čase

Schéma rekurentního neuronu. V časovém kroku 1 přijímá vstupy h1 a x1 a produkuje výstup y1.

Intermediate Deep Learning with PyTorch

Rozvinutí rekurentního neuronu v čase

Schéma rekurentního neuronu. V časovém kroku 2 přijímá vstupy h2 a x2 a produkuje výstupy y2 a h3.

Intermediate Deep Learning with PyTorch

Hluboké RNN

Schéma dvou rekurentních neuronů tvořících vrstvu. V každém časovém kroku jsou výstupy y předány dalšímu neuronu.

Intermediate Deep Learning with PyTorch

Architektura sekvence–sekvence

  • Sekvence na vstupu, využívá se celá výstupní sekvence
  • Příklad: Rozpoznávání řeči v reálném čase

Schéma architektury: v každém časovém kroku je nový vstup, všechny výstupy y jsou označeny zeleně jako použité.

Intermediate Deep Learning with PyTorch

Architektura sekvence–vektor

  • Sekvence na vstupu, využívá se pouze poslední výstup
  • Příklad: Klasifikace témat textu

Schéma architektury: v každém časovém kroku je nový vstup, pouze poslední výstup y z posledního kroku je označen zeleně jako použitý.

Intermediate Deep Learning with PyTorch

Architektura vektor–sekvence

  • Jeden vstup, využívá se celá výstupní sekvence
  • Příklad: Generování textu

Schéma architektury: pouze jeden vstup v prvním časovém kroku, všechny výstupy y jsou označeny zeleně jako použité.

Intermediate Deep Learning with PyTorch

Architektura enkodér–dekodér

  • Nejprve celá vstupní sekvence, teprve poté výstupní sekvence
  • Příklad: Strojový překlad

Schéma architektury: v první části (enkodér) jsou přijímány vstupy v každém kroku, výstupy jsou ignorovány; ve druhé části (dekodér) nejsou přijímány vstupy, ale všechny výstupy jsou použity.

Intermediate Deep Learning with PyTorch

RNN v PyTorch

class Net(nn.Module):
    def __init__(self):
        super().__init__()

self.rnn = nn.RNN( input_size=1, hidden_size=32, num_layers=2, batch_first=True, )
self.fc = nn.Linear(32, 1)
def forward(self, x): h0 = torch.zeros(2, x.size(0), 32)
out, _ = self.rnn(x, h0)
out = self.fc(out[:, -1, :]) return out
  • Definice třídy modelu s metodou __init__
  • Definice rekurentní vrstvy self.rnn
  • Definice lineární vrstvy fc
  • V forward() inicializace prvního skrytého stavu nulami
  • Vstup a první skrytý stav předány přes vrstvu RNN
  • Výběr posledního výstupu RNN a jeho předání přes lineární vrstvu
Intermediate Deep Learning with PyTorch

Pojďme si procvičit!

Intermediate Deep Learning with PyTorch

Preparing Video For Download...