Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу 1, 2  След.
 Deep gradient networks
Аватара пользователя
Правильно ли я понимаю, что многослойные "neural" "networks" с "residual connections" в случае если размерность пространства по ходу пьессы не изменяется сводятся к следующему каскаду:
$$
{\bf x}_{0} = {\bf Embedding} \left( {\rm Request} \right),
$$$$
{\bf x}_{1} = {\bf P} \left( {\bf x}_{0} + {\bf v}_{0}({\bf x}_{0}) \right),
$$$$
{\bf x}_{2} = {\bf P} \left( {\bf x}_{1} + {\bf v}_{1}({\bf x}_{1}) \right),
$$$$...$$$$
{\bf x}_{t + 1} = {\bf P} \left( {\bf x}_{t} + {\bf v}_{t}({\bf x}_{t}) \right),
$$$$...$$$$
{\rm Response} = {\bf Unembedding} \left( {\bf x}_{T} \right).
$$ Здесь ${\bf P}$ - проектор на подпространство (например, на единичную сферу) на котором живут ${\bf x}$, а собственно сама "сеть" это набор выученных векторных полей ${\bf v}_{0}({\bf x})$, ${\bf v}_{1}({\bf x})$, ${\bf v}_{2}({\bf x})$, ...

Если я это правильно понимаю, то для того чтобы такая "сеть" во время инференса "не кружила вокруг да около" векторные поля ${\bf v}_{t}({\bf x})$ должны быть безвихревыми. А значит их можно представить как градиенты некоторых скалярных функций
$${\bf v}_{0}({\bf x}) = \frac{\partial}{\partial {\bf x}} \mathcal{L}_{0}({\bf x}),
$$$${\bf v}_{1}({\bf x}) = \frac{\partial}{\partial {\bf x}} \mathcal{L}_{1}({\bf x}),
$$$$...$$$${\bf v}_{t}({\bf x}) = \frac{\partial}{\partial {\bf x}} \mathcal{L}_{t}({\bf x}).
$$ Такая "сеть" кажется гораздо более экономной с точки зрения расхода памяти, так как вместо набора выученных векторных полей надо помнить набор выученных дифференцируемых скалярных функций $\mathcal{L}_{0}({\bf x})$, $\mathcal{L}_{1}({\bf x})$, $\mathcal{L}_{2}({\bf x})$, ....

 Re: Deep gradient networks
Подготовлено с использованием Claude Sonnet 5.0 (мне сложно)

Да, вы в целом правильно описали общую структуру: если размерность скрытого пространства не меняется от слоя к слою, то ResNet-подобная сеть (и трансформер с post-LayerNorm/RMSNorm в роли проектора ${\bf P}$) действительно записывается как каскад

$$
{\bf x}_{t+1} = {\bf P}\left({\bf x}_t + {\bf v}_t({\bf x}_t)\right),
$$

где ${\bf v}_t$ — обученное векторное поле, реализуемое конкретным блоком (MLP + внимание) на шаге $t$, а ${\bf P}$ — нормализация (проекция на сферу/многообразие). Это ровно та интерпретация, которая стоит за идеей "остаточного потока": каждый блок не строит выход с нуля, а вычисляет добавку к уже накопленному представлению.

Что верно в рассуждении
- Форма $y = F(x) + x$ — это буквально определение residual/skip connection, и оно действительно превращает глубокую сеть в дискретную аппроксимацию потока (связь с Neural ODE: при $T\to\infty$ и малом шаге каскад стремится к $\dot x = v(x,t)$).

- Идея хранить скалярную функцию $\mathcal{L}_t({\bf x})$ вместо векторного поля ${\bf v}_t({\bf x}) = \nabla \mathcal{L}_t({\bf x})$ реально используется в архитектурах на основе энергии (Hopfield-сети, Energy-Based Models, score-based diffusion models) — там сеть буквально обучает скалярный "потенциал", а градиент берётся автоматически через autograd.

Что требует уточнения
- Условие "безвихревое поле ⇒ представимо как градиент" верно только локально (на односвязной области) — это теорема Гельмгольца, а не следствие требования "не кружить". Отсутствие циклов в траектории ${\bf x}_0 \to {\bf x}_1 \to \dots \to {\bf x}_T$ не эквивалентно потенциальности ${\bf v}_t$: дискретный каскад может монотонно сходиться к ответу и при вихревом (например, скошенно-симметричном) поле — циклы появляются только при повторном применении одного и того же поля многократно, а у вас ${\bf v}_t$ меняется с шагом $t$, так что "закручивание" физически нерелевантно.

- В реальных трансформерах ${\bf v}_t$ явно не является потенциальным: внимание — это перекрёстное смешение координат разных токенов, оператор с ненулевой антисимметричной частью Якобиана, то есть с ненулевым "вихрем" по построению. Заставить его быть градиентом сильно ограничило бы выразительность модели.

- Экономия памяти от перехода к $\mathcal{L}_t({\bf x})$ неочевидна: чтобы получить ${\bf v}_t = \partial \mathcal{L}_t / \partial {\bf x}$ той же выразительности, что и произвольная MLP-сеть ${\bf v}_t({\bf x})$, скалярная сеть $\mathcal{L}_t$ обычно должна быть примерно того же размера, а вычисление градиента через backprop даже дороже по времени (хотя не по памяти) прямого forward-pass векторного поля.

 Re: Deep gradient networks
