Как стать автором
Обновить

Тех же щей, да поменьше влей: оптимизируем расход ферросплавов с помощью ML

Время на прочтение10 мин
Количество просмотров6.1K
Всего голосов 25: ↑22 и ↓3+19
Комментарии23

Комментарии 23

А почему бы не добавлять присадки на холодном этапе, до начала нагрева руды?

Потому что как они за всё это время выгорят/прореагируют с другими примесями - знает один Гефест, да и тот - персонаж мифический.

В конвертере нет руды.

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

Мне кажется, что стоило привести другой вид графика shap без цветовой разметки. Тогда была бы видна нелинейность в процессе отдачи элемента в сталь: " ферросплав Х1 и привнести Y1% чистого элемента в сталь "
Вот такой вид, как в статье, показывает остаточную дисперсию, которую можно объяснит за счет влияния третьего фактора, который отображается по цветовой оси. И вклад такого фактора на порядок меньше основной пары признаков.

А в целом годная статья. Для рынка полезно, когда кейсы доводятся до конца, запускаются в продуктив и приносят измеримый value

Нелинейность видна и на цветном графике, просто на цвет можно не обращать внимание, на корреляцию между базовыми осями он не влияет. А вот то, что цвет может усложнять восприятие, согласен, но почти всегда лучше не терять потенциально полезную информацию :)

Позвольте Вам возразить.

Такой вид графиков показывает дополнительную дисперсию между переменными, которую возможно объяснить дополнительной переменной. Вот пример как Пол вносит вклад во влияние переменной возраста на вероятность болезни (примеры из shap github)

А этот график непосредственного влияния возраста

Видно, что возраст имеет высокое влияние [-2.0:1.5]. И Пол дает вклад в диапазоне [-0.15:0.15]

Спасибо за развернутый ответ) Но Вы привели пример, где по левой оси у вас SHAP влияние по сути с разделением на два признака, у нас был один, а цвет - это лишь подкраска какое значение было у третьей (цветной) фичи.

Изображение с 3 переменными (shap.dependence_plot(..., interaction_index='auto')):

Изображение с 2 осями (shap.dependence_plot(..., interaction_index=None)):

Как можно увидеть, они полностью идентичны, просто из "цвета" можно вытащить дополнительные инсайты)

Тогда понятно. Вы строите с параметром "interaction_index='auto' ". Так все инсайты вы не вытащите. Библиотека предлагает расцветку по своему разумению. А гипотезы необходимо отвалидировать на соответствие понимания технологического процесса. К примеру бывает много ложных зависимостей между удаленными переделами, которые точно не взаимодействуют и такое нужно на начальном этапе отсекать, чтобы не показывать технологам и не подрывать доверие к "черным ящикам".

Чтобы проверить все интеракции, необходимо строить как в примере

shap.dependence_plot( ("Age", "Sex"), shap_interaction_values, X.iloc[:2000,:], display_features=X_display.iloc[:2000,:] )

И задавать в интеракцию те пары, которые имеют смысл. А лучше отсмотреть N^2 графиков и искать явные паттерны, к примеру форма похожая на X - смена направления зависимости. Или явные хвосты вверх и вниз.

Да, вопрос. Как вы объяснили технологам смысл чисел на оси Y?

Да, вопрос. Как вы объяснили технологам смысл чисел на оси Y?

Как раз по причине сложности восприятия и объяснения чисел на оси Y (shap values) мы цвета очень редко включаем в обсуждения с бизнесом. В целом, придерживаемся такого подхода: shap values оцениваем на summary plot, по сути оцениваем относительность влияние всех параметров и фиксируем, что действительно те или иные параметры влияют больше остальных. А на dependency plots уже смотрим корректность корреляции, действительно ли этот параметр влияет в ту или иную сторону (очень редко обсуждая именно значения "силы влияния") в конкретном диапазоне на графике.

Нейтронно-активационный анализ нынче используют ли?

В статье про это ни слова)

Спасибо за статью! Верно я понял, что модель ML используется для оценки линейного коэф. усвоения по каждой конкретной идущей плавке (по группе исторических плавок можно и без ML это сделать - просто посмотреть статистику)? И уже на основе этого коэф. потом идет расчет рекомендаций?

