Техножрица 👩‍💻👩‍🏫👩‍🔧
14K subscribers
1.44K photos
66 videos
28 files
766 links
Люблю высокие технологии и кушать.

Добро пожаловать, если в сферу твоих интересов тоже входят математика, DL, NLP, программирование на Python, или тебе просто любопытно, о чем на досуге размышляют люди, занимающиеся разработкой и исследованиями в ML.
Download Telegram
В начале 2020го меня позвали собеседоваться в Хуавей и попросили рассказать об опыте работы и исследованиях в аспирантуре. Соответственно, я рассказала про статью из предыдущего поста, и будущих коллег заинтересовали идеи, которые в ней были изложены. Тимлид (Ирина) предложила мне изменить исследование следующим образом: перейти от Марковских цепей к анализу графа внимания в трансформере, а от задачи детекции текстов с перемешанными словами - к задачам, где тексты различаются более тонким образом. Это я и стала делать вместе с ней и еще одним соавтором (Дмитрием, профессором алгебры).

Результатом стала работа того же 2020го "Betti numbers of attention graphs is all you really need" (если что, название предложила я, так что если хочется покекать над отсутствием оригинальности, это вопрос ко мне, а не к соавторам)): https://openreview.net/forum?id=KaPw8VdbNr4
В этой работе количество собственно топологии резко уменьшилось, редуцировавшись до описания двух элементарных инвариантов (числа Бетти размерности 0 и 1) и отсылке на персистентность, про которую нужно читать где-то в другом месте, а количество ML, напротив, возросло.
В общем случае, числа Бетти являют собой размерности первых двух групп гомологий многообразия или комплекса. Но для такого простого комплекса, как граф (симплициальный комплекс с симплексами размерности 0 и 1), числа Бетти имеют простую интерпретацию и вычисляются по простым формулам, которые можно понять, и не зная топологии.
А именно, нулевое число Бетти графа b0 =| C |, а первое b1 = |E| + |C| - |V|, где C - компоненты связности, E - ребра, V - вершины. Т.е. нулевое число Бетти графа - это количество его компонент связности, а первое - это количество независимых циклов в графе.
Эксперименты в статье были устроены так. Бралась стандартная модель BERT, через нее пропускались примеры из датасетов. По каждому примеру вычислялись матрицы внимания на каждой голове BERT. По каждой матрице внимания строился граф. Затем он делался неориентированным: каждому ребру назначался вес, равный максимуму весов в направлениях туда-обратно. Затем бралось несколько "фильтраций" каждого графа по разным порогам. Каждая фильтрация получалась из исходного графа путем отсечения ребер, меньших, чем заданный порог. Наконец, на этих фильтраций считались числа Бетти. В итоге, каждому примеру датасета сопоставлялись числа Бетти графов, полученных таким слегка замысловатым образом из исходных графов внимания на разных головах. Далее числа Бетти использовались как фичи для классификатора (логистической регрессии), и на каждом датасете оценивалась точность классификации по ним.
Датасетов было три - SPAM (детекция спама), Imdb (классификация отзывов по тональности), CoLA (детекция предложений с ошибками).
Оказалось, что качество классификации по числам Бетти было +- наравне с качеством, который давал сам BERT на этих датасетах со стандартным классификатором, навешанным на выход модели. Другими словами, числа Бетти графов внимания BERT содержали в себе достаточно информации для того, чтобы провести классификацию на этих датасетах, выход самой модели для этого оказалось использовать не обязательно.

К сожалению, ревьюерам не понравилось то, как была написана статья (некоторые части были изложены не совсем ясно), как были выбраны задачи и как поставлены эксперименты. Они дали несколько предложений о том, как можно улучшить эту линию исследований, которыми мы воспользовались при подготовке следующей статьи.
Слабым местом данной статьи являлось и то, что графы внимания извлекались из модели BERT после того, как она была отдельно дообучена на каждом датасете, что уменьшало ценность результата. В следующей работе мы, кроме прочего, показали, что можно точно также извлекать числа Бетти из BERT, который был взят "из коробки" и не был дообучен на отдельных датасетах, и все равно делать по ним хорошую классификацию - правда, уже на другой задаче. Ну а эта маленькая статья так и осталась висеть на openreview до тех пор, пока мы не переродили ее на архиве: https://arxiv.org/abs/2207.01903

#объяснения_статей #о_себе
🔥19👍21
Естественно, мы с коллегами далеко не единственные кто интересуется свойствами матриц/графов внимания в трансформерах и пишет про это, хотя и являемся (насколько мне известно) первыми, кто начал изучать их топологию и графовые свойства в контексте задач обработки естественного языка.

Вот две самых известных статьи про паттерны в матрицах внимания BERT, в которых матрицы внимания были разделены на разные типы, и была изучена роль этих типов:

https://aclanthology.org/W19-4828/
https://aclanthology.org/D19-1445/

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

А ниже я репостну инфу про другую линейку работ, которая посвящена интересным свойствам матриц внимания в трансформерах для компьютерного зрения. Как всегда, при работе с картинками все оказывается намного более наглядным...
👍9
Forwarded from DLStories
Нашла еще один интересный подход к сегментации изображений: с помощью разбиения графа self-attention карты трансформера.

В чем идея:
Берем vision transformer, обученный на картинках в self-supervised режиме. Т.е. без какой-либо обучающей разметки. Смотрим на карты его self-attention. Оказывается, что на этих картах становтся подсвечены контуры объектов (см. 1 рис). Причем такое наблюдается только для трансформеров, обученных в self-supervised режиме: ни для supervised трансформеров, ни для CNN такое не работает.

Одними из первых это свойство заметили ребята из FAIR (статья). Они пошли дальше: взяли эти self-attention карты, обучили на них KNN и получили качество 78.3% top-1 на ImageNet.

Но вернемся к сегментации. Другие ребята придумали, как сделать сегментацию на основе этого свойства. Идея простая: берем элементы self-attention карты трансформера и строим на них граф. Ребро между двумя векторами будет равно 1, если косинусное расстояние между ними больше заданного порога, и eps, если меньше порога. На таким графе решаем задачу разбиения графа (normalized cut). Так элементы карты аттеншена, соответствующие объекту, будут отделены от элементов, соответствующих фону.
Последний шаг — применяем какой-нибудь алгоритм edge refinement (например, стандартный CRF), и получаем неплохую карту сегментации объекта на картинке.

Недостаток такого подхода — он умеет сегментировать только один объект на картинку. Поэтому ребята из FAIR (уже другие) предложили, как улучшить идею. Все просто: находим карту одного объекта. Далее накладываем на патчи self-аттэншена этого объекта маску, и снова запускаем алгоритм. И так несколько раз.
Это позволяет находить на одной картинке сразу несколько объектов (рис. 2).

Вот такая идея. Вообще, attention maps разных трансформеров часто обладают подобными свойствами, и на основе информации из них можно понимать, как "думает" моделька и решать разные downstream задачи. Интересно их исследовать)
👏42👍2
Есть такая проблема. В канале есть процент людей, которые не имеют никакого опыта работы с научными статьями по машинному (глубокому) обучению. А из-за того, что я выкладываю тут порой не самые простые статьи по этой теме, эти статьи вызывают эффект запугивания. Т.е. люди начинают думать, что область сверх сложная, и они не способны в ней ничего понять.
Например, одна подруга сказала, что ей было бы интересно поизучать ML, но у нее вряд ли получится, потому что чтобы хоть что-то понять из ML надо, видимо, десять лет учить математику. Я, конечно, удивилась, когда это услышала. 😳 Оказалось, впечатление такое сложилось от общения со мной и чтения того, что я в этом канале настрочила. ✍️

В результате появилась мысль - может, собрать набор простых научных (или даже блоговых?) статей по Deep Learning, с которых могут начать те, кто раньше статей не читал. Потом добавить requirements, которые нужны для их понимания и поместить в закреп, так сказать, чтобы был противовес сложным и непонятным статьям, которые тут время от времени спавнятся.
Если у кого есть идеи, какие статьи включить в такой список рекомендаций - может, какие-нибудь обзорные или статьи-туториалы, кидайте в комментарии.
63🔥17👍8
Спасибо за ссылки на учебные материалы. Постараюсь за разумное время их глянуть и может быть добавлю в список requirements к понимаю статей. Но всё-таки хочется сделать и список именно научных статей , достаточно простых для того, чтобы их можно было читать перед тем, как переходить к сложным работам по deep learning.

Т.е. чтобы был roadmap:
Учебники/курсы -> простые статьи (по категориям) -> сложные статьи (по категориям)
👍10🔥4
Решила сгенерировать в честь праздника валентинки с техножрецами с помощью openjorney и anime-anything. Видно, что в обучающей выборке нейросетей было очень мало Адептус механикус, но модельки сделали что могли.
🔥116
Artificial Text Detection via Examining the Topology of Attention Maps ( https://aclanthology.org/2021.emnlp-main.50/ ) - наша с коллегами статья на EMNLP 2021. К статье прилагается видео доклада (зеленая кнопка на сайте).
Здесь уже появились новые соавторы, которые предложили новые идеи и поставили существенно больше экспериментов, чем получалось у меня. Особенно отмечу, что мне было очень интересно обсуждать с https://scholar.google.com/citations?user=G0lCb3wAAAAJ&hl=en&oi=ao то, как выстраивается логика статей для прикладных core A* конференций. Эта логика была для меня непривычной, т.к. после мехмата хочется писать статьи совсем в другом стиле.

В этой статье рассматривается задача детекции текста, сгенерированного моделями машинного обучения GPT-2 и GROVER. Далее для извлечения топологических признаков снова бралась модель BERT, только на этот раз предобученная лишь на угадывании пропущенных слов (Masked LM), без дообучения на данной задаче. Через модель прогонялись примеры текстов (сгенерированных и человеческих), и каждому примеру сопоставлялись графы внимания, извлеченные из модели. В этот раз признаки у графов считались более сложные и разнообразные. Во-первых, кроме чисел Бетти "отфильтрованных" по порогам графов, считались и другие графовые признаки, такие, как количество ориентированых циклов и средняя степень вершины. Во-вторых, считалась степень "похожести" матриц внимания на матрицы-шаблоны из статьи https://aclanthology.org/D19-1445/ (см. Figure 1). В-третьих, бралась такая версия графов внимания, где убиралась ориентация, но не убирались веса, и по ним считались довольно сложные TDA-объекты, называемые баркодами. Очень короткое введение в то, как строятся эти объекты, можно посмотреть здесь: https://www.youtube.com/watch?v=2PSqWBIrn90&t=0s&ab_channel=MatthewWright . От баркодов, в свою очередь, считались признаки, такие, как сумма "баров" и другие. Далее все посчитанные признаки всех трех видов объединялись, и по ним производилась классификация.
Оказалось, что классификация на этих признаках (извлеченных из BERT с предобученными замороженными весами) с помощью логистической регрессии давала результат +- наравне с полностью дообученной BERT. Если же дообучать один слой-классификатор над выходом предобученного, но замороженного BERT, результат оказывается и вовсе хуже, чем обучение на наших признаках.
Особенно же интересно оказалось то, что классификатор над нашими признаками имеет бОльшую робастность по отношению к увеличению размера генерирующей модели, чем сам BERT. Другими словами, если мы, например, обучили классификатор на наших признаках и сам BERT (отдельно, нормальным способом) детектить тексты, сгенерированные моделью GPT-2-small, а затем пробуем детектировать генерацию GPT-2-medium, наши признаки дают меньшее падение качества на этой новой задаче, чем классификация по выходу самой модели BERT, даже полностью обученной. Это можно видеть на Figure 2. В наше время, когда появилось много скрытых генеративных моделей, к которым у нас нет доступа, такая робастность - очень актуальное свойство.
Другой интересный аспект - на некоторых головах модели BERT графы внимания имеют явное отличие в своей форме на "естественных" и сгенерированных текстах. Говоря упрощенно, в среднем веса матриц внимания BERT, "смотрящей" на искуcственно сгенерированный текст, более "размазаны", а веса матриц внимания модели, "смотрящей" на естественный текст, более "сконцентрированы" на структуре предложения. Впрочем, этот эффект наблюдается не на всех головах.

Один из исследователей, который прочитал данную работу, сделал замечание о том, что нужно попробовать извлекать признаки из модели RoBERTa и сравнивать результат тоже с ней, так как на тот момент она была SoTA в задаче детекции сгенерированных текстов, но мы к тому времени уже занялись новой статьей. Впрочем, если верить туториалу https://artificial-text-detection.github.io/ от бывших коллег и их новых соавторов, RoBERTa все еще популярна для решения данной задачи.

#объяснения_статей #детекция_искусственных_текстов
👍9🔥41
Forwarded from Авва
Возьмем какое-то количество одинаковых квадратов, скажем пять. Предположим, мы хотим упаковать их вместе внутри друого большого квадрата - насколько большим он обязан быть? Например, мы можем взять большой квадрат 3x3, в котором умещаются 9 маленьких квадратов. Пять наших поставить, а четыре остаются пустыми. Тогда у большого квадрата длина стороны выходит 3 (считая в размерах маленьких квадратиков).

Но оказывается, можно поставить четыре маленьких по углам близко друг к другу, но не касаясь, а пятый повернуть на 45 градусов и в середину между ними. Так они уложатся в большой квадрат с длиной стороны примерно 2.7, это лучше, чем 3. Возникает вопрос: насколько можно уменьшить большой квадрат, запаковав маленькие наиболее эффективно? И такой вопрос задается для каждого числа маленьких квадратов, необязательно пяти.

Математик Эрик Фридман исследует этот вопрос и опубликовал набор лучших известных результатов для разных n (n это число маленьких квадратов). Для некоторых написано "proved", это значит строго доказано, для других "found" - это лучшее, что найдено, но не доказано, что нельзя еще лучше. Мне очень нравится результат для n=17 своей хаотичностью и асимметрией. В Твиттере кто-то написал "бог умер и его убил лучший способ упаковать 17 квадратиков в большой квадрат".

Сравните его с красивой симметрией n=26.

Спросите себя: я человек-17 или человек-26?
😁7🔥3🤯3👍1
Прочитала в канале New Yorko посты про талант и трудолюбие. Поскольку тема - одна из моих любимых, сейчас буду критиковать и дополнять. Вот первый пост по этой теме оттуда. Рекомендую зайти и посмотреть два следующих по той же теме:
👍3
Forwarded from New Yorko Times (Yury Kashnitsky)
О талантливых лентяях и рабочих лошадках
#career #life #work

Если ты бегун, то возможно, знаешь, что Джек Дэниелс – это не только то, что мешает бежать воскресным утром, но и тот, кто помогает. Джек Дэниелс “От 800 метров до марафона” https://www.goodreads.com/book/show/34226333-800 – то, что нужно, чтоб разобраться в физиологии бега и выстроить план тренировок (я пользуюсь Nike Run Club, там план выстраивается по Дэниелсу). Сейчас эксперты, конечно, набегут в комментарии, но эту книгу мне порекомендовал друг КМС и он же, безусловно, отметил, что книга – не замена персональному тренеру.

Мне понравилось рассуждение автора в самом начале книги про врожденные способности и мотивацию как ингредиенты успеха в беге. Есть два бинарных фактора – талантлив ты либо нет и пашешь ли ты как черт или нет. Получаются 4 варианта и матричка 2x2 (все прошедшие курсы Ына и знающие, что такое матрица, уже эксперты и представили себе эту матричку):

- талантливые работяги
- талантливые лентяи
- не самые способные трудяги
- бесталанные лентяи

Можно это рассуждение обобщить со спорта на прочие виды деятельности, с оговоркой, что перечисленные два фактора – далеко не все составляющие успеха, есть еще удача, непотизм (полезные связи), возможности/ограничения и прочее.

С первой и последней группой все более-менее ясно.

Первые – победители, выдающиеся люди, будь то Усэйн Болт, Лионель Месси, Теодор Курентзис, Джон фон Нейман или Альберт Эйнштейн. Помимо ярчайшего таланта эти люди зачастую просто одержимы своей работой. Надо вам это или нет – сложный вопрос, на мой взгляд, про это лучше всех высказался Ричард Хэмминг в лекции “Вы и ваша работа” – вот лонгрид на Хабре https://habr.com/ru/post/209100.

С последними тоже все понятно. Если за отсутствие таланта нельзя укорять, то вот к лени ни у кого особого снисхождения нет. Привет, Артемий! Лебедев: “- Как мотивировать себя что-то делать? - А никак! Оставайтесь в жопе!”. Если нет таланта, единственное, что могут сделать представители четвертой группы – это попасть в третью, то есть херачить. There is no substitute for hard work. Либо все же найти такую деятельность, в которой у них есть какие-то признаки способностей.

Интереснее всего сравнить вторых и третьих. Наверняка каждый из нас видел таких ребят, которые точно добились бы успеха (стали бы профессиональными спортсменами, яркими комиками или просто забрались бы высоко по карьерной лестнице в IT), лишь бы только захотели. У нас на физтехе тоже такие персонажи попадались. Ты сидишь такой, ботаешь-боташь, приходит чел с пьянки на экзамен и затаскивает эти все роторы-дивергенции, течения Пуазэйля и турбулентности. И ты думаешь “вот как? чел ведь точно не ботал”. И наоборот, есть ребята, достигшие огромного успеха, просто потратив на что-то не X часов, а 10 X. Подход моего друго Сани из поста про трейдинг https://t.iss.one/new_yorko_times/54 – заботать просто все, что есть по теме. Готовишься к собесу в компанию Y – узнай просто всё, прошерсти все вопросы с Glassdoor, задолбай всех знакомых из компании Y. Ну и что, это работает! Совет из серии “легко сказать, сложно сделать”.
👍12
На мой взгляд, аналогия между "талантом"/"успехом" в области интеллектуальных видов деятельности и в области спорта, которая тут приводится, работает очень плохо из-за того, что определить, что есть "талантливость" в первом случае, мешает целый ряд затруднений. Чтобы не повторяться и не капитанить, сосредоточусь на самых неочевидных.
Итак, обычно "склонности" к той или иной интеллектуальной деятельности в вакууме определяются так: берем людей с одним и тем же бэкграундом, сравниваем то, насколько быстро они учатся решать такие-то задачи/усваивать такой-то материал после того, как выполняют одинаковый объем работы. У кого по итогу лучше получается, тот и более талантлив.
Но проблема в том, что в реальной жизни невозможно объективно оценить ни объем работы, проделанный над учебными материалами, ни даже бэкграунд. Ведь часть проделанной интеллектуальной работы и даже самих навыков всегда является непрямой, а часть и вовсе скрыта.
Сначала объясню, что такое непрямая работа на примере.
На первом курсе я время от времени посещала факультетские олимпиады по разным разделам математики. При этом я (из-за многолетней социальной изоляции) в принципе была не в курсе, что к олимпиадам нужно готовиться и приходила на них просто так, ничего специально перед этим не делая. Тем не менее, мне удалось занять призовые места на олимпиадах по механике, дискретной математике и геометрии. Когда знакомые узнали об этом, они очень удивились тому, что человек - тем более тот, который так плохо учится по мат.анализу и другим сложным предметам - может занять призовые места, не готовясь и сделали вывод, что имеет место какой-то необъяснимый талант к олимпиадной математике. Впрочем, эта загадка быстро разрешилась, когда я разузнала, как же именно люди готовятся к олимпиадам.
Я узнала, что для того, чтобы подготовиться к олимпиаде, люди разбирают/прорешивают олимпиадные задачи по той теме, по которой будет олимпиада. И осознала, что я-то тоже спонтанно в свободное время решаю задачи, похожие на олимпиадные, по разным темам - например, задачи из журнала "Квант", задачи из книг "Как решать задачу", "Математическое открытие" и тому подобных. Логично, что время от времени мне случайно попадались задачи по тем темам, которые пересекаются с темой мехматских олимпиад, и получалась непрямая подготовка к олимпиаде.
Более важный и распространенный пример непрямой работы - это та работа, которую человек проделывает, объясняя учебный материал другим. Обычно когда люди говорят, что они столько-то времени готовились к экзамену или к олимпиаде, они не включают сюда то время, которое потратили на то, чтобы объяснить другим то, что узнали сами в процессе подготовки. А ведь когда человек это делает, он не только улучшает свое понимание материала, но еще и хорошо тренирует свой навык рассказывать то, что знает, отчего вероятность сдать экзамен резко повышается.
Теперь к полностью скрытой работе.
Скрытая работа - это то, как человек размышляет над учебным материалом и укладывает у себя все в голове в свободное время, когда он не держит в руках учебник. Этого вообще никто не видит, но это критически важная часть учебы. Судя по моему личному опыту, чем более человеку интересна какая-то тема, тем более часто и эффективно будет происходить этот процесс. Если очень глубоко, с искренним интересом погрузиться в исследование какой-то темы, мозг в конце концов начнет работать над ней сам собой и спонтанно выдавать новые идеи в случайные моменты времени. То есть будет происходить большой пласт скрытой работы - при чем иногда сознательной, а иногда и бессознательной.
Теперь к бэкграунду. Уже из вышесказанного понятно, что даже бэкграунд двух людей, всю жизнь изучавших ровно одни и те же материалы, может быть неодинаков из-за разного количества непрямой/скрытой работы. А уж в реальной-то жизни тем более. Очень часто бывает, что в одной и той же группе в университете находятся люди совершенно разной степени подготовки, и если кто-то сдает экзамен не готовясь, с бодуна, возможно, это просто человек из очень хорошей школы, в прошлом посещавший множество занятий по схожим темам.
🔥14👍52