ym104432846
Вставьте ссылку на видео из Youtube, Rutube, VK видео
Задайте вопрос по видео
Что вас интересует?
00:00:06
Обучение рекуррентных сетей:
  • Обучение выполняется методом обратного распространения ошибки
  • Рассматривается простая структура сети с одним рекуррентным слоем и тремя временными шагами
00:01:18
Целевая функция и производные:
  • Производные целевой функции по весам полносвязного слоя известны из предыдущих занятий
  • Производная лосса по входу полносвязного слоя обозначена как дельта-игрек 3
00:02:48
Вычисление производных параметров:
  • Производные по параметрам бэ-игрек и тета-игрек вычисляются просто
  • Производная по параметру омега-ю требует учета влияния предыдущих временных шагов
00:08:18
Принцип обратного распространения ошибки:
  • Процесс вычисления производных называется обратным распространением ошибки сквозь время
  • При увеличении слоев сети сложность формул возрастает
00:09:36
Генерация текста с RNN:
  • RNN могут генерировать ответы на каждом временном шаге
  • В задаче генерации текста вычисляется суммарный лосс по всем временным шагам
00:10:22
Планы на следующее занятие:
  • Пересмотр алгоритма обучения и формул обратного распространения ошибки
  • Анализ особенностей и ограничений данного подхода