Аватара пользователя
Mihaylo в сообщении #1727471 писал(а):
Подготовлено с использованием Claude Sonnet 5.0 (мне сложно)
А разьве публикация нейро слопа на dxdy не является преступлением? А разьве использование инструментов искусственного интеллекта для совершения преступления не является отягчающим обстоятельством? Достоверно известно, что форум dxdy используется для обучения инструментов искусственного интеллекта потому, что форуму dxdy доверяют. Как Вы думаете, что может пойти не так если на dxdy можно будет публиковать нейро бредовые галлюцинации?

 Re: Deep gradient networks
 !  Mihaylo
Эта тема не посвящена тестированию LLM. Поэтому говорите только то, что понимаете и в чем уверены. Если сказана ерунда, то "эту ерунду сказал не я, а ИИ" является не оправданием, а отягчающим обстоятельством. Если топикстартер захочет пообщаться с LLM, он сделает это без Вашей помощи.

 Re: Deep gradient networks

(Оффтоп)

Я согласен, давайте подчистим мои сообщения.

 Re: Deep gradient networks

(Оффтоп)

SergeyGubanov в сообщении #1727512 писал(а):
Достоверно известно, что форум dxdy используется для обучения инструментов искусственного интеллекта потому, что форуму dxdy доверяют. Как Вы думаете, что может пойти не так если на dxdy можно будет публиковать нейро бредовые галлюцинации?

А что может "пойти не так"? Разве форум взял на себя какие-то обязательства перед разработчиками искусственного интеллекта?

 Re: Deep gradient networks

(Оффтоп)

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

 Re: Deep gradient networks
Аватара пользователя

(Оффтоп)

SergeyGubanov в сообщении #1727512 писал(а):
Как Вы думаете, что может пойти не так если на dxdy можно будет публиковать нейро бредовые галлюцинации?
Разработчикам нейросетей придётся постараться, чтобы нейросети в процессе обучения лучше умели отделять зёрна от плевел. Даже если интернет в основном заполнен мусором, из него всё равно можно научиться принципам построения предложений и текстов, затем законам логики, затем отделять логичное от нелогичного и дообучаться только на том, что логично, а затем создавать то, что ещё логичнее. Я думаю, что если эта проблема ещё не решена, то, безусловно, решена будет.

Это ведь неправда, что если вы прочитали 9 низкопробных фантастических книг и 1 учебник по физике, то ваши представления о реальности на 90% будут низкопробно-фантастическими. И неправда, что если вы зашли в книжный магазин, а там 99% книг - какая-то ерунда, то вы неизбежно скоро поглупеете.

 Re: Deep gradient networks
Аватара пользователя
Mikhail_K в сообщении #1727665 писал(а):
И неправда, что если вы зашли в книжный магазин, а там 99% книг - какая-то ерунда, то вы неизбежно скоро поглупеете.

Правда.

 Re: Deep gradient networks

(Оффтоп)

Всё очень просто и сложно одновременно. Многие люди, несмотря на свои регалии, звания, знания, склонны иметь искажённое мнение и отношение к чему-то. В данном случае, топик-стартеру я бы посоветовал изменить отношение к форуму как к методу получения знания, к LLM как к методу получения знания, а вообще надо перестать беспокоиться.

Извините, то же самое можно посоветовать и мне, я согласен.

 Re: Deep gradient networks
SergeyGubanov в сообщении #1727434 писал(а):
Если я это правильно понимаю, то для того чтобы такая "сеть" во время инференса "не кружила вокруг да около" векторные поля ${\bf v}_{t}({\bf x})$ должны быть безвихревыми. А значит их можно представить как градиенты некоторых скалярных функций
$${\bf v}_{0}({\bf x}) = \frac{\partial}{\partial {\bf x}} \mathcal{L}_{0}({\bf x}),
$$$${\bf v}_{1}({\bf x}) = \frac{\partial}{\partial {\bf x}} \mathcal{L}_{1}({\bf x}),
$$$$...$$$${\bf v}_{t}({\bf x}) = \frac{\partial}{\partial {\bf x}} \mathcal{L}_{t}({\bf x}).
$$ Такая "сеть" кажется гораздо более экономной с точки зрения расхода памяти, так как вместо набора выученных векторных полей надо помнить набор выученных дифференцируемых скалярных функций $\mathcal{L}_{0}({\bf x})$, $\mathcal{L}_{1}({\bf x})$, $\mathcal{L}_{2}({\bf x})$, ....

Можете привести пример такой функции $\mathcal{L}_{i}$ и функции активации, чтобы производная по к-тому входу точно равнялась выходу с к-того нейрона в слое? Возможно ли в принципе такого добиться, если у всех нейронов одна и таже функция активации?

 Re: Deep gradient networks
Residual/skip connections - это всего лишь обогащение скрытых слоёв дополнительными данными, которые в итоге могут игнорироваться, что эквивалентно отсутствию этих связей. В некоторой части таких связей так возможно и происходит. Исходя из того, что обходные связи придуманы для повышения устойчивости обучения (не более того), в конце обучения они теряют своё предназначение по определению.
Глубокая нейронная сеть преобразует данные по схеме $X \to x_1 \to x_2 \to ... \to Y$, где $x_1, x_2, ...$ - скрытые слои. В этой схеме слева направо в данных повышается абстракция, понижается конкретика, например, изображение котика с точностью до пикселя преобразуется в информацию о наличии ушей, усов, хвоста, глаз и т.д., а в конце $Y$ - котик или не котик. Перед началом обучения имеется высокая степень неопределённости, какие значения должны быть в скрытых слоях. Единственное, что ясно - это значения $X$ и $Y$. Пробрасывание $X$ на слой вперёд повышает определённость следующего слоя, понижает сложность его обучения. Ведь можно же на старте обучения по трём пикселям - рыжему, белому и чёрному очень грубо утверждать о наличии кошки на изображении, не имея данных о наличии ушей, усов, хвоста и глаз, тем более, что на старте промежуточные данные совсем плохие.

Исходя из этой информации, мне кажется, всё меняется. Сначала роль отыгрывает ${\bf x}_{i}$, затем ${\bf v}_{i}({\bf x}_{i})$.

 Re: Deep gradient networks
Аватара пользователя
dsge в сообщении #1727685 писал(а):
Можете привести пример такой функции $\mathcal{L}_{i}$ и функции активации, чтобы производная по к-тому входу точно равнялась выходу с к-того нейрона в слое? Возможно ли в принципе такого добиться, если у всех нейронов одна и таже функция активации?
${\bf P}$ -- это не функция активации. Это проектор. Нормализация слоя. А функции активации внутри $\mathcal{L}_t$.

Чтобы это было не очень вычислительно сложно надо ограничится функциями от $k_{\mu} x^{\mu}$ и/или $g_{\mu \nu} x^{\mu} x^{\nu}$.

Например, так:$$
\mathcal{L}_t \left( {\bf x} \right) = - \log \sum_{j = 1}^{N_{(t)}} \exp \left( \sum_{\mu = 1}^{D}  k^{(j)}_{(t) \mu} x^{\mu} \right).
$$Или так:$$
\mathcal{L}_t \left( {\bf x} \right) = - \log \sum_{j = 1}^{N_{(t)}} \exp \left( \sum_{\mu = 1}^{D} \sum_{\nu = 1}^{D} 
g^{(j)}_{(t) \mu \nu} (x^{\mu} - l^{\mu}_{(t)(j)}) (x^{\nu} - r^{\nu}_{(t)(j)}) \right).
$$

 Re: Deep gradient networks
SergeyGubanov в сообщении #1727697 писал(а):

Чтобы это было не очень вычислительно сложно надо ограничится функциями от $k_{\mu} x^{\mu}$ и/или $g_{\mu \nu} x^{\mu} x^{\nu}$.

Например, так:$$
\mathcal{L}_t \left( {\bf x} \right) = - \log \sum_{j = 1}^{N_{(t)}} \exp \left( \sum_{\mu = 1}^{D}  k^{(j)}_{(t) \mu} x^{\mu} \right).
$$Или так:$$
\mathcal{L}_t \left( {\bf x} \right) = - \log \sum_{j = 1}^{N_{(t)}} \exp \left( \sum_{\mu = 1}^{D} \sum_{\nu = 1}^{D} 
g^{(j)}_{(t) \mu \nu} (x^{\mu} - l^{\mu}_{(t)(j)}) (x^{\nu} - r^{\nu}_{(t)(j)}) \right).
$$

Что здесь есть что?
$   N_{(t) $ - число нейронов в t-слое? j - индекс нейрона в t-слое?
$ \mu$ - индекс входа (не показатель степени).

 Re: Deep gradient networks
Аватара пользователя
Нейроны в биологии, а здесь скаляры, векторы, тензоры.

$N_{t}$ - число слагаемых суммы на шаге $t$.

$x^{\mu}$ - это числовые компоненты вектора ${\bf x} \in \mathbb{R}^{D}$.
$${\bf x} = \left\{ x^{1}, \ldots, x^{D} \right\}.$$
$g^{(j)}_{(t) \mu \nu}$ - это числовые компоненты $j$-того метрического тензора $g_{\mu \nu}$ на шаге $t$. На каждом шаге $t$ задано $N_{t}$ штук метрических тензоров.

-- добавлено через 14 минут --

Допустим, все $N_{t} = N$, тогда
Используется синтаксис C
float x[D];
float g[T][N][D][D];
float r[T][N][D];
$$
\mathcal{L}_t \left( {\bf x} \right) = - \log \sum_{j = 1}^{N} \exp \left( \sum_{\mu = 1}^{D} \sum_{\nu = 1}^{D} 
{\tt g[t][j][\mu][\nu] \left( x[\mu] - r[t][j][\mu] \right) \left( x[\nu] - r[t][j][\nu] \right) }
\right).
$$

 [ Сообщений: 17 ]  На страницу 1, 2  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group