Вывод: хотя я не нашел много интересного в этом видео, в нем были некоторые важные концепции, такие как Gated Recurrent Unit (GRU).

[47:28]

Основная идея заключается в том, что у нас есть два вентиля: z и r. Мы используем эти ворота, чтобы настроить, сколько старой информации мы хотим использовать по сравнению с новой информацией. Например, z может брать 40 % информации из h и 60 % из h~. То же самое с р. Более формально z — это то, насколько сильно нужно обновить мое скрытое состояние, а r — насколько сильно удалить скрытые состояния. Я думаю, что на картинке ниже более ясно показана идея.

Одна вещь, о которой упомянул Джереми и которая меня действительно шокировала, заключалась в том, что когда он выпадал, он увеличивал количество скрытых узлов в слое. Это нечто очевидное, о чем я никогда не думал. Например, если вы сначала хотите иметь 100 скрытых узлов на слой, а затем сделать 50% отсев, то будет только 50 скрытых узлов на слой. Вот почему вы должны сделать количество узлов в каждом скрытом слое больше, чем изначально.

Обычный способ оптимизации модели таков.

optimizer = torch.optim.Adam(model.parameters(), lr=1e-3)

Но когда мы хотим использовать несколько скоростей обучения или что-то еще, у нас есть это.

optimizer = LayerOptimizer(otim.Adam,model,1e-2,1e-5)

Когда вы выполняете генерацию текста на уровне символов, модель часто дает намного лучшие результаты, когда потери уменьшаются даже немного. Совет Джереми по этому поводу заключается в том, что когда вы получаете хоть какой-то уровень текста, который может быть понятным, но, возможно, не очень хорошим, вы близки к цели. Потренируйтесь еще немного, и вы сможете генерировать текст на уровне человека.

[1:02:06]

Вернемся к компьютерному зрению.

Ciraf10 — это набор данных небольших изображений. Многие исследователи жалуются, что у них нет ресурсов для проверки своих моделей, и тогда они используют сеть изображений. Image net изображения намного больше, поэтому обучение с ним требует больше времени и ресурсов.

Опять же, отличная вещь, которая была очевидна после того, как услышала, что это ядро. Джереми объяснил, что мы можем присвоить каждому пикселю собственный вес и произвести произведение между ними, но намного эффективнее взять область 3x3 и присвоить ей один вес.

Полностью сверточная сеть = все слои являются сверточными слоями, кроме последнего слоя

Отступы — это количество нулей, которые нужно добавить вокруг изображения. Благодаря отступам модели легче распознавать объекты, которые являются краями изображения. Шаг означает, сколько шагов нужно делать каждый раз. Таким образом, обычно шаг равен единице, затем ядро ​​перемещается на один пиксель вправо, а конец строки — на один пиксель вниз. Если мы установим его 2, то он будет перемещаться на 2 пикселя за раз.

BatchNorm решает проблему, с которой мы столкнулись, когда стали увеличиваться веса и градиенты. BatchNorm нормализует все слои, которые делают веса в некотором диапазоне.

(x-self.means) / self.studs * self.m + self.a

Помните, что и отсев, и нормализация партии должны быть отключены, когда вы тестируете свою модель, потому что эти вещи делают модель хуже на этапе тестирования.

~ Ланкинен