Может показаться, что ChatGPT работает непредсказуемо: то уверенно пишет документацию к коду, то не может решить школьную задачу по математике. Самое опасное, что во втором случае нейросеть умеет ввести в заблуждение. Чтобы понимать, какие задачи можно доверить чат-боту ChatGPT, важно знать особенности его работы.
В этой статье data scientist Mindbox, в прошлом преподаватель и научный сотрудник РАН, без лишнего философствования расскажет о работе нейросетей типа ChatGPT. На своем примере он покажет, как упрощать повседневную работу с помощью ChatGPT и подобных моделей. А в конце приведет ссылки на полезные статьи.
Об авторе
Всем привет, меня зовут Виталий!
С машинным обучением и нейронными сетями я познакомился в 2007 году, когда был аспирантом и занимался задачами компьютерного зрения и интеллектуального анализа данных. С 2016-го, когда передовые нейросети стали библиотеками, разрабатывал системы анализа сцен и трекинга объектов на них. В общем, нейросети для меня — не что-то волшебное и новое.
За это время прошло несколько волн хайпа — и вокруг машинного обучения в целом, и вокруг нейросетей (особенно нейросетей глубокого обучения). Обычно люди делятся на два лагеря: фанаты и скептики. Я не могу отнести себя ни к одним, ни к другим. По-моему, есть сферы, в которых тот же ChatGPT является прорывом. Но также есть задачи, которые современным чат-ботам не по силам. Отличать одни задачи от других несложно — сейчас научу.
Почему СhatGPT — не искусственный интеллект
Вокруг нейросетей возникло много преувеличений. Появляются новости, что современные «нейронки» сдают экзамены в Оксфорде, доказывают теоремы, нанимают фрилансеров решать капчу и готовятся поработить мир. Увы, все эти заявления — часть информационного пузыря.
Современный ChatGPT и другие генеративные модели — не первые в своем роде. Это направление, связанное с пониманием текстов, развивалось довольно давно. Самым известным прародителем такого подхода можно назвать модель Word2vec, которая неожиданно качественно научилась превращать слова в векторные представления, сохраняя при этом значения слов, свойства синонимов: если векторы близки по евклидову расстоянию, то и смысл слов схож. Эта модель доказала, что с помощью вычислений можно уловить закономерности в естественном языке.
ChatGPT тоже основывается на выявлении закономерностей в огромных массивах текстов. В основе его обучения лежит концепция self-supervised learning: нейросети не дают набор готовых вопросов и правильных ответов (обучение с учителем), а просто учат предсказывать следующее слово в тексте, основываясь на предыдущих словах. Когда вы отправляете запрос, ChatGPT выдает ответ слово за словом. Многие восторгаются визуальным эффектом, будто ответ пишет настоящий человек. Но самое смешное в том, что так на самом деле работает нейросеть: ChatGPT использует вопрос в качестве основы и генерирует наиболее подходящее следующее слово — и так слово за словом собирает ответ.
Происхождение и модель обучения определяют особенности работы нейросети. Зная их, проще понять, какие задачи можно ей доверить, а какие — нет.
ChatGPT не учится правильно отвечать на вопросы. Генеративные нейросети учатся генерировать текст, максимально похожий на существующий где-то в реальном мире. Для них нет понятий «реальный факт» и «вымысел». Если теория кубической Земли звучит правдоподобно — ChatGPT выдаст и ее.
Если ответа нет, нейросеть его выдумывает. Так появляются «галлюцинации». Например, если настойчиво требовать от ChatGPT конкретных цитат, фамилий, дат и названий книг, нейросеть сгенерирует несуществующие факты. Проблема в том, что «галлюцинации» очень правдоподобны — понять, перед вами бред или реальный факт, бывает сложно.
В ответе есть доля рандома. Нейросеть каждый раз заново генерирует ответ, выбирая из нескольких наиболее правдоподобных вариантов. Поэтому в ответах всегда есть элемент случайности.
Ответ нейросети зависит от вопроса. ChatGPT основывается на полученном запросе и не умеет уточнять. Если задать вопрос с ошибкой, нейросеть «переварит» его и выдаст ошибочный ответ. Если задать один вопрос разными словами, чат выдаст ответы, которые могут отличаться.
Нейросеть не рассуждает и не перепроверяет «целостность» и последовательность сгенерированного. Если предложить ChatGPT решить сложную математическую задачу, связанную с построением цепочки рассуждений, комбинирования разных формул и теорем, скорее всего, ответ будет некорректным. Но вполне возможно, что факты и тезисы, из которых состоит цепочка размышлений, будут верными. Так, даже располагая всей необходимой информацией, нейросеть может допустить логическую ошибку.
Опрометчиво считать ChatGPT и подобные системы искусственным интеллектом. Скорее это сверхмощный бот, натренированный на прохождение теста Тьюринга (т. е. на создание у реального человека впечатления, что машина тоже человек). Вся привлекательность и вау-эффект современных нейросетей обусловлены тем, что чат-боты обучались в первую очередь имитировать «настоящие» тексты, взятые из огромной обучающей базы. Единственная их цель — сгенерировать правдоподобный контент: выдавать текст, будто написанный человеком; изображения, будто нарисованные человеком; звуки, которые может издавать человек. Это умение зачастую играет с пользователями злую шутку.
Когда использовать ChatGPT вредно
ChatGPT плохо обобщает и строит логические конструкции, но при этом хорошо вводит в заблуждение. Если не быть профи в теме, легко пропустить «галлюцинацию» — особенно в сложных для ChatGPT вопросах. Поэтому я не рекомендую использовать нейросети в некоторых задачах.
Нетипичные и редкие задачи
ChatGPT может решать задачи по программированию и писать код программ, но делает он это с очень нестабильным качеством. Я думаю, дело в том, что нейросеть не воспринимает языки программирования как систему, не понимает их логики и законов. Если попросить чат решить задачу, возможен один из двух вариантов:
Если задача типовая и легко найти готовый кусок кода, чат даст правильный ответ. Условно, сработает как хороший поисковик по форумам stackoverflow.
Если задача нетипичная и в закромах не найти решение, написанное человеком, чат будет его выдумывать. Скорее всего, в результате получится правдоподобный, но неработающий код.
Нестандартный анализ и сложные выводы
Нет смысла доверять ChatGPT решение некорректно сформулированных задач или задач, требующих уточнения условий. Например, задача факторизации — мы даже не знаем, можно ли ее решить за полиномиальное время.
Даже без NP-hard-задач нейросети вряд ли справятся с задачей анализа и моделирования. Например, нужно сравнить два отрывка кода на BASIC и на С++ и сказать, будут ли они работать идентично. ChatGPT не сможет проанализировать суть команд и сравнить их.
Вывод — какие задачи нельзя доверять ChatGPT. Для себя я сформулировал правило: «Не решать с помощью ChatGPT задачи, которые требуют:
применения сложных правил или формул к реальным данным;
построения логических цепочек;
формулирования сложных выводов, особенно в новых для меня областях;
поиска ответов на узкоспециализированные и редкие вопросы — на те, по которым точно нет готовых ответов и материалов где-то в интернете.
Этот принцип можно упростить. Не стоит решать с помощью ChatGPT задачи, в которых вы не сможете отличить «галлюцинации» от корректного решения.
В каких задачах GPT полезен разработчику
Ранее я писал лишь о слабостях и недостатках нейросетей. Однако я не считаю современные нейросети ни на что не годными. Уже сейчас нейросети позволяют решать практические задачи. В этом разделе расскажу, когда они помогают мне.
Я пользуюсь несколькими вариантами нейросетей, каждая из которых имеет некоторые преимущества. Для следующих примеров буду использовать ChatGPT Plus, платную версию Perplexity или Claude-2.
Поиск информации
ChatGPT — это прорыв в интернет-поиске. Возможно, вы застали времена, когда поисковики работали на простом поиске ключевых слов: пользователи перечисляли ключи, а поисковик выдавал страницы, на которых они есть. Потом появился Google, и это был шаг вперед. Теперь ChatGPT делает гигантский шаг по сравнению с Google.
Преимущество ChatGPT в том, что он «понимает» запросы на естественном языке. Можно написать два абзаца текста о том, что вам нужно найти — ChatGPT извлечет из этого суть и найдет нужную информацию. С ним можно искать информацию, не понимая предметной области: когда вам незнакомы термины (те самые ключевые слова для поисковика!) и вы не знаете, как подступиться к проблеме. Например, те, кто не разбираются в программировании, могут простыми словами описать свой вопрос, и ChatGPT ответит на него.
В научной работе ChatGPT помогает с поиском и первичным анализом материалов. По неформализованному описанию нейросеть формулирует вопросы, готовит обзор литературы, помогает с редактированием текста.
Суммаризация
Когда нет времени изучать длинный текст, можно с большой осторожностью доверить ChatGPT его суммаризацию. Это особенно полезно, если вы работаете с технической документацией или научными статьями. Чат не сможет усвоить логику, сделать серьезные выводы или проанализировать корректность исследований, но легко выделит основное и сведет текст к кратким тезисам (но всегда помните, что вы должны быть знакомы с предметной областью, чтобы оценить корректность этих тезисов). И вот уже вместо ста страниц документа достаточно изучить страницу выводов. Мне как data scientist это экономит кучу времени на первичный анализ технических материалов.
Когда нужно работать с большим объемом контекста, я выбираю нейросеть Claude. Она обрабатывает 100 тысяч токенов — это почти в три раза больше, чем у ChatGPT, и справляется с анализом документов на десятки страниц.
Простые вопросы
ChatGPT не может решить сложные и модифицированные задачи, но без проблем находит ответы на простые запросы. Условно, это те задачи, которые точно есть на форумах, но найти их сложно. Например, с помощью нейросети можно решать типовые задачи с собеседований про инвертирование списка или обход дерева. Но не забывайте про «галлюцинации» и всегда проверяйте решение, которое выдает чат.
Поиск простых багов и опечаток
ChatGPT помогает, когда нужно найти простые ошибки в коде: опечатки, лишний копипаст. Это полезно, когда взгляд замыливается.
Документирование
ChatGPT обучался на простых кусках кода и решении типовых задач. Поэтому нейросеть может найти знакомые кусочки кода и написать шаблонный docstring. Результат будет черновой — нейросеть не сможет описать суть кода и решаемой проблемы. Но, по моему опыту, ChatGPT экономит до 50–80% времени на написание рутинного кода и довольно простых тестов.
Чтобы результат был лучше, важно адекватно именовать переменные и по возможности явно декларировать типы.
Эта возможность ChatGPT полезна начинающим разработчикам: когда нужно разобраться в сложных участках чужого кода, к которым нет комментариев, можно доверить это нейросети.
Unit-тестирование
ChatGPT способен написать простые unit-тесты по текстовому запросу и коду функции. Похоже, что, как и в других задачах, делает он это за счет подгонки шаблонных тестов под сигнатуры и особенности функций. Поэтому не стоит рассчитывать, что нейросеть напишет хитрые интеграционные тесты с описанием на полстраницы.
Перевод текста
Судя по моему опыту, письменный перевод ChatGPT не уступает популярным сервисам — переводчикам Google и «Яндекс» уж точно. Преимущество нейросети в том, что с помощью промптов можно управлять стилем текста: например, сделать его в стиле нейтив-спикера, более жаргонным, деловым или дружеским.
Вывод — какие задачи доверить ChatGPT. Универсальное правило — решать с помощью ChatGPT задачи, в которых сложно сгенерировать вариант решения, но легко его проверить.
Совет: какими нейросетями пользоваться
ChatGPT — не панацея, в части задач он проигрывает аналогам:
Поиск информации, резюмирование найденного и аннотирование ссылок. Perplexity в этой работе лучший: «галлюцинаций» меньше, чем в ответах других нейросетей. Еще можно воспользоваться Bing или ChatGPT с плагинами WebPilot\BrowserPilot.
Анализ больших текстов, составление резюме и аннотаций на научные и технические тексты, работа с PDF. С этими задачами лучше идти к Claude-2 — он готов «переварить» до 50–100 страниц текста — в несколько раз больше, чем ChatGPT-4.
Написание и анализ кода, визуализация данных. Лучший результат выдает ChatGPT Plus в режиме Advanced Data Analysis (нужно включить бета-функции в аккаунте) — он не только генерирует код, но сразу же его запускает и анализирует результат. Если нужно только писать код, неплохо справится Claude-2.
Вывод
Есть задачи, в которой ChatGPT является прорывом. Например, в интернет-поиске и анализе текстов ChatGPT значительно облегчает работу.
Есть задачи, в которых ChatGPT склонен ошибаться, но маскировать свои ошибки и сбивать пользователя с толку. Например, если вопрос связан с анализом, исследованием программного кода или построением логической модели. Успех решения таких задач зависит от квалификации пользователя: если вы можете проверить ответ, обращайтесь к нейросети, но без особых надежд.
Что еще изучить по теме
Если вы не стремитесь изучить профессиональные и узкоспециальные источники, рекомендую прочитать Яна Лекуна «Как учится машина» — книга поможет понять, как появились современные нейросети и какие этапы развития они прошли. Еще советую посмотреть серию видеолекций Стивена Вольфрама «How ChatGPT works».
Если интересно мнение скептиков, рекомендую следующие материалы:
Muhammad Saad Uddin «Stochastic Parrots: A Novel Look at Large Language Models and Their Limitations». Статья про концепцию стохастических попугаев (stochastic parrots) — так скептики называют модели, которые генерируют реалистичный текст и не понимают его смысл, не способны к логическим рассуждениям. Поможет более осознанно и критично подходить к впечатляющим результатам современных «нейронок».
Csaba Veres «Large Language Models are not Models of Natural Language: they are Corpus Models». Статья про работу нейросетей типа ChatGPT: повторяют ли они статистические закономерности из обучающих данных или действительно «понимают» язык и способны анализировать смысл текста. Есть интересные примеры с генерацией кода.
«On the dangers of stochastic parrots: Can language models be too big?» Видео, в котором профессионалы отвечают на вопросы: в чем «темная сторона» повсеместного использования языковых моделей, о чем помнить, внедряя их в работу, что такое «предвзятость модели» и насколько нейросети чувствительны к качеству обучающих данных.
Если нужны подробные и системные обзоры, которые помогут не поддаться волне хайпа «Skynet уже тут, из-за него я останусь без работы», могу рекомендовать:
Stephen Wolfram «What Is ChatGPT Doing and Why Does It Work?». Небольшая книга, написанная по мотивам видеолекций Стивена Вольфрама про ChatGPT. Подойдет для знакомства с нейросетями: позволит познакомиться с базовыми понятиями и на примерах разобраться в том, как работает современный AI. Вольфрам не узко специализирован на нейросетях, поэтому скучно не будет. От книги не стоит ждать практических советов — здесь их немного.
Jean Kaddour, Joshua Harris, Maximilian Mozes, et al. «Challenges and Applications of Large Language Models». Объемная статья-обзор именитого коллектива авторов. Она рассчитана на специалистов, разрабатывающих модели, похожие на ChatGPT, но будет полезна и тем, кто просто интересуется. Авторы рассказывают, что умеет ChatGPT, а что нет, какие проблемы и ограничения у него «под капотом». Самое интересное — советы, как сделать ChatGPT полезным инструментом, несмотря на его ограничения.
Amos Azaria, Rina Azoulay, Shulamit Reches «ChatGPT is a Remarkable Tool For Experts». Моя любимая статья. Чтобы понять ее, не нужно быть разработчиком нейросетей. Статья фокусируется на применении ChatGPT в разных областях — от программирования до обучения студентов. Описаны подводные камни и результаты экспериментов, приведена куча примеров, где ChatGPT ведет себя отлично, а где не очень. В общем, если нет времени на математику, но есть желание профессионально использовать ChatGPT — вам сюда.
«Сильный искусственный интеллект: на подступах к сверхразуму». Книга для тех, кто хочет погрузиться в тему ИИ и понять: ChatGPT — это настоящий искусственный интеллект, как в фильме Кубрика, или нет.