Мэдрэлийн сүлжээ (Neural Network) баяжуулалтын процессийн загварчлалд
Bond, Rowland шиг сонгодог тэгшитгэлүүдийн зэрэгцээ, өгөгдлөөс шууд сурдаг математик загвар яаж тээрмийн чадал, циклоны ажиллагаа, флотацийн эргэлтийг таамаглаж болохыг — нейроноос эхлээд бодит жишээн хүртэл, интерактив тайлбар.
Нэг нейрон — тооцооны хамгийн жижиг нэгж
Neural Network гэдэг нь мянга мянган энгийн тооцоолуур (нейрон) хоорондоо холбогдож, хамтдаа нэн нарийн функц дүрсэлдэг систем юм. Нэг нейрон юу хийдгийг эхлээд ойлгоцгооё.
Нейрон бол гурван энгийн алхам: (1) оролтуудыг жинтэй нийлбэр болгож нэмнэ, (2) идэвхжүүлэх функц (activation function)-ээр дамжуулна, (3) гаралтыг дараагийн давхаргад дамжуулна.
| Алхам | Томьёо | Баяжуулалтын жишээ дүрслэл |
|---|---|---|
| Жинтэй нийлбэр | z = w₁x₁ + w₂x₂ + ... + b | F80, тоннаж, бөмбөлгийн ачаалал — тус бүрийг "чухлын жин"-ээр үржиж нэмнэ |
| Идэвхжүүлэлт | a = f(z) | Нийлбэрийг 0–1 хооронд шахах, эсвэл сөрөг утгыг таслах зэргээр "тохиолдол"-той болгоно |
| Гаралт | → дараагийн давхарга | Энэ утга дараагийн нейронуудын оролт болно |
Жин w тус бүр тухайн оролт хэр их нөлөөтэйг илэрхийлнэ; хэвийн (bias) b нь босго түвшинг зөөнө. Сургалт гэдэг бол яг л энэ w, b тоонуудыг өгөгдлөөс тохируулах явдал — инженер гараар тэгшитгэл бичихгүйгээр, загвар өөрөө хамаарлыг олж авдаг гэсэн үг.
Интерактив: нэг нейроныг өөрөө туршиж үзээрэй
Live тооцоололa = f(z) = 0.000
Улаан цэг нь одоогийн (z, a) координат. Функцийг сольж, z-ийн ижил өөрчлөлт гаралтад хэрхэн өөр нөлөө үзүүлэхийг ажиглаарай — ReLU сөрөг талдаа "унтарч", Sigmoid хоёр талдаа "ханадаг" (saturate).
Нейронуудыг давхарга болгон холбоход юу гардаг вэ
Нэг нейрон зөвхөн шулуун (эсвэл нэг эвдрэлтэй) хамаарлыг л дүрсэлж чадна. Харин олон нейроныг зэрэгцээ, олон давхаргаар холбоход систем маш нарийн, шугаман бус (non-linear) хамаарлыг ойролцоолж чаддаг болдог — үүнийг Universal Approximation шинж чанар гэдэг.
Оролтын давхарга (Input layer) — процессын хэмжигдэхүүнүүд: F80, P80, тоннаж, %ХБ, бөмбөлгийн ачаалал, реагентийн норм г.м. Энд тооцоо хийгдэхгүй, зөвхөн өгөгдлийг сүлжээнд оруулна.
Далд давхарга (Hidden layers) — энд бодит "сургалт" явагдана. Давхарга, нейроны тоо их байх тусам загвар илүү нарийн муруй хамаарлыг барьж чаддаг, гэхдээ хэт олон бол дараа үзэх overfitting-д ордог.
Гаралтын давхарга (Output layer) — регрессийн зорилгод (жишээ нь кВтц/т, % эргэлт) ихэвчлэн идэвхжүүлэлтгүй (linear) нэг нейрон байна; олон гаралт зэрэг (жишээ нь эргэлт + агууламж хамт) таамаглах бол гаралтын давхаргад нейроны тоо нэмэгдэнэ.
Жингийн тоо — жишээ нь 6 оролт → 8 далд → 8 далд → 1 гаралт бүхий сүлжээнд ойролцоогоор 130 сурах боломжтой параметр (жин+bias) байна. Эдгээрийг л сургалтын явцад тохируулна.
Хэрхэн "сурдаг" вэ — бодит сургалт, шууд нүдэн дээр
Сургалт гэдэг 3 алхамын давталт: Forward pass (тооцоолж таамаглал гаргах) → Loss (таамаглал бодит утгаас хэр зөрсөнийг хэмжих) → Backpropagation + Gradient Descent (алдааг багасгах чиглэлд жинг бага зэрэг өөрчлөх). Мянга мянган давталтын дараа жингүүд өгөгдлийн хамаарлыг барьж эхэлдэг.
Интерактив: жижиг сүлжээг таны нүдэн дээр сургая
Бодит gradient descent — JS дотор ажиллаж байнаДоорх өгөгдөл нь ксантатын норм (реагентийн тун, x) өссөнөөр молибдений эргэлт (%, y) ханалттайгаар өсдөг ердийн флотацийн муруйг дуурайсан жишээ цэгүүд. 1 оролт → 6 нейронтой далд давхарга (tanh) → 1 гаралттай жижиг сүлжээг санамсаргүй жингээс эхлүүлээд, товч дараад бодитоор сургана.
Цэг = өгөгдөл · Муруй = сүлжээний одоогийн таамаглал
Loss (MSE) эпох тутам буурч байгаа график
Баяжуулалтын процесст хаана хэрэглэгддэг вэ
Доор таны ажилладаг процессуудтай шууд холбоотой 5 бодит хэрэглээний жишээг, оролт/гаралт, санал болгох архитектур, Python код хамт үзүүлье.
4.1 — Тээрмийн (SAG/бөмбөлөгт) хувийн энергийн зарцуулалт
РегрессОролт: F80, зорилтот P80, тоннаж (t/h), бөмбөлгийн ачаалал (%), тээрмийн диаметр/урт, хатуу биетийн эзлэхүүн (%ХБ).
Гаралт: хувийн энергийн зарцуулалт (kWh/t) эсвэл шууд чадал (kW).
Санал болгох хэмжээ: 6 оролт → 12 → 8 → 1 гаралт, ReLU далд давхаргад, Linear гаралтад.
Яагаад Bond-оос илүү байж болох вэ: Bond-ийн тэгшитгэл ажлын индексийг тогтмол гэж үздэг, харин бодит ор ба тээрэмд хатуулаг, литологи цаг хугацаанаас хамаарч хэлбэлздэг. Хангалттай түүхэн өгөгдөл байвал NN энэ хэлбэлзлийг мөн барьж авдаг — гэхдээ Wi-г физикийн хувьд тайлбарлахгүй, зөвхөн статистик хамаарлыг л сурдаг гэдгийг санах хэрэгтэй.
# sklearn — жижиг, түргэн сургагдах регрессор (100–1000 мөр өгөгдөлд тохиромжтой) from sklearn.neural_network import MLPRegressor from sklearn.preprocessing import StandardScaler from sklearn.model_selection import train_test_split X = df[['F80','P80_target','tph','ball_charge_pct','mill_D','solids_pct']] y = df['specific_energy_kwht'] X_tr, X_te, y_tr, y_te = train_test_split(X, y, test_size=0.2, random_state=42) scaler = StandardScaler().fit(X_tr) model = MLPRegressor(hidden_layer_sizes=(12,8), activation='relu', alpha=1e-3, max_iter=2000, random_state=42) model.fit(scaler.transform(X_tr), y_tr) print("R2 (test):", model.score(scaler.transform(X_te), y_te))
4.2 — Гидроциклоны ажиллагаа (d50, bypass, PSD)
РегрессОролт: тэжээлийн даралт, %ХБ, тэжээлийн зардал, vortex/apex голч, гурилын нягт.
Гаралт: тусгаарлалтын хэмжээ d50, bypass хувь, эсвэл шууд гаралтын PSD (олон гаралттай сүлжээ).
Санал болгох хэмжээ: 5 оролт → 10 → 6 → 1–3 гаралт. Циклон бол маш шугаман бус, харилцан үйлчлэлтэй систем тул сонгодог Plitt/Nageswararao томьёотой зэрэгцээ NN-ийг баталгаажуулалтад ашиглаж болно.
4.3 — Флотацийн эргэлт ба төвлөрлийн агууламж (олон гаралттай загвар)
Олон гаралтОролт: реагентийн тунгууд (коллектор, хөөс үүсгэгч, идэвхжүүлэгч), рН, агаарын зардал, целлийн хугацаа (residence time), тэжээлийн ширхэглэл, тэжээлийн агууламж.
Гаралт: Cu/Mo эргэлт (%) ба төвлөрлийн агууламж (%) — хоёуланг нь нэг сүлжээ зэрэг гаргаж болно (multi-output), учир нь эдгээр хоёр хэмжигдэхүүн ихэвчлэн зөрчилдсөн (trade-off) хамааралтай байдаг.
# Keras — олон гаралттай (эргэлт + агууламж) сүлжээ import tensorflow as tf model = tf.keras.Sequential([ tf.keras.layers.Input(shape=(7,)), # 7 процессын хувьсагч tf.keras.layers.Dense(16, activation='relu'), tf.keras.layers.Dropout(0.15), # overfitting-ээс сэргийлнэ tf.keras.layers.Dense(10, activation='relu'), tf.keras.layers.Dense(2) # [эргэлт_%, агууламж_%] ]) model.compile(optimizer='adam', loss='mse', metrics=['mae']) model.fit(X_train, y_train, validation_split=0.2, epochs=300, batch_size=16)
4.4 — Хүдрийн зурган дүн шинжилгээ (CNN)
Computer VisionТаны конвейерийн зурган дээр суурилсан ширхэглэлийн (PSD) OpenCV-watershed загварыг санаж байна уу — Convolutional Neural Network (CNN) нь яг ийм зорилготой мэдрэлийн сүлжээний тусгай төрөл: зургийг шууд оролт болгон авч (пиксель бүрийг гараар боловсруулахгүйгээр), ширхэгийн хэмжээ, тоо, хэлбэрийг шууд гаргадаг. Watershed segmentation-той хослуулбал: эхлээд CNN-ээр бүс тусгаарлаад, дараа нь хэмжилт хийх, эсвэл end-to-end сургасан CNN шууд D50/D80-г таамаглаж болно.
Давуу тал: гэрэлтүүлэг, өнгө, чийгийн нөхцөл өөрчлөгдөхөд CNN хангалттай өгөгдлөөр сургагдсан бол илүү тогтвортой ажилладаг — гэхдээ энэ нь мянга мянган шошготой (labeled) зураг шаарддаг тул хамгийн их өгөгдөл шаардсан хэрэглээ юм.
4.5 — Дижитал ихэр (Digital Twin) ба бодит цагийн оновчлол
Surrogate modelMETSIM-ийн бүрэн mass-balance симуляц нэг тохиргоог секунд-минутын хугацаанд бодно, харин SCADA дээр бодит цагийн хяналт хийхэд энэ хэтэрхий удаан. Түүхэн METSIM гаралт дээр сургасан NN "surrogate model" болж, ижил оролтод millisecond-ийн дотор ойролцоо гаралт өгч, PID/MPC хяналтын давхаргад таамаглал болгон ашиглагдах боломжтой — жишээ нь тоннаж унахад тэр даруй бөмбөлгийн ачааллын зөвлөмж гаргах.
Жишээ загвар: тээрмийн чадлыг урьдчилан таамаглах сүлжээ
Доор 3 оролттой, 4 нейронтой далд давхарга бүхий жижиг сүлжээний урагш дамжуулалт (forward pass)-ыг шууд нүдэн дээр ажиглаарай. Слайдер хөдөлгөхөд оролт → далд нейронуудын идэвхжил → гаралт хэрхэн өөрчлөгдөхийг өнгөөр харуулна.
F80 нэмэгдэх тусам (ор хатуу, тэжээл томорсон) хувийн энерги өснө; тоннаж өсөхөд нэгж жинд ногдох нунтаглалтын хугацаа багасаж хувийн энерги буурах хандлагатай — энэ бол Bond-ийн зарчимтай чиглэлээрээ нийцтэй, гэхдээ энд физик тэгшитгэлээр биш, сүлжээний жингээр гарч байна.
Сонгодог тэгшитгэл ба Neural Network — юуг сонгох вэ
Аль нь ч "илүү сайн" гэсэн ганц хариулт байхгүй — хоёулаа өөр өөр нөхцөлд давуу талтай, ихэнхдээ хамтад нь ашиглах нь хамгийн үр дүнтэй.
| Шинж чанар | Сонгодог (Bond, Plitt, ...) | Neural Network |
|---|---|---|
| Шаардах өгөгдөл | Цөөн, лабораторийн туршилт хангалттай | Их хэмжээний түүхэн/процессын өгөгдөл (олон зуу–мянга мөр) |
| Физик тайлбар | Тодорхой — Wi, EF хүчин зүйл бүр учиртай | "Хар хайрцаг" — жингүүд физик утгагүй |
| Шугаман бус хамаарал | Хязгаарлагдмал (тэгшитгэлийн хэлбэрээр тогтмол) | Маш уян хатан, автоматаар сурна |
| Экстраполяци (сургасан мужаас гадуур) | Физик үндэслэлтэй тул харьцангуй итгэлтэй | Эрсдэлтэй — сургасан мужаас гадуур найдваргүй |
| Тохируулах хугацаа | Хурдан, шууд тооцоолж болно | Өгөгдөл цуглуулах, сургах, баталгаажуулах шаардлагатай |
| Олон хувьсагчийн харилцан үйлчлэл | Гараар тохируулсан хязгаарлагдмал хэлбэрээр | Автоматаар бүх харилцан үйлчлэлийг барина |
| Хамгийн тохиромжтой хэрэглээ | Урьдчилсан зураг төсөл, шинэ үйлдвэр, шинэ ор | Ажиллаж буй үйлдвэрт бодит цагийн оновчлол, soft sensor |
Практик зөвлөмж: Bond/Plitt-ээр эхний тооцоог хийж, барилга/тоног төхөөрөмжийн зохион байгуулалтыг тодорхойлж, дараа нь ажиллаж эхэлмэгц бодит хэмжилтээр NN сургаж, сонгодог загвар дээрх зөрүүг засварлах (hybrid буюу "physics-informed" арга) нь ихэнх тохиолдолд хамгийн найдвартай.
Хэрхэн эхлэх вэ — Python дээр бодит зам
Таны METSIM, Excel, Python (Tkinter) орчинтой шууд нийцэх, бага зардлаар эхлэх дараалал.
Түүхэн өгөгдөл цуглуул
METSIM тайлан, лабораторийн журнал, SCADA/PI лог зэргээс F80, тоннаж, реагент, эргэлт, чадал зэрэг хосолсон мөр бүрийг Excel/CSV болгож нэгтгэнэ. Хамгийн бага 100–200 мөр, боломжтой бол 1000+ байвал сайн.
Цэвэрлэж, тэжээх өгөгдөл бэлд
Алдаатай/сэжигтэй мөрүүдийг арилга, өгөгдлийг стандартчил (StandardScaler), сургалт/тест хэсэгт (80/20) хуваа. Pandas ашиглах — танд аль хэдийн танил хэрэгсэл.
Энгийнээс эхэл: scikit-learn MLPRegressor
TensorFlow/PyTorch руу шууд орохын оронд эхлээд sklearn-ээр 1-2 далд давхаргатай жижиг сүлжээ сургаж, RandomForest/LinearRegression-той харьцуулж R² харах — танд аль хэдийн ийм ML урьд туршлага байгаа.
Баталгаажуул, overfitting шалга
Сургалт болон тестийн алдааг зэрэгцүүлж хар (том зөрүү = overfitting). Cross-validation, эрт зогсоол (early stopping), dropout зэргийг ашигла.
Tkinter апп руу нэгтгэ
Сургасан загварыг joblib.dump()-оор хадгалаад, таны одоо байгаа инженерийн тооцооллын Tkinter аппликейшнд слайдер/оролтын талбартай нэгтгэн, бодит цагийн "юу болох вэ" (what-if) тооцоолуур болго.
Сонгодог тэгшитгэлтэй хамт ажиллуул
NN-ийг Bond/Rowland-ийн орлуулагч биш, нөхөгч болгож ашигла — хоёр аргын зөрүүг тогтмол хянаж, ор/тоног төхөөрөмж өөрчлөгдөхөд загварыг дахин сургаж бай.
