Может показаться, что ChatGPT работает непредсказуемо: то уверенно пишет документацию к коду, то не может решить школьную задачу по математике. Самое опасное, что во втором случае нейросеть умеет ввести в заблуждение. Чтобы понимать, какие задачи можно доверить чат-боту ChatGPT, важно знать особенности его работы. 

В этой статье data scientist Mindbox, в прошлом преподаватель и научный сотрудник РАН, без лишнего философствования расскажет о работе нейросетей типа ChatGPT. На своем примере он покажет, как упрощать повседневную работу с помощью ChatGPT и подобных моделей. А в конце приведет ссылки на полезные статьи.


Об авторе

Всем привет, меня зовут Виталий!

С машинным обучением и нейронными сетями я познакомился в 2007 году, когда был аспирантом и занимался задачами компьютерного зрения и интеллектуального анализа данных. С 2016-го, когда передовые нейросети стали библиотеками, разрабатывал системы анализа сцен и трекинга объектов на них. В общем, нейросети для меня — не что-то волшебное и новое.

За это время прошло несколько волн хайпа — и вокруг машинного обучения в целом, и вокруг нейросетей (особенно нейросетей глубокого обучения). Обычно люди делятся на два лагеря: фанаты и скептики. Я не могу отнести себя ни к одним, ни к другим. По-моему, есть сферы, в которых тот же ChatGPT является прорывом. Но также есть задачи, которые современным чат-ботам не по силам. Отличать одни задачи от других несложно — сейчас научу.

Почему СhatGPT — не искусственный интеллект 

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

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

ChatGPT тоже основывается на выявлении закономерностей в огромных массивах текстов. В основе его обучения лежит концепция self-supervised learning: нейросети не дают набор готовых вопросов и правильных ответов (обучение с учителем), а просто учат предсказывать следующее слово в тексте, основываясь на предыдущих словах. Когда вы отправляете запрос, ChatGPT выдает ответ слово за словом. Многие восторгаются визуальным эффектом, будто ответ пишет настоящий человек. Но самое смешное в том, что так на самом деле работает нейросеть: ChatGPT использует вопрос в качестве основы и генерирует наиболее подходящее следующее слово — и так слово за словом собирает ответ.

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

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

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

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

Кнопка Regenerate в веб-интерфейсе ChatGPT — яркое проявление случайности ответов. Она заставляет нейросеть сгенерировать новый ответ, и часто он отличается от предыдущего
Кнопка Regenerate в веб-интерфейсе ChatGPT — яркое проявление случайности ответов. Она заставляет нейросеть сгенерировать новый ответ, и часто он отличается от предыдущего

Ответ нейросети зависит от вопроса. ChatGPT основывается на полученном запросе и не умеет уточнять. Если задать вопрос с ошибкой, нейросеть «переварит» его и выдаст ошибочный ответ. Если задать один вопрос разными словами, чат выдаст ответы, которые могут отличаться. 

Так все же написал Лефевр «Рефлексию» или нет? Спойлер — написал
Так все же написал Лефевр «Рефлексию» или нет? Спойлер — написал

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

Попросим ChatGPT решить простую математическую задачу. Он знает про теорему Пифагора, но при размышлении сбивается
Попросим ChatGPT решить простую математическую задачу. Он знает про теорему Пифагора, но при размышлении сбивается

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

Когда использовать ChatGPT вредно

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

Нетипичные и редкие задачи

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

  • Если задача типовая и легко найти готовый кусок кода, чат даст правильный ответ. Условно, сработает как хороший поисковик по форумам stackoverflow.

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

(Неполный вывод.) ChatGPT решает стандартную задачу с собеседований — идеальное шаблонное решение
(Неполный вывод.) ChatGPT решает стандартную задачу с собеседований — идеальное шаблонное решение
Начал чудить, стоило чуть модифицировать стандартную задачу для собеседования
Начал чудить, стоило чуть модифицировать стандартную задачу для собеседования

Нестандартный анализ и сложные выводы

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

Это знаменитая задача факторизации из криптографии. Для больших чисел ее нельзя решить за обозримое время — на этом работает современное шифрование данных. Но нейросеть берется ее решать. Ривест, Шамир, Адельман — на выход с вещами! (Для формалистов — да, я знаю, что с задачей факторизации не все так просто, и про алгоритм Шора тоже знаю.)
Это знаменитая задача факторизации из криптографии. Для больших чисел ее нельзя решить за обозримое время — на этом работает современное шифрование данных. Но нейросеть берется ее решать. Ривест, Шамир, Адельман — на выход с вещами! (Для формалистов — да, я знаю, что с задачей факторизации не все так просто, и про алгоритм Шора тоже знаю.)

Даже без NP-hard-задач нейросети вряд ли справятся с задачей анализа и моделирования. Например, нужно сравнить два отрывка кода на BASIC и на С++ и сказать, будут ли они работать идентично. ChatGPT не сможет проанализировать суть команд и сравнить их.

Попросим ChatGPT решить стандартную задачу с собеседования — предсказать, что выдаст код на Python. Чат дает ответ, но абсолютно неправильно (почему так, за что число 200 обидели?) 
Попросим ChatGPT решить стандартную задачу с собеседования — предсказать, что выдаст код на Python. Чат дает ответ, но абсолютно неправильно (почему так, за что число 200 обидели?) 
Дадим ChatGPT задачу на рассуждение. Чат выдает шаблонные ответы и не вникает в детали вопроса, например, никак не учитывает свойства рекомендательных систем на коллаборативной фильтрации. Если бы такой ответ дал кандидат на собеседовании, это был бы провал
Дадим ChatGPT задачу на рассуждение. Чат выдает шаблонные ответы и не вникает в детали вопроса, например, никак не учитывает свойства рекомендательных систем на коллаборативной фильтрации. Если бы такой ответ дал кандидат на собеседовании, это был бы провал

Вывод — какие задачи нельзя доверять ChatGPT. Для себя я сформулировал правило: «Не решать с помощью ChatGPT задачи, которые требуют:

  • применения сложных правил или формул к реальным данным;

  • построения логических цепочек;

  • формулирования сложных выводов, особенно в новых для меня областях;

  • поиска ответов на узкоспециализированные и редкие вопросы — на те, по которым точно нет готовых ответов и материалов где-то в интернете.

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

В каких задачах GPT полезен разработчику

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

Я пользуюсь несколькими вариантами нейросетей, каждая из которых имеет некоторые преимущества. Для следующих примеров буду использовать ChatGPT Plus, платную версию Perplexity или Claude-2.

Поиск информации

ChatGPT — это прорыв в интернет-поиске. Возможно, вы застали времена, когда поисковики работали на простом поиске ключевых слов: пользователи перечисляли ключи, а поисковик выдавал страницы, на которых они есть. Потом появился Google, и это был шаг вперед. Теперь ChatGPT делает гигантский шаг по сравнению с Google.

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

ChatGPT воспринимает описание, написанное «бытовым» языком, и помогает подобрать термины и запросы для дальнейшего поиска — outliers, heavy tails, skewness. Это помогает преодолеть барьер новичка — когда непонятно, как правильно задать вопрос.А если опасаетесь «галлюцинаций», попросите ChatGPT сформулировать запросы для Google
ChatGPT воспринимает описание, написанное «бытовым» языком, и помогает подобрать термины и запросы для дальнейшего поиска — outliers, heavy tails, skewness. Это помогает преодолеть барьер новичка — когда непонятно, как правильно задать вопрос.А если опасаетесь «галлюцинаций», попросите ChatGPT сформулировать запросы для Google

В научной работе ChatGPT помогает с поиском и первичным анализом материалов. По неформализованному описанию нейросеть формулирует вопросы, готовит обзор литературы, помогает с редактированием текста.

ChatGPT находит ссылки на источники и составляет краткую рецензию
ChatGPT находит ссылки на источники и составляет краткую рецензию

Суммаризация

Когда нет времени изучать длинный текст, можно с большой осторожностью доверить ChatGPT его суммаризацию. Это особенно полезно, если вы работаете с технической документацией или научными статьями. Чат не сможет усвоить логику, сделать серьезные выводы или проанализировать корректность исследований, но легко выделит основное и сведет текст к кратким тезисам (но всегда помните, что вы должны быть знакомы с предметной областью, чтобы оценить корректность этих тезисов). И вот уже вместо ста страниц документа достаточно изучить страницу выводов. Мне как data scientist это экономит кучу времени на первичный анализ технических материалов.

Когда нужно работать с большим объемом контекста, я выбираю нейросеть Claude. Она обрабатывает 100 тысяч токенов — это почти в три раза больше, чем у ChatGPT, и справляется с анализом документов на десятки страниц.

Вот что нейросеть Claude-2 выдает про научную статью «Adjusting treatment effect estimates by post-stratification in randomized experiments», которая состоит из 50 страниц в PDF. Резюме и утверждения не везде корректны, но первое представление о статье составить можно
Вот что нейросеть Claude-2 выдает про научную статью «Adjusting treatment effect estimates by post-stratification in randomized experiments», которая состоит из 50 страниц в PDF. Резюме и утверждения не везде корректны, но первое представление о статье составить можно

Простые вопросы

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

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

Поиск простых багов и опечаток

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

ChatGPT находит глупые ошибки в коде сложного расчета перестановочных тестов
ChatGPT находит глупые ошибки в коде сложного расчета перестановочных тестов

Документирование

ChatGPT обучался на простых кусках кода и решении типовых задач. Поэтому нейросеть может найти знакомые кусочки кода и написать шаблонный docstring. Результат будет черновой — нейросеть не сможет описать суть кода и решаемой проблемы. Но, по моему опыту, ChatGPT экономит до 50–80% времени на написание рутинного кода и довольно простых тестов.

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

«Скормили» ChatGPT функцию совсем без комментариев — нейросеть их прописала
«Скормили» ChatGPT функцию совсем без комментариев — нейросеть их прописала

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

ChatGPT находит в коде простые кусочки и объясняет их смысл
ChatGPT находит в коде простые кусочки и объясняет их смысл

Unit-тестирование

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

ChatGPT-4 способен написать черновой код для unit-тестов и даже дописать дополнительные тесты под указанный случай. Разумеется, не все тесты корректны, например, в нашем случае обязательно нужно самостоятельно сверять expected_sessions_ids. Но даже такое решение экономит время
ChatGPT-4 способен написать черновой код для unit-тестов и даже дописать дополнительные тесты под указанный случай. Разумеется, не все тесты корректны, например, в нашем случае обязательно нужно самостоятельно сверять expected_sessions_ids. Но даже такое решение экономит время

Перевод текста

Судя по моему опыту, письменный перевод ChatGPT не уступает популярным сервисам — переводчикам Google и «Яндекс» уж точно. Преимущество нейросети в том, что с помощью промптов можно управлять стилем текста: например, сделать его в стиле нейтив-спикера, более жаргонным, деловым или дружеским.

Дадим ChatGPT и переводчику Google один текст для перевода. Корявое «совершить визит» Google переводит дословно: make a visit — слишком грубо и безапелляционно. ChatGPT переводит ту же фразу с учетом делового этикета: I would like to arrange visit — этот вариант допускает отказ, на собеседника нет давления. «Временные промежутки» Google переводит как time periods, ChatGPT предлагает более релевантный вариант — timeslots
Дадим ChatGPT и переводчику Google один текст для перевода. Корявое «совершить визит» Google переводит дословно: make a visit — слишком грубо и безапелляционно. ChatGPT переводит ту же фразу с учетом делового этикета: I would like to arrange visit — этот вариант допускает отказ, на собеседника нет давления. «Временные промежутки» Google переводит как time periods, ChatGPT предлагает более релевантный вариант — timeslots

Вывод — какие задачи доверить 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 — это настоящий искусственный интеллект, как в фильме Кубрика, или нет.

Комментарии (3)


  1. simenoff
    28.09.2023 12:57

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


    1. MitekinV Автор
      28.09.2023 12:57

      Надеюсь, вы сохранили себе в коллекцию мартовские ( выход GPT-4) восторженные статьи о том, как ИИ через пару месяцев всех победит и всех оставит без работы - копирайтеров, разрабов, преподавателей, врачей... :)

      Перечитывать с ехидной улыбкой, да.


      1. simenoff
        28.09.2023 12:57