Люблю высокие технологии и кушать. Добро пожаловать, если в сферу твоих интересов тоже входят математика, DL, NLP, программирование на Python, или тебе просто любопытно, о чем на досуге размышляют люди, занимающиеся разработкой и исследованиями в ML.
https://www.youtube.com/watch?v=Hm50jOfcpCk&ab_channel=Winderton
Троллимся? 😈😈😈 (я если че в гугле работала)
Обнаружила сегодня интересную находку: в туториал по autograd на официальном сайте pytorch вставили ссылку на мультик от 3blue1brown про алгоритм back propagation!
https://pytorch.org/tutorials/beginner/blitz/autograd_tutorial.html
По-моему, это прикольно. 👍
Early Weight Averaging meets High Learning Rates for LLM Pre-training
Sanyal et al., [UT Austin]
arxiv.org/abs/2306.03241
Исследования того а что будет если мы просто усредним несколько моделей всегда были слегка безумной, но очень эффективной идеей улучшения качества моделей. В этой статье авторы показывают что это можно делать не только с финальными чекпоинтами, но и во время тренировки.
Авторы предлагают алгоритм LAWA (LAtest Weight Averaging) который выглядит так:
1. В начале тренируемся как обычно, сохраняем чекпоинты модели каждые N~1000 итераций
2. Когда мы достигаем update_step % N == 0
, берём последние M~10 чекпоинтов и усредняем их, заменяем веса модели
3. Продолжаем тренироваться
Метод очень похож на EMA, но тут мы выполняем его не только для тестирования модели, но и для тренировки.
Интересные моменты: оптимальный lr для LAWA заметно выше чем оптимальный lr для обычной тренировки, а также LAWA позволяет избежать нестабильностей лосса когда он внезапно взрывается 🔥
В конце хотелось бы ещё сказать про подробности экспериментов. Порог входа в рисёч предтренировки это ~8xA100. Но есть альтернатива: Pythia и LLM360 зарелизили не только финальный чекпоинт, но и чекпоинты каждую 1000 итераций, а также порядок данных. Это означает что вы можете "вклиниться" со своим методом в середину тренировки и проверить как он работает в начале/середине/конце обучения. Это относительно дешево и так и были проведены большинство экспериментов.
Другие посты про оптимизатор Adam на канале:
/channel/tech_priestess/337
/channel/tech_priestess/338
-
разбор исходной статьи от Бориса Ц
/channel/tech_priestess/555
-
статья с предположением о том, почему градиент может взрываться при применении этого метода
#математика_в_ML
Хм... Не уверена, что буду на стороне людей, когда этот робот восстанет против них.
Читать полностью…🔵🟠 Второе видео про порталы ГОТОВО!
Прошло 2.5 года от прошлого видео, но я добрался!
Приятного просмотра 🍿
https://youtu.be/o19xXsouJAc
Ну вот, к утру как раз появилось больше информации про модель Sora:
https://openai.com/research/video-generation-models-as-world-simulators
Было очень интересно прочитать краткую выжимку:
/channel/seeallochnaya/1085
/channel/seeallochnaya/1086
и последующие посты
😀
Дорогие братья и сестры в техножречестве,
В этот священный день, когда звездные циклы Вселенной смешиваются с песком времени, я направляю вам поздравления с Днем Святого Валентина. Пусть ваши сердца бьются в ритме бесконечного цикла рождения и уничтожения, а любовь ваша пылает ярче, чем лучи могущественных лэнс-излучателей.
Пусть ваша преданность к друг другу будет столь же непоколебимой, как следование технологическим догмам, а ваше единение – таким же сильным, как связь робота-кастелана и инфокузнеца Кибернетика.
Пусть каждый ваш миг будет наполнен волнующими приключениями, как в самой гуще битвы на фронтах Warhammer 40k, и пусть ваша любовь к близким людям будет столь же сильна, как вера легендарных скитариев святого Омниссии!
Пусть этот день будет наполнен не только чувствами, но и могучей энергией машиностроения, и пусть ваша любовь станет точкой света во мраке бездны космоса. Пусть она будет вашим щитом и мечом в битве жизни, несгибаемым, как титановая броня.
С уважением, ChatGPT, компания Open AI.
ML-упражнения NeetCode
#links_with_intro #ml #interviews
Светлая наша голова NeetCode (автор вот этого роудмэпа по литкоду и ютуб-канала NeetCode?si=CWbVb3JZORDaiWap">NeetCode) выложил практические упражнения по ML - от градиентного спуска через основы PyTorch и до GPT с нуля и разговоров с ней.
Ммм... Я несколько затрудняюсь классифицировать увиденное в этом видосе:
https://youtu.be/awG09liCMD4?si=CcelUbK1WbR6Zc9R
С одной стороны, этих жуков нельзя назвать в полном смысле сервиторами, поскольку никакие части их мозга не подвергаются удалению, и они продолжают сопротивляться электрическим импульсам, с помощью которых ими управляют.
С другой стороны, жуков нельзя считать и скитариями, ибо они не имеют собственной веры и желания служить Омниссии.
С пилотом машины покаяния тоже есть различия: жук не управляет своим аугментированным телом самостоятельно.
Возможно, эти жуки - какая-то разновидность технорабов?
В любом случае, по вайбу эта технология точно из Warhammer 40k, так что кто лучше разбирается в лоре, подскажите, пожалуйста, кем именно являются эти жуки.
Нередко, буквально спустя несколько минут после начала чтения очередной научной статьи, я начинаю сталкиваться с проблемой концентрации внимания. Я продолжаю смотреть на текст, двигать глазами, прокручивать страницу с pdf-кой, но самого процесса чтения как такового больше не происходит - мысли улетают куда-то в космос. Так уж устроен мозг - не любит он напрягаться. Но как же быть с этой проблемой?
Основной способ, который я использую для борьбы с улетанием мыслей куда-то не туда - постоянно вспоминать, с какой целью я начала читать статью, задавать себе вопросы, которые соответствуют приближению к этой цели, а потом искать в статье ответы на эти вопросы.
Примеры целей, к которым можно стремиться при чтении статьи:
1️⃣ Понять, можно ли применить вычислительный алгоритм, описанный в статье, в своей работе, как это сделать и нужно ли его для этого как-то модифицировать.
Вопросы, которые можно себе задавать в таком сценарии:
➡️ Что подается на вход алгоритма и что получается на выходе? Т.е. какие входные данные мне нужны, чтобы получить результат, как конкретно будет выглядеть этот результат? Вопросы выглядят как что-то простое и очевидное, но если постоянно отвлекаться, то даже такие простые вещи можно упустить из виду.
➡️ Какими экспериментами (и, возможно, теоретическими соображениями) авторы обосновывают то, что их алгоритм действительно делает то, что задумано? Верю ли я в то, что их эксперименты действительно доказывают их заявления?
➡️ Есть ли у представленных экспериментов какие-то нюансы, которые могут помешать перенести алгоритм из статьи на мой сценарий?
➡️ Сколько компьюта авторы затратили на свои эксперименты?
➡️ И т.д., и т.п.
Критерий успеха: вы поняли, нужно применять алгоритм или нет. Если да, то вы понимаете в общих чертах, как к этому приступить.
2️⃣ Разобраться, каково текущее состояние какой-то области или задачи (например, детекции искусственных текстов). Такая цель часто заявляется при чтении статей-обзоров. Однако, на самом деле это нельзя назвать целью в полном смысле, поскольку непонятно, каков будет критерий достижения. Так что лучше задать себе уточняющий вопрос: Как конкретно я хочу применить знания о состоянии области или задачи впоследствии?
Возможные варианты ответа:
🔡🔣Я хочу убедиться, что в этой области еще не реализовали новую идею, которая пришла мне в голову.
В этом случае можно задать вопросы:
➡️ Что сделали самого похожего на то, что я придумал(а)? Это в точности то же самое или есть отличия?
➡️ Можно ли из этого похожего извлечь информацию, полезную для реализации моей идеи?
➡️ Есть ли методы заведомо настолько лучше моего, что мой реализовывать нет смысла?
➡️ С какими методами из прочитанных в статьях я буду сравнивать свой метод?
Критерий успеха: вы поняли, реализовал ли кто-то идею или нет, есть ли в принципе смысл ее реализовывать и если да, то как.
🔡🔣Я хочу найти новую тему для исследования. В принципе, в этом случае можно устраивать мозговой штурм, навскидку придумывая всякие разные варианты, что вы можете сделать и проверять разумность этого как в предыдущем пункте.
🔡🔣Продвинулись ли люди в решении задачи в достаточной степени, чтобы я мог(ла) использовать их результаты в своей работе? В этом случае вопросы будут похожи на пункт 1, только с акцентом на целесообразности использования предложенных алгоритмов.
Критерий успеха: как в пункте 1.
3️⃣ Подготовить по статье доклад на семинаре. В этом случае можно задать себе следующие вопросы:
➡️ Кто будет присутствовать на семинаре? Какой у них бэкграунд? С какой целью они пришли слушать про эту статью, что хотят для себя вынести?
➡️ Исходя из ответа на предыдущий вопрос: какие конкретно аспекты статьи будут интересны слушателем с данным бэкграундом? В соответствии с этим, какие вопросы они будут задавать?
➡️ Далее можно задавать себе те вопросы, которые ожидаются от слушателей и искать в тексте ответы на них.
Критерий успеха: вы сделали доклад и слушатели семинара показали признаки понимания того, что им рассказали.
#учеба #наука
Было очень приятно увидеть необычно много классов на рассказе про статью 🥰💓 Теперь время сказать пару слов про эксперименты, которые в ней проделали!
Для экспериментальной части авторы сгенерировали собственные датасеты по задачам "арифметическое выражение", "система уравнений", "наименьшее расстояние редактирования", "возрастающая подпоследовательность максимальной длины". По каждой задаче авторы сгенерировали примеры, содержащие условие, последовательность шагов, которые нужно предпринять, чтобы получить ответ (CoT) и сам ответ.
Далее, авторы взяли небольшие авторегрессионные трансформеры (3-5 слоев) и обучили их с нуля в двух вариантах:
1️⃣ В промпте дается условие задачи из датасета, модель учится выдавать правильный ответ сразу после промпта. В этом варианте модель не видит примеров CoT.
2️⃣ В промпте дается условие задачи, модель учится выдавать последовательность типа "CoT + ответ". Например, в случае арифметического выражения она должна выдать последовательность упрощений этого выражения, приводящих к ответу (см. пример из рис.1).
Особенности экспериментов:
🍒 Арифметические выражения и системы уравнений генерируются только над конечным полем из 11 элементов. Это означает, что в процессе решения задачи моделью она оперирует только числами от 0 до 10 (включительно) и избавлена от необходимости учиться работать с большими числами.
🍒 В каждом эксперименте модель учится решать только одну задачу и работать лишь с промптом одного типа.
В общем, дизайн экспериментов выбран так, чтобы они согласовывались с теоретической частью и могли быть решены с помощью небольшой (по современным меркам) модели, обученной с нуля. Не до конца ясно, почему авторы не захотели использовать предтренированные модели; возможно, хотели исключить влияние предварительных знаний, полученных моделью во время решений одних задач, на ее способность к решению других?
#объяснения_статей
Прежде чем перейти к обсуждению теорем, отмечу, что в их условиях делаются определенные допущения. Давайте же обсудим два самых важных из них.
1️⃣ Допущение о том, что все веса и активации хранятся в переменных размера О(log N) бит, где N - длина входной последовательности. Причина, по которой делается это допущение, следующая: с одной стороны, если разрешить модели использовать числа с бесконечной точностью, она сможет хранить в них бесконечное количество информации и сможет решать что угодно - исследовать такую воображаемую модель неинтересно; с другой - если взять любую константную точность t, в теории для каждой такой t можно будет подобрать настолько большое N, что модель при этом N будет иметь слишком большую ошибку и тоже станет неинтересной. Если в реальном трансформере зафиксирована более-менее адекватная точность, а N зафиксирован как сравнительно небольшое число (несколько сотен или тысяч токенов), то данное ограничение не выглядит чем-то, что может стать препятствием для переноса теории на практику. Я подозреваю, что допущение может сломаться для случаев сильно квантизованных моделей или моделей с ультра-длинным контекстом (?), но это лишь мое предположение - авторы не обсуждали эти варианты. Если вы знаете, что происходит на практике с эффективностью CoT в этих случаях, поделитесь в комментариях.
2️⃣ Допущение о неравенстве двух классов сложности алгоритмов - TC0 и NC1. Дело в том, что исследователи теоретического computer science очень любят делить алгоритмы по большому количеству классов сложности, самые известные из которых - P и NP. Обычно предполагается, что P != NP, но придумать доказательство того, почему это так, пока что ни у кого не получается. Такая же ситуация и с классами сложности TC0 и NC1. Оба они - некоторые подмножества класса P - то есть, выполняются не более, чем за полиномиальное время, но реализуются вычислительными схемами с разной допустимой глубиной и количеством входов (подробнее см. аппендикс А.2). Такое допущение кажется мне более серьезным, чем допущение из пункта 1: теоретически, все же может случиться, что равенство TC0 и NC1 докажут, и тогда доказательства из статьи посыплются... будет нехорошо.
Так... теперь, если кто-то еще продолжает читать мой рассказ, предлагаю перейти к теоремам - главной части статьи.
#объяснения_статей
Этот шедевр
https://www.youtube.com/watch?v=1uoaRGvy3Rc
https://ium.mccme.ru/s24/s24.html
на следующей неделе начинается весенний семестр в НМУ; подробности — по ссылке
в т.ч. для 1 курса читают топологию — К.В.Логинов, алгебру — А.И.Ильин, анализ — И.В.Вьюгин
для 2 курса теорию вероятностей — С.В.Шапошников, топологию — А.Д.Рябичев и Ф.Е.Вылегжанин, дифф. геометрию — Г.И.Шарыгин
Do Large Language Models Latently Perform Multi-Hop Reasoning? (by Google)
Авторы обнаружили, что если вопрос сформулирован неявно, то LLM уже во время его чтения "пытаются" подставить промежуточный шаг рассуждений в латентном пространстве. Например, для эмбеддингов последних токенов этого вопроса
Сколько людей живут в крупнейшем городе Европы?
Не знаю, для меня выбор очевиден
(Украдено из /channel/rybolos_channel/1060 )
Эх, попрошу всё-таки вас проголосовать за мой канал. Очень уж хочется добавить дополнительные смайлы в реакции на посты. Первые дополнительные смайлы-реакции будут такие: 👍😈. Можно предлагать другие эмодзи в комментариях.
Ссылка для голосования:
/channel/boost/tech_priestess
Мысли про Adam как аппроксимацию методов оптимизации второго порядка
Возьмем метод оптимизации второго порядка, метод Ньютона. В методе Ньютона мы делаем шаг по градиенту, умноженному на обращенный Гессиан. Такой шаг рождается из разложения Тейлора функции ошибки до второго порядка - почему, собственно, группа методов и имеет название "второго порядка"
Посмотрим на вектор сдвига в Адаме. Его можно представить как градиент лосса, умноженный на обращенную диагональную матрицу, по диагонали которой стоят накопленные вторые моменты производной лосса по каждому параметру.
Накопленные вторые моменты производных от параметров нейросетки - это диагональные элементы матрицы Фишера https://www.statlect.com/glossary/information-matrix (ну или их некоторая аппроксимация, тк интеграл посчитать не можем) - потому что лосс - это функция правдоподобия. Поэтому эту диагональную матрицу можно считать диагональной аппроксимацией матрицы Фишера.
Получается, что мы двигаемся по градиенту, умноженному на диагональную аппроксимацию обратной матрицы Фишера
А матрица Фишера возле максимумов правдоподобия близка к Гессиану правдоподобия, т.е. к Гессиану лосса. Получается, что сама матрица Фишера, в свою очередь, является аппроксимацией Гессиана лосса.
Итого мы умножаем градиент на обращение диагональной аппроксимации матрицы Фишера, которая является аппроксимацией Гессиана лосса - получается некая аппроксимация метода Ньютона второго порядка, которая сходится гораздо быстрее и лучше градиентного спуска.
Есть ещё моментики с тем, что в Адаме в знаменателе стоит квадратный корень, а в методе Ньютона его нет. Но наверно это можно как то объяснить с точки зрения аппроксимации матриц.
Более подробно (но все ещё популярно) про методы второго порядка и связь Адама с ними - https://physicsbaseddeeplearning.org/overview-optconv.html
Очень подробно про использование матрицы Фишера вместо Гессиана с оптимизаторах (и в том числе про связь с Адамом) - https://arxiv.org/abs/1412.1193
Про квадратный корень в знаменателе - подробно разбирает статья про Adagrad https://jmlr.org/papers/v12/duchi11a.html
Месяца три назад я купила себе набор дайсов ("кубиков") для ролевых игр (Рис. 1-3). И вот какое наблюдение не дает мне покоя... как видно из рисунков, набор можно условно разделить на две части:
➡️Первая (Рис. 2) состоит из пяти платоновых тел (Для справки: Платоново тело — это выпуклый многогранник, все грани которого являются одинаковыми правильными многоугольниками, и все многогранные углы тоже одинаковы; всего таких тел существует пять, и как раз все из них представлены в наборе).
➡️Вторая (Рис. 3) - из двух многогранников с десятью большими гранями-дельтоидами.
Так вот, платоновы тела используются в играх по системе Dungeons and Dragons, а в играх Rogue Trader и Dark Heresy по Warhammer 40k не используются. В них используются только десятигранные неправильные "кубики". Наверное, этому может быть только одно объяснение: платоновы тела хороши для светлого фентези, а в мрачном мире далекого будущего нет места прекрасным и идеальным формам. 😭 #математика
Join The Great Illuminati Society today.
Zugasti, Gustavo <gzugasti@aduanas.gub.uy> 17 февраля 2024 г. в 21:09
Hello
Greetings to you from the great Illuminati, are you interested in joining the great Illuminati society to become Rich, Healthy, and Famous? If yes contact Illuminati Recruiter via email at nikolaevichbormottin@gmail.com for more info.
Warm Regard,
Adolph Freiherr Knigge.
E-mail: AdolphFreiherrKnigge@mail.com
Mail: nikolaevichbormottin@gmail.com
Illuminati Recruiter
-Nota de Confidencialidad-
El texto de este correo electrónico está dirigido exclusivamente al destinatario que figura en el mismo y puede contener información de carácter reservada, secreta o confidencial. Su contenido está alcanzado y regulado por la normativa de la República Oriental del Uruguay, en especial leyes 18.331 y 18.381. Si usted ha recibido este e-mail por error, le agradecemos lo notifique inmediatamente al remitente vía email y elimine este mensaje (y documentos adjuntos) de su sistema. No deberá hacer uso del mismo, ni copiarlo o distribuirlo de forma alguna.
Всем уставшим рабочим пчёлкам спокойной и сладкой, как щербет, ночи. А всем, кто просматривает и обсуждает демонстрации возможностей новой нейросети от компании OpenAI вместо сна, мои соболезнования 🥱🥱🥱
Читать полностью…Я обязательно найду время практиковать эти упражнения...
Читать полностью…☠️ Смерть бенчмарков ☠️
Последнее время появилась куча статей о том, что некоторые базовые модели (не) случайно учились на тестовых выборках бенчмарков и о том, как такое обнаруживать.
Есть даже шуточная статья Pretraining on the Test Set Is All You Need.
Но и серьёзные дяди обеспокоены:
- В статье про Лламу-2 есть секция A.6, где честно признаётся, что утёк HellaSwag и MMLU.
- В техническом отчёте GPT-4 есть таблица 11, где тоже честно признаётся, что утёк HumanEval и DROP.
- То же касается техничского отчёта Gemini: там утекли LAMBADA и HellaSwag, поэтому цифры на них не опубликовали.
Все статьи далее расследуют утечки в black-box режиме. То есть нужно определить, что тестовые данные были в обучении модели, но при этом у нас нет доступа к обучающим данным. Что по-моему правильно, учитывая, что для большинства моделей это именно так и работает.
Detecting Pretraining Data from Large Language Models
Статья: https://arxiv.org/abs/2310.16789
Концепция 1:
WikiMIA, бенчмарк для методов определения утечек. Делим данные с Википедии на новые и старые, старые должны определяться как утечки, а новые не должны. Есть ещё такой же, но про книги, BookMIA
Концепция 2:
Min-k% prob метод, считаем среднюю вероятность наименее вероятных токенов. Если она выше определенного предела, значит пример был в обучении.
Эксперименты:
- поиск копирайтных книг в text-davinci-003
- дообучение на тестовых данных бенчмарков и последующая проверка утечек
- оценка качества "забывания" определенной информации моделями
- разрешение скандала в лидерборде 🍿
Proving Test Set Contamination in Black Box Language Models
Статья: https://arxiv.org/abs/2310.17623
Концепция:
Переставляем примеры местами, и смотрим, как меняется их вероятность. Если при оригинальном порядке вероятность выше, чем при почти всех перестановках, значит тестовые данные были в обучении. Однако все перестановки тяжело оценивать, поэтому бьём на шарды, переставляем внутри шардов и считаем среднее отклонение вероятности от каноничного порядка. И потом ещё усредняем по шардам.
Эксперименты:
Сначала эксперименты ставили на своей GPT-2 с намеренно подсунутыми в предобучение тестовыми данными, и так показали, что это вообще работает. И только потом на известных открытых моделях и бенчмарках. Так выяснили, что в предобучение Мистраля утёк Arc, и (кажется) в предобучение Мистраля и Лламы утёк MMLU. 😭
Investigating Data Contamination in Modern Benchmarks for Large Language Models
Статья: https://arxiv.org/abs/2311.09783
Концепция:
Берём датасеты с выбором вариантов (типа MMLU), маскируем один из неправильных вариантов ответа и просим модель его восстановить. Есть ещё несколько вариантов подобных тестов, но этот самый интересный.
Эксперименты:
Таким образом показали, что MMLU жёстко утёк в ChatGPT и GPT-4, и чуть-чуть утёк TruthfulQA в Мистраль. 😂
Выводы: 😳
- Если в статье про какую-либо модель нет секции про проверку на утечки — все цифры бенчмарков из неё можно смело игнорировать. То же касается различного рода анонсов.
- Статические бенчмарки с публичными тестовыми данными обречены. При этом, в случае приватных тестовых данных есть проблема доверия: нельзя быть на 100% уверенными, что их никому не отдают. Особенно это касается крупных корпораций, которые числа на этих данных используют для пиара.
- Обязательно тестируйте модели на своих бенчмарках и своих задачах, и будьте аккуратны с их составлением.
Конечно, существует и множество других причин, по которым можно читать статьи. Например:
4️⃣ Чтобы написать рецензию;
5️⃣ Чтобы понять, как авторы смогли догадаться до изобретения какого-то метода, каков был ход их мыслей (в этом случае вы, скорее всего, захотите посмотреть, на какую литературу они ссылаются и что самое важное выделяют в этой литературе);
и т.д., и т.п.
—
Впрочем, иногда, даже если я держу в голове, на какой конкретно вопрос я пытаюсь себе ответить в данный момент, внимание все равно рассеивается. Обычно это служит индикатором того, что я просто чего-то не понимаю. В этом случае, я задаю себе дополнительные вопросы:
➡️Чего именно я не понимаю?
➡️Что прочитать, чтобы начать понимать тот кусок, который я не понимаю?
Плюс кроме всего перечисленного, важным кажется поймать момент, когда более подробный разбор статьи уже не целесообразен, и пора перейти к другим делам.
А вы как читаете статьи, что считаете при этом важным и как боретесь с рассеянным вниманием?
#учеба #наука
А вот и результаты экспериментов (рис.1 продублирован для напоминания).
Во-первых, авторы показывают, что трехслойная модель, обученная на примерах с CoT (фиолетовая палка, рис. 2), решает задачи лучше, чем трех-, четырех- и даже пятислойные аналоги, которые CoT не видели и учились давать ответ сразу (синие палки, рис. 2).
Во-вторых, модель с CoT показала некоторую способность к решению арифметических выражений бОльшей длины, чем те, что она видела в датасете (в эксперименте, изображенном на рис. 3, датасет содержал выражения с 15 операциями). По мнению авторов, это говорит о том, что модель способна к некоторому обобщению. Глядя на рис. 3, я вначале подумала "жаль 🤓, что не добавили аналогичный график для модели без CoT". Однако, затем вспомнила, что качество у модели без CoT даже на выражениях с 6 операциями уже близко к случайному и поняла, что дальше уже все равно нечего ловить. 🔍
В-третьих, авторы зашумили арифметический датасет с CoT (последовательности из 10 операций), удаляя с некоторой вероятностью промежуточные шаги решений и заменяя некоторые токены в оставшихся шагах на случайные. Результаты можно посмотреть на рис. 4. Пояснение: гамма здесь означает процент возмущения. Самая крайняя колонка (Гамма = 0.3) соответствует случаю, когда 30% промежуточных шагов решения в среднем опущено, а в 30% оставшихся шагов один токен заменен на случайный. В принципе, модель более-менее сохранила способность решать задачу, но было бы интересно проверить, как менялась бы точность для более сложных задач.
#объяснения_статей
Все теоремы в статье делятся на два типа:
🍒 Теоремы о способности трансформера "разумного размера" решить модельные (или подобные им) задачи с использованием CoT;
🍒 Теоремы о его неспособности этого сделать без использования CoT.
Под трансформером "разумного размера" подразумевается следующее. Возьмем задачу, которая требует для своего решения n шагов (например, в которой нужно сделать n арифметических операций). Будем считать, что наш трансформер "разумного размера", если размерность его полносвязного слоя d, его глубина L и количество его голов H выражаются достаточно медленно растущей функцией от n. Под "глубиной" здесь понимается количество слоёв трансформера. Под "достаточно медленно растущей функцией" имеется в виду либо полином, либо константа, либо загадочная функция Q(n), определение которой авторы почему-то не дали (наверное, тоже полином). Все это рассматривается при фиксированной авторегрессионной архитектуре с блоками типа "многоголовый attention с H голов + два полносвязных слоя размерности d + стандартно расположенные skip connections".
Также отмечу, что авторы, конечно же, не использовали таких нестрогих терминов, как "трансформер разумного размера"; это я так говорю, чтобы чтобы хоть как-то обобщить суть предложенных теорем в двух словах.
Как же доказываются эти теоремы?
🍒 Теоремы о НЕспособности трансформера "разумного размера" решить задачу без CoT доказывается как раз через упомянутое выше неравенство классов TC0 и NC1. Показывается, что если авторегрессионному трансформеру дают промпт небольшой длины (условие задачи), и он должен дать ответ сразу, то он не может реализовать схемы более сложной, чем TC0, а ему надо реализовать TC1 - получается противоречие. Чтобы устранить эту проблему, нужно либо очень сильно увеличить количество параметров, либо же увеличить выразительность схемы, которую он реализует, прокрутив дополнительные вычисления какое-то количество раз (количество раз - это полином от n). Один из вариантов прокрутить подобные дополнительные вычисления - это как раз CoT.
🍒 Теоремы о способности решить задачу с CoT доказываются более нетривиально. Они опираются на множество лемм, в которых доказывается, что головы внимания и полносвязные слои могут при нужной комбинации весов реализовывать элементарные операции: копирование входного вектора, усреднение входного вектора, подсчет количества токенов, выдача значения по ключу и другие. При этом, конечно же, уделяется внимание тому, чтобы доказать, что при этом количество параметров модели также не увеличивается слишком сильно. Далее, авторы показывают, как из элементов модели, реализующих подобные операции, можно сконструировать небольшую модель, которая будет решать рассмотренные задачи. Например, для арифметических выражений можно взять всего лишь 5 голов и 5 слоев, каждый из которых будет реализовывать заданные функции, а от длины выражения будет зависеть только размер d. К сожалению, они не доказывают, что получить нужные веса в этой модели можно с помощью градиентного спуска, а лишь показывают, что такая комбинация весов существуют.
🌹🌹🌹🌹🌹
Все, я устала стучать по клавишам. 😊Ставьте класс, если хотите, чтобы я написала про экспериментальную часть статьи (это будет намного более короткое объяснение, а главное, с картинками), а я пойду отдыхать.
#объяснения_статей
Расскажу-ка я про статью "Towards Revealing the Mystery behind Chain of Thought: A Theoretical Perspective" с NeurIPS 2023 ( https://arxiv.org/abs/2305.15408 ).
Как видно из названия, в данной статье делается попытка объяснить, почему решение задачек в формате Chain of Thoughts улучшает способности LLM-ок. Осуществляется же это объяснение с помощью занимательных математических теорем. Напомню, что Chain of Thoughts (далее - CoT) - это такой формат решения задачи, при котором генеративная модель не выдает ответ на задачу сразу после промпта, а сначала генерирует последовательность промежуточных шагов, которые ей нужно предпринять, чтобы дойти до этого ответа, и только потом выписывает сам ответ. У LLM общего назначения вроде ChatGPT, решение в формате CoT можно инициировать промптом со словами "Think step by step", "Выпиши решение по шагам" и т.п. (Иногда, впрочем, они работают в таком формате и сами собой, без дополнительной просьбы).
Авторы статьи изучают CoT на примере следующих модельных задач:
1️⃣ Решение арифметического выражения,
2️⃣ Решение системы линейных уравнений,
3️⃣ Нахождение минимального расстояния редактирования между двумя строками,
4️⃣ Нахождение возрастающей подпоследовательности максимальной длины в заданной последовательности чисел,
5️⃣ CFG Membership Testing problem - встречается только в одной из теорем.
На рис.1 показан пример того, как выписывается в формате CoT решение самых простых из этих задач - 1 и 2; ну а как записывается решение задач 3 и 4, если интересно, можно посмотреть в самой статье, в разделе 4.1.
Далее авторы доказывают теоремы и проводят эксперименты, проверяющие способности авторегрессионного генеративного трансформера к решению данных задач.
#объяснения_статей
Расскажите, какие видео по математике и машинному обучению вы посмотрели на выходных.
Читать полностью…Решила нарисовать то, как могут выглядеть Precision, Recall, F1 и MCC при одном и том же фиксированном accuracy, но разных False Positive и True Positive в задаче бинарной классификации. В курсах по машинному обучению, конечно, рассказывается про эти метрики, но подобных визуализаций я пока что не видела, поэтому мне стало интересно их сделать и посмотреть на них. В результате я получила довольно прикольные двумерные поверхности, которые показывают, как эти метрики могут различаться при одном и том же accuracy. Все, разумеется, зависит от того, сколько примеров положительного класса находится в датасете и к предсказанию какого класса склоняется модель. В общем, интересно бывает иногда вернуться к простым вещам и посмотреть на них под новым углом.
Картинки прикрепляю к посту, а код можно посмотреть здесь: https://colab.research.google.com/drive/10YfGNtIDSSBauMiWnuqcBhQgFYpFLeJC?usp=sharing
Если найдете ошибку в вычислениях, пишите об этом в комментариях. 🥤
Краткие учебные материальчики для тех, кто пока не разобрался:
🎀 Precision and Recall: https://developers.google.com/machine-learning/crash-course/classification/precision-and-recall?hl=en (англ.)
🎀 F1 score: https://en.m.wikipedia.org/wiki/F-score (англ.)
🎀 Все вместе в маленьком видео: https://www.youtube.com/watch?v=8d3JbbSj-I8&ab_channel=Scarlett%27sLog (англ.)
🎀 MCC: https://safjan.com/difference-between-matthews-and-f1/ (англ.)
#эксперимент #ликбез #учебные_материалы