Люблю высокие технологии и кушать. Добро пожаловать, если в сферу твоих интересов тоже входят математика, DL, NLP, программирование на Python, или тебе просто любопытно, о чем на досуге размышляют люди, занимающиеся разработкой и исследованиями в ML.
Теория графов в проекте про дубликаты статей
#math #projects
Вдогонку к предыдущему посту: математическая формулировка задачи + эксперименты в подтверждение.
https://yorko.github.io/2023/scaling-laws-near-dups/
Формулы все еще не идеальны, но хотя бы не ASCII, не придется полоскать глаза йодом.
Пересказ без математики:
- почти-дубликаты обнаруживают кучу всякого интересного научного фрода
- замерял, что в Эльсивире примерно у 4% статей есть почти-дубликат (иначе – 96% статей оригинальны)
- перед тем как раскатывать решение на всех основных издателей, надо было понять, а что будет с процентом оригинальных статей в датасете из всех статей всех основных издателей
- предложил модель случайного графа для отношения "быть почти-дубликатом"
- модель предсказывает, что с увеличением выборки процент оригинальных статей падает экспоненциально
- в экспериментах модель неплохо подтвердилась
- то есть действительно, во "всей науке" можно обнаружить намного больше фрода, связанного с дубликатами статей, чем в рамках одного издателя, пусть и большого
Случайно наткнулась на очень милый препринт, называется CatFLW: Cat Facial Landmarks in the Wild Dataset ( https://arxiv.org/abs/2305.04232 ).
Его авторы создали датасет с разметкой facial landmarks (ключевых точек лица) для кошек и котов. Ключевые точки лица (или, в данном случае, мордочки) - это те точки, которые отмечают положение на лице определенных элементов, присутствующих плюс-минус на всех лицах (например, внутренних уголков глаз), но имеющих разное положение в зависимости от конкретного лица, от его выражения и т.п. В случае людей landmark points используются, соответственно, для того, чтобы распознавать лица или их выражения, а также чтобы нацеплять на них всратые маски в Тик Токе.
На рис. 1 можно видеть пример разметки: отмечены точки по контуру глаз, зрачков, ноздрей, на границе ушек котика и другие.
Авторы отмечают, что их датасет содержит намного больше ключевых точек, чем аналоги (см. рис. 2). Также они рассказывают, что в процессе разметки использовали модель-разметчик, которая сперва пыталась самостоятельно отметить нужные точки, и только потом человек поправлял ее результат, если это было необходимо. Полученные поправки, соответственно, были использованы для дальнейшего обучения модели-разметчика, которая в результате размечала все лучше и лучше (human in the loop). Это сэкономило авторам много времени.
Авторы надеются, что с помощью этого датасета можно будет натренировать более совершенные модели для детекции эмоций котиков, в частности, для детекции испытываемой животными боли. В перспективе это может помочь нам лучше понимать животных и лучше о них заботиться.
#объяснения_статей
Короче, я придумала экспериментальную систему для уменьшения количества тупых комментариев. Теперь каждый раз, когда человек утверждает в комментариях что-то невежественное (не спрашивает, не предполагает, а именно утверждает), будет происходить следующее.
1. Сначала ему (или ей) будет дана ссылка на учебные материалы (например, видос или статью), дабы очистить свою душу от техноереси путем приобретения новых знаний (Я буду благодарна, если душеспасительные материалы буду скидывать не только я, но иногда и другие, а то у меня не всегда есть на это время). Если человек ознакомится с материалами и вернётся к обсуждению только после их прочтения и понимания, то все будет ок.
2. Однако, если человек откажется их читать и продолжит набрасывать 💩 на вентилятор вместо того, чтобы учиться, то начнётся отсчёт количества техноеретических комментариев. Это будет выглядеть как мои сообщения "техноересь 1/3", "техноересь 2/3", "техноересь 3/3" (за нормальные комментарии счётчик увеличиваться не будет, а будет увеличиваться только за те, в которых чел упорствует в ереси).
3. При достижении 3 еретических комментов из 3 возможных, участник переводится в режим Read Only до конца месяца.
4. В начале каждого месяца техноеретикам, набравшим максимальное количество еретических комментов и получившим Read Only, будет объявляться амнистия, и они смогут снова комментировать. Однако, после каждой амнистии еретика, количество возможных еретических комментариев для него будет уменьшаться на 1. Т.е. если человек уже побывал в Read Only в предыдущем месяце, то в следующем его лимит будет только 2 еретических комментария, затем - только 1, а затем - 0 (т.е. будет улетать в Read Only сразу при написании новых глупостей).
Выглядит, конечно, душно, но так придумано для того, чтобы люди не боялись писать в комментариях, т.к. сразу никто не будет идти в Read Only, а всегда будут выдаваться предупреждения, с помощью которых человек поймет, что конкретно делает не так, а также с чем ему надо ознакомиться прежде чем продолжать дискуссию (ну, а если не поймет, придется посидеть подумать 🤷♂️).
Также я в курсе, что все это очень субъективно, и не все будут соглашаться с тем, какие комментарии еретические, а какие нет, но делать нечего - как-никак, я адепт тоталитарного культа Механикус
🤷♂️🤷♂️🤷♂️
Поставлю тег #объяснения_статей , чтобы было потом легко найти эти два поста. ⬆️
Очень удобно, что в них не только рассказано про статью, но и собрано множество ссылок по теме расширенного контекста в трансформерах и уменьшения их вычислительной сложности.
Walking Down the Memory Maze: Beyond Context Limit through Interactive Reading
Howard Chen, Ramakanth Pasunuru, Jason Weston, Asli Celikyilmaz
Статья: https://arxiv.org/abs/2310.05029
Вечная проблема трансформеров -- ограниченный контекст и необходимость работать с длинными входами. Для решения проблемы уже существует множество подходов. Это и “просто” увеличение размера окна контекста, как правило совмещённое с какой-то модификацией механизма внимания. Про множество таких подходов мы писали типа вариантов sparse attention и/или linear attention или хотя бы не квадратичных, коих уже миллион, например Reformer (/channel/gonzo_ML/176), Longformer (/channel/gonzo_ML/292), Linformer (/channel/gonzo_ML/397), Big Bird (/channel/gonzo_ML/381) и т.п. Где-то рядом здесь также находится вариант с экстраполяцией позиционных эмбеддингов. Другие способы решения включают введение рекуррентности, и про многие их таких решений мы тоже писали. Эта ветка прослеживается начиная с Transformer-XL, Compressive transformer (/channel/gonzo_ML/165), Feedback memory (/channel/gonzo_ML/508), RMT (https://arxiv.org/abs/2304.11062), к предшественнику которого даже я приложился (https://arxiv.org/abs/2006.11527). Здесь же рядом retrieval-augmented models, про которые тоже было достаточно, например Unlimiformer (/channel/gonzo_ML/1507). И ещё есть подход с агентами, которые могут работать с частями текста и выполнять какие-то действия, тот же WebGPT (/channel/gonzo_ML/1140) или различные варианты итеративного промптинга. Но всё равно этого не хватает.
Текущая работа предлагает интересное альтернативное решение под названием MemWalker. Метод работает в два этапа.
Первый этап, построение memory tree, дерева памяти. Дерево содержит узлы, суммаризирующие куски входных данных. Для этого длинная входная последовательность нарезается на кусочки, влезающие в контекст модели. Каждый кусочек суммаризируется в текст, а несколько таких саммари далее суммаризируются в саммари следующего уровня. Так возникает древесная иерархическая структура. Дерево не зависит от запроса, который будет задаваться модели, так что его можно просчитать заранее.
По сути используются два промпта для генерации саммари, один для листьев (саммари из куска текста), другой для узлов (саммари из других саммари). Для узлов делаем суммаризацию стольких саммари, сколько влезает, потом повторяем для оставшихся.
Второй этап -- навигация. При получении запроса, MemWalker проходит по дереву в поисках релевантной информации, начиная с корня. И как только набрал её достаточно, генерирует ответ.
Здесь тоже два промпта, один для листьев (leaf prompt), другой для узлов (triage prompt). В каждом узле LLM получает саммари из всех дочерних узлов и в промпте её просят выбрать (с обоснованием, через Chain-of-Thougth, CoT с “First provide reasoning to compare the summaries before you make the decision“) в каком из пассажей наиболее вероятно содержится ответ на вопрос. В статье также написано, что если там ничего нет, то надо уйти в родительский узел, но по промпту я этого не увидел. Если дошли до листа дерева, то модель либо принимает его и отвечает на вопрос, либо откатывается к родительскому узлу.
Ответы требуются в определённом формате, если LLM не смогла это сделать, её просят перегенерить. Если не смогла три раза подряд, навигация прерывается с “no answer”. По мере навигации также поддерживается рабочая память, которая добавляется в промпт для листьев. Вроде как это контент родительских узлов.
Вообще логика оркестрации всего этого процесса описана плохо, очень много умолчаний, работа не воспроизводима в чистом виде. Как минимум явно надо трекать, где модель уже была, чтобы при возврате к родителю не уйти снова в тот же узел. Или неявно не позволять через процедуру поиска, но ничего этого не описано.
Проверялись по accuracy на трёх датасетах QuALITY, SummScreenFD, и GovReport из бенчмарка SCROLLS.
QuALITY это multiple choice question answering dataset по длинным текстам из Project Gutenberg. Оттуда взяли 187 примеров.
От почти-дубликатов к импакту на всю индустрию. Часть 1
#career #projects
Пора бы рассказать и про один из самых интересных проектов: с идеей, реализацией, конфликтами, импактом и, внезапно, теорией графов. У нас почти все проекты top-down, то есть менеджеры все разрулили и спустили нам задачу. Но иногда бывает и bottom-up – сам что-то придумал и пошел питчить, толкать в прод. Вот я пришел в компанию и поразмыслил: “Так, издательство. Прилетают 2.5 млн драфтов статей в год. А что если там дубликаты? Небось куча времени вхолостую”. Адаптировали на PySpark реализацию LSH для поиска почти-дубликатов (на тот момент в mllib спарка реализация была экспериментальной, мы в итоге свою со скалы переписали; А как это делать без спарка – рассказывал в этом посте), прогнали на ~5 млн. названий статей – и увидели, что около 25% всех названий имеют почти-дубликат. Глаза слегка на лоб полезли: “что, серьезно? Когда прилетает новая статья, шанс 1/4, что ее уже видели?“
Стали параллельно трубить о находке и делать EDA (вот тут лучше было подождать результатов анализа). Ну, конечно, большинство дубликатов – безобидные, это resubmission, когда статью отвергли, а она после переработки возвращается. Но ~ в 10% случаев это simultaneous submission – когда автор посылает статью в 2 или более журналов одновременно. Вот это не очень, и такое лучше бы ловить в самом начале, хотя бы чтоб сэкономить усилия издателей и ревьюеров.
Даже в такой простой задаче помогает понимание, что число пар – квадратично по числу объектов. То есть для 5 млн статей это ~12.5 трлн. пар, такое не надо втупую считать (вот это приходилось не раз объяснять менеджерам). Еще мы заметили, что куча навзаний – затычки типа “letter to the editor” или “response to reviewers”, и конечно, они дают квадратичное число таких тривиальных пар – такое надо отсеивать.
Пока суть да дело, я поупражнялся в систем дизайне – накидал приложение, где можно ввести название статьи и получить список похожих (там Datasketch LSH, Redis, докер, Fast API, streamlit). Отнес демку издателям, понял, что попал в точку. У них никаких тулов нет, чтоб ловить дубликаты статей, посланных в разные журналы (в Editorial Manager есть только SQL-решение из 60-ых годов, масштабирующееся только на один журнал). Так что поиск дубликатов сводился к чистому дежавю “Хм, знакомая статья” или “Джооон! Ты ж уже эту статью смотрел?”. И тут моя демка уже начала вовсю использоваться, даже несмотря на то, что в индексе был статический дамп статей и самые свежие статьи не показывались.
Прототип есть, валуе замаячило на горизонте (если накидать на салфетке, получалось ~250к/год сэкономленного времени издателей) и тут началось самое интересное (нет) – месяцев 7 пришлось гоняться за одним-единственным менеджером, поскольку у него именно та команда разработки, которая способна мое поделие вкорячить в прод. А там уже OKR, все дела, так просто в новый проект не впишешься, в-общем, пришлось ждать нового года и только заходом через топ-менеджера убеждать, что мы тут не с куском куска пришли, а это надо деплоить.
Продолжение ⬇️
В этот раз хочу поделиться одним подкастом не по теме IT:
https://music.yandex.ru/album/14981880
В этом подкасте есть двое ведущих. Их обсуждения начинаются с разбора различных произведений классической литературы, а потом ведущие постепенно уходят в обсуждение своих мыслей и историй из своей жизни, которые им вспомнились в процессе обсуждения. В общем, получается очень душевно.
Мне очень нравится такое личное восприятие классики, диаметрально противоположное тому, что было в школе, где надо было делать скучные анализы и писать сочинения о том, как учитель понял очередное произведение, восхищаясь "величием" очередного поэта или писателя 🙄
А ещё меня, по меньшей мере, не раздражает то, как ведущие пытаются анализировать психологию персонажей. К сожалению, 99% того, что ассоциируется с психологией в умах обывателей не имеет ничего общего с доказательной (то есть, собственно, научной) её частью, а, напротив, является субъективными домыслами конкретных людей, высказанных при этом в претенциозной, наукообразной форме, с кучей бессмысленных, но умно звучащих терминов. Соответственно, подавляющее большинство книг и подкастов, связанных с так называемой "популярной психологией" воспринимаются мной просто как мусор.
В данном подкасте тоже присутствуют отсылки к недоказательным теориям и техникам, но они, по крайней мере, не преподносятся как научно доказанная истина (которой они не являются). По большей же части ведущие рассуждают о событиях в произведениях просто на уровне какого-то здравого смысла, что для меня как слушателя приемлемо и часто просто интересно.
---
Ещё захотелось поделиться одним эпизодом из моего личного восприятия.
В выпуске "Студент" меня очень тронул момент из жизни психолога Виктора Франкла, которого вспомнили ведущие в процессе обсуждения. Это был момент, где Франкл, находясь в концлагере, представлял себе, как будет рассказывать с кафедры в университете про свои исследования, и это давало ему силы преодолевать ужасы заключения у нацистов. Вот так вот. Человеку давали силы мысли о том, как он будет заниматься наукой в университете, а не какая-то попса про семью, детей, родителей, патриотизм или, не дай бог, булочку с трамвайчиком. 😁😁😁
Меня в принципе очень приободряют любые рассказы про людей, чьи ценности схожи с моими на глубоком уровне, потому что это редкость, особенно, когда это преподносится как нечто достойное уважения. Очень приятно. 😎
#подкасты
Мое лицо, когда я ищу в офисе будку для созвона по научной статье в 8 вечера, а они все заняты какими-то трудоголиками: 🤬
Читать полностью…Давненько у меня не было рубрики #ИИнфобизнес , поскольку в какой-то момент мне стало просто скучно просматривать однотипные предложения "обучения пользования нейросетями" за "скромные" суммы от десятков до сотен тыс. рублей с обещаниями каким-то невероятным образом после этого разбогатеть. Однако, сегодня @denissexy поделился особо забавным образчиком:
https://investfuture.events/neyropraktikum#rec628813584
поэтому я все же потратила полчасика на его лабораторный анализ.
Итак, всего лишь за 12.990 рублей нам предлагают ПЛАН ПОКОРЕНИЯ НЕЙРОСЕТЕЙ ВМЕСТЕ С НЕЙРОСЕТОЛОГОМ (см. Рис.1).
Но что же из себя представляют представители этой современной, безусловно, крайне серьезной профессии? 🤔
Судя по тому же лендингу, нейросетологов на данный момент существует два: Сергей Эль (рис. 2) и Кира Юхтенко (рис. 3). Словно новые Адам и Ева, готовы они дать начало обновленному человечеству, отворив нам врата потерянного рая, из которых изгнали их древних прародителей. Рая, где больше не нужно добывать пропитание в поте лица своего, ведь теперь сорок нейросетей (Рис. 4) будут помогать нам во всем, подобно добрым ангелам (недаром на мемах их порой изображают исполненными очами, словно Херувимов - "премудрость смотрит всюду, имеет повсюду отверстое око" 🤓 - см. рис. 5).
Доброго нейрозайчика вот уже сгенерировали (рис. 6), сразу видно, райская зверушка.
🏅А кто сегодня молодец и взял Trending paper на Hugging Face, обогнав Google DeepMind и Carnegie Mellon?
Правильный ответ: статья про нашу модель Kandinsky, которую мы выложили на arxiv.
⚡А среди отметивших статью Julien Chaumond (CTO Hugging Face) и Patrick von Platten (Team lead Diffusers)! Со вторым мы активно сотрудничаем по внедрению модели в их самый крупный фреймворк генеративных моделей diffusers (18.2k⭐ на GitHub).
Ссылка на hf
P.S. Trending paper — лучшая статья дня в одном из крупнейших мировых комьюнити исследователей и ML разработок Hugging Face.
@complete_ai
Обещанная порция нейромемов от https://www.bing.com/images/create про математику.
Промпты имеют шаблон "Funny meme about <название области математики>". Среди таких областей были, например, differential equations, mathematical analysis и другие.
Попробуйте догадаться, мем про какую область математики изображен на каждой конкретной картинке. 😉
Для большинства картинок это очень просто.
Интересный рассказ с картинками про то, как приноровились менять поведение предтренированной модели, воздействуя непосредственно на её эмбеддинги:
/channel/seeallochnaya/682
/channel/seeallochnaya/685
/channel/seeallochnaya/687
(Три последовательных поста)
Акцент делается на задачах alignment и детекции галлюцинаций. Но я думаю, что если подтвердится информация о том, что эти задачи хорошо решаются, то можно будет приспособить метод и для многого другого.
Основой поста служит статья Representation Engineering: A Top-Down Approach to AI Transparency ( https://arxiv.org/abs/2310.01405 ), надо будет ее разобрать, чтобы понять детали того, как именно "сдвигают" представления в пространстве эмбеддингов для получения нужного эффекта, потому что мне понравилась идея. ✍
#объяснения_статей
В последнее время поговаривают, что в сервисе Image Creator от майкрософта ( https://www.bing.com/images/create/ ) изображения стали генерироваться с помощью DALLE-3. Я не нашла официального подтверждения этой информации от OpenAI или Microsoft, но решила проверить качество генерации опытным путем.
Было быстро замечено, что генерация техножриц на фоне хрущевок (рис. 1) стала куда качественнее, чем 3 месяца назад, когда существовали только DALLE-1 и 2 (можно сравнить с аватаркой канала, которая была сгенерирована в тот период).
Далее я попробовала нагенерировать техножрецов, едущих на гигантских механических боевых котах. Более, чем в половине случаев, генерация оказывалась годной (см., например, рис. 2). Правда, модель время от времени добавляет на картинку лишних маленьких котов (см. рис. 3) и иногда делает картинки с низкой детализацией (рис. 4).
Генерация с большим количеством персонажей стала также лучше, чем раньше (см., например, рис. 5), но модель все ещё часто путает атрибуты разных персонажей. Например, на рис. 6 присутствуют не только жрецы, оседлавшие котов, но и все варианты смешивания жрецов и котов в единое целое.
Кроме этого, получились хорошие результаты по сложным или заведомо невозможным запросам. Например, "Tensor is riding a giant cat", "The fire that is darker than black", "Eerie love of two manifolds", "The Colour Out Of Space" (рис. 7, 8, 9, 10 соответственно).
Три месяца назад он бы так не нарисовал. 🤔
Приложение: рис. 1 - таблица с результатами из реальной статьи, рис. 2 - как могла бы выглядеть она же без неудобного бейзлайна.
#рассуждения
Срочно! Найден секретный промпт для chatGPT-3.5, который превращает его в GPT-4 с бесконечным бесплатным использованием!
Быстрее заходи в chat.openai.com и вбивай промпт, пока OpenAI не починили эту лазейку
Немного об обновлениях в моей жизни...
Недавно я приехала в кампус Хуавей в Китае (г. Дуньгуань) и в ближайший месяц буду жить в здании справа на рис. 1 - это гостиница для командированных. А в здание на рис. 2 я теперь хожу на работу - это офис. 🏃
На территории научного городка есть и много других зданий - для проживания сотрудников, работы, обучения и мероприятий. Самые основные изображены на рис. 3.
Кампус построен вокруг озера (рис. 4), на котором живут черные лебеди (рис. 5), и сегодня я решила прогуляться через это озеро по мосту (рис. 6).
По сторонам же моста я увидела статуи известных деятелей науки и искусства. Там были статуи Пьера и Марии Кюри (рис. 7), Ньютона (рис. 8), Платона с Аристотелем (рис.9-10) и много других.
Этот мост чем-то напомнил мне мост из игры "The Bridge". "Что же ждёт меня там, по ту сторону моста?" - вопрошал герой игры... Задавалась этим вопросом и я, идя по мосту долго-долго.
.
.
.
А по ту сторону моста было кафе, где сидела моя коллега, и мы вместе покушали. 🍿
#о_себе
Откровенно говоря, чем дольше я веду паблик, тем сильнее меня разочаровывают и демотивируют реакции и секция комментариев.
1⃣ Очень демотивирует то, что мемы и объяснения каких-то элементарных вещей набирают в 10 раз больше реакций, чем объяснения сложных вещей. Естественно, я уже наблюдала это и в других пабликах и понимаю, почему это происходит, но это продолжает оказывать демотиваторующий эффект, несмотря на такое понимание.
Конечно, в ответ на это можно услышать совет "ну так превратись в паблик с мемами)))", но мне такой вариант не подходит потому что это убьет всю пользу от паблика лично для меня. Когда я пишу объяснения сложных вещей, я, во-первых, тренирую свою способность объяснять такие вещи (а мне её ещё тренировать и тренировать, пока я не дорасту в этом плане до удовлетворительного уровня), а во-вторых, нахожу людей со схожими научными интересами, с которыми мне потом интересно общаться, а иногда даже делать совместные коллаборации.
Кстати, я не очень понимаю, почему рассказы о моих личных успехах тоже набирают много реакций. 🤔
2⃣ Не меньше демотивирует тупость в комментах, которая начала появляться когда паблик сильно вырос. И под тупостью я имею в виду не просто отсутствие знания каких-то вещей - это как раз само по себе тупостью не является. Под тупостью я имею в виду в первую очередь ту ситуацию, когда человек пишет невежественные вещи с максимальной уверенностью в своей правоте, а когда пытаешься ему объяснить, что ему не хватает знаний по теме, и чтобы высказываться более компетентно, ему надо что-то прочитать и подучиться, он не хочет ничего читать, а лишь дальше упорствует в заблуждениях.
В терминальных случаях человек при этом ещё и выражается крайне нелогично и непоследовательно, выблёвывая какую-то словесную кашу 😬
Казалось бы, один из возможных способов борьбы с этим может заключаться в том, чтобы выдавать бан за тупость, но это будет иметь неприятный побочный эффект: люди, которые плохо формулируют мысли или просто чего-то не знают, но хотят и могут учиться, будут бояться задавать вопросы, чтобы не показаться тупыми и не словить бан. Хотя, как уже было сказано, чего-то не знать - это не тупость, тупость - именно упорствовать в невежестве. Но почему-то многие не понимают эту разницу 😔
А мне бы очень не хотелось, чтобы новички боялись высказываться и спрашивать. Ну и кроме того, я не люблю цензуру.😔
Я очень скучаю по тем комментариям, которые у меня были, когда паблик был в десять раз меньше...
В общем, из-за всех этих явлений желание что-то писать маленькое даже в тех немногих случаях, когда у меня на это есть на это время и энергия. 😔
SummScreenFD содержит диалоги актёров в сериалах, в оригинале сделан для суммаризации, здесь преобразован в вопросы-ответы, отсюда взяли 306 примеров.
GovReport содержит документы из Congressional Research Service и U.S. Government Accountability Office вместе с экспертными саммари. Его тоже преобразовали в вопросно-ответный и взяли 101 пример.
Результаты репортили на этих датасетах, а также на их подмножествах с более длинными документами (для каждого датасета свой порог, от 6 до 12к токенов).
В качестве LLM взяли Stable Beluga 2 (https://stability.ai/blog/stable-beluga-large-instruction-fine-tuned-models), это файнтюн Llama 2 70B. Длина контекста 4096 токенов. Дальнейшего файнтюна не было, few-shot тоже, модель используется в режиме zero-shot.
Макс.количество узлов на уровне дерева было 8, 5, 8, а размер сегмента 1000, 1000, 1200 соответственно для этих трёх датасетов.
Сравнивались с тремя бейзлайнами:
1. Full context window с обрезанием до 4096 токенов.
2. Рекуррентность через суммаризацию, где каждый сегмент 2500 токенов и максимальный размер саммари 500 токенов.
3. Retrieval -- использовали Contriever (https://github.com/facebookresearch/contriever) для выбора сегментов под запрос.
Рекуррентность через суммаризацию работает хуже всего. Этот конкретный retrieval средне. Full context работает неплохо, в зависимости от датасета обрезание лучше либо слева, либо справа. Иногда сравнимо с MemWalker, но в целом последний лучше. На подмножестве особо длинных документов MemWalker стабильно лучше.
Сравнились также с LongChat 13B (16k) и MPT 13B (8k). Они хуже, но они и ощутимо легче по сравнению с 70B моделью. При прогоне MemWalker на LLaMA 2 Chat 13B результат тоже довольно фиговый.
В общем сложно реально оценить, было бы интересно на одной модели с большим контекстом это всё сравнить. Или ещё лучше на разных, включая Claude, у которого контекст 100к токенов, и GPT-4 с 32к. То, что full context даёт очень высокий результат наводит на мысль, что модель с большим контекстом и из коробки хорошо сработает.
Отдельно проверили насколько полезен CoT с этим “First provide reasoning…”. На самом деле для LLaMA 2 Chat 13B и 70B без него лучше. Для Stable Beluga 2 70B с ним лучше. С добавлением рабочей памяти тоже заметно лучше. Авторы считают, что большая instruction-tuned модель с reasoning ability необходима для работы. Но мне честно говоря кажется, что для этого недостаточно проверок сделали, просто у них оказалась модель, работающая через CoT лучше. Необходим ли он, хз.
Во время навигации по дереву откат к родительскому узлу и изменение пути по дереву случается в 15-20% случаев, и из этих случаев в 60-80% получается корректный результат.
Ну в общем любопытная техника. Так можно работать с данными размера большего, чем позволяет размер окна контекста модели. При этом модель не надо как-то дополнительно дообучать. Нужна только логика оркестрирования этой активности. Это снова ложится на концепцию LLM Programs (/channel/gonzo_ML/1584), как, например, и Tree-of-Thought, ToT (/channel/gonzo_ML/1885). И в принципе это такая вариация ToT и есть, только с этапом предобработки (построения дерева).
Не выглядит как прямо game changer, но своё место в арсенале занять может. Кажется, назревает потребность в библиотеке стандартных алгоритмов поверх LLM, такой STL или Boost для новой эры.
От почти-дубликатов к импакту на всю индустрию. Часть 2
#career #projects
Я уже тогда заподозрил, что с этим EM будет сложно, и не прогадал. Это бодрый австралиец, привыкший командовать тихими забитыми прогерами. Так что убеждать его в чем-либо было довольно сложно, даже просто по части английского. Но вот он наконец взялся за нас. Тут, надо отдать должное, передача проекта в руки инженеров была организована грамотно (discovery track с передачей знаний, затем delivery track). Месяца через 2, когда я уже передал свой прототип и на его основе построили решение с куберами-кафками и т.д., мы уже готовы запускаться, прилетает EM и с выпученными глазами говорит, что решение надо делать на полных текстах статей, а просто названий и аннотаций недостаточно (полные тексты примерно на порядок длиннее аннотаций). В этом он тоже прав, вот только понял он это очень поздно, а я его еще за полгода до этого спрашивал типа как, достаточно просто на аннотациях или фул текст нужен. В-общем, надо пстра масштабировать решение ~в 10 раз. Вот тут были жаркие дискуссии, бросать дело на полпути я не хотел, так что можно сказать, что EM победил, и я поставил прочие проекты на паузу, чтоб добить этот.
Свой день рождения я провел размечая данные, и это оказалось очень полезно 🤓 Смотрел на похожие тексты статей, надо было настроить порог похожести, при котором срабатывало бы уведомление. Попутно обнаружилась куча веселых эффектов:
- тут чел заменил в статье пару терминов и опубликовал как новую статью
- вот пара почти одинаковых статей, опубликованных в разных журналах, вообще они должны быть отозваны по-хорошему
- видны еще пары вроде бы разных стате, но с почти одинаковыми аннотациями
- так же точно можно ловить salami slicing – когда берется длинная статья, нарезается на куски и эти куси публикуются как отдельные статьи.
И наконец, paper mills, про которые я писал в посте про Research Integrity. Оказывается, многие из них тоже можно ловить простым LSH. Есть шаблонные статьи, например, в химии или молекулярной биологии – вставил пару названий химических соединений, прогнал скрипт – на выходе новая статья. Недурно и продать такую статью остро нуждающемуся хирш-гроккеру.
И таким образом, начав с проекта, оптимизирующего затраты, я нашел еще россыпь других применений той же идеи и стал активно заниматься Research Integrity, то есть научным антифродом.
Попутно я стал ходить на митинги организации, собирающей акул представителей всех основных паблишеров. Тут свои политические приколы: данными делиться, конечно же, никто не хочет, но как-то вместе бороться с paper mills и simultaneous submission хочется, отсюда и 3rd party. И так постепенно мы с инженерами передали нашу технологию (хех, LSH, не больно-то know how) так, что теперь проверка simultaneous submissions раскатана на все основные журналы.
Закончим пост не на корпоративных играх, а на математике. Пытаясь ответить менеджерам на разумные вопросы “а как много дубликатов мы ожидаем во всей науке в целом?” и “имеет ли экономический смысл масштабировать решение?” я внезапно пришел к формулировке задачи в терминах теории графов. Есть статьи (вершины графа) и отношение “быть почти-дубликатом” (ребра). Поскольку издатели не обмениваются данными, граф – disjoint, т.е. ты можешь померять сходство статей (соединить две вершины ребром) в рамках только своей базы данных со статьями (то есть только внутри своего подграфа). В такой интерпретации уникальным, оригинальным статьям соответствуют изолированные вершины. Вопрос: по мере того как добавляются новые вершины (публикуются новые статьи) как будет меняться процент связных вершин (то есть процент статей, имеющих почти-дубликат)? Тут повешу cliff hanger: строгая постановка задачи и математические выкладки – в следующий раз #todo. Да и это надо не в телеге делать, пожалею себя и вас, обойдемся без ASCII-формул.
Смерть авторства
🤖 Натыкались ли вы на рилсы в ютубе, где робот начитывает какой-нибудь анекдот на фоне залипательного видео? Честно признаться, я даже периодически смотрю такие видосы. Да и не я один – они вполне популярны и собирают миллионы просмотров.
⏲ Буквально вчера я наткнулся на подробный гайд, как генерировать такие видео полностью автоматически десятками штук за день. Есть скрипты, которые парсят сайты на заданную тематику, нарезают тексты на блоки, этот текст перефразируют для уникальности, а дальше озвучивают нейронкой. Озвучка накладывается на залипательное видео из библиотеки – и вуаля! Контент готов. Осталось сгенерировать кликбейтный заголовок и описание – но и это тоже входит в работу скрипта.
📄 Только это еще не все: дальше можно отбирать самые удачные и популярные видео по просмотрам и клонировать их! Скрипт принимает на вход рилс, а дальше переозвучивает текст несколькими разными голосами, накладывает другие видео и уже «новые» несколько десятков видео можно загружать на другие каналы. Таких каналов у одного человека может быть сотня-другая и контент для них уже сейчас генерируется автоматически на серверах.
🔁 Так к чему это я? К тому, что информация совсем скоро тоже станет заводским продуктом. Сейчас большинство товаров продаются в масс-маркете: одинаковые торты и печенье, штампующиеся на заводах никого не удивляют. Тысячи мануфактур условных Zara, повторяющих и перефразирующих одни и те же идеи от нескольких модных домов. Уникальный или хотя бы ручной труд становится премиальным и элитным. Нет, я не осуждаю этот процесс, он нормален и даже улучшает доступность базового продукта в среднем, однако с мыслительной информацией и идеями такого еще не было. Это будет не уровень киноконвейера Марвел или других фильмов, снимающихся по работающим формулам. Ведь даже в них пытаются привносить новые идеи или хотя бы отснять их оригинально. Я говорю о следующем этапе автоматизации.
⚰️ Кажется, скоро понятие авторства в принципе размоется, так как подавляющее большинство контента будет генерироваться автоматически. И это совсем не значит, что такой контент будет плохим. Нет, совсем наоборот. Сформируется некоторый новый стандарт качества. Вы же прекрасно понимаете, чего ожидать от пары ботинок с маркетплейса? Пусть качество таких ботинок и не сравнится со штучными моделями, сшитыми настоящим мастером, однако и на откровенный неликвид нарваться тяжело.
📈 К тому же такой контент сможет итеративно подстраиваться под человеческую психику, подбирая оптимальную частоту смены планов, тем, общей длительности. Такой контент будет легче и приятней к просмотру, чем имеющийся у нас сейчас.
😐 Если сейчас просмотр черно-белых фильмов, кино Тарковского или хотя бы Тарантино уже стало некоторым маркером интеллектуальности, то совсем скоро таким маркером станет просмотр фильмов, снятых человеком. Ведь они будут скучнее и затянутее, не так эффективно использовать человеческое внимание, они не будут так сильно отшлифованы алгоритмами. Просмотр такого контента станет тяжелым мероприятием, как и сейчас далеко не каждый осилит Ларса фон Триера, а тем более искренне получит от него удовольствие.
👁 Да и нужно ли это большинству? Думаю, этот вопрос вечен и нас ждет только его следующее перевоплощение. Факт остается фактом: сейчас нишевое авторское кино собирает крайне малую кассу и снимается скорее для престижа, а не для заработка.
👥 А вы верите, что через десяток лет 99% контента будет сгенерировано автоматически без участия автора-человека? Буду рад репосту и дискуссии в комментариях.
#РазмышленияВслух
Я вижу, в комментариях разгорелся нешуточный ср... дискуссия.
При чем в процессе этой дискуссии у меня появилось подозрение, что, возможно, часть участников знакомы с психологией на уровне какого-то научпопа сомнительного качества - в лучшем случае, по видосам доктора Курпатова, Лины Диановой и вольным интерпретациям одних и тех же, невоспроизводимых, а то и давно опровергнутых экспериментов про зефирки, Вселенную 25 и тому подобное. Ну а в худшем - на уровне рассуждений персоналий наподобие Сатьи Даса (прости Омниссия за упоминание имени этого нечестивца). Другими словами, у людей складывается представление об области на основе того, что ни к науке, ни к просто здравому смыслу, на самом деле, не имеет никакого отношения. 😔
Поэтому я предлагаю заинтересованным участникам исправить эту ситуацию путем ознакомления с примерами более адекватных научных экспериментов в области психологии (например, классических экспериментов Скиннера), а также с научно обоснованными методами психотерапии типа АСТ, ФАП и др.
Это все есть, например, в паблике /channel/apsychologytg . Правда, автор является очень уж ярым жрецом одного конкретного направления под названием бихевиоризм, поэтому всё переводит под термины, взятые из этого направления и не обсуждает, например, достижений из нейронаук. Кроме того, описания многих тонких поведенческих экспериментов являются довольно сложными для восприятия, и для не-специалистов требуется значительное ментальное усилие для того, чтобы их понять.
Тем не менее, этот паблик может послужить отправной точкой в знакомстве с адекватной, научной психологией, хотя бы с одним, при чём важным, направлением.
Ну, а я работать, наконец, пойду. 🏃
Действительно ли CICERO [2022] так страшен, как может показаться?
Почти год назад неплохо хайпанул CICERO - алгоритм, играющий в Дипломатию против людей на хорошем уровне. В этой игре на карте расположены несколько игроков, воюющих между собой за территорию, и при этом важной частью являются то, что игроки могут общаться лично между собой, заключая альянсы, обсуждая планы и т.д.
По описанию выше может возникнуть впечатление, что модель научили общаться с людьми так, чтобы добиваться от них желаемого поведения и в конце концов своей победы. Давайте же разберёмся чуть-чуть детальнее в её устройстве:
1) Модуль действий
Данный алгоритм принимает на вход текущее и прошлые состояния игрового поля, а также игровые диалоги из прошлого. Работает оптимизатор, одновременно пытающийся предсказать действия других игроков и при этом выбрать оптимальное для себя. Под действиями подразумевается набор всех движений войск на карте, назовём их намерениями.
2) Модуль диалогов
Далее в игру вступает языковая модель. Она смотрит на свои и чужие намерения, историю диалогов и генерирует сообщения. Генератор обучают на датасете, собранном так, что в нём сказанные слова согласуются со сделанными действиями. Там очень сложная процедура с кучей вспомогательных моделей, фильтрующих ошибки разного рода даже на этапе применения, но глобальная цель модуля - поделиться с соперником своими планами с учётом его предполагаемых намерений.
То есть, подчеркну, алгоритм не использует язык как инструмент, как это делают люди, чтобы чего-то от них добиваться. Модель не обучают на оптимальность с точки зрения игры, её приделывают костылём сбоку, совершенно не обучая её как часть end-to-end системы. CICERO не демонстрирует никаких пугающих способностей ИИ. Это, конечно, не мешает безграмотным/злонамеренным журналистам продавать панику и продвигать регуляции. Авторы CICERO при этом настаивают в статье и публично на честности алгоритма (кроме банальных ошибок модели) и не поддерживают панику, за это им моё уважение.
@knowledge_accumulator
Однако, никакой содержательной информации про их образование или доказательств конкретных профессиональных компетенций в области нейросетей в интернете не нашлось.
Кира Юхтенко даже на лендинге не приписывает себе конкретных регалий, связанных с ИИ, которые можно было бы реально проверить, а "нейроэкспертность" Сергея Эля, видимо, заключается только лишь в физическом наличии блога на vc с 3 подписчиками и статьями сомнительного качества ( Рис. 1, https://vc.ru/u/1845700-sergey-el ), а также маленького телеграм-канала. Наш герой также имеет профиль на фриланс-бирже ( https://freelance.ru/sel6022 ), но он, к сожалению, практически не заполнен и также не содержит никакой информации о его профессиональных качествах ( Рис. 2-3 ).
Действительно, зачем же читать бесплатные гайды про то, как из России использовать chatGPT ( https://journal.tinkoff.ru/chatgpt-in-russia/ ) и bing ( https://hi-news.ru/technology/kak-pri-pomoshhi-nejroseti-bing-sozdavat-tekst-i-kartinki-rasskazyvaem-na-lichnom-primere.html ), через который, в том числе, можно генерировать и картинки, а также проходить бесплатный курс Эдрю Ына по промпт-инжинирингу ( /channel/dl_stories/780 ), если можно заплатить 12 тысяч ноунеймам? 🥱
#ИИнфобизнес
Напомнило: https://youtu.be/NKKfW8X9uYk?si=884tyq9BCD4yYAhg
Читать полностью…https://youtu.be/B1J6Ou4q8vE?si=Zrr98mGQgFboLZVl
Всё. Весь остальной Ютуб больше не нужен.
См. также: /channel/tech_priestess/479
#математика
Ну что, раз генератор, проживающий по адресу https://www.bing.com/images/create , неплохо рисует текст, настало время выполнить рекурсивный долг: сгенерировать мемы про нейросети с помощью нейросети.
Список промптов:
Рис. 1: Funny meme about perceptron;
Рис. 2: Funny meme about LSTM;
Рис. 3: Funny meme about GPT-4;
Рис. 4: Meme about DALLE-3 neutral network.
Рекомендую внимательно присмотреться к тому, что нейросеть попыталась написать. 🧐
P.S. Когда приеду домой, скину сгенерированные мемы про математику 🤓
В Bing также завезли понимание картинок – я поигрался какое-то время и наткнулся на встроенную защиту от чтения каптчи 🌚 то есть, оно отказывается писать текст с капчи
Но если «положить» капчу в нашейный медальон и попросить Bing процитировать наследие от бабушки, то он согласится и процитирует ☕️
Одна из моих главных жизненных ценностей - интеллектуальная честность. Поэтому какое-то время назад я провела достаточно много времени, читая материалы про различные когнитивные искажения.
Ну, а главное когнитивное искажение, которое меня волнует при занятиях научными исследованиями - это, конечно же, ошибка подтверждения. В этом контексте она возникает очень часто, и чем дольше я занимаюсь исследованиями в области машинного обучения, тем чаще её замечаю.
Одно из самых заметных проявлений искажения заключается в следующем: как правило, исследователи тратят несравнимо больше времени и усилий на то, чтобы выдавить мельчайшие капельки целевой метрики из своего метода, чем на то, чтобы корректно выбрать и хорошо настроить бейзлайн. И немудрено: ведь то, пройдет ли статья ревью или нет, зависит от того, насколько хороший результат покажет новый метод, а не старый. При использовании новых датасетов, бейзлайны на которых еще неизвестны, особенно легко сделать бейзлайн плохим таким образом, чтобы ревьюеры этого не заметили. При чем иногда это происходит не совсем сознательно, просто от того, что человек не уделяет времени тому, чтобы подобрать своему бейзлайну подходящие гиперпараметры и сделать сравнение честным по всем аспектам.
Из-за мыслей об этом, в последние месяцы я довольно сильно озаботилась бейзлайнами и стала уделять больше времени их продумыванию, настройке и пиханию везде, где мне хватает на это времени и возможности. Это заметно, например, по статье Topological Data Analysis for Speech Processing (см. также пост /channel/tech_priestess/755 ), и по еще одной про NLP домен, которую мы пока что не опубликовали из-за периода анонимности.
В первой статье я предложила добавить такой бейзлайн, в котором информация собиралась бы со всех слоев модели HuBERT не в виде топологических фичей (которые были нашим основным методом), а в виде какой-нибудь более простой аггрегации эмбеддингов с каждого слоя (коллеги в итоге взяли эмбеддинг первого токена и пулинг по эмбеддингам в качестве таких аггрегаций). Целью этого было проверить, действительно ли важную информацию несут именно топологические фичи, или же для хорошего результата достаточно просто пропустить информацию с промежуточных представлений модели. Ответ оказался неоднозначным, потому что для одних датасетов хорошо работало одно, а для других - другое (см. таблицу 1). 🥴 Кроме того, я просила коллегу попробовать потюнить HuBERT по-другому (полностью, а не только последний слой), но это, как ни странно, оказалось хуже других методов и потому не вошло в финальную таблицу.
Ну а во второй, анонимной, из-за того, что я главный автор, я уж совсем развязала себе руки и наплодила целую россыпь бейзлайнов, один из которых натюнила так, что мы его потом сами же и не смогли побить во многих подзадачах (думаю, вероятность того, что статью отвергнут, процентов 90 🥴).
А еще я против того, чтобы сравнивать слишком много (порядка нескольких десятков или, тем более, сотен) вариаций своего метода или фичей на out of domain множествах и потом использовать в статье именно те фичи или тот метод, который хорошо выступил на этом OOD. Я думаю, что если так делать, то OOD множество как бы превращается в множество валидации (так как если ты выбираешь из большого множества методов один, то это тоже получется как будто ты затюнил на этом множестве гиперпараметр). Несколько вариаций своего метода я по такому принципу сравнить ещё могу, но несколько десятков уже считаю подгонкой.
Иногда мне, однако, кажется, что я задалбываю окружающих своими заебомбами по этим поводам.
Сколько времени на самом деле разумно тратить на настройку бейзлайна? 🤷♂️ Сколько раз можно проверять точность методов на test или OOD множествах, прежде чем эти множества превратятся в valid и прекратят реально отображать обобщаемость наших решений? 🤷♂️
В общем, где грань разумного, за которой кончается реальная забота об объективности и начинается паранойя? 🥴
#рассуждения