Рекурентні нейронні мережі

Середній рівень Deep Learning з PyTorch

Michal Oleszak

Machine Learning Engineer

Рекурентний нейрон

  • Прямопоточні мережі
  • RNN: мають зворотні зв'язки
  • Рекурентний нейрон:
    • Вхід x
    • Вихід y
    • Прихований стан h
  • У PyTorch: nn.RNN()

Схема звичайного RNN-нейрона: нейрон застосовує ваги й активацію, отримує вхід x і видає виходи y та h; h подається назад у нейрон.

Середній рівень Deep Learning з PyTorch

Розгортання рекурентного нейрона в часі

Схема рекурентного нейрона. На кроці часу 0 він отримує входи h0 та x0 і виробляє виходи y0 та h1.

Середній рівень Deep Learning з PyTorch

Розгортання рекурентного нейрона в часі

Схема рекурентного нейрона. На кроці часу 1 він отримує входи h1 та x1 і виробляє вихід y1.

Середній рівень Deep Learning з PyTorch

Розгортання рекурентного нейрона в часі

Схема рекурентного нейрона. На кроці часу 2 він отримує входи h2 та x2 і виробляє виходи y2 та h3.

Середній рівень Deep Learning з PyTorch

Глибокі RNN

Схема двох рекурентних нейронів, що утворюють шар. На кожному кроці часу виходи y передаються іншому нейрону.

Середній рівень Deep Learning з PyTorch

Архітектура «послідовність → послідовність»

  • Подайте послідовність на вхід, використовуйте всю вихідну послідовність
  • Приклад: розпізнавання мовлення в реальному часі

Схема архітектури: на кожному кроці часу новий вхід; усі виходи y на кожному кроці позначені зеленим як використані.

Середній рівень Deep Learning з PyTorch

Архітектура «послідовність → вектор»

  • Подайте послідовність на вхід, використовуйте лише останній вихід
  • Приклад: класифікація тем тексту

Схема архітектури: на кожному кроці часу новий вхід; використовується лише останній вихід y з останнього кроку, позначений зеленим.

Середній рівень Deep Learning з PyTorch

Архітектура «вектор → послідовність»

  • Подайте один вхід, використовуйте всю вихідну послідовність
  • Приклад: генерація тексту

Схема архітектури: є лише один вхід на першому кроці, тоді як усі виходи y на кожному кроці позначені зеленим як використані.

Середній рівень Deep Learning з PyTorch

Архітектура encoder–decoder

  • Спочатку подайте всю вхідну послідовність, потім використовуйте вихідну
  • Приклад: машинний переклад

Схема архітектури: у першій частині (encoder) на кожному кроці надходять входи, але виходи ігноруються; у другій (decoder) входів більше немає, зате використовуються всі виходи з кожного кроку.

Середній рівень Deep Learning з PyTorch

RNN у 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
  • Оголосіть клас моделі з методом __init__
  • Оголосіть рекурентний шар, self.rnn
  • Оголосіть лінійний шар, fc
  • У forward() ініціалізуйте перший прихований стан нулями
  • Пропустіть вхід і початковий стан через шар RNN
  • Виберіть останній вихід RNN і передайте його через лінійний шар
Середній рівень Deep Learning з PyTorch

Давайте потренуємось!

Середній рівень Deep Learning з PyTorch

Preparing Video For Download...