0: Всем привет. Это 2 видео 2 занятия 2 части Теперин скул. В прошлом видео мы познакомились с идеей устройства рекуррентного слоя и
1: Рекуррентной нейронной сети, а также обсудили, как происходит форвард пасс в такой сети, то есть проход входных данных через сеть и получение ответа. В этом видео мы обсудим, как происходит бэквард пасс. То есть как эта сеть обучается, скажу сразу,
2: Обучается она обычным градиентным спуском, обратным распространением ошибки. То есть мы должны вычислить производные лос функции по всем весам сети. Но в вычислении этих производных есть некоторые нюансы, которые стоит обсудить. Этим мы сейчас и займёмся. Давай
3: Для простоты изложения. И чтобы наши формулы не были слишком громоздкими, представим, что у нас в сети всего 1 рекуррентный слой и после этого небольшой полносвязный слой. И пусть у нас во входящих данных всего 3 момента времени, то есть входящий
4: Текст состоит из 3 слов. Вот так наша сеть разворачивается во времени из изначального скрытого состояния. Аш 0 получается h1 выход сети игрек 1 потом h2 игрек 2 h3 игрек 3 игрек 3 подаётся в полносвязанными. Ой, с параметрам.
5: Омега f c bae f c получается ответ сети игрек шапочкой он подаётся в лос функцию, сравнивается с правильным ответом игрек, и нам теперь нужно посчитать производные лос функции эл по всем весам сети.
6: Заметим сразу вот что мы умеем считать производные лос функции по всем весам полносвязного слоя омега f, c bae f c. Мы это учились делать ещё в предыдущей части ден скул, так что считаем, что это у нас есть, также мы можем посчитать.
7: Игрек 3. Это производная лосса по входу в полносвязный слой. Давайте сразу обозначим на картинке, что это у нас есть вот такой стрелочкой, что у нас есть del по дэ игрек 3.
8: Теперь у нас всего 1 рекуррентный слой и его обучаемые параметры. Их 5 штук омега ю, ви бэ аш и игрек вот такие формулы обновления скрытого состояния и вычисления, выхода слоя каждый раз. Теперь заметим вот что выход.
9: В момент времени 1 и 2 нигде не используется. То есть их в принципе можно вообще не вычислять. На самом деле в рекуррентной сети они не вычисляются. Если не используются, давайте просто их уберём и вычислять не будем. То есть получится, что в момент времени 1
10: 2. Мы вычисляем только обновление скрытого состояния, только обновляем память, запоминаем в память, что нам пришло на вход, и, ну, обновляем скрытое состояние и только в момент времени т. Мы обновляем скрытое состояние и вычисляем выход.
11: Слоя, чтобы подать его потом на ход полносвязной части. Хорошо, давайте начнём вычислять производные лосса по вот этим 5 весам сети. Сначала посмотрим на the и бэ игрек. Заметим, что их вычислить.
12: Очень просто потому что в и б игрек используются только в вычислении игрек 3 нигде больше они не используются, поэтому the all по дв мы можем просто расписать с помощью chain ru это будет de el под игрек 3 на дэ игрек 3 по дв дэ игрек 3 по дв вы.
13: Очень просто. Это просто производная сигмоиды по тому, что внутри скобок умножить на производную того, что внутри скобок по the, то есть h3, а the л по игрек 3, мы уже знаем также просто вычислить дэ эл по the бэ игрек, то есть
14: Считаем, что производные вэ и бэ игрек мы уже вычислили отлично остались производные омега ю и бэ аш а, да, также мы можем вычислить производную дэ.
15: По the h3 её вычислить также просто это будет the all по дэ игрек 3 на дэ, игрек 3 по the h3 дэ игрек 3 по the h3 это также производная сложной функции производная сигмы по тому, что внутри скобок умножить на производную внутри скобок по h3 обозна.
16: Значим, это тоже стрелочкой на нашем рисунке. Вот вот эта стрелочка. Перейдём теперь к параметрам омега ю и бэ аш. На самом деле, вычисление производных омега ю и бэ аш идейно идентичны. Поэтому давайте
17: Сосредоточимся на вычислении производной например, омеги, что такое del под омега дел под омега также расписывается производной сложной функции, как the л. П. Д игрек 3 д, игрек 3 по the omega.
18: Д игрек 3 по the omega, в свою очередь расписывается производной сложной функции заметим, что в игрек 3 от омега зависит только h3, остальное от омега не зависит, поэтому д игрек 3 по the omega можно расписать как da игрек 3 под h3 на.
19: The h3 по the omega. Вот так и теперь заметим последнее, что вот эти 2 значения the all по дэ игрек 3 на дэ, игрек 3 по the h3. Это просто del по the h3. Вот так вот. То есть the all p the омега это the.
20: Пэ дэ h3 на дэ h3 по the omega. The эл пэ дэ h3 мы вычислять умеем, он у нас вот тут уже есть. Вот поэтому нам осталось вычислить дэ h3 по the omega. Отлично. Давайте начнём это делать. Вот чтобы не.
21: Засорять слайд. Я здесь напишу формулу обновления скрытого состояния, а здесь то, что нам нужно вычислить дома, это в итоге вот такое выражение. Здесь нам нужно вычислить дэ h3 the h3 омега расписывается в производной. Вот так за.
22: Что в h3, точнее в h t, от омега зависит 2 компоненты во первых, это омега вот здесь во вторых, аш тэ - 1 тоже зависит от омега, потому что h t - 1, в свою очередь, обновляется за счёт h t - 2 по той же самой формуле в.
23: Которая есть омега, поэтому эта производная расписывается вот так в такую сумму это частная производная дэ h3 по the омега плюс такая производная дэ h3 по д h2 и производная дэ h2 по the omega.
24: Если что, вы можете остановить видео и посмотреть на эту формулу, убедиться, что она правильно записана. Давайте мы возьмём теперь эту формулу и подставим вместо вот этого сюда и раскроем скобки. Получится вот так. То есть вот это теперь равно вот Такому, что
25: Здесь есть интересного. Во первых, заметим, что оказывается, в какой-то момент для вычисления делп омега нам нужно будет вычислить дэ h3 пэ дэ h2. Давайте мы это визуализируем на нашей картинке, что в какой-то момент
26: Нам нужна производная д h3 по h2.
27: Хорошо, теперь из этого всего нужно вычислить дэ h2 по the омега. Все остальное вычисляется тривиально. Ну, мы уже умеем все остальное вычислять. Распишем дэ h2. По the omega оно расписывается той же самой идеей, что мы распи.
28: Да, three под омега вот это. То есть посмотрим опять на это выражение. H2 зависит от омега отсюда и от h1, поэтому расписывается вот в такую сумму возьмём эту сумму и опять же,
29: Ставим сюда вместо вот этого красненькой рамочки получим вот так. В итоге дело омега, это вот такие суммы 3 слагаемых. Что здесь интересного? Опять же заметим, что оказывается в какой-то момент нам нужно вычислить
30: 2 п the h1 давайте обозначим тоже это стрелкой на рисунке вот вверху стрелка говорит, что нам когда-то нужно вычислить производную от h2 пэ дэ h1 она идёт от h2 к h1 и теперь сосредоточимся опять на том, что вычислять нетривиально.
31: H1 под омега, но на самом деле, в этот раз это уже тривиально, потому что h1 зависит от омега. Только здесь, здесь у нас уже аш 0, который вот этот, который изначально инициализированное состояние, оно уже от омега не зависит, потому что
32: Оно не обновляется с помощью никакого другого скрытого состояния. Оно есть изначально, поэтому эта производная просто равна частной производной дэ h1 по омега. Давайте подставим её сюда, получим вот такое вот мы расписали
33: Производная дело дома производная получилась довольно большой, получилась сумма нескольких производных.
34: Но при этом она все-таки получилась. Заметим вот что при вычислении этих производных, оказывается, нам нужно было, грубо говоря, проталкивать нашу производную от последнего момента времени по скрытым состояниям наверх от
35: H3 к h2 к аш. 1 из за этого процесс вычисления производных весов рнн называется обратным распространением ошибки сквозь время или по-английски back погешн фру тайм, то есть в случае обычной полносвязной сети у нас был обычный back.
36: Propagation, а здесь пропагейшен ещё и сквозь время, сквозь время назад ещё раз. Это потому, что мы вычисляем производную h3 по h2, то есть производную нового состояния по состоянию предыдущий момент времени и так далее, и так далее.
37: Понятно, что если мы добавим ещё несколько слоёв в rnn, то подсчёт градиентов усложнится, потому что в этом случае нам нужно будет считать не просто градиенты h2 по h3, но они будут ещё течь из выхода следующего.
38: Слоя через игрек 2, ваш 2, 1 и так далее. Наши формулы будут ещё более громоздкими. Давайте мы эти формулы записывать не будем. Их там можно записать в лаконичном виде с помощью суммирования. Но я думаю, вы представляете, как это может выглядеть. В общем то, идея все равно остаётся.
39: Тоже это все равно будет. Там все равно просто вычисление градиентов. Ещё надо сказать, что бывают такие задачи, в которых рнн не генерирует ответ только на последнем шаге, как у нас в случае классификации, а генерирует ответ на
40: На каждом шаге. С такой задачей вы уже в следующий раз познакомитесь. Это задача генерации текста. В случае генерации текста рнн в каждый момент времени что-то генерирует и это что-то сравнивается с чем-то правильным с помощью лос функции. В этом случае сеть обучается.
41: Просто на сумме лоссов в каждый момент времени, то есть вычисляются ллосы сети по ответам. В каждый момент времени суммируются и градиенты пропагейтить обратно. Там формула будет ещё сложнее. Её мы записывать опять же не будем. Но я думаю, вы представляете, как она могла бы выглядет.
42: Итак, в этом видео мы обсудили работу алгоритма обновления весов нейросети. Обратное распространение ошибки сквозь время узнали, почему она так называется. А в следующем видео мы ещё раз посмотрим на этот алгоритм, на эти формулы и поймём, какие есть у этой формулы и
43: Верно.