Как искусственный интеллект меняет способ, которым мы пишем код

Влияние искусственного интеллекта на кодирование

Доказательства от ChatGPT и Stack Overflow

Фото от Pavel Danilyuk с сайта Pexels

Вкратце: В этой статье вы найдете краткое изложение моих последних исследований по искусственному интеллекту и работе (исследование влияния искусственного интеллекта на производительность и одновременное открытие дискуссии о его долгосрочных последствиях), пример квази-экспериментального метода (разность-в-разности) на примере ChatGPT и Stack Overflow, а также узнаете, как извлекать данные из Stack Overflow с помощью простого SQL-запроса.

Ссылка на полную научную статью (пожалуйста, укажите источник): https://arxiv.org/abs/2308.11302

Как и с любыми технологическими революциями, выпуск ChatGPT сопровождался фашинацией и страхом. С одной стороны, всего за два месяца приложение с 100 миллионами активных пользователей ежемесячно побило рекорд самого быстрорастущего потребительского приложения в истории. С другой стороны, отчет Goldman Sachs утверждал, что такая технология может заменить более 300 миллионов рабочих мест по всему миру [1]. Кроме того, Элон Маск вместе с более чем 1000 ведущих технологов и исследователей подписал открытое письмо, призывающее приостановить развитие самых передовых технологий искусственного интеллекта [2].

“Мы можем видеть только на короткое расстояние вперед, но мы можем видеть много того, что нужно сделать”. Алан Тьюринг

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

Мир изменился с появлением ChatGPT. По крайней мере, как для человека, который пишет код каждый день, мир изменился за одну ночь. Вместо того, чтобы тратить часы на поиск правильного решения в Google или изучение ответов на Stack Overflow и перевод их на свою конкретную проблему с правильными именами переменных и размерностями матриц, я мог просто спросить ChatGPT. Чат-бот не только давал мне ответ в мгновение ока, но и этот ответ соответствовал моей конкретной ситуации (например, правильные имена, размеры таблиц, типы переменных и т. д.). Я был поражен, и моя продуктивность внезапно выросла.

Поэтому я решил исследовать масштабное влияние выпуска ChatGPT и его потенциальное влияние на производительность и, в конечном счете, на способ, которым мы работаем. Я определил три гипотезы (H), которые я проверил с использованием данных Stack Overflow.

H1: ChatGPT снижает количество задаваемых вопросов на Stack Overflow. Если ChatGPT может решать проблемы с кодированием за секунды, можно ожидать сокращения количества вопросов на платформах сообщества разработчиков, где задание вопроса и получение ответа занимает время.

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

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

Для проверки этих гипотез я буду использовать внезапный выпуск ChatGPT на Stack Overflow. В ноябре 2022 года, когда OpenAI публично выпустила своего чат-бота, других альтернатив не было (например, Google Bard), и доступ был бесплатным (не ограничен платной подпиской, как в случае с OpenAI ChatGPT 4 или Code Interpreter). Поэтому можно наблюдать, как изменилась активность в онлайн-сообществе разработчиков до и после этого события. Однако, несмотря на “чистоту” этого события, другие эффекты могут быть запутаны и могут возникнуть вопросы о причинно-следственных связях. В частности, сезонность (например, праздники в конце года после выпуска) и тот факт, что чем более поздний вопрос, тем меньше просмотров и вероятность получения ответа.

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

Для этого я сравню активность на Stack Overflow между Python и R. Python – очевидный выбор, так как он, пожалуй, один из самых популярных используемых языков программирования (например, занимает первое место в индексе сообщества программирования TIOBE). Большой набор ресурсов онлайн для Python предоставляет богатый набор тренировочных данных для чат-ботов, таких как ChatGPT. Теперь, чтобы сравнить с Python, я выбрал R. Python часто называют лучшей заменой для R, и оба языка доступны бесплатно. Однако R несколько менее популярен (например, на 16-м месте в индексе сообщества программирования TIOBE), и, следовательно, объем тренировочных данных может быть меньше, что может привести к более низкой производительности ChatGPT. Анекдотические данные подтвердили эту разницу (подробности о методе в разделе “Метод”). Таким образом, R представляет собой действующий контрфакт для Python (он подвержен сезонным колебаниям, но мы можем ожидать незначительного влияния на ChatGPT).

Рисунок 1: Влияние ChatGPT на еженедельное количество вопросов на StackOverflow (рисунок автора)

На рисунке выше представлены исходные еженедельные данные. Мы можем наблюдать резкое и значительное снижение (21,2%) количества еженедельных вопросов на Stack Overflow о Python после выпуска ChatGPT 3.5, в то время как влияние на R немного меньше (снижение на 15,8%).

Эти «качественные» наблюдения подтверждаются статистической моделью. Описанная позднее эконометрическая модель находит статистически значимое снижение на 937,7 (95% CI: [-1232.8,-642.55]; p-value = 0.000) еженедельных вопросов в среднем для Python на Stack Overflow. Последующий анализ с использованием метода Diff-in-Diff дополнительно раскрывает улучшение качества вопросов (измеряемое на платформе по оценке), а также увеличение доли вопросов, оставшихся без ответа (в то время как среднее количество просмотров на вопрос кажется неизменным). Следовательно, эта работа предоставляет доказательства для трех ранее определенных гипотез.

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

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

Данные

Данные были извлечены с использованием SQL-запроса на портале Stack Overflow data explorer (лицензия: CC BY-SA). Вот использованная SQL-команда:

SELECT Id, CreationDate, Score, ViewCount, AnswerCountFROM PostsWHERE Tags LIKE '%<python>%'AND CreationDate BETWEEN '2022–10–01' AND '2023–04–30'AND PostTypeId = 1;

Затем я агрегировал данные по неделям, чтобы уменьшить шум и получил набор данных с понедельника 17 октября 2022 года по 19 марта 2023 года с информацией о количестве еженедельных публикаций, количестве просмотров, количестве просмотров на вопрос, среднем балле на вопрос и доле вопросов без ответа. Балл определяется пользователями платформы, которые могут голосовать за то, показывает ли вопрос «исследовательский подход; он полезен и понятен» или нет.

Метод

Для измерения причинного эффекта я использую модель Diff-in-Diff, которая является эконометрическим методом, который обычно использует изменение во времени и сравнивает обработанную единицу(ы) с необработанной группой. Чтобы узнать больше об этом методе, я могу порекомендовать вам прочитать главу, посвященную этому методу, в двух бесплатных электронных книгах: Causal Inference for the Brave and True и Causal Inference: The Mixtape.

Простыми словами, модель Diff-in-Diff вычисляет двойную разницу, чтобы определить причинный эффект. Вот упрощенное объяснение. Во-первых, идея заключается в вычислении двух простых разностей: «средняя» разница между предшествующим (до выпуска ChatGPT) и пост-периодом для двух групп – обработанной и необработанной (в данном случае соответственно вопросы на Python и R). Нас интересует эффект обработки на обработанные единицы (в данном случае эффект выпуска ChatGPT на вопросы на Python). Однако, как уже упоминалось ранее, может быть и другой эффект, все еще скомпрометированный с лечением (например, сезонностью). Для решения этой проблемы идея модели заключается в вычислении двойной разницы, чтобы проверить, как первая разница для обработанных (Python) отличается от второй (разница для контрольной группы, R). Поскольку мы ожидаем, что на контрольную группу не будет никакого эффекта лечения (или он будет незначительным), в то время как она все еще подвержена, например, сезонности, мы можем избавиться от этого потенциального фактора смешения и, в конечном итоге, измерить причинный эффект.

Вот немного более формальное представление.

Первое различие для группы, получившей обработку:

E[Yᵢₜ| Treatedᵢ, Postₜ]-E[Yᵢₜ| Treatedᵢ, Preₜ] = λₜ+β

Здесь i и t обозначают язык (R или Python) и неделю соответственно. Treated относится к вопросам, связанным с Python, а Post относится к периоду, когда ChatGPT был доступен. Это простое различие может представлять причинный эффект ChatGPT (β) + некоторый временной эффект λₜ (например, сезонность).

Первое различие для контрольной группы:

E[Yᵢₜ| Controlᵢ, Postₜ]-E[Yᵢₜ| Controlᵢ, Preₜ] = λₜ

Простое различие для контрольной группы не включает эффект лечения (так как она не получала лечение), а только λₜ.

Поэтому двойное различие даст:

DiD = ( λₜ+β) — λₜ = β

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

Суть этой модели заключается в предположении о параллельных трендах. Для того чтобы утверждать о причинном эффекте, нам следует быть уверенными в том, что без ChatGPT эволюция сообщений на Stack Overflow для Python (леченой группы) и для R (нелеченой группы) была бы одинаковой в период лечения (после ноября 2022 года). Однако, очевидно, невозможно наблюдать это напрямую и проверить (см. Основную проблему причинного вывода). (Если вы хотите узнать больше о этом концепте и причинном выводе, найдите мои видео и статьи на Towards Data Science: Science and Art of Causality). Однако можно проверить, параллельны ли тренды до возникновения “шока”, что говорит о том, что контрольная группа является потенциально хорошим “контрфактуальным” вариантом. Два разных плацебо-теста, проведенные с использованием данных, показали, что мы не можем отвергнуть предположение о параллельных трендах для периода до появления ChatGPT (p-значения тестов соответственно 0,722 и 0,397 (см. онлайн ПРИЛОЖЕНИЕ Б)).

Формальное определение:

Yᵢₜ = β₀ + β₁ Pythonᵢ + β₂ ChatGPTₜ + β₃ Pythonᵢ × ChatGPTₜ + uᵢₜ

“i” и “t” соответствуют теме вопроса на Stack Overflow (i ∈ {R; Python}) и неделе. Yᵢₜ представляет собой переменную результат: количество вопросов (H1), средний балл вопроса (H2) и доля неотвеченных вопросов (H3). Pythonᵢ – это бинарная переменная, принимающая значение 1, если вопрос связан с Python, и 0 в противном случае (связан с R). ChatGPTₜ – это еще одна бинарная переменная, которая принимает значение 1 с момента выпуска ChatGPT и далее, и 0 в противном случае. uᵢₜ – это ошибка, сгруппированная на уровне языка программирования (i).

Суть этой модели заключается в предположении о параллельных трендах. Для того чтобы утверждать о причинном эффекте, нам следует быть уверенными в том, что без ChatGPT эволюция сообщений на Stack Overflow для Python (леченой группы) и для R (нелеченой группы) была бы одинаковой в период лечения (после ноября 2022 года). Однако, очевидно, невозможно наблюдать это напрямую и проверить (см. Основную проблему причинного вывода). (Если вы хотите узнать больше о этом концепте и причинном выводе, найдите мои видео и статьи на Towards Data Science: Science and Art of Causality). Однако можно проверить, параллельны ли тренды до возникновения “шока”, что говорит о том, что контрольная группа является хорошим “контрфактуальным” вариантом. В этом случае два разных плацебо-теста показывают, что мы не можем отвергнуть предположение о параллельных трендах для периода до появления ChatGPT (p-значения тестов соответственно 0,722 и 0,397 (см. онлайн ПРИЛОЖЕНИЕ Б)).

Результаты

H1: ChatGPT уменьшает количество задаваемых вопросов на Stack Overflow.

Как указано во введении, модель Diff-in-Diff оценивает статистически значимое снижение на 937.7 (95% CI: [-1232.8, -642.55]; p-значение = 0,000) еженедельных вопросов в среднем для Python на Stack Overflow (см. Рисунок 2 ниже). Это представляет собой снижение на 18% еженедельных вопросов.

Рисунок 2: Влияние ChatGPT на еженедельное количество вопросов (изображение автора)

H2: ChatGPT повышает качество задаваемых вопросов.

ChatGPT может быть полезен для ответа на вопросы (см. H1). Однако, когда чат-бот не может решить проблему, возможно, он позволяет пойти дальше и получить больше информации о проблеме или некотором элементе решения. На этой платформе мы можем проверить эту гипотезу, поскольку пользователи могут голосовать за каждый вопрос, если они считают, что “Этот вопрос демонстрирует усилия в поиске информации; он полезен и понятен” (увеличивая балл на 1), или нет (уменьшая балл на 1). Эта вторая регрессия показывает, что в среднем баллы вопросов увеличиваются на 0,07 (95% доверительный интервал: [-0,0127, 0,1518]; p-значение: 0,095) (см. Рисунок 3), что составляет увеличение в 41,2%.

Рисунок 3: Влияние ChatGPT на качество вопросов (изображение автора)

H3: Оставшиеся вопросы более сложные.

Теперь, когда у нас есть некоторые доказательства того, что ChatGPT способен оказывать значительную помощь (решать вопросы и помогать документировать остальные), мы бы хотели подтвердить, что оставшиеся вопросы более сложные. Для этого мы собираемся рассмотреть две вещи. Во-первых, я обнаруживаю, что доля неотвеченных вопросов растет (отсутствие ответа может быть признаком более сложных вопросов). Более точно, я обнаруживаю увеличение доли неотвеченных вопросов на 2,21 процентного пункта (95% доверительный интервал: [0,12, 0,30]; p-значение: 0,039) (см. Рисунок 4), что составляет увеличение в 6,8%. Во-вторых, мы также обнаруживаем, что количество просмотров на вопрос остается неизменным (мы не можем отвергнуть нулевую гипотезу о его неизменности с p-значением 0,477). Этот второй тест позволяет частично отбросить альтернативное объяснение, что большее количество неотвеченных вопросов связано с снижением трафика.

Рисунок 4: Влияние ChatGPT на долю неотвеченных вопросов (изображение автора)

Обсуждение

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

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

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

[0] Gallea, Quentin. “From Mundane to Meaningful: AI’s Influence on Work Dynamics — evidence from ChatGPT and Stack Overflow” arXiv econ.GN (2023)

[1] Hatzius, Jan. “The Potentially Large Effects of Artificial Intelligence on Economic Growth (Briggs/Kodnani).” Goldman Sachs (2023).

[2] https://www.nytimes.com/2023/03/29/technology/ai-artificial-intelligence-musk-risks.html

[3] Бхат, Васудев, и др. “Min (e) d ваши теги: Анализ времени ответа на вопрос в Stack Overflow.” 2014 IEEE/ACM Международная конференция по анализу и майнингу социальных сетей (ASONAM 2014). IEEE, (2014)