Функциональная магнитно-резонансная томография (фМРТ), которая измеряет изменения кровотока по всему мозгу, использовалась в течение последних нескольких десятилетий для различных приложений, включая «функциональную анатомию» — способ определения того, какие области мозга включаются, когда человек выполняет определенную задачу. ФМРТ используется для наблюдения за мозгом людей, когда они делают самые разные вещи — решают математические задачи, изучают иностранные языки, играют в шахматы, импровизируют на фортепиано, разгадывают кроссворды и даже смотрят телешоу, такие как «Умерь свой энтузиазм».»
Одно из занятий, которому уделялось мало внимания, — это компьютерное программирование — это и рутинная работа по написанию кода, и не менее сложная задача — попытаться понять часть уже написанного кода. «Учитывая то значение, которое компьютерные программы приобрели в нашей повседневной жизни, — говорит Шашанк Срикант, доктор философии. студент Лаборатории компьютерных наук и искусственного интеллекта (CSAIL) Массачусетского технологического института, «на это, безусловно, стоит обратить внимание. В наши дни так много людей имеют дело с кодом — читают, пишут, проектируют, отлаживают, — но никто на самом деле не знает, что происходит у них в голове, когда что происходит.»
К счастью, он добился некоторого «прогресса» в этом направлении в статье, написанной вместе с коллегами из Массачусетского технологического института Бенджамином Липкиным (другим ведущим автором статьи, наряду со Срикантом), Анной Ивановой, Эвелиной Федоренко и Уной-Мэй О’Рейли. представленный ранее в этом месяце на конференции по системам обработки нейронной информации, проходившей в Новом Орлеане.
Новая статья основана на исследовании 2020 года , написанном многими из тех же авторов, которые использовали фМРТ для мониторинга мозга программистов, когда они «понимали» небольшие фрагменты или фрагменты кода. (Понимание в данном случае означает просмотр фрагмента и правильное определение результата вычислений, выполненных фрагментом.)
Работа 2020 года показала, что понимание кода не всегда активирует языковую систему, области мозга , отвечающие за обработку речи, объясняет Федоренко, профессор мозговых и когнитивных наук (BCS) и соавтор более раннего исследования. «Вместо этого сильно активизировалась сеть множественных требований — система мозга, которая связана с общими рассуждениями и поддерживает такие области, как математическое и логическое мышление». Текущая работа, в которой также используются МРТ-сканы программистов, предполагает «более глубокое погружение», говорит она, стремясь получить более точную информацию.
В то время как в предыдущем исследовании принимали участие от 20 до 30 человек, чтобы определить, какие системы мозга в среднем используются для понимания кода, новое исследование рассматривает активность мозга отдельных программистов, когда они обрабатывают определенные элементы компьютерной программы. Предположим, например, что есть однострочный фрагмент кода, который включает в себя манипуляции со словами, и отдельный фрагмент кода, который включает в себя математическую операцию.
«Могу ли я перейти от активности, которую мы наблюдаем в мозге, к фактическим сигналам мозга, чтобы попытаться провести обратный инжиниринг и выяснить, на что конкретно смотрел программист?» — спрашивает Шрикант. «Это покажет, какая информация, относящаяся к программам, уникально закодирована в нашем мозгу». Он отмечает, что для неврологов физическое свойство считается «закодированным», если они могут сделать вывод об этом свойстве, просматривая сигналы чьего-то мозга.
Возьмем, к примеру, цикл — указание внутри программы повторять определенную операцию до тех пор, пока не будет достигнут желаемый результат, — или ветвь, другой тип инструкции программирования, который может заставить компьютер переключаться с одной операции на другую. Основываясь на наблюдаемых паттернах мозговой активности, группа могла сказать, оценивал ли кто-то часть кода, включающую цикл или ветвь. Исследователи также могли определить, был ли код связан со словами или математическими символами, и читал ли кто-то фактический код или просто письменное описание этого кода.
Это ответило на первый вопрос, который может задать следователь, действительно ли что-то закодировано. Если ответ положительный, может возникнуть следующий вопрос: где это закодировано? В приведенных выше случаях — циклы или ответвления, слова или математика, код или их описание — было обнаружено, что уровни активации мозга сопоставимы как в языковой системе, так и в сети с множественными требованиями.
Однако была замечена заметная разница, когда речь шла о свойствах кода, связанных с так называемым динамическим анализом.
Программы могут иметь «статические» свойства, такие как количество цифр в последовательности, которые не меняются со временем. «Но программы также могут иметь динамический аспект, например, количество запусков цикла», — говорит Срикант. «Я не всегда могу прочитать фрагмент кода и заранее знать, каково будет время выполнения этой программы». Исследователи Массачусетского технологического института обнаружили, что для динамического анализа информация гораздо лучше кодируется в сети множественного спроса, чем в центре обработки языка. Это открытие было одним из ключей к их стремлению понять, как понимание кода распределяется по всему мозгу — какие части задействованы, а какие играют большую роль в определенных аспектах этой задачи.
Команда провела вторую серию экспериментов, включающую модели машинного обучения, называемые нейронными сетями, специально обученные на компьютерных программах. В последние годы эти модели успешно помогают программистам завершать фрагменты кода. Группа хотела выяснить, напоминают ли сигналы мозга, наблюдаемые в их исследовании, когда участники изучали фрагменты кода, образцы активации, наблюдаемые при анализе нейронными сетями того же фрагмента кода. И ответ, к которому они пришли, был квалифицированным «да».
«Если вы поместите фрагмент кода в нейронную сеть, она создаст список чисел, который каким-то образом скажет вам, для чего предназначена программа», — говорит Срикант. Сканирование мозга людей, изучающих компьютерные программы, также дает список чисел. Например, когда в программе преобладает ветвление, «вы видите отчетливую картину активности мозга, — добавляет он, — и вы видите аналогичную картину, когда модель машинного обучения пытается понять тот же самый фрагмент».
Мария Тонева из Института программных систем им. Макса Планка считает подобные открытия «особенно интересными. Они расширяют возможности использования вычислительных моделей кода для лучшего понимания того, что происходит в нашем мозгу, когда мы читаем программы», — говорит она.
Ученые Массачусетского технологического института определенно заинтригованы обнаруженными ими связями, которые проливают свет на то, как отдельные фрагменты компьютерных программ кодируются в мозгу. Но они еще не знают, что эти недавно полученные знания могут рассказать нам о том, как люди осуществляют более сложные планы в реальном мире.
Выполнение задач такого рода, таких как поход в кино, требующий проверки расписания сеансов, организация транспорта, покупка билетов и т. д., не может быть выполнено с помощью одной единицы кода и одного алгоритма. Успешное выполнение такого плана вместо этого потребует «композиции» — объединения различных фрагментов и алгоритмов в разумную последовательность, которая приведет к чему-то новому, точно так же, как сборка отдельных музыкальных тактов для создания песни или даже симфонии. Создание моделей композиции кода , по словам О’Рейли, главного научного сотрудника CSAIL, «на данный момент находится за пределами нашего понимания».
Липкин, доктор наук BCS. Студент считает это следующим логическим шагом — выяснить, как «комбинировать простые операции для создания сложных программ и использовать эти стратегии для эффективного решения общих логических задач». Он также считает, что некоторый прогресс в достижении этой цели, достигнутый командой до сих пор, обязан ее междисциплинарному составу.
«Мы смогли использовать индивидуальный опыт анализа программ и обработки нейронных сигналов, а также совместную работу по машинному обучению и обработке естественного языка», — говорит Липкин. «Такие типы сотрудничества становятся все более распространенными, поскольку ученые-нейро- и компьютерщики объединяют усилия в поисках понимания и развития общего интеллекта».
Теги: МРТ, программист