Да, все верно :)

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

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

Добрый день! А какие в итоге оценки точности получились, там R2, MAE и на каком диапазоне? И планируется ли публикация, больше про реализацию, а не сам техпроцесс, там как данные сглаживались, как многокритериальный оптимизатор строился?

Добрый день! R2 для всех химических элементов получился выше 0.85, MAE сильно зависит от химического элемента, потому что их волатильность и порядок значений в целом для марок сильно отличается, например: MAE для MN < 0,011, тогда как для V < 0,0015. Тестировали хим. элементы отдельно, примерно на 5000 плавок каждый.

Нет такой вещи, как химический состав стали вообще.

Цементит, Fe3C, явно входит в состав большинства сталей и чугуна. Просто в металлургии, на сколько я понимаю, принято рассматривать сталь не как химическую систему, а как физическую.

Разумеется, сталеварение появилось не вчера и уж точно намного раньше, чем machine learning. Как сталевары справлялись раньше? Опять же, с помощью нейросетей. Только не машинных, а естественных.

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

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

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

просто тангенс угла наклона красной прямой.

Тангенс 45 град. это 1.

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

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

Среди проектов цифровой трансформации ЕВРАЗа проект оптимизации отдачи ферросплавов был запущен одним из первых. Причина — прогнозируемый экономический эффект.

Не оценен долгосрочный эффект от ухудшения качества выплавляемых сталей. Хотя, на самом деле, потребители и не предъявляют к ним столь высоких требований.

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

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

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

Цементит, Fe3C, явно входит в состав большинства сталей и чугуна. Просто в металлургии, на сколько я понимаю, принято рассматривать сталь не как химическую систему, а как физическую.

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

Разумеется, сталеварение появилось не вчера и уж точно намного раньше, чем machine learning. Как сталевары справлялись раньше? Опять же, с помощью нейросетей. Только не машинных, а естественных.

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

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

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

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

Тангенс 45 град. это 1.

Вы забываете про размерности осей, или изменив масштаб я изменяю угол прямой на графике?)

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

Колебание хим. состава ферросплавов незначительно относительно средневзешанного, плюс, как писал выше, невозможно отследить путь ферросплава, для отслеживания потоков планируется проект, после которого можно будет внести улучшения в текущий :)

, а в стали кремний уже выжгли на предыдущем этапе и вносить его еще больше нельзя?

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

Не оценен долгосрочный эффект от ухудшения качества выплавляемых сталей. 

Никакого ухудшения качества сталей нет, есть границы требований ОТ и ДО, все в границах удовлетворяет потребителя. Учитывая, что всем важна стабильность продукции (даже внутри границ), с учетом текущей системы мы как раз ее повышаем, потому что снижаем среднекв. отклонение химии, более года эксплуатации это подтверждает.

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

А вот тут Вы ошибаетесь, если бы мы прогнозировали отдачи ферросплавов, то да, мы бы просто повторяли за человеком, но мы прогнозируем коэфф-т усвоения, соответственно предлагаем человеку идти оптимальным путем, не обращая внимание на его прошлые "ошибки".

Пример: идет плавка очень идентичная плавке в истории, в истории на нее человек насыпал кучу ферросплава и находился вблизи максимума по химии, модель рассчитает, что на эту плавку коэффициент ~Kx, и с учетом него оптимизатор скажет, что нужно добавлять сильно меньше ферросплава (чем человек добавлял в истории), чтобы быть ближе к середине/низу требования по этой марке стали.

недостаток информации о настоящем составе сплава

Просьба не путать ферросплавы и сплав стали (марочный продукт). Информация о настоящем составе приготавливаемого продукта есть и используется для модели, пробы стали по-прежнему берутся, как и брались ранее, никакую ранее имевшуюся информацию ML'ем мы не заменяли)

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

ух ты!
а картинки прямо из 2000 года наскриншотили

256 цветовая палитра
АРМ конверторного цеха..

ценят традиции
Молодцы!
:-)

Зарегистрируйтесь на Хабре, чтобы оставить комментарий