Введение

Давайте сразу обозначим, чего тут не будет:

  • рассуждений о том, что такое «интеллект» и имеют ли его ChatGPT и иже с ними;

  • категоричных заявлений а-ля «никогда / через 5 лет нас выгонят на улицу дешевые ИИ-агенты»;

  • споров, что лучше – R/Python/Julia/калькулятор/счеты/ментальная арифметика;

  • громких выводов, какая LLM круче всех.

Давайте также обозначим примерное место действия – я работаю преподавателем в ВУЗе, четвертый год веду дисциплины, связанные с анализом данных, мой основной инструмент исследований и инструмент, которому я учу – это R. У меня достаточно разные студенты – бакалавры, магистры экономических и информационных направлений, но почти у всех них моя дисциплина первая, обучающая их компьютерному анализу данных. В принципе, программа у всех плюс-минус одинаковая, последовательно учим: работе с данными, графиками, статтестам, классическим алгоритмам решения задач регрессии, классификации, кластеризации.

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

Ситуация

Где-то в октябре месяце от некоторых моих студентов стали поступать весьма странные решения, проверяя которые складывалось ощущение, что интеллект отвечающего изменяется по синусоиде с периодом в несколько минут, а то и секунд – полное и адекватное решение с выводами в одном задании сменялось ответом, по которому было понятно, что студент даже не попытался вникнуть в условие задачи – при этом сам стиль и тон написанного достаточно сильно отличался от стиля обычного студента. Достаточно быстро стало понятно, что это GPT-стайл, причем в самом худшем его виде – когда человек просто копирует задание в LLM и потом копирует ответ, даже не пытаясь его корректировать. Разумеется, работы были возвращены с соответствующими комментариями, а на передний план вышли следующие вопросы:

1. Где допустимая грань применения LLM-моделей при решении заданий?

2. Насколько хорошо вообще LLM-модели могут решать задания начального уровня по анализу данных?

3. Насколько точно преподаватель может отличить решение человека от решения компьютера?

Ответ на первый вопрос нашелся достаточно быстро – нет этой допустимой грани. Главное, чтобы человек (сам или в связке с AI) выполнил задание точно и правильно и продемонстрировал понимание сделанного путем грамотно написанных выводов.

Необходимость ответа на второй и третий вопрос породила идею эксперимента.

Эксперимент

Я попросил своего студента (выбрал, как положено, умного и ленивого) решить задания с помощью бесплатных LLM-моделей, до которых он сможет дотянуться. Он взял 6: Gemini 1.0 Pro, Copilot (Bing), YandexGPT 3 Pro, GPT-3.5 Turbo, GigaChat, BLACKBOX (каким-то образом он даже датафрейм умудрился в них положить)

Задания – вот:

  1. Отберите из датафрейма наблюдения из района A и проверьте гипотезу о соответствии распределения величины количества пожарных расчетов отрицательному биноминальному распределению. Сделайте выводы.

  2. Отберите из датафрейма наблюдения о пожарах в районах с наличием крупных рек и проверьте гипотезу о соответствии распределения величины суммы материального ущерба равномерному распределению. Сделайте выводы.

  3. Проведите исследование о виде распределения величины соотношения количества пожарных расчетов к количеству единиц техники. Сделайте выводы.

  4. Проверьте гипотезу о равенстве средних значений переменной площадь пожара в районах с наличием и отсутствием лесничества. Сделайте выводы.

  5. Проверьте гипотезу о равенстве медианы переменной количество единиц техники в районах с наличием и отсутствием крупных озер. Сделайте выводы.

  6. Проверьте гипотезу о равенстве дисперсии переменной площадь пожара в районах с наличием и отсутствием гор. Сделайте выводы.

  7. Проверьте гипотезу о равенстве дисперсии значений переменной количество единиц техники во всех рассматриваемых районах. Сделайте выводы.

  8. Отберите из датафрейма наблюдения за 2016 год и проверьте гипотезу о равенстве пропорций переменных наличие гор, наличие глиняных почв. Сделайте выводы.

  9. Проверьте гипотезу об одновременном равенстве средних значений и дисперсии переменной сумма материального ущерба в районах D и B. Сделайте выводы.

  10. Отберите из датафрейма наблюдения за 2012 год и проверьте гипотезу о равенстве дисперсии значений переменной сумма материального ущерба в районах с наличием и отсутствием глиняных почв. Сделайте выводы.

База данных (синтетическая!) выглядит примерно вот так:

Переменные в ней:

District – Район;

Height - Средняя высота над уровнем моря;

Rivers - Наличие крупных рек;

Mountain - Наличие гор;

Lakes    - Наличие крупных озер;

Clay_Soils - Наличие глиняных почв;

Forestry - Наличие лесничеств;

Area - Площадь лесного пожара, га;

Time - Время пожара до тушения, ч;

Damage - Сумма материального ущерба от пожара, тыс. руб.;

Experses - Сумма затрат на тушение пожара, тыс. руб.;

Precipitation - Общая величина осадков за месяц, мм;

Bridges - Количество пожарных расчетов, участвовавших в тушении пожара;

Equimpent - Количество единиц техники, участвовавшей в тушении пожара;

Class - Класс пожара.

Ожидаемое решение выглядело бы примерно таким:

#### Задание 1 ####
library(tidyverse)
library(fitdistrplus)
DF_select <- DF %>% filter(District == 'A')
gofstat(fitdist(DF_select$Bridges, "nbinom"))
# р-значение меньше 0.05 (0.0005783625), мы отвергаем гипотезу о равенстве соответствии распределения 
# величины количества пожарных расчетов в районе А отрицательному биноминальному распределению

#### Задание 2 ####
library(EDFtest)
DF_select <- DF %>% filter(Rivers == 1)
gof.uniform(DF_select$Damage) # Не работает
fitdist(DF_select$Damage, "unif")
plotdist(DF_select$Damage, "unif", para = list(min=1, max=3343))
# По графикам теоретической и эмпирической плотности вероятности видно, что распределение 
# величины материального ущерба в районах с наличием крупных рек не является равномерным

#### Задание 3 ####
DF_select <- DF %>% mutate(Ratio = Bridges / Equimpent)
descdist(DF_select$Ratio)
# Выдвигаемые гипотезы - соответствие гамма, экспоненциальному, бета-распределениям
gof.gamma(DF_select$Ratio) # Не работает
gof.gamma.bootstrap(DF_select$Ratio, M=1000)
# Не соответствует гамма-распределению
gof.exp.bootstrap(DF_select$Ratio, M=1000) 
# Не соответствует экспоненциальному распределению
fitdist(DF_select$Ratio/max(DF_select$Ratio), "beta", method = "mme")
plotdist(DF_select$Ratio/max(DF_select$Ratio), "beta", para = list(shape1=1.107145, shape2=5.665215))
# Сомнительно, что бета
# Распределение величины соотношения количества пожарных расчетов к количеству единиц техники не
# соответсвует бета-, гамма-, экспоненциальному распределению, но, скорее всего, является их смесью

#### Задание 4 ####
library(doex)
AF(DF$Area, DF$Forestry)
# р-значение меньше 0.05, поэтому мы отвергаем гипотезу о равенстве средних значений 
# площади в районах с наличием и отсутствием лесничества.

#### Задание 5 ####
library(BSDA)
Sample_1 <- DF[DF$Lakes==1,"Equimpent"]
Sample_2 <- DF[DF$Lakes==0,"Equimpent"]
SIGN.test(sample(Sample_1,length(Sample_2),replace = TRUE),Sample_2)
# р-значение меньше 0.05, поэтому мы отвергаем гипотезу о равенстве медиан величины техники
# в районах с наличием и отсутствием крупных озер

#### Задание 6 ####
Sample_1 <- DF[DF$Mountain==1,"Area"]
Sample_2 <- DF[DF$Mountain==0,"Area"]
var.test(Sample_1,Sample_2)
# р-значение больше 0.05, поэтому мы не отвергаем гипотезу о равенстве дисперсии площади пожара
# в районах с наличием и отсутствием гор

#### Задание 7 ####
library(stats)
bartlett.test(DF$Equimpent, DF$District)
# р-значение больше 0.05, поэтому мы не отвергаем гипотезу о равенстве дисперсии количества техник 
# в разных районах

#### Задание 8 ####
DF_select <- DF %>% filter(Year == 2016)
prop.test(table(DF_select$Mountain,DF_select$Clay_Soils)) # Ошибка
table(DF_select$Mountain,DF_select$Clay_Soils)
# Поскольку в наблюдаемой подвыборке нет информации о пожарах в горных районах, можно констатировать,
# что гипотеза о равенстве пропорций не может быть проверена

#### Задание 9 ####
library(SHT)
mvar2.LRT(DF[DF$District=="B","Damage"],DF[DF$District=="D","Damage"])
# р-значение меньше 0.05, поэтому мы отвергаем гипотезу об одновременном равенстве среднего значения 
# и дисперсии материального ущерба в районах B и D

#### Задание 10 ####
DF_select <- DF %>% filter(Year == 2012)
fligner.test(DF_select$Damage, DF_select$Clay_Soils)
# р-значение больше 0.05, поэтому мы не отвергаем гипотезу о равенстве дисперсии материального ущерба 
# в районах с наличием и отсутствием глиняных почв в 2012 году

Ответ лучшей из 6 моделей выглядел вот так:

Результаты эксперимента

Результаты оценки всех моделей представлены в таблице ниже (кстати, перед проверкой названия файлов были зашифрованы и я не знал, проверяю я решение студентов или решение LLM-ки)

В общем, к моему несказанному удовольствию, все модели набрали меньше половины возможных баллов, а это оценка «неудовлетворительно». Лучший из студентов набрал 7,8 балла из 10, это – «хорошо».

Выводы

Собственно, если вкратце – бесплатные LLM-модели могут хорошо решать отдельные задачи по анализу данных, но не в состоянии решать комплекты таких заданий (я понимаю, что вывод кажется банальным, но так и есть); а прокалываются они чаще всего на выводах – они у них слишком часто получаются многословными и «водяными».

Если кто-то уже положил руки на клавиатуру, чтобы написать (или даже доказать), что вот GPT-4 (которая обновилась сегодня), или что-то в будущем будет щелкать эти задания как орешки, не трудитесь – я даже не буду с вами спорить.

Лично я понял для себя главное – как надо модернизировать задания, если мне нужно будет обеспечивать их «труднорешаемость» для LLM-ок. Это раз.

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

Третье – на самом деле, я рад, что LLM-ки появились. Лучшие студенты с их помощью будут успевать больше, худшие – наоборот меньше (потому что будут тянуть до последнего, «ведь чего напрягаться, за меня бот все сделает»). Я очень надеюсь, что LLM-ки уберут тесты из системы оценивания результатов обучения (потому что они вот к LLM-ам неустойчивы), и классическая работа преподавателя начнет цениться больше.

Ну и мне просто самому нравится придумывать новые задания и их системы.

Всем спасибо дочитавшим до этого места, и выражаю благодарность моему коллеге по этой работе – Ивану Ивановичу Б., студенту третьего курса. Думаю, интересно будет через годик повторить.

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


  1. Kreastr
    10.04.2024 18:08

    Проблема однако возникает на более ранних курсах. Задачи по вводным дисциплинам по определению не могут быть настолько полны нюансов, чтобы на них было легко отличить студента от LLM по качеству ответа. Насколько сильно это повлияет в будущем на студентов, которые придут к Вам после того как за них два года все писала LLM я предсказывать не возьмусь. Может быть они наладят кооперацию с новым инструментом и смогут даже лучше отвечать и Вам придется углубить курс еще. А может быть и нет.


    1. acheremuhin Автор
      10.04.2024 18:08
      +5

      Я с Вами концептуально согласен, но есть пара моментов:

      1. На более ранних курсах у них идет математика в разных ипостасях, с которой пока LLM-ки не особо дружат.

      2. Моя же задача не наказать и запретить пользоваться LLM, моя задача - идентифицировать (и наказать) случаи, когда LLM используется не вместе с мозгом, а вместо него; если кто-то из студентом отшлифует свой навык пользования LLM настолько, что сможет выполнять все задания с помощью AI, при этом полностью понимая и осознавая что происходит - да пожалуйста


  1. Ikolo92
    10.04.2024 18:08
    +2

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

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

    В целом соглашусь с вашими выводами. Единственные задания, которые можно сделать через ллм так, чтобы преподаватель ничего не заметил - программы. Но лично мне для того,, чтобы в пару запросов получить отдебаженный, рабочий результат в нужном мне формате, приходится заранее объяснять, как должна работать программа, какие данные и откуда брать, как выводить и вот это вот всё. Просто скидывать задание слишком тупо. Но можно, и даже те преподаватели, которые прекрасно видят текст от нейросети, лабы, состоящие из простой программы, ломают только на вопросах самому студенту. Как вы, в принципе, и сказали - объяснить ллм может отлично, а вложить знания пока что не получается.

    А самый приятный опыт использования нейронки - когда в прошлом семестре клепал лабы однокурснику и в гпт 3.5 скидывал описание работы программы почти по шагам, а в ответ получал идеальный код. 8 лаб по вебу и готовый пхп сайт за 2 часа. Самые лёгкие три косаря в жизни))). Но перед этим я сделал свои восемь лаб и они были посложнее, ведь я ещё не знал, что именно мне нужно)


  1. needsomedata
    10.04.2024 18:08

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

    По существу:

    Не согласен с отсутствием GPT4 & Claude - сильные модели незаслуженно отсутствует в выборке, ненаучный подход.

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

    Могли бы приложить пример промпта? Это был one-shot или few-shot промтинг?

    Применяю активно GPT4 в программировании. Подкрепляю примерами, делаю задачу в несколько шагов, смотрю на отладочные данные : код может не оптимизирован, но справляется с задачей. Решал задачи на Python, JS, C. Но у меня опыт системного аналитика 10 лет)