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

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

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

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

Я сам с нейросетями не работал, поэтому может упустил в статье параметры тренируемой нейросети, а именно сколько информации, например в байтах, подается на первый слой и сколько всего слоев. И математическая операция сравнения делается в рамках обучаемой нейросети или как то иначе?

подумал что на картинке вольтрон а за него люди думали

(зевая) Разбудите меня, когда оно сможет ответить, кто старше: смордан или сморданёнок.

Просыпайся

Отлично, в синтаксический разбор оно наконец-то научилось.

Это Sonnet последний? Модели от Anthropic вообще в последнее время приятно удивляют, особенно в части понимания нюансов русского языка.

Обычный ChatGPT точно так же отвечает. Токенизаторы как оптимизировали, сразу с такими тонкостями всё прекрасно стало.

Год назал не понимало, увиливало.

Спросите до кучи, кто весит больше — кафон или кафонище.

Но толком не понятно, как сортирует: будто бы по длине слова
Но толком не понятно, как сортирует: будто бы по длине слова

Доходчиво и интересно. Редкость, спасибо!

По теме: выходит, что такая модель только в 2-ходовку умеет? Но если мы изменим архитектуру, оставим только один комплект слоёв (условно "нижние"), замкнём их не на верхние слои, а на самих себя и будем это прокручивать при обучении N раз, то (при условии, что мощность слоя позволяет в себя вместить и факты и обобщения), мы получим внятный механизм рассуждений.

Тоже подумал о том, что, возможно, цепочка рассуждений ограничена только 2-мя шагами. И, в дополнение, есть статья с попыткой объяснения явления гроккинга через понятие цепи (circuit) нейронов (оригинал статьи здесь: https://arxiv.org/pdf/2309.02390). Более внятное объяснение на русском я встретил в тг "Борис опять" от 18.09.2023

Насчет 2-ходовки, то скорее нет. Я такие эксперименты не проводил, но в целом, если у модели есть достаточно "места", то есть слоев, то она может и на большее. Условно, 1 слой для первого шага, второй для второго, и т.п. Непонятно, сколько на 1 шаг нужно слоев, но если увеличивать модель, то и способность рассуждать на большее количество шагов точно появится.

Да, в этот статье тоже используется generalization и memorization circuits. Я не стал использовать эти названия, но схемы есть на рисунках.Коротко, то memorization - когда мы просто все запоминаем, а generalization - обобщающая схема. В примерах с семьей - когда мы идем по жесткому алгоритму:

1. извлекаем связующую сущность
2. передаем 2 отношение дальше
3. ищем конечную сущность.

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

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

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

Просто получается, что нам достаточно обучать всего один слой, замыкая его самого на себя N раз, а не передавая на другой слой. Тогда мы получим один слой, который способен делать любые атомарные операции и на предметах, и на абстракциях. А после обучения инференс мы сможем делать либо тоже итеративно, экономя память, либо налить в GPU бутерброд из N таких слоёв для ускорения.

Собственно, где-то была работа о том, как в Мистрале (кажется) дублировали обученные слои и он от этого сильно хуже не становился.

Наблюдение: загадочная штука: loss растет, вероятность (вес в распределении вероятностей) правильного токена уменьшается, а точность повышается. При loss = 1.8 вес правильного токена ≈ 16% (что, правда, не говорит о распределении весов других 1131 токенов).

Вопрос к автору: Есть ли какие-то другие метрики, по которым можно судить, сходится ли модель к гроккингу или просто вхолостую ворочает матрицы?

ЗЫ: Цифры из формулы для Negative log-likelihood loss и калькулятора на телефоне, могу ошибаться)

Я тоже заметил странность с loss. Это может быть связано как раз с токенайзером, потому что он выделил >< и другие части в отдельные токены, то есть добавил шум. Мне кажется, что если все нормально разделить, то loss как минимум не будет расти. Или, может быть, он еще считает все pad токены - я этому тоже не уделил внимание :(

Еще есть вариант, что при обобщении, вероятности правильных токенов немного уменьшаются и уже условно не 99%, а 80% - из-за этого кросс-энтропия растет, но точность не падает.

80% там и близко нет: p() = exp(-loss), что для loss=1.8 дает те самые ≈16%, что, правда, на 3 порядка больше вероятности при равномерном распределении (1/1132).

Что касается токенизации - «сомнительно, но ок».

Вы не трекали веса/градиенты модели? Может, по ним можно было бы судить, что обучение продолжается?

Неа, можете посмотреть тут https://arxiv.org/pdf/2405.20233

Тут работают напрямую с градиентами, чтобы ускорить гроккинг. Может, найдете ответ на свой вопрос

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

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

Публикации

Истории