Люди не должны ходить строем. ИИ в генетике и не только
Искусственный интеллект сегодня применяется во всех областях науки и жизни. О том, почему он стал незаменимым и какие тут есть опасности, рассуждает член-корреспондент РАН Всеволод Макеев, доктор физико-математических наук, главный научный сотрудник Института общей генетики РАН им. Н. И. Вавилова и Института биохимии и генетики УФИЦ РАН
— Итак, искусственный интеллект в генетике. Какие он даёт новые возможности?
— Генетика — это наука, которая изучает наследование разных признаков. Признаки, особенно интересные для человека, — это признаки самого человека: особенности телосложения, поведения, предрасположенность к болезням. Можно ещё говорить о приложениях генетики, например, о генетике животных и растений, когда изучаются признаки, ценные для нашей хозяйственной деятельности. И, наконец, такая важная вещь, как генетика охраны природы: надо сохранять генетическое разнообразие для видов с очень малой численностью. Если генетическое разнообразие станет слишком низким, сохранить вид не получится.
Генетические данные, включая последовательности ДНК — генотипы и различные характеристики организмов — фенотипы, являются одним из наиболее объёмных типов данных в настоящее время. По своему объёму такие данные сравнимы с изображениями и «социальными данными» (типа транзакций в банках, использования мобильных телефонов, социальных сетей и т. д.). Так что без современных компьютерных технологий с подобными данными нереально работать. Прогресс компьютерных алгоритмов постоянно даёт новые возможности, и их нельзя недооценивать. Можно выделять фенотипические признаки, которые раньше были практически недоступны. Это могут быть признаки, которые возникают из компьютерного анализа изображений — например микроскопических изображений. Недавно в Петербурге была сделана интересная работа. Её автор Екатерина Пчицкая из Института биомедицинских систем и биотехнологий СПбПУ вместе с сотрудниками разработала метод анализа количества и расположения шипиков на окончаниях нейронных отростков-дендритов в мозге. Это, оказывается, довольно важный признак для диагностики ряда нервно-психиатрических синдромов. Раньше он был для работы практически недоступен, потому что нужно было вручную эти шипики на микрофотографиях считать, а сейчас, путём компьютерного анализа изображений, делать это стало намного проще и быстрее.
— Каким образом происходит такой подсчёт?
— Изображения можно анализировать, выделяя контуры, — современные нейронные сети это хорошо умеют делать. Дальше для выделения конкретных признаков делают более сложные преобразования: например, коллеги из Петербурга, которые изучали шипики, проводили прямые линии, соединяющие точки контура отростка нейрона, и было понятно, где гладкий участок дендрита, а где дендрит с шипиками.
— Но ведь анализом изображений занимаются уже лет сорок…
— Если не пятьдесят. Но есть и совершенно новые направления развития науки в этой области. Сейчас термин «искусственный интеллект» обычно используют для методов, связанных с большими языковыми моделями (Large Language Models, LLM). Относительно простые примеры использования языковых моделей — это системы перевода с языка на язык. Система читает текст на одном языке и генерирует текст на другом. Вариантом является автоматическое написание компьютерного кода, компьютерных программ. Тогда система будет читать описание задачи на «человеческом языке» и генерировать текст на языке, понятном машине, — компьютерную программу на языке программирования.
В интернете сейчас накоплено огромное количество «текстов» как на естественных языках, так и на языках программирования. Например, существует популярная платформа гитхаб (GitHub ), которая используется для хранения и разработки компьютерных программ. Утверждается, что в базах данных GitHub хранят свой программный код не менее ста миллионов разработчиков. Это огромное количество уже написанного кода на разных языках программирования, около половины миллиарда разных проектов. Сейчас GitHub принадлежит компании Microsoft, которая, по-видимому, может использовать его для обучения своих моделей автоматической генерации кода. Но большое количество кода открыто, так что не только Microsoft может тренировать модели.
— Как всё это применяется в генетике?
— Довольно существенная часть кода создана для анализа текстовых данных, а поскольку генетические данные являются разновидностью текстовых (строковых) данных, то стандартные рецепты для работы с такими данными применимы и для решения задач в области биоинформатики/генетики. С помощью анализа известного кода, используемого для анализа генетических данных, и описаний на естественном языке того, что этот код делает, научились довольно хорошо автоматически генерировать новый код, который решает стандартные задачи, часто возникающие при анализе данных генетики.
Например, в биоинформатике распространённая задача — разобрать строку с описанием образца. Существует проект TCGA, The Cancer Genome Atlas, в нём, в частности, хранятся данные по генетике, генотипы и фенотипы примерно для 20 тысяч опухолей и нормальных тканей тех же людей. Фенотипы для опухолей — это их молекулярные характеристики, например активность работы конкретных генов или метилирование разных участков ДНК. Пусть имеется транскриптом опухоли — данные об активности приблизительно 20 тысяч генов и о том, как они в этой опухоли работают. Такая запись из 20 тысяч чисел, где каждое число характеризует активность конкретного гена. Каждому такому набору чисел предшествует длинная строка-описание, в которой закодировано, какой это рак, его стадия, способ получения данных, в какой лаборатории делался эксперимент и т. д. Строка выглядит примерно следующим образом: TCGA-A1-A0SD-01A-21D-A10W-08. Несколько букв, дефис, где каждая комбинация букв что-то кодирует. Например, A1 означает, что данные получены в Университете Калифорнии в Сан-Франциско. Раньше довольно большую часть рабочего времени у биоинформатика занимало то, что он писал разные кодировщики, которые подобные строки разбирают и преобразуют данные в большую таблицу. В одной колонке — какой рак, в другой — стадия, в третьей — лаборатория, где проходило исследование. Каждый образец — строка в таблице. Иногда требовалось полдня, чтобы всё это аккуратно сделать. Сейчас можно написать в интернете запрос типа «создай код на языке R, который разбирает строку кодов типов образцов TCGA в таблицу», и модель сгенерирует код. Модель также предоставит тестовый пример, с помощью которого можно проверить, правильно ли код работает. Если вам что-то не понравится, вы говорите, что нужно переделать. Можно просто устно сказать, что именно нужно исправить. И программа предложит новый вариант кода! В результате работа происходит намного быстрее. В последнее время появились программы-агенты, которые могут запустить сгенерированную программу, проанализировать результаты её работы и самостоятельно попытаться исправиться. Такой цикл с мгновенной обратной связью существенно улучшает результат.
— Означает ли это, что программисты скоро будут не нужны?
— Вообще-то не только программисты, но и прикладные математики, инженеры — работа таких специалистов сильно изменится. В случае биоинформатики, которую я хоть немного знаю, бóльший вес теперь падает на то, чтобы придумать, что, собственно, программа должна делать, и на то, чтобы оттестировать её работу. На самом деле задача написания кода пока не очень хорошо решается: искусственный интеллект пишет код с ошибками или даёт код, который делает не совсем то, что нужно.
— Это пока он пишет с ошибками, но ведь такие системы быстро совершенствуются…
— Да, но они используют то, что есть в репозиториях на гитхабе и подобных платформах, то, что люди уже загрузили. И если для решения какого-то типа задач нашлось не очень много примеров, то сделанный код имеет тенденцию становиться всё более похожим на те варианты, которые уже выложены. Надо понимать, что у искусственного интеллекта нет структурного мышления, у него нет понятия задачи, выполняемой программой. Программа анализируется как текст: насколько часто разные фрагменты кода встречаются в похожем контексте, а также в контексте описаний задач, которые тоже описаны как текст, уже на человеческом языке. Если это задача редкая, какой-нибудь новый тип данных, с которыми пока мало работали, у системы окажется недостаточно примеров для обучения, и она может соорудить код, который делает что-то странное. Хотя для решения очень распространённых или очень важных задач можно создавать специализированные модели, поведение которых больше похоже на целенаправленное. Они будут самостоятельно пытаться оценить, насколько точно сгенерированный код решает поставленную задачу и обучается на своих ошибках.
— Приходилось ли вам в своей работе сталкиваться с примерами, когда именно в генетических исследованиях удавалось применять такие системы?
— Методики, которые применяются людьми и к которым я имею отношение, — это свёрточные и трансформерные нейронные сети. На этом не очень модном для ИИ уровне есть ряд хороших примеров. Например, недавно защитил кандидатскую диссертацию наш аспирант в Институте общей генетики РАН Дмитрий Дмитриевич Пензар, который занимается регуляторной геномикой. Задача тут вот в чём. Геномы разных людей немного отличаются друг от друга, есть индивидуальные варианты. Некоторые варианты могут быть неудачными, и генетический текст с таким вариантом приведёт к тому, что что-то в организме у этого человека будет неправильно работать.
