новости

как доктор философии по искусственному интеллекту проводит эффективные исследования? победители премии «ученики слоана» делятся своим опытом

2024-10-07

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

машинное сердце, подборка

автор: омар хаттаб

редактор: яичный соус, зенан

пишешь статью? это всего лишь один маленький шаг.

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

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

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

посмотрим, что он сказал:

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

во-первых, вот руководящие принципы:

  • сосредоточьтесь на проектах, а не на документах.

  • «выкопать яму» можно, выбрав подходящую задачу, имеющую больше возможностей для развития.

  • думайте на два шага вперед и действуйте быстро.

  • публикуйте свою работу и продвигайте свои идеи.

  • найдите способы мотивировать себя: вот советы по развитию ваших исследований с открытым исходным кодом.

  • продолжайте инвестировать в свой проект с новыми бумагами.

  • пятый пункт «советы по развитию исследований с открытым исходным кодом» заслуживает отдельной более длинной статьи. возможно, об этом я напишу в следующем посте.

сосредоточьтесь на проектах

а не бумага

это важнейшая часть мышления, на которой основано все остальное.

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

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

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

один из способов сделать это — структурировать некоторые исследовательские работы вокруг последовательных артефактов (таких как модели, системы, платформы или тесты), которые вы поддерживаете в области открытого исходного кода. эта стратегия обходится дороже, чем «провести несколько экспериментов и опубликовать мимолетный быстрый репозиторий», но она заставляет вас найти проблему, имеющую реальное значение, и помогает гарантировать, что новое исследование, которое вы проводите, действительно является последовательным и полезным: вы не прикладываете усилий. ввести небольшую функцию или трюк, который бесполезен для артефактов, которые вы разрабатываете и поддерживаете.

выбирайте подходящие вопросы с большим потенциалом для улучшения.

можно «выкопать яму»

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

во-первых, проблема должна быть актуальной. вы можете определить это по-разному, но вииэффективная стратегия в этой области — найти проблемное пространство, которое станет «горячим» через 2–3 года, но еще не станет мейнстримом.

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

в-третьих, проблему надо оставить с большим запасом. если вы скажете людям, что их система может быть в 1,5 раза быстрее или на 5% эффективнее, это, вероятно, неинтересно. на мой взгляд, вам нужно находить проблемы, где, по крайней мере, после многих лет упорной работы у вас есть ненулевая надежда сделать что-то быстрее, скажем, в 20 раз быстрее или на 30% эффективнее. конечно, вам не обязательно проходить весь путь, чтобы добиться успеха, и вам не следует ждать, пока вы доберетесь до конца, чтобы опубликовать свою первую статью или выпустить свою первую работу.

я не хочу быть слишком абстрактным, давайте воспользуемся colbert для объяснения. в конце 2019 года исследования по применению bert для поиска были очень популярны, но эти методы очень дороги. естественно возникает вопрос: можем ли мы существенно повысить эффективность такого подхода? что делает этот вопрос хорошим?

во-первых, это очень предисловие. мы можем правильно предсказать, что к 2021 году (через 1,5 года) многие исследователи будут искать эффективные архитектуры поиска на основе bert. во-вторых, здесь есть куда развиваться. новые парадигмы машинного обучения, как правило, именно такие, потому что большинство таких усилий изначально игнорируют эффективность. фактически, при исходном подходе ответ на запрос мог занять 30 секунд, но теперь он может выполнять поиск более высокого качества за 30 миллисекунд, что в 1000 раз быстрее. в-третьих, у него большое разветвление. масштабируемое извлечение — это хорошая «фундаментальная» проблема: каждому нужно что-то построить на основе ретриверов, но мало кто хочет это создавать.

думайте на два шага вперед

и повторять быстро

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

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

как это выглядит на практике? давайте вернемся к делу colbert. очевидный способ создания эффективного средства извлечения данных с использованием bert — это кодирование документов в векторы. интересно, что к концу 2019 года этого удалось добиться лишь в ограниченном объеме работы по связям с общественностью. например, самая цитируемая работа в этой категории (dpr) выпустила свой первый препринт только в апреле 2020 года.

учитывая это, вы можете подумать, что в 2019 году правильным решением будет построить отличную одновекторную ir-модель с помощью bert. напротив, если думать всего на два шага вперед, возникает вопрос: рано или поздно каждый выстраивает одновекторный подход, так где же этот одновекторный подход фундаментально застревает? фактически, эта проблема привела к появлению более поздних парадигм взаимодействия и широко используемых моделей.

в качестве другого примера мы можем использовать dspy. в феврале 2022 года, когда подсказки становились все более мощными, стало ясно, что люди хотят использовать подсказки для обеспечения качества на основе поиска, а не для тонкой настройки, как раньше. для этого нам, естественно, необходимо установить метод. сделав еще два шага дальше, мы спрашиваем: где такой подход застревает? в конечном счете, подход «извлечь, затем сгенерировать» (или rag), вероятно, является самым простым подходом, включающим lm.

по тем же причинам, по которым люди заинтересованы в этом, они, очевидно, будут все больше интересоваться: (i) выражением более сложных комбинаций модулей (ii) выяснением того, что следует делать, посредством автоматических подсказок или тонкой настройки основного lm. как это сделать; контролировать или оптимизировать полученный сложный конвейер. это дспи.

вторая половина этого правила — «быстро повторять». возможно, это был первый исследовательский совет, который мой консультант матей захария (лауреат премии слоана и основатель apache spark) дал мне в первую неделю моей докторской диссертации: определив тему, по которой вы можете быстро выполнить итерацию и получить обратную связь (например, задержка или проверить счет) вариант задачи, который может значительно повысить ваши шансы на решение головоломки. это особенно важно, если вы думаете на два шага вперед, что достаточно сложно и неопределенно.

сделайте свою работу публичной

позвольте своим идеям проникнуть в суть

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

обычный первый шаг — опубликовать препринт вашей статьи на arxiv, а затем опубликовать «пост», объявляющий о публикации вашей статьи. при этом обязательно начните свой пост с конкретного, существенного и понятного утверждения. цель не в том, чтобы рассказать людям, что вы опубликовали статью, не имеющую внутренней ценности. цель в том, чтобы донести ваши ключевые аргументы прямо и увлекательно. (да, я знаю, что это тяжело, но это необходимо).

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

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

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

соберите волнение

советы по публикации исследований с открытым исходным кодом

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

сделать это непросто: просто загрузить файлы кода вместе с readme на github недостаточно. хороший репозиторий станет «домом» вашего проекта, более важным, чем любая публикуемая вами статья.

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

это самая важная часть: люди будут неоднократно избегать (а другие будут неоднократно использовать) вашу работу oss по всем «неправильным» причинам. например, ваше исследование может быть объективно «современным», но, по всей вероятности, люди будут отдавать предпочтение альтернативам с меньшими трудностями. с другой стороны, аспиранты часто упускают из виду, почему люди используют ваш инструмент, например, потому, что они не в полной мере используют ваши самые творческие стороны. это не то, чему стоит сопротивляться, а то, что стоит понять и улучшить.

исходя из этого, я хотел бы перечислить несколько вех, на которые следует обратить внимание, когда речь идет об открытии результатов исследований.

этап 0: сделать опубликованный контент доступным

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

этап 1. сделайте публикуемый контент полезным

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

этап 2: сделайте релизы понятными

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

известный исследователь искусственного интеллекта андрей карпати написал статью по этому поводу: «вы что-то строите, а затем вам нужно построить пандусы, чтобы добраться до этого». бен клави также много писал об этом, и он внес большой вклад в работу, которую мы проделали над colbert, и сделал ее более доступной.

этап 3. выясните, почему очевидная альтернатива не удалась, и наберитесь терпения.

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

этап 4. понять тип пользователей и использовать это для роста.

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

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

этап 5: превратить интерес в растущее сообщество

настоящий успех работы oss заключается в наличии сообщества и его постоянном росте, независимом от ваших усилий. вообще говоря, хорошее сообщество должно быть органичным, но вам нужно активно работать, чтобы помочь ему сформироваться, например, приветствовать вклады и обсуждения, а также искать возможности превратить интерес в вклады или какой-то форум (например, discord или github).

этап 6: превратить интерес в активные, совместные и модульные последующие проекты

скорее всего, ваш проект oss на ранних стадиях не решит всех проблем, предусмотренных вашим первоначальным видением. хорошо спроектированный проект часто состоит из нескольких модульных частей, которые позволяют вам инициировать исследовательское сотрудничество (или другие начинания) и позволяют новым членам команды не только продвигать проект, но и владеть значительными частями проекта, что делает его быстрее или оказывает большее влияние. свои идеи, одновременно радикально улучшая проект. например, в настоящее время в dspy есть отдельные команды, ведущие исследования и разработки в области оперативной оптимизации, абстракции программирования и обучения с подкреплением. компоненты colbert, такие как внешние интерфейсы прикладного программирования, базовая инфраструктура поиска и базовое моделирование, в основном разрабатываются разными людьми в разных проектах.

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

критерием оценки исследования является «приращение» по сравнению с предыдущими знаниями, но прежде чем можно будет осмысленно использовать «приращение», само программное обеспечение должно быть эффективным. чтобы программное обеспечение было эффективным, его документация также должна быть эффективной: люди не увидят все последующие способы использования программного обеспечения, пока вы им его не покажете. то есть до тех пор, пока эти задачи не сможет разработать независимое сообщество.

несмотря на все это, самый важный навык в этом разделе — «публиковать», действительно публиковать, публиковать часто и учиться на этом.

опубликовать новую статью

продолжайте инвестировать в свои собственные проекты

когда вы читаете пятое правило, естественно задаться вопросом: откуда аспиранты тратят столько времени на программное обеспечение с открытым исходным кодом? когда можно проводить настоящие исследования?

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

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

например, «колберт» — это не просто газета начала 2020 года. сейчас у него, вероятно, около десяти последующих статей, посвященных инвестированию в улучшение обучения, уменьшение объема памяти, более быструю инфраструктуру поиска, лучшую адаптируемость предметной области и лучшее соответствие последующим задачам нлп. аналогично, dspy — это не статья, а сборник статей по абстракции программирования, оптимизации подсказок и последующим программам. многие из этих статей написаны разными выдающимися авторами, и их работа оказала огромное влияние, отчасти благодаря созданию большой аудитории через каналы программного обеспечения с открытым исходным кодом.

таким образом, хороший инструмент с открытым исходным кодом может создавать модульные работы, которые могут изучаться, владеться и разрабатываться новыми исследователями и участниками.

ссылка на исходный текст: https://github.com/okhat/blog/blob/main/2024.09.impact.md.