У нас на работе задались вопросом: может ли нам где-то помочь ИИ, и не надо ли нам задуматься об этом заранее, чтобы не пропустить очередную технологическую революцию. Сели с шефом, запустили ChatGPT, спросили у него, что он думает по этому поводу. Он накатал 3 страницы рац. предложений. Я потом прошёлся по каждому из них, примеряя, что может подойти конкретно к нашему отделу. Переспрашивал, если что-то непонятно. Просил сформулировать конкретный план действий, если что-то казалось перспективным. На следующем собрании мы просмотрели получившийся список и решили протестировать на конкретном примере.
У нас есть периодическая (раз в триместр) задача: приходит база Excel в несколько сотен строчек, одна из колонок которых заполнена свободным текстом. Например «клиент вышел на работу», или «умер», или «не надо временно ему платить, эксперт разбирается». И наша задача — по этому тексту проставить галочку «платить / не платить» (точнее: учитывать его в расчёте провизии или нет). Понятно, что можно перестроить процесс, чтобы эту галочку сразу ставили те люди, которые пишут этот текст. Но, во-первых, процессы строить долго, да это и не наша работа (мы этих людей не знаем, они по всей стране разбросаны). Во-вторых, у нас сейчас как раз тема прикрутить ИИ — вместо того, чтобы заставлять людей писать как роботы, можно попытаться научить робота понимать то, что написали люди!
Первая итерация: тупо скормил колонку текста Copilot и попросил интерпретировать написанный текст как одну из следующих категорий: «возврат на работу», «смерть», «остановка платежа» (для этого прошлись с человеком, который занимается этой задачей каждый триместр, он сформулировал, какие бывают категории, и какая категория приводит к какому выводу). А если непонятно — то пиши «ручная обработка». Чатик через пару секунд выплюнул файл Excel с ответом. Текст был из уже обработанного в 3-м триместре этого года файла, поэтому у меня были «правильные» ответы. Я сверил — примерно 2/3 правильно, несколько откровенных косяков. Спрашиваю: чатик, как же так? Там же прямым текстом написано «Sortie des effectifs» («выбыл из строя работников»), и у меня есть категория «Sortie des effectifs», а ты его считаешь как «Reprise de travail» («вернулся к работе»). Ой, говорит, точно, как ты здорово это подметил! А то я заметил, что часто «reprise de ravail» сокращается до «rt» и тупо начал присваивать эту категорию всем строкам, содержащим «rt» (см. «sortie»). Хочешь, я дам этому правилу минимальный приоритет и переделаю файл? Конечно хочу, говорю. А самое главное, расскажи мне, как я должен формулировать тебе такую задачу в следующий раз, чтобы не надо было уточнять. Он сгенерил новый файл (существенно лучше, пусть и несколько расхождений, некоторые из которых, на мой взгляд, скорее в его пользу), выдал инструкцию, как ставить перед ним такую задачу. То есть, в принципе всё работает, какое-то время явно можно сэкономить, но явно можно сделать и лучше.
Вторая итерация: чатик, говорю, вообще-то у меня есть такая вот задача — описываю ему её. Как бы ты её решал? Фигня вопрос, говорит. Это же типичная задача классификации, а значит machine learning, я бы предложил начать с SVM linéaire, а там посмотрим. Работаем с текстом, для его анализа я бы посоветовал начать с какой-то базовой модели, типа TF-IDF, а если её не будет хватать, я расскажу другие варианты. Хочешь я помогу тебе написать этот код на питоне? Я только на прошлой неделе послал запрос на установку питона, поэтому говорю: пока питона нет, давай на матлабе, благо у меня есть Machine Learning Toolbox. Он сгенерил код, но ему нужен был ещё и Text Analytics Toolbox, которого у меня нет.
По этому поводу, кстати, ржака: захожу на сайт MathWorks проверить цену. Стандартная лицензия 536€. Есть опция «стартап» — я ради интереса кликнул, для стартапа 3780€. Возвращаюсь к стандартной лицензии — она уже 938€. WTF? Закрыл браузер, открыл заново: 536€. Но если посмотреть на цену для стартапа, то после этого 938€. Если смотреть «студенческую», то цена не меняется. Но цена самой студенческой меняется, если посмотреть на стартап — с 20€ до 69€.
Ну ладно, пишу чатику: нет у меня такого тулбокса. Без него никак? Да фигня вопрос, говорит. Вот тебе код — он слегка медленнее, но делает в точности то же самое. Я запустил обучение на данных 3-го триместра этого года — меньше секунды учится. Запустил обработку данных 2-го триместра этого года — меньше секунды классифицирует, причём только одна точка не совпадает с тем, как это было классифицировано ручками. Фантастика!
Почитал после этого, как работают все эти модели, какие у них есть ограничения, какие варианты настройки, какие индикаторы контроля. Что ещё осталось:
* Очевидно, что данные 3-то триместра этого года очень похожи на данные 2-го триместра. Что частично объясняет столь прекрасное качество результата. С одной стороны, это плохо — наша система не универсальна, и возможно она умеет работать только с данными, сильно похожими на learning dataset. С другой — а зачем нам универсальная система, если перед нами стоит конкретно эта задача?
* Теоретически можно улучить систему, исключив слишком редкие или слишком частые слова и т.п. (чатик накидал целый список предложений). С другой стороны — работает? Ничего не трогай, сынок!
* Надо понять, как поступать с теми строчками, которые первая итерация классифицировала по-другому, и мне её классификация нравилась больше. То ли я ошибаюсь, то ли у нас есть ошибки в dataset. Для второго случая нужно предусмотреть протокол исключения ошибочных данных из learning dataset.
* Нужно продумать систему контроля результата. Я представляю себе что-то в духе списка новых фраз, которых не было в learning dataset, но которые были обработаны в реальных данных (очищенные фразы, то есть из которых выкинуты все числа и пунктуация). Напротив каждой фразы — автоматически присвоенная ей категория. У оператора есть возможность подтвердить или присвоить другую.
* Предыдущий результат можно добавлять в learning dataset на следующий триместр. Хотя это тоже вопрос: стоит постоянно наращивать его размер (больше данных = лучшее обучение), или наоборот, ограничиваться несколькими последними триместрами (большее внимание стилю сейчас работающих людей, а не тому, как формулировали их коллеги 10 лет назад)?
* Ну и самое главное: как встроить это в рабочий процесс? Теоретически можно требовать от пользователя умения не только запускать, но и переписывать код — это не массовый продукт, это автоматизация работы моих коллег, которые потенциально имеют ту же квалификацию, что и я. Но при этом ручная обработка этих строк занимает 2-3 часа — нужно, чтобы весь процесс, от «вспомнить, как это работает» и до «включить новые строки в learning dataset» занимал существенно меньше этого времени.
А так, разговаривали на днях с коллегой из моего предыдущего отдела. Как тебе, спрашивает он, не страшно, что придёт молодая шпана с ChatGPT наперевес и сотрёт нас с лица земли? Это раньше ты был недостижимым авторитетом: если у кого-то возникал вопрос — все шли к тебе, и ты в подавляющем большинстве случаев отвечал. А сейчас все идут к чатику. Чувствуешь, как падает твоя ценность как работника?
Я задумался и сформулировал для себя, что уже лет 20 как я не могу прийти в себя от того факта, что у меня под рукой всё знание человечества ever. И нынешнюю революцию LLM я вижу именно в этом контексте: до этого у меня был ключ от Ленинки, а теперь у меня появился ещё и библиотекарь, благодаря которому мне не нужно бесконечно бродить по залу / копаться в каталоге.
И собственно в этот момент я понял, почему мне даже в голову не приходило, что придёт та самая молодая шпана. Потому что да, у нас уже 20 лет есть доступ ко всем данным. То есть любой человек может протянуть руку и взять книгу. Может любой, но никто этого не делает. Никто, кроме таких вот уникумов как я (и подавляющее большинство читающих эти строки — нас мало). Тут вспоминается скетч 2015 года по поводу даты из «Назад в будущее», когда Док с Макфлаем прилетают в наш 2015 год и видят, что у каждого первого в кармане есть портативный суперкомпьютер с доступом ко всем знаниям человечества. Но каждый первый же рассматривает на этом суперкомпьютере котиков и играет к candy crash. Так и с чатиком: любой может открыть его и выучить теорвер. Но никто же всё равно не будет этого делать. Кроме нас, редких извращенцев, читающих друг друга и считающих, что весь мир такой как мы.
А ещё задумался: появление LLM представляет больший риск для нас, старпёров, или наоборот, для той самой молодой шпаны? И кажется, что таки для них. Потому что, во-первых, как только LLM начнёт работать на уровне тупого стажёра, все перестанут брать тупых стажёров. То есть молодёжи сложнее будет выходить на рынок труда, набираться первого опыта. А во-вторых, какое преимущество молодого перед стариком? (я, конечно же, про интеллектуальный труд) У молодого мозг гибче, он быстрее учится. Но появление LLM одновременно и упрощает обучение, и отменяет необходимость знать что-то наизусть. То есть да, молодой мозг всё ещё лучше запоминает, чем мой — но ценность этого падает. Интересная тема.
У нас есть периодическая (раз в триместр) задача: приходит база Excel в несколько сотен строчек, одна из колонок которых заполнена свободным текстом. Например «клиент вышел на работу», или «умер», или «не надо временно ему платить, эксперт разбирается». И наша задача — по этому тексту проставить галочку «платить / не платить» (точнее: учитывать его в расчёте провизии или нет). Понятно, что можно перестроить процесс, чтобы эту галочку сразу ставили те люди, которые пишут этот текст. Но, во-первых, процессы строить долго, да это и не наша работа (мы этих людей не знаем, они по всей стране разбросаны). Во-вторых, у нас сейчас как раз тема прикрутить ИИ — вместо того, чтобы заставлять людей писать как роботы, можно попытаться научить робота понимать то, что написали люди!
Первая итерация: тупо скормил колонку текста Copilot и попросил интерпретировать написанный текст как одну из следующих категорий: «возврат на работу», «смерть», «остановка платежа» (для этого прошлись с человеком, который занимается этой задачей каждый триместр, он сформулировал, какие бывают категории, и какая категория приводит к какому выводу). А если непонятно — то пиши «ручная обработка». Чатик через пару секунд выплюнул файл Excel с ответом. Текст был из уже обработанного в 3-м триместре этого года файла, поэтому у меня были «правильные» ответы. Я сверил — примерно 2/3 правильно, несколько откровенных косяков. Спрашиваю: чатик, как же так? Там же прямым текстом написано «Sortie des effectifs» («выбыл из строя работников»), и у меня есть категория «Sortie des effectifs», а ты его считаешь как «Reprise de travail» («вернулся к работе»). Ой, говорит, точно, как ты здорово это подметил! А то я заметил, что часто «reprise de ravail» сокращается до «rt» и тупо начал присваивать эту категорию всем строкам, содержащим «rt» (см. «sortie»). Хочешь, я дам этому правилу минимальный приоритет и переделаю файл? Конечно хочу, говорю. А самое главное, расскажи мне, как я должен формулировать тебе такую задачу в следующий раз, чтобы не надо было уточнять. Он сгенерил новый файл (существенно лучше, пусть и несколько расхождений, некоторые из которых, на мой взгляд, скорее в его пользу), выдал инструкцию, как ставить перед ним такую задачу. То есть, в принципе всё работает, какое-то время явно можно сэкономить, но явно можно сделать и лучше.
Вторая итерация: чатик, говорю, вообще-то у меня есть такая вот задача — описываю ему её. Как бы ты её решал? Фигня вопрос, говорит. Это же типичная задача классификации, а значит machine learning, я бы предложил начать с SVM linéaire, а там посмотрим. Работаем с текстом, для его анализа я бы посоветовал начать с какой-то базовой модели, типа TF-IDF, а если её не будет хватать, я расскажу другие варианты. Хочешь я помогу тебе написать этот код на питоне? Я только на прошлой неделе послал запрос на установку питона, поэтому говорю: пока питона нет, давай на матлабе, благо у меня есть Machine Learning Toolbox. Он сгенерил код, но ему нужен был ещё и Text Analytics Toolbox, которого у меня нет.
По этому поводу, кстати, ржака: захожу на сайт MathWorks проверить цену. Стандартная лицензия 536€. Есть опция «стартап» — я ради интереса кликнул, для стартапа 3780€. Возвращаюсь к стандартной лицензии — она уже 938€. WTF? Закрыл браузер, открыл заново: 536€. Но если посмотреть на цену для стартапа, то после этого 938€. Если смотреть «студенческую», то цена не меняется. Но цена самой студенческой меняется, если посмотреть на стартап — с 20€ до 69€.
Ну ладно, пишу чатику: нет у меня такого тулбокса. Без него никак? Да фигня вопрос, говорит. Вот тебе код — он слегка медленнее, но делает в точности то же самое. Я запустил обучение на данных 3-го триместра этого года — меньше секунды учится. Запустил обработку данных 2-го триместра этого года — меньше секунды классифицирует, причём только одна точка не совпадает с тем, как это было классифицировано ручками. Фантастика!
Почитал после этого, как работают все эти модели, какие у них есть ограничения, какие варианты настройки, какие индикаторы контроля. Что ещё осталось:
* Очевидно, что данные 3-то триместра этого года очень похожи на данные 2-го триместра. Что частично объясняет столь прекрасное качество результата. С одной стороны, это плохо — наша система не универсальна, и возможно она умеет работать только с данными, сильно похожими на learning dataset. С другой — а зачем нам универсальная система, если перед нами стоит конкретно эта задача?
* Теоретически можно улучить систему, исключив слишком редкие или слишком частые слова и т.п. (чатик накидал целый список предложений). С другой стороны — работает? Ничего не трогай, сынок!
* Надо понять, как поступать с теми строчками, которые первая итерация классифицировала по-другому, и мне её классификация нравилась больше. То ли я ошибаюсь, то ли у нас есть ошибки в dataset. Для второго случая нужно предусмотреть протокол исключения ошибочных данных из learning dataset.
* Нужно продумать систему контроля результата. Я представляю себе что-то в духе списка новых фраз, которых не было в learning dataset, но которые были обработаны в реальных данных (очищенные фразы, то есть из которых выкинуты все числа и пунктуация). Напротив каждой фразы — автоматически присвоенная ей категория. У оператора есть возможность подтвердить или присвоить другую.
* Предыдущий результат можно добавлять в learning dataset на следующий триместр. Хотя это тоже вопрос: стоит постоянно наращивать его размер (больше данных = лучшее обучение), или наоборот, ограничиваться несколькими последними триместрами (большее внимание стилю сейчас работающих людей, а не тому, как формулировали их коллеги 10 лет назад)?
* Ну и самое главное: как встроить это в рабочий процесс? Теоретически можно требовать от пользователя умения не только запускать, но и переписывать код — это не массовый продукт, это автоматизация работы моих коллег, которые потенциально имеют ту же квалификацию, что и я. Но при этом ручная обработка этих строк занимает 2-3 часа — нужно, чтобы весь процесс, от «вспомнить, как это работает» и до «включить новые строки в learning dataset» занимал существенно меньше этого времени.
А так, разговаривали на днях с коллегой из моего предыдущего отдела. Как тебе, спрашивает он, не страшно, что придёт молодая шпана с ChatGPT наперевес и сотрёт нас с лица земли? Это раньше ты был недостижимым авторитетом: если у кого-то возникал вопрос — все шли к тебе, и ты в подавляющем большинстве случаев отвечал. А сейчас все идут к чатику. Чувствуешь, как падает твоя ценность как работника?
Я задумался и сформулировал для себя, что уже лет 20 как я не могу прийти в себя от того факта, что у меня под рукой всё знание человечества ever. И нынешнюю революцию LLM я вижу именно в этом контексте: до этого у меня был ключ от Ленинки, а теперь у меня появился ещё и библиотекарь, благодаря которому мне не нужно бесконечно бродить по залу / копаться в каталоге.
И собственно в этот момент я понял, почему мне даже в голову не приходило, что придёт та самая молодая шпана. Потому что да, у нас уже 20 лет есть доступ ко всем данным. То есть любой человек может протянуть руку и взять книгу. Может любой, но никто этого не делает. Никто, кроме таких вот уникумов как я (и подавляющее большинство читающих эти строки — нас мало). Тут вспоминается скетч 2015 года по поводу даты из «Назад в будущее», когда Док с Макфлаем прилетают в наш 2015 год и видят, что у каждого первого в кармане есть портативный суперкомпьютер с доступом ко всем знаниям человечества. Но каждый первый же рассматривает на этом суперкомпьютере котиков и играет к candy crash. Так и с чатиком: любой может открыть его и выучить теорвер. Но никто же всё равно не будет этого делать. Кроме нас, редких извращенцев, читающих друг друга и считающих, что весь мир такой как мы.
А ещё задумался: появление LLM представляет больший риск для нас, старпёров, или наоборот, для той самой молодой шпаны? И кажется, что таки для них. Потому что, во-первых, как только LLM начнёт работать на уровне тупого стажёра, все перестанут брать тупых стажёров. То есть молодёжи сложнее будет выходить на рынок труда, набираться первого опыта. А во-вторых, какое преимущество молодого перед стариком? (я, конечно же, про интеллектуальный труд) У молодого мозг гибче, он быстрее учится. Но появление LLM одновременно и упрощает обучение, и отменяет необходимость знать что-то наизусть. То есть да, молодой мозг всё ещё лучше запоминает, чем мой — но ценность этого падает. Интересная тема.
no subject
Date: 2025-11-25 10:49 am (UTC)А как у вас сейчас определяют, "жив или умер", в смысле, вернётся или нет? Люди? Можно просто их работу облегчить.
Но тот факт, что вам нельзя самостоятельно установить питон, конечно, с американской точки зрения кажется смехотворным. Примерно как про Германию рассказывают, как там три месяца уходит, чтобы заменить сломанный лаптоп или купить новую пачку бумаги.
no subject
Date: 2025-11-25 01:59 pm (UTC)no subject
Date: 2025-11-25 03:24 pm (UTC)no subject
Date: 2025-11-25 04:18 pm (UTC)no subject
Date: 2025-11-25 04:42 pm (UTC)no subject
Date: 2025-11-25 02:02 pm (UTC)no subject
Date: 2025-11-25 03:23 pm (UTC)no subject
Date: 2025-11-25 04:17 pm (UTC)no subject
Date: 2025-11-25 04:43 pm (UTC)no subject
Date: 2025-11-26 04:33 am (UTC)Подозреваю я, что опыт работы в большой (сильно большой) американской компании подзабылся.
Ну или повезло(с)
no subject
Date: 2025-11-26 07:41 am (UTC)no subject
Date: 2025-11-25 12:15 pm (UTC)Следующим на очереди - customer support. Тут много о чём писать - у нас этим занимается специальная группа. Если ограничиваться "спросил AI o $вопрос$ и он мне нагаллоюцинировал", то кажется, что кожаным мешкам ещё долго не будет замены. Но это, увы, не так.
no subject
Date: 2025-11-25 02:55 pm (UTC)Казалось бы бурное развитие ИИ должно привести к существенному улучшению help-ов и faq-ов хотя бы с точки зрения экономии денег - пока не случилось вообще.
no subject
Date: 2025-11-25 03:25 pm (UTC)no subject
Date: 2025-11-25 02:04 pm (UTC)Эта задачка должна отлично решаться традиционными методами вроде вот этого, без чёрного ящика.
Главная проблема в подобном моделировании не сделать модель, а сделать модель, которая не сломается на новых данных. В наивном Байесе это получается само по себе, он самостоятельно продолжает учиться на новых данных.
Даже не нужно лезть в сложную токенизацию, стемминг, TF-IDF и тд. Достаточно тупо разбить текст по пробелам (whitespace) на слова и скормить слова и N-граммы (до N=5 или хотя бы до N=3) Байесу.
no subject
Date: 2025-11-25 02:13 pm (UTC)Тупо разбить текст по пробелам - я это и назвал токенизацией. N-граммы мне ChatGPT предложил в качестве направления для улучшения, но я даже не начинал смотреть в эту сторону, и так пока работает. Продолжение обучения на новых данных - ну так опять же, это то, что я предусмотрел предпоследним пунктом. Или я чего-то не вижу, и есть принципиальное преимущество одного перед другим?
no subject
Date: 2025-11-25 03:10 pm (UTC)SVM полезен для непрерывных независимых переменных вроде роста, веса или количества денег. И для моделирования сложных взаимосвязей. А тут достаточно просто слова посчитать. Это можно сделать в лоб, без применения сложных методов и библиотек. Проще модель, меньше зависимостей — будет легче потом поддерживать.
no subject
Date: 2025-11-25 04:14 pm (UTC)Но спасибо за наводку, почитаю про байезовскую модель. Мне просто SVM кажется вершиной простоты :-)
no subject
Date: 2025-11-25 04:27 pm (UTC)В этом контексте количество слов (TF) и особенно редкость слов (IDF) не так важны, как сам факт присутствия слов. Больше всего информации в самом начале, между "слова нет" и "слово есть". Между "слово повторено 23 раза" и "слово повторено 24 раза" разницы почти никакой нет.
Можно это пытаться отразить с помощью логнормализации, но на маленьких размерах данных это не даёт выигрыша, проверено. Тупой наивный Байес ничуть не хуже, нет смысла огород городить.
no subject
Date: 2025-11-25 06:34 pm (UTC)no subject
Date: 2025-11-26 09:06 pm (UTC)В Америке рекордная безработица среди свежих выпускников. А опытным на посланное резюме приходят через месяц ответ что пошли вперед с другим кандидатом.
Молодые они дешевые и смуглые. Опытные они считаются (никто ведь не спрашивает) дорогими Белыми мужчинами.
no subject
Date: 2025-11-27 08:20 am (UTC)То есть не "в выигрыше счастливые обладатели паспортов Индии и Польши", а "наконец-то шансы выравниваются, и историческое преимущество родиться в правильной стране платит всё менее и менее". Потому что нанимают кого-то "не белого" не потому, что он "смуглый", а потому, что он дешёвый. Он всегда был дешевле, но сейчас у него, наконец-то, появилась возможность с нами (удачно если не родившимися, то хотя бы переехавшими) конкурировать.
no subject
Date: 2025-11-29 12:34 am (UTC)Дешевизна это отговорки, просто Азиаты нанимают других Азиатов из своего аула а Белые нет. Причем последние не только распропагандированны и деморализованы правительственным агитпропом. Есть специальные законы типа Civil Rights Act of 1964 и всяких protected classes (равенство перед законом такое равенство) придуманные чтобы подавлять Белых и особенно мужчин. Насколько я понимаю не живущие здесь про все это совершенно не в курсе а в газетах про такое не пишут.
В принципе мы и голосовали за DJT чтобы он устроил кирдык нелегалам внизу пирамиды работ и Азиатам наверху. Коренные Американцы настолько же разобщены и не имеют политического представительства здесь как Славяне там.
no subject
Date: 2025-11-29 08:37 am (UTC)Про нас с вами - у нас как раз не было преимущества до переезда. Теперь появилось - мы живём в странах, где за нашу работу, при прочих равных, платят на порядок больше, чем в бедных странах. Просто потому что мы живём в этих богатых странах. Лично я не вижу, чем я лучше моего однокашника, который не переехал в богатую страну. Почему я достоен более высокой зарплаты, если у нас и мозги одинаковые, и работаем мы одинаково. Я не считаю переезд каким-то своим достижением, за которое мне нужно платить пожизненный бонус.
Поэтому да, конечно же я рад, когда зарплаты выравниваются - моя снижается, но зарплата моего друга повышается. Хотя бы потому, что моя маргинальная потеря существенно ниже его маргинального выигрыша. Но самое главное, потому что это справедливо - получать деньги за способности, а не по праву местонахождения.
no subject
Date: 2025-11-29 06:43 pm (UTC)Если бы мозги были одинаковые и работали одинаково то и жили бы в первом мире. Но кто то прикладывал усилия и гробил годы жизни и выбрался а кто то жрал водку и даже язык не выучил.
А ваш третий параграф настолько дикий что я даже не знаю что сказать. Даже если вы настолько поддерживаете свою этничность что готовы платить за бывших соотечественников не живя под одним с ними сувереном. Интересно как вы планируете с таким подходом дать своим детям шанс стартовать с условий более выгодных чем конкуренты.
no subject
Date: 2025-11-29 09:04 pm (UTC)Конечно же я не за "свою этничность", мне самому это тоже дикостью показалось бы :-) Я с трудом могу сказать какая у меня "этничность", это вообще какая-то параллельная от меня реальность.