Привет, стадион Уэмбли!
Меня зовут Филипп. Я занимаюсь машинным обучением и параллельно много преподаю в Высшей Школе Экономики.
Сегодня из каждого утюга орут, что образование в XXI веке меняется и больше никогда не будет таким, как раньше. В этом учебном году оно в очередной раз изменилось.
В ноябре 2022 года вышла ChatGPT. К новому году все бейзлайны по хайпу вокру искуственного интеллекта были побиты. Статьи о том, что ещё можно автоматизировать с помощью СhatGPT захлеснули блоги. К началу учебного семестра у каждого уважающего себя студента на телефоне стояла какая-нибудь приложуха на базе GPT. Самые ленивые установили себе ботов в телеге.
Ну а дальше начались пары и отчаянные попытки студентов скинуть решение своих домашек на языковые модели. Именно об этом и будет мой пост.
Я расскажу о том, как были устроены наши учебные курсы, что конкретно студенты пытались делать с помощью ChatGPT, как мы на это реагировали, и какие вообще у меня есть в голове мысли по этому поводу.
Завязка сюжета очень похожа на серию южного парка. Ученики писали рефераты с помощью ChatGPT, а мистер Гарисон запускал ChatGPT для их проверки. Но у нас будет не так.
Везде ниже, когда я пишу ChatGPT, я подразумеваю любые языковые модели от YandexGPT и ChatGPT до Bard и Гигачада.
Дисклеймер
Я до последнего сомневался, стоит ли вообще публиковать этот текст. Мне он кажется поверхностным. Краткая выжимка такая:
В вузовских курсах про программирование надо отказываться от лаб и лидкод-задач. На самом деле давно пора, ChatGPT вколачивает последнии гвозди в крышку гроба таких курсов. Нужно двигаться к проектной работе.
Вот бы найти примеры того, как вузовские преподы попытались адаптировать свои курсы по введению в python к ChatGPT... Других глубоких мыслей в тексте не будет. За философией вам сюда.
Ну а теперь, если я не убил ваше желание читать, добро пожаловать под кат.
Что и где мы преподавали
События вокруг ChatGPT развернулись на курсах, которые мы читали для экономистов. Это были базовый курс с введением в python и курс про анализ данных. Оба курса читались на поток в 300 человек на первом и втором курсах.
Базовый курс по питону был сильно автоматизирован. Все домашки сдавались в яндекc.контест. Он прогонял на решениях тесты и выставлял оценку.
Дальше мы проверяли все решения антиплагиатом. Он находил похожие решения. Их мы отсматривали вручную. Если мы видели, что задача списана, мы её обнуляли. Если мы были не уверены, что задача списана, но при этом студент засветился в антиплагиате, мы вызывали его на защиту домашки.
Курс по анализу данных был автоматизирован хуже. Все задания, связанные с визуализациями и проверкой гипотез, проверяли асcистенты и преподы.
Для юпитерских тетрадок я написал на коленке код, который сравнивал между собой блоки кода, а потом глазами отсматривал похожие тетрадки.
Преступление и наказание
Наступают первые дедлайны по анализу данных. Часть потока неудачно покупает домашки. Антиплагиат находит кластер очень похожих решений, студенты получают обнуление работ за плагиат.
Сразу после первой волны наказаний мне в личку прилетает куча однотипных вопросов:
А действительно, считаеся?
Политика мирного сосуществования
Мы выбрали ответ, что не считается и анонсировали правила мирного сосуществования с ChatGPT.
Нам было очень интересно, как именно студенты будут использовать ChatGPT при решении работ, и что нам надо делать, чтобы адаптироваться к этому.
Вводный курс по python
На курсе по введению в python большая часть домашек представляла из себя контесты. В каждом контесте было несколько задачек. Система автоматического тестирования сама прогоняет тесты и ты сразу видишь свою оценку. Все посылки кода логгируются.
Задачки мы пытались составлять таким образом, чтобы их было сложно прогуглить. Многие задачи придумали семинаристы. От мощи ChatGPT это нас не спасло.
Код студентов после дедлайна прогонялся на антиплагиат. Дальше все похожие решения мы отсматривали глазами. Если внутри был похожий код и был промпт (подводка, которую послали в бота), задача засчитывалась человеку в качестве решённой.
Если подвоки не было, за задачу ставилось ноль баллов.
Люди с большим числом похожих решений отправлялись на защиту домашек. На потоке было 330 человек. Опросить всех было невозможно, поэтому опросы были выборочными.
Итак, что мы поняли из курса по сновам питона:
- ChatGPT с ходу решал почти любые наши задачи, заготовленные для контеста.
- К счастью для нас, ChatGPT генерировал не очень вариативный код. Чаще всего он был одинаковым.
Мы живём в эпоху языковых моделей, оверфитнутых на интернет.
Опросы помогали застраховаться от тотального ската. Чтобы подготовиться к опросу, студенту приходилось разбираться в коде, который ему генерил бот.
Проблема в том, что такой подход немного противоречит идеологии курса. Нашей главной целью было научить экономистов писать говнокод под любую свою повседневную задачу. Вместо этого мы научили экономиста генерировать говнокод в ChatGPT для решения тупых задачек на базовые конструкции языка.
Кажется, что такой навык не конвертируется в генерирование говнокода для решения повседневных задач. Как показала практика, решить учебную задачу с помощью ChatGPT можно в одну итерацию. Решить повседневную задачу в одну итерацию не получится.
Например, если ты хочешь написать небольшой парсер, который соберет тебе данные, сервер может забанить тебя. Придётся постоянно уточнять, что конкретно ты хочешь.
Конечно же, невелика задача — постоянно что-то уточнять у нейронки. Тем не менее, копипаста бывает разной.
Кажется, что все домашки надо строить в виде проектов. Должен быть какой-то многоступенчатый скелет, который в итоге превращается в полноценный работающий код.
Студент может постоянно обращаться к ChatGPT, просить у него разные кусочки кода, но скрепить все эти куски в работающий код ему придётся самостоятельно. Такое многошаговое взаимодействие меня как препода вполне устроит, а мой курс научит человека какому-то новому полезному навыку.
Анализ Данных
В анализе данных задания были более творческими. Надо было строить картинки, объяснять что ты на них видишь, шаг за шагом делать какую-то небольшую аналитику.
Было невозможно сгенерировать всю домашку целиком. Надо было вбивать в ChatGPT по очереди каждый мелкий вопрос и получать на него ответ. Кажется, что такая механика ничем не отличается от чтения документации.
Кейсы использования ChatGPT были более здоровыми. Например, люди массового просили ChatGPT строить им графики в matplotlib. Я сам постоянно хожу в документацию копипастить опции для графиков. С ChatGPT это стало проще и быстрее.
Что делать?
За полгода я увидел в преподских чатах очень много различных споров про ChatGPT. Кто-то топил за то, что использование нейросетей в домашках и курсовых надо запрещать.
А, что? Всмысле студент написал никому нахер не нужный высер на 50 страниц (диплом) не сам?
Лично мне это кажется вздором.
Рефераты и сочинения уже мертвы, а курсовые и дипломы должны быть полноценными проектами, а не огромными кусками текста.
Более того, довольно сложно проверить, есть ли в работе сгенерированные куски. Конечно же, есть классификаторы от OpenAI, но они выдают довольно много False Positive результатов. Начнётся охота на ведьм.
Нужно адаптировать под новые реалии контент курсов и задания.
Языковые модели довольно просто решают базовые глупые задачки по программированию.
Кажется, что это стимул переводить курсы по программированию на более проектную работу. В том же базовом курсе по python можно дать студентам задание написать своего собственного бота, а дальше как-то элегантно выстроить повествование вокруг этой задачи.
Во второй половине курса это будет отлично работать. Грубо говоря, вы обсудили на паре декораторы, студенты получили задание написать для своего проекта пару штук в течение следующих пары недель в качестве задания.
Конечно же, проверку такого дз не автоматизируешь. Можно попробовать дать в качестве задания студентам старших курсов - ревью проектов студентов с младших курсов, а потом подиагонали посмотреть, насколько адекватные комменты они оставили. Но это уже мои влажные фантазии.
Другая проблема в том, что на проектную состовляющую надо как-то переложить азы программирования. Все эти базовые глупые задачки как раз покрывают функционал вроде циклов и условий. Как это втащить в проекты таким образом, чтобы студентам не было очень больно - непонятно.
А вы что думаете?
Бонус: GPT и собеседования
Многие конторы дают соискателям домашние задания. Иногда получается так, что языковые модели решают эти задания лучше многих соискателей. Есть один хак, как немножко усложнить соискателю жизнь.
Интересно посмотреть на это с другой стороны :)
Так совпало, что этой весной мне понадобилось немного помочь одному хорошему человеку с дипломом, и я с разбегу влез в реальную (хоть и не очень сложную) задачу на абсолютно незнакомом стеке технологий (фронтенд для сайта на JS и Vue + настройка сервера на apache или nginx).
Несмотря на то, что нейросетки (ChatGPT 4, общение на английском + GitHub copilot) в целом генерировали ситуативные решения, в контексте проекта через месяц было уже проще написать самому код, чем нормальный промт. Хотя обучение получается весьма специфическое - я сделал рабочий проект, но при этом не имел понятия, почему одни переменные объявляются через let, а вторые через var.
И вот теперь вот мне интересно- похоже, что начиная с 2023 года программировать без гопоты это примерно то же самое, что работать без Гугла - в целом можно, в книжках все есть, и коллеги всегда готовы прийти на помощь, но первый вопрос все равно будет "а ты ошибку пробовал гуглить?".
О, это важное уточнение, что не для программистов. Тогда сложнее.
Прекрасно, даём повседневные задачи в формате контеста.
Незачем, мне кажется. Можно оставить контесты и простые задачи в качестве упражнений. Они нужны. Нужно упражняться на простых задачах, которые может решать ChatGPT, иначе не научиться. Но оценку за это дело можно уже не ставить.
А задачи на оценку усложнить, чтобы они уже не решались ChatGPT и были как реальные. Кто решал упражнения — пользуется своими умениями и может сдать задачи на оценку. Кто просто сдавал всё через ChatGPT и не может решить ничего кроме стандартных упражнений — сам себе злобный Буратино, возвращается к стандартному списыванию или покупок домашек у репетиторов.
И ещё можно заявить цель курса — научить программировать лучше, чем искусственный интеллект. Поэтому задачи такие сложные.
Почему? Выдаём данные в кривых форматах (хоть автоматически сгенерированные), формат вывода строго фиксирован, условие строго сформулировано на тему "что посчитать и что как фильтровать". Вперёд считать. Или, скажем, не всё строго зафиксировано, а почти всё, и принимается несколько правильных ответов.
Когда-то ходил на курс от Дейва Бизли и подцепил у него идею которую пропагандирую в своих образовательных проектах — вместо того чтобы у чить "программировать на питоне" надо учить программировать с использованием питона. Тому кому интересно будет закопаться в детали он закопается, тому кому пока эти все кишки не нужны оно и не надо будет. В таком контексте не так важно что студент как студент сделал то что сделал потому что проверки устроены так что там без придётся разобраться что ты делаешь-то. А если будет решаться часть задач с chatgpt, мне только на руку потому что это разгружает мою команду сопровождения. В общем это синонимично тому что ты пишешь :) но с другой стороны тут есть и лукавство что я лично не делаю курсы для новичков и тех кто с нуля, а там уже другая история с мотивацией
Рад что вы так быстро на это напоролись, будет круто если что-то придумаете, с удовольствием почитаю чем у вас всё это обернётся
Например, у меня студенты на курсе по C++ могли пользоваться ChatGPT на экзамене. Не помогло:
Кмк chat gpt можно условно рассматривать как очередное повышение уровня абстракции (ну если бы оно нормально работала, а не выдумывало несуществующие классы, методы и т.д.). Ну т.е. asm -> c -> python -> python + gpt (простите за такую грубую цепочку). И тут я бы посмотрел задачи с какой coplexity кода может решить студент за вменяемое время с использованием gpt, на это бы и ориентироваться. Написать один класс, два, пять, десять. На каком то этапе количество проблем будет расти как снежный ком, там и остановиться.
Из личного опыта как студента, так и по работе, могу сказать, что гпт очень удобен, если ты знаешь общий синтаксис и уже имеешь базу в айти или в этом языке. Если ты этого не знаешь, то студентам в промпт нужно обязательно ставить пункт о пошаговом объяснении, что и как работает, тогда ценность повышается. Но я абсолютно и обеими руками за его использование везде, особенно в бесполезном грузе типа дипломов и курсовых, а также в проектных работах.
У нас в евроунивере всё было завязано на проекты, включая дипломы, но меньшей хернёй они от этого не стали - в реальной работе мне не приходилось применять ни один принцип или язык программирования из задаваемых, кроме пары исключений. Про полезность дипломной работы вообще можно не говорить, особенно если ты не идёшь непосредственно в науку и дальнейшее высшее образование типа аспирантуры/докторантуры. Самые бесполезные, неинтересные, невнятно сформулированные и строже всего оцениваемые задачи у меня были на дипломных работах.
Кроме того, на сейчас гпт и прочие работают как раз примерно на уровне вспомогательного инструмента - генератора самых простых примеров кода, потому что более-менее сложная и точная задача вызывает у них проблемы, некорректную реализацию и даже пропажу ключевых элементов задания из результата. А про применение в любой области типа пентеста, дата ретривала, этикал хакинга и прочего я вообще молчу - гпт и даже ллама становятся бесполезными кирпичами, которые ещё и палки в колёса будут вставлять.
Можно еще заставить chatGPT поревьюить. Понадобится, конечно, хорошо отлаженный, стандартизированный промт.
О, схожие проблемы есть в преподавании иностранных языков, только их поломали еще предыдущие технологии: translate, OCR и speech-to-text.
Чтобы убедиться что студень точно умеет/делает сам нужно допрашивать его 1x1 IRL, что
Проделанная работа вызывает уважение, особенно рефлексия на тему «что делать». Особенно мне понравилось предложение про мирное сосуществование с чатгпт — вот бы у нас так в энтерпрайзах заморачивались! А то многие корпораты начинают с тотального запрета и им же заканчивают.
А вот что мне осталось непонятным, так зачем и почему вы пытаетесь в принципе бороться с плагиатом, списыванием и, как продолжение, — с гпт?
Кому и зачем это нужно, кто является бенефициаром "честности"?
Сами OpenAI признали это и закрыли свой классификатор: https://www.theverge.com/2023/7/25/23807487/openai-ai-generated-low-accuracy
Вы воюете в какую-то странную сторону: у студентов задача учиться, чтобы потом работать. У вас задача - качественно учить и отсеивать тех студентов, которые учиться не хотят. Чтобы следующее поколение студентов считало, что вы хорошо учите. Антиплагиат, детекитрование генерированного кода и т.п. нужны только для того, чтобы найти тех, кто хочет получить диплом, но не хочет учиться.
Чем плоха система, когда студент получает курсовую работу, а потом ее защищает? Домашки может как угодно делать, никогда не понимал зачем за них дрочат: это же мне надо, чтоб потом написать более серьезную работу. Которую надо защищать 1-1.
Да, я в курсе, что устный экзамен не любят за внесение туда элемента личных отношений, за то в нем работает навык "красноречие".
Проблема же не только в автогенеренном коде. Проблема в принципе в концепте обучения. Мир изменился, а способы преподавания - нет. Когда я учился, я дебажил код на бумажке, потому что ПК у меня сначала не было. Нужен ли сейчас кому-то этот скилл? Определенно нет. И это мне повезло, что в школах закончились логарифмические линейки, а то я бы знал как на них считать.
В 90-е в школах были модны "рефераты" - почитай кучу книжек, перепиши из них тезисы, сделай структуру и все готово. Когда появился интернет - этот инструмент обучения умер. И это не ученики идиоты, они просто не видят пользы или возможности.
За 8 лет в универе, у меня были студенты с копипастой, не понимавшие "свой" код, были студенты, которые говорили что этот курс не нужен, я не буду ничего ни читать ни писать. Это все ничем не отличается от ChatGPT. Студенты ищут шорткаты если они не заинтересованы в теме, если они не понимают какое отношение задание имеет к их конечной цели, ну и если они не в состоянии справиться сами с заданием.
Имхо, курсы - это обычное специальное образование. Должно выпускать людей, способных решать стандартизированные задачи. Добиться этого можно только объемами одинковых заданий, с постепенным погружением в теорию и усложнением. Основная проблема массовых продуктов такого образования в отсутствии обратной связи. Или преподаватель/коуч/тьютор недоступен (завален вопросами/отвечает редко/ и т.д.) или агрессивен/пассивно агрессивен.
Студенты - пользователи образовательного продкута. Никто не пытается брать у студентов обратную связь. Как максимум, это тупой опрос со шкалами, из которого невозможно получить никакую информацию. Когда-то я спросил полную аудиторию студентов что они запомнили быстрым опросом в конце лекции (тогда уже все студенты сидели с ноутами и большинство просто работало на лекциях/занималось своими делами/пилило курсовики). Получив 0 отклик, я полностью закончил читать теорию и перевел обучение в полностью практическую часть, оставив только теормин для экзамена/зачета.
Образование пока не перестало иметь под собой насильственную основу. Это идет издревле, но давно перестаёт работать, потому что страх и порождает желание шорткатов и неуверенность в себе. Я вижу будущие концепты образования в формате больше индвидуальном, с непосредственным участием AI, но не только в качестве тулзы, а в качестве персонального тьютора.
Очень странный результат. Мы точно так же гоняем студентов на контестах, но ChatGPT может решить, наверное, только 3-4 самых простых. Как только начинаются оптимизации или специфические конструкции, сыпется сразу, не может предложить ничего лучше прямой реализации.
Могу предпложить, что вы давно не меняли задачи в лабах, а за это время появились репозитории/форумы с ответами, которые, собственно, СhatGPT и проиндексировал.
ChatGPT - просто еще один гвоздь к крышку гроба образования, как мы его знаем. Мы - я тут про развала системы образования СССР. Это когда институты стали университетами, техникумы колледжами и прочие академии появились.
Послушать лекцию, записать конспект, сдать курсовую (с проверкой штампов и размера шрифта - это самое главное), а потом с наушником зайти на экзамен.
Все, баста. Возврат на ~80 лет назад, когда вышка была не способом продлить школьные годы чудесные детиночке любимой, а мозговыносящим челенжем. Когда можно было вылететь с первого семестра, потому что ты пробакланил и тупо не знаешь, что у тебя, скажем, в курсовой.
И меньше студентов на одного "профессора", и больше требований к "профессорам" по сути, а не в разделе бумажек заполнить. И главное - право преподавательского состава сцаными тряпками выгонять нетянущих.
Это если хочется нормального образования, конечно.
А если для корочки - все путем. Студиусы сэкономят - меньше платить помогаторам.