Pull to refresh

Comments 25

Спасибо за глубокий анализ Мамбы - это действительно открывает новые горизонты в области Deep Learning.

Давно ждал разбора SSM на Хабре. Спасибо за статью, но, к сожалению, есть что улучшить. Первая часть, до SSM, это мат. аппарат, которому лет 50-60 уже, знакомый любому, у кого был курс Введение в ТАУ. А начиная с SSM изложение комкается, начинают плыть обозначения. Жаль. Может попробуете дополнить, с фокусом именно на второй части?

Спасибо за обратную связь, подумаю как исправить. Про обозначения не совсем понял.

Например, вы пишите, что A_{log} это матрица d_{in} на N, так? И при этом A = -\exp(A_{log}). Для прямоугольной матрицы экспонента, видимо, должна быть поэлементная, а не матричная? Но в первом разделе экспоненты матричные, лучше явно написать, что обозначение меняется.

Но тогда получается, что A это тоже матрица d_{in} на N, правильно? А в первом разделе это была матрица N на N, квадратная, как и положено матрице состояний. Что я упускаю?

С экспонентой действительно можно запутаться, подправил. Хотя в контексте DL обычно ясно, что логарифмическая форма значений параметра используется для лучшей сходимости при обучении.

После параметризации A - больше не матрица, а тензор параметров, который задают авторы по своему усмотрению. Идея квадратной матрицы заключалась в том, чтобы отображать скрытое состояние \boldsymbol{h}в него же обратно (N,N)@(N,1)=(N,1). Здесь логика сохраняется, но уже с дискретным параметром \overline{A_t}, который при поэлементном умножении в главном цикле Selective scan также сохраняет размерность для \boldsymbol{h}.

Сложнее, например, вопрос обстоит с вычислением \overline{A}, которое происходит так:(b, L, d_{in})(d_{in}, N) \rightarrow (b, L, d_{in}, N), что не является ни поэлементным, ни матричным умножением. Однако загромождать эти моменты пояснениями не стал, так как это вопрос уже технический.

Ну так это и есть поплывшие обозначения. Вы меняете размерность объекта, обозначенного буквой A, явно это не проговаривая. :)

Здесь и далее все экспоненты и логарифмы поэлементные.

А в следующем разделе формула \overline{A}(b, L, d_{in}, N) = e^{\Delta A}. Это точно поэлементная экспонента?

Здесь никакой ошибки нет. Я описал математическую модель в классическом виде, указав дефолтные размерности для понимания. Затем в новой главе обозначил переход к глубокому обучению, вводя уже параметры, действительно, под старыми обозначениями. В этом и смысл аналогии перехода. Это статья по DL, поэтому и контекст соответствующий. Подскажите, где вы в DL видели матричную экспоненту? :)

Я и не говорил, что у вас ошибка. Я сказал, что у вас поплыли обозначения. :)

Обозначения не поплыли, а были явно переинициализированы в новом контексте с указанием новых размерностей. Словами также проговорено.

Здесь логика сохраняется, но уже с дискретным параметром \overline{A_t}

Сложнее, например, вопрос обстоит с вычислением \overline{A}, которое происходит так: (b, L, d_{in})(d_{in}, N) \rightarrow (b, L, d_{in}, N), что не является ни поэлементным, ни матричным умножением.

Как \overline{A_t} получается из \overline{A}? На сколько я понимаю, матрица \overline{A_t} должна быть квадратной N на N?


Как уже сказано здесь, индекс t указывает на индекс элемента тензора вдоль оси L:

В цикле по t вдоль оси L (по каждому токену) пересчет всех скрытых состояний \boldsymbol{h} и соответствующих им выходов \boldsymbol{y}:

Соответственно, \overline{A_t} имеет размерность (b, d_{in}, N).

Тогда я снова теряюсь в обозначениях. Как мне читать h_{t+1} = \overline{A_t} h_t? Это же не тензорное произведение? Недоумение тем сильнее, что у вас точно такое же выражение записано ранее для SSM, только с h_k вместо h_t...

В итоге пришлось идти читать оригинальную статью на ArXiV, чтобы понять, что вы имели в виду. Спасибо за мотивацию! :)

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

Уже в процессе, спасибо!

Действительно, спасибо!

Я тут один такой , который читает и ни фига не понимает. Статья класс , хотя для чего она мне в жизни пригодится не знаю , но все же читаю . Теперь я точно знаю , что мамба это не только змея и сайт знакомств!

Здравствуйте Кирил,

Для того чтобы провести дискретизацию, совсем не обязательно было упражняться в интегрировании и идти окольными путями. Линейное дифференциальное уравнение тем и хорошо, что это прямое указание о том каким будет состояние через бесконечно малый промежуток времени. Интегрировать нужно было бы если дискретизация была бы для НЕ бесконечно малого шага, но вынеся из под знака интеграла "Bx_k" ("что x=const внутри интервала Δ " (C) ) вы уже неявно, но существенно, опираетесь на тот факт что Δ -> 0. А потому, дискретизацию можно провести попроще:

Я думаю так будет понятней более широкому кругу читателей.

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

На сколько я понимаю, в имплементации метода используется именно e^{A \Delta}, а не приближение I + A \Delta.

Это верно для \overline{\boldsymbol{A}}, но для\overline{\boldsymbol{B}} экспонента раскладывается.

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

Sign up to leave a comment.

Articles