Введение
Давайте сразу обозначим, чего тут не будет:
рассуждений о том, что такое «интеллект» и имеют ли его 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 (каким-то образом он даже датафрейм умудрился в них положить)
Задания – вот:
Отберите из датафрейма наблюдения из района A и проверьте гипотезу о соответствии распределения величины количества пожарных расчетов отрицательному биноминальному распределению. Сделайте выводы.
Отберите из датафрейма наблюдения о пожарах в районах с наличием крупных рек и проверьте гипотезу о соответствии распределения величины суммы материального ущерба равномерному распределению. Сделайте выводы.
Проведите исследование о виде распределения величины соотношения количества пожарных расчетов к количеству единиц техники. Сделайте выводы.
Проверьте гипотезу о равенстве средних значений переменной площадь пожара в районах с наличием и отсутствием лесничества. Сделайте выводы.
Проверьте гипотезу о равенстве медианы переменной количество единиц техники в районах с наличием и отсутствием крупных озер. Сделайте выводы.
Проверьте гипотезу о равенстве дисперсии переменной площадь пожара в районах с наличием и отсутствием гор. Сделайте выводы.
Проверьте гипотезу о равенстве дисперсии значений переменной количество единиц техники во всех рассматриваемых районах. Сделайте выводы.
Отберите из датафрейма наблюдения за 2016 год и проверьте гипотезу о равенстве пропорций переменных наличие гор, наличие глиняных почв. Сделайте выводы.
Проверьте гипотезу об одновременном равенстве средних значений и дисперсии переменной сумма материального ущерба в районах D и B. Сделайте выводы.
Отберите из датафрейма наблюдения за 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-ам неустойчивы), и классическая работа преподавателя начнет цениться больше.
Ну и мне просто самому нравится придумывать новые задания и их системы.
Всем спасибо дочитавшим до этого места, и выражаю благодарность моему коллеге по этой работе – Ивану Ивановичу Б., студенту третьего курса. Думаю, интересно будет через годик повторить.
