Как стать автором
Обновить

Глубокое обучение: Алгоритм обратного распространения ошибки. Теория и реализация. С нуля

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров8.8K
Всего голосов 21: ↑17 и ↓4+14
Комментарии12

Комментарии 12

Я давно занимаюсь нейросетями, но вот прямо с первого абзаца - абстрагируясь от этого знания, понимаю лишь одно, что читаю очередную статью очередного математика, в которой ничего не понятно, потому что математики наверное не умеют писать статьи.
Что за Т, почему он и вектор и показатель, где на картинке Z.... а дальше просто можно не читать.

Просчитался... Но где?

Там, где T в качестве показателя - это не показатель, а обозначение матричной операции под названием "транспонирование". Я просто даже не подумал, что у кого-то может возникнуть такой вопрос (просто если вы знакомы с матричными операциями, то как вы могли подумать про то, что вектор возводится в степень вектора, это вообще как?).

На картинке изображена общая архитектура, обычно переменную Z не обозначают, так как подразумевается, что нейрон сразу выводит значение, которое было обработано нелинейно. Плюс ко всему, в статье и так слишком много фактов, я просто физически не могу продумать все факты за один раз. Я вообще в первый раз слышу о том, чтобы кто-то возводил вектор в степень вектора.

Тем более, если вы занимаетесь нейросетями, то должны знать про различия между целевыми значениями (targets) и операцией транспонирования. Кроме того, я специально сделал ручной расчет, чтобы все было наглядно и понятно. Еще в самом начале я написал содержание, из которого следует, что, если вы что-то не поняли в обозначениях, то нужно посмотреть на ручной расчет и убедиться, что я не возвожу вектор в степень вектора.

\begin{pmatrix} x_1 & x_2 \end{pmatrix}^T = \begin{pmatrix} x_1 \\ x_2 \end{pmatrix}

Давно хотел спросить, а зачем это Т во все книги пихают, почему сразу не записать вертикально? Это просто чтобы вектор горизонтально написать?

Это нужно для того, чтобы матрично умножать каждую строку матрицы на вектор-столбец, получается скалярное произведение вектора-строки на вектор-столбец. Так запись удобнее, если везде писать вектор как столбец, то будет много места занимать. А в программировании, если не транспонировать, то выйдет ошибка, что неправильная форма матрицы. В статье в реализации я просто использую список чисел, но во фреймворках и в numpy векторы представляются в виде двумерного массива или матрицы векторов, если не транспонировать, то алгоритм по матричному умножению не сможет работать, так как индексы элементов матриц не смогут быть считаны.

\begin{pmatrix} w_{11} & w_{12} \\ w_{21} & w_{22} \end{pmatrix} \cdot \begin{pmatrix} x_1 \\ x_2 \end{pmatrix} = \begin{pmatrix} w_{11} x_1 + w_{12} x_2 \\ w_{21} x_1 + w_{22} x_2 \end{pmatrix}

Если вектор X будет горизонтально расположен, то матричное умножение осуществить не получится.

Автор ответил на вопрос, но я резюмирую и отвечу с другой стороны.

Итак: да, всё правильно сказано, Это T пихают ровно затем, чтобы не писать вертикально, как положено, а горизонтально.

Причина проста: внутри текста очень хочется экономить вертикальное расстояние и по максимуму линеаризировать запись. Например,

  • Дроби стараются писать в строку A/B, а не в два этажа \tfrac{A}{B}

  • Индексы в пределах и суммах пишут в нижнем правом индексе, а не внизу: \textstyle\lim_{x \to 0} f(x)

Это не касается выключных формул, но и в них могут писать так по инерции.

Мне и таким как я это объяснять не нужно, я уже съел свой кактус.
Это нужно писать в статье, ведь очевидно, что она рассчитана на абсолютных новичков, а людям которые уже что-то умеют, он нее проку нет.
Статья на стыке программирования и математики, поэтому (и вообще хороший тон изложения материала) требует разъяснения всех водимых обозначений без пересечений по символике, никаких "обычно" и "по умолчанию", ведь то что по умолчанию программисту, не поймут математики и наоборот.
Да это требует сил, но вы уже потратили добрую половину, так может стоит довести до конца?

Добавил, что T в верхнем индексе - транспонирование, и добавил Z на картинку.

Объясните пожалуйста кто-нибудь, за что мне поставили отрицательный рейтинг. Может быть я чего-то не понимаю или не знаю

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

  1. Если вы уж начали с матриц, то формулы можно так же в виде матриц и писать

  2. Выводы формул и код если они большие лучше убрать в спойлеры, а на виду оставить лишь итог

Убрал вывод формул и некоторый код в спойлеры, вроде стало получше. Ну с матрицами думаю вроде ок, там показаны матричные операции с переменными, а не с самими матрицами, так было бы более громоздко

Это одна из 100 статей, где после слов «реализуем с нуля» не пишут import torch.

Математика тут важная и она достаточно проста, да читать сложно, но дифуры выглядят куда устрашающе) ++rep

p.s. я б еще для приятностей глазу прикрутил тензорборду и всякие графички с распределениями ( tsne в помощь)

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории