Jaringan saraf dan Proses Penambangan: mencoba berteman

Proses Penambangan adalah bidang analisis data yang memungkinkan Anda untuk menganalisis proses berdasarkan log sistem informasi. Karena ada sangat sedikit publikasi tentang topik penggunaan pembelajaran mesin di bidang ini pada HabrΓ©, kami memutuskan untuk berbagi pengalaman kami dalam mengembangkan model prediksi untuk memecahkan masalah yang berorientasi pada proses. Sebagai bagian dari program VTB, seorang junior TI untuk para profesional TI pemula, pekerja magang dari tim Proses penambangan menguji metode pembelajaran mesin dalam konteks tugas-tugas meneliti proses-proses bank. Di bawah potongan, kita akan berbicara tentang kapan dan bagaimana kita memiliki ide untuk menyelesaikan masalah seperti itu, apa yang kita lakukan dan apa hasil yang kita dapatkan.



IT Junior Program adalah program magang tahunan untuk para profesional TI pemula di VTB Bank, yang pertama kali dimulai pada September 2019. Magang berlangsung enam bulan. Menurut hasil program 2019, lebih dari setengah pekerja magang bergabung dengan staf dan menjadi karyawan perusahaan. Informasi lebih lanjut tentang program ini, awal seleksi dan persyaratan untuk kandidat dapat ditemukan di sini . Beginilah cara para peserta program ini mendekati tugas-tugas bank.

Dalam sistem koordinat klasik, untuk memahami dan memformalkan proses, perlu:

  • melakukan wawancara dengan karyawan;
  • menganalisis laporan dan dokumentasi yang tersedia.

Dalam pendekatan Proses Penambangan, model proses digital dibentuk atas dasar tidak hanya pendapat ahli dari peserta proses, tetapi juga data yang relevan dari sistem informasi.

Sebagai hasilnya, kami mendapatkan model digital proses yang obyektif, yang merupakan cerminan dari pergerakan data nyata dalam sistem proses TI. Model yang dihasilkan bekerja secara real time dan memungkinkan Anda untuk menampilkan kondisi proses saat ini dengan tingkat detail yang diperlukan.

Di artikel kami sebelumnyaKami berbicara tentang platform Proses Penambangan kami dan tugas nyata Bank Dunia, yang diselesaikan dengan bantuannya. Solusi yang diterapkan memungkinkan kami untuk secara signifikan mengurangi waktu yang diperlukan untuk menyiapkan laporan wajib kepada lembaga pemerintah, dan juga membantu mengidentifikasi dan mengoptimalkan ketidaksempurnaan proses, untuk membuat presentasi harian tentang status pembelian saat ini dalam pekerjaan.

Selanjutnya, pelanggan kami memiliki kebutuhan tidak hanya untuk secara kualitatif menentukan kondisi proses saat ini, tetapi juga untuk memprediksi kondisi masa depannya.

Selanjutnya, kami akan menjelaskan langkah demi langkah bagaimana kami memecahkan masalah dalam memprediksi durasi proses pengadaan (menggunakan dataset BPI Challenge 2019 sebagai contoh) menggunakan serangkaian acara terkenal menggunakan Stasiun DGX berkinerja tinggi, yang disediakan kepada kami oleh NVIDIA untuk penelitian.

Aplikasi Pembelajaran Mesin untuk Proses Penambangan


Untuk memecahkan masalah, kami membangun garis dasar menggunakan CatBoostRegressor, dan kemudian mengembangkan solusi dengan jaringan saraf dan menanamkan variabel kategori.
Karena adanya fitur kategorikal dan material dalam data sumber, diputuskan untuk menggunakan peningkatan, yang dapat memproses fitur kategoris tanpa pengkodean, dan juga menyelesaikan masalah pada input diskrit dan material.

Jaring digunakan untuk membangun atribut material sepenuhnya dan menyelesaikan masalah pada seluruh input material, dan kemudian membandingkan dua pendekatan ini dan memutuskan apakah akan peduli dengan jaring.

Deskripsi Data


Diputuskan untuk menggunakan data eksternal yang sesuai dengan kami di area bisnis dan memiliki serangkaian karakteristik yang serupa. Dataset BPI Challenge 2019 yang digunakan mencakup 250 ribu kasus - ini adalah 1,5 juta peristiwa. Data awal dijelaskan oleh satu set 21 tanda: 18 kategorikal (ada tanda indeks), dua Boolean dan satu nyata. Waktu pelaksanaan proses pengadaan dipilih sebagai variabel target, yang sesuai dengan kebutuhan nyata bisnis. Untuk deskripsi rinci tentang karakteristik, Anda dapat merujuk ke deskripsi dataset .

Baseline


Sebelum pelatihan model, data dibagi menjadi sampel pelatihan (kereta) dan uji (uji) dengan rasio 0,8 / 0,2. Selain itu, pembagian itu tidak terjadi menurut peristiwa, tetapi menurut kasus.

Untuk menentukan seberapa tepat menggunakan solusi eksklusif yang kompleks dalam bentuk jaringan saraf, baseline dibangun menggunakan CatBoost, perpustakaan canggih gradien yang meningkatkan pada pohon keputusan. Untuk membangun garis dasar, dilakukan pemrosesan data minimal (pengkodean fitur kategoris dengan frekuensi yang sesuai dalam data), variabel target (durasi kasus) dan sejumlah fitur baru dikembangkan (selain yang sudah ada dalam dataset asli):

  • . , : , , , , , .
  • Exponential Moving Average . EMA , .
  • (, , ).

Setelah melatih CatBoostRegressor di set pelatihan, kami mendapatkan hasil sebagai berikut: MAE (Mean Absolute Error) = 17,5 hari (yaitu, nilai variabel target yang diprediksi rata-rata 17,5 hari berbeda dari nilai sebenarnya). Hasil ini digunakan untuk menguji efektivitas jaringan saraf. 

Salah satu perincian penting di sini adalah pengembangan variabel target untuk baseline. 

Mari kita punya kasing. Kami menyatakannya dengan c_i dari himpunan C (himpunan semua kasus dalam dataset kami). Setiap case adalah urutan kejadian yang terurut, yaitu c_i = (e_0, ​​..., e_ni), di mana ni adalah panjang dari case ke-i. Untuk setiap acara, kami memiliki cap waktu - waktu yang tepat untuk memulai. Dengan menggunakan prangko sementara ini, Anda dapat menghitung durasi kasing tanpa acara terakhir. Namun, menetapkan target seperti itu untuk setiap peristiwa, yaitu, membuat korespondensi ek ∈ ​​ci, ek β†’ ti (ti adalah durasi kasus ke-i), tidak terlalu baik. Pertama, kejadian serupa (tipikal) dapat terjadi pada kasus dengan durasi yang berbeda. Kedua, kami ingin memprediksi durasi kasus dari kejadian tertentu (dipesan dalam waktu) peristiwa (ini termotivasi oleh fakta bahwa kami tidak tahu seluruh urutan peristiwa, yaitu, kami tidak tahu kasus sebelumnyabagaimana itu terjadi, tetapi kami ingin membuat penilaian tentang durasi seluruh kasus berdasarkan beberapa peristiwa (yang terjadi) yang diketahui dari kasus ini).

Oleh karena itu, kita perlu memecah setiap kasus menjadi urutan panjang dari satu ke panjang kasus peristiwa yang diurutkan waktu dan menetapkan variabel target yang sama dengan durasi kasus dari mana urutan ini diperoleh, yaitu, korespondensi ci ∈ C, ci β†’ {sub_cj} ni (ni seperti sebelumnya, panjang case ith), j = 1 dan len (sub_cj) = j.

Dengan demikian, kami memecah setiap kasus menjadi urutan dan menetapkan durasi seluruh kasus untuk setiap urutan tersebut.

Lebih lanjut tentang tindak lanjut

Seperti yang disebutkan sebelumnya, kami membagi kasus ke bagian berikutnya dan menetapkan durasi kasus untuk masing-masing kasus. Kita akan menggunakan boosting yang sesuai dengan ukuran data input. Jadi sekarang kita memiliki X = {{sub_c ki } ni k = 1 } t = 1 N , sub_c ik adalah k-th berikutnya dari kasus ke-i, t i adalah panjang dari kasus ke-i, N adalah jumlah kasus. Artinya, dimensi [Ξ£ N t = 1 n i , sc, 17], sc adalah variabel sama dengan panjang subsequence dari kasus yang sesuai.

Setelah pengkodean variabel kategorikal berdasarkan frekuensinya, kami memiliki variabel nyata dan Boolean, serta variabel kategorikal berkode (variabel indeks tidak akan digunakan dalam proses pembelajaran). Kita juga dapat rata-rata nilai atas suatu urutan, sementara dalam fitur kategorikal kita mendapatkan frekuensi rata-rata dari nilai-nilai kategorikal yang terjadi, yang juga dapat dianggap sebagai karakteristik yang menggambarkan agregasi dari subset peristiwa dalam suatu kasus, yaitu, sebagai karakteristik yang menggambarkan sebuah urutan. Tinggalkan dan lihat apa yang terjadi.

Setelah rata-rata sc lebih dimensi, kita memperoleh dimensi berikut: [Ξ£ N t = 1 n i , 17].

Bangunan model

Berdasarkan kasus, kami membagi kereta ke kereta lain dan sampel validasi, mengambil CatBoostRegressor dengan parameter default, meneruskannya sampel pelatihan, memvalidasi sampel validasi, mengambil iterasi terbaik, menggunakan MAE sebagai metrik validasi. Kami mendapatkan yang berikut (pada gambar di bawah) pada tes (kami akan secara terpisah menyiapkan tes untuk pipa yang sama dengan yang dibangun kereta. Semua tanda didasarkan pada data yang ada dalam tes, yaitu, kami tidak memiliki tanda-tanda yang berfokus pada variabel target. Satu-satunya peringatan: jika fitur kategorikal dalam tes tidak memenuhi nilai yang kami lihat di kereta, maka kami mempertimbangkan frekuensi nilai ini pada tes dan memperbarui kamus untuk pengkodean).

Hasil baseline



β€’ Iterasi: 500.
β€’ Laju pembelajaran: 0,1.

Parameter pelatihan:

β€’ Waktu pelatihan: kurang dari 2 menit.
β€’ Besi: Tesla k80 (dari colab).

Hasil:

β€’ Tes MAE: 17,5 hari.
β€’ Durasi rata-rata kasus dalam tes: 66,3 hari.

Jaringan syaraf


Mendirikan


Untuk melatih jaringan saraf, data ditingkatkan: embedding untuk variabel kategori dibangun, dan distribusi variabel target disesuaikan. Selanjutnya, jaringan saraf dilatih pada NVIDIA Tesla K80 (Google Colab) dan pada NVIDIA DGX Station.

Hasil-hasil berikut diperoleh:

  • Waktu pelatihan di NVIDIA K80 (Google Colab): 20 menit.
  • Waktu pelatihan di Stasiun NVIDIA DGX: 8 menit.

Waktu pelatihan jaringan saraf disebabkan oleh perbedaan karakteristik teknis GPU yang digunakan:
NVIDIA Tesla K80 (Google Colab)
Stasiun NVIDIA DGX
1X NVIDIA Tesla K80 12GB
4X NVIDIA Tesla V100 32GB

Preprocessing


Tanda-tanda baru

  • EMA pada nilai acara: kami ingin menangkap tren dalam biaya kegiatan untuk setiap kasus.
  • Jenis cacat: dalam deskripsi dataset Anda dapat menemukan informasi tentang empat jenis statistik deskriptif pembelian (event) - tipe-tipe ini dibagi ke dalam nilai dua variabel dalam dataset asli. Kami hanya mengumpulkannya kembali (jika Anda melihat deskripsi dataset, akan jelas apa yang sedang kita bicarakan).

Tanda-tanda kategoris Kami

hanya menyandikan nilai-nilai unik dari tanda-tanda kategorikal dengan angka alami, sehingga nantinya kami bisa mengajarkan embeddings.

Embeddings untuk variabel kategori

Kami menentukan dimensi embeddings untuk setiap variabel kategori:

  • , Μ† Μ† Μ†. Μ† , Μ† Μ† , Μ†, . : MUi  = min(CAT_EMBEDDING_DIM; (len(uniquei) + 1) // 2), CAT_EMBEDDING_DIM β€” , uniquei β€” i- .
  • , 3, i-Μ† Μ† max(3;MUi)+1, 1, , train, unk-.

Kami menyesuaikan distribusi target pada sampel kereta api. 

Distribusi awal ternyata sangat bergeser ke kiri karena pencilan (kasus yang bertahan 250 ribu hari) dan sejumlah besar kasus pendek, jadi kami menghitung 0,05 dan 0,95 persentil dan meninggalkan data dari kereta dengan target antara jeram ini.

Setelah itu, kami masih memiliki kasus yang berlangsung sekitar satu dan sekitar 100 hari, yaitu variabel target melewati beberapa urutan besarnya. Oleh karena itu, asumsi bahwa varians konstan dalam distribusi variabel target di sekitar algoritma keputusan hampir tidak terpenuhi, yaitu, distribusi variabel target mendekati normal, tetapi varians tidak konstan karena fakta bahwa variabel target dapat kurang dari 1 atau lebih dari 100. Oleh karena itu, untuk setidaknya entah bagaimana tingkat efek ini, kami menormalkan data.

Hasilnya ditunjukkan pada grafik di bawah ini (garis hitam adalah distribusi normal).



Kemudian kami membagi berdasarkan kasus data kami menjadi kereta dan validasi. Ada juga nuansa yang jelas di sini: kita menormalkan target dengan rata-rata dan penyimpangan, dihitung berdasarkan semua data, dan kemudian dibagi dengan kereta api dan validasi, yaitu, ternyata seperti wajah di kereta, tetapi karena kita menyelesaikan masalah tambahan di sini, wajah ini tidak tampak kritis.

Tanda-tanda bangunan


Ide

  • Kami hanya mengambil tanda-tanda kategoris dari kereta kami, dikodekan oleh bilangan alami.
  • Kami tidak mengambil substring dari kasus, tetapi hanya peristiwa, yaitu, satu baris dalam data kami untuk pernikahan - ini adalah salah satu peristiwa yang ditandai oleh fitur kategorikal yang dikodekan.
  • : , Μ†, , , , Μ† Μ† Μ†. - , Μ†, , , Μ† ( ), ( , - Μ† ).
  • Μ† .
  • , 8-Μ†Μ† elu Μ†, ( , , , L2-) .
  • , , β€” , , .
  • Summary: β€” Μ† Μ† Μ† Μ† β€” Μ†.


  • Batch size = 1000
  • Learning rate = 3e-04.
  • = 15.
  • : Tesla k80 (colab) + Nvidia DGX Station .
  • (colab) – 50 .
  • (Nvidia DGX Station) β€” 18 .




Persiapan data

Sekarang kami memiliki embeddings untuk variabel kategori (ada nuansa di sini: kami dengan jujur ​​mengambil nilai-nilai unik dari variabel kategori di kereta kami (bukan pada yang kami alokasikan untuk embeddings pelatihan, tetapi pada yang kami alokasikan di awal untuk pelatihan), oleh karena itu ada kemungkinan bahwa pada data uji akan ada nilai variabel kategori yang tidak kita lihat di kereta, yaitu, kita tidak memiliki pelatihan penanaman untuk nilai ini.

Untuk nilai-nilai seperti itu, garis terpisah dibuat dalam matriks penanaman, tetapi dalam kasus kami masalahnya adalah bahwa selama pelatihan itu tidak terlibat, dan karena itu tidak belajar. Berdasarkan hal ini, jika kita memenuhi nilai variabel kategori yang tidak terlihat sebelumnya, maka kita mengambil vektor ini, tetapi sebenarnya itu hanya diambil dari distribusi inisialisasi.

Dalam cara melatih vektor ini, ada arah untuk meningkatkan model. Idenya adalah bahwa nilai yang sangat langka di kereta dapat dikodekan dengan vektor ini, karena jika kita melihat nilai baru hanya dalam tes, yang secara kondisional membentuk 20% dari seluruh sampel awal, maka nilai ini jarang dan mungkin berperilaku sama dengan nilai langka di kereta.

Dalam setiap peristiwa, kami mengganti variabel kategori dengan embedding yang sesuai, terhubung dengan atribut nyata dan Boolean, kami memperoleh matriks ukuran [N, F], di mana F adalah jumlah dimensi embed untuk variabel kategori, jumlah atribut nyata dan Boolean.

Kami melakukan pengelompokan acara di acara berikutnya (seperti yang dilakukan sebelumnya). Variabel target untuk urutan adalah durasi kasus dari mana urutan tersebut diperoleh. Tambahkan jumlah acara dan jumlah biaya peristiwa dalam urutan ini ke vektor urutan berikutnya.

Sekarang kita memiliki matriks ukuran tetap - Anda dapat memasukkan ke dalam model (sebelum itu kita menormalkan matriks).

Metode paralelisasi

  • Kami membuat menara untuk setiap GPU.
  • Di setiap langkah, kami membagi parameter di antara menara.
  • .
  • Μ† , .
  • ( , Μ† Μ† ).
  • .
  • , - ( , word2vec-style, ).



  • () () ().
  • Μ† : β€” , gpu , , gpu .



  • : 7-Μ†Μ† elu.
  • Μ† , .
  • Batch size = 1000.
  • Learning rate = 3e-04.
  • = 15.
  • : Tesla k80 (colab) + Nvidia DGX Station.
  • (colab) = 20 .
  • (Nvidia DGX Station) = 8 .

Sepotong grafik model.



Konsumsi sumber daya dan paralelisasi.

Pelatihan jaringan saraf pada CPU membutuhkan waktu sekitar empat kali lebih banyak daripada di NVIDIA DGX Station. Dalam hal ini, perbedaannya tampaknya tidak signifikan - delapan menit pada NVIDIA DGX Station dan 32 menit pada CPU. Namun, ini adalah model kecil dengan sejumlah kecil data. Saat mengimplementasikan proyek nyata, di mana akan ada beberapa kali lebih banyak kasus dan peristiwa, pelatihan pada CPU akan memakan waktu setidaknya seminggu. Dalam hal ini, penggunaan Stasiun NVIDIA DGX akan mengurangi waktu pelatihan menjadi dua hari, yang akan sangat meningkatkan efisiensi kerja. 

Juga terungkap bahwa kecepatan proses pembelajaran sangat tergantung pada jumlah GPU yang digunakan, yang menunjukkan keunggulan NVIDIA DGX Station.

Ini dikonfirmasi oleh percobaan sebelumnya pada NVIDIA DGX Station CPU dan GPU menggunakan kumpulan data asli tanpa pemrosesan awal:

  • Waktu belajar pada CPU: 6 menit 18 detik.
  • Waktu pelatihan GPU: 34 detik.

Visualisasi beban GPU



Visualisasi beban CPU



Hasil jaringan saraf




  • Tes MAE = 10 hari.
  • Durasi rata-rata kasus pada tes = 67 hari.
  • Waktu inferensi = 20 detik.

temuan


  • Kami menerapkan uji coba untuk mengevaluasi metode pembelajaran mesin dalam konteks tugas Penambangan Proses.
  • Kami menguji dan memperluas daftar alat kami yang dengannya kami akan memecahkan masalah yang penting bagi bisnis.
  • Salah satu hasil yang menarik adalah penulisan implementasi komputasi paralel kami sendiri pada 4 kartu Tesla v100 yang dilengkapi dengan stasiun DGX: penggunaan beberapa GPU mempercepat belajar hampir sejalan dengan jumlah GPU (kode diparalelkan).
  • Transisi ke entri yang sepenuhnya kontinu dan penggunaan jaringan saraf memungkinkan untuk mengambil satu minggu dari baseline.
  • Waktu meningkat dari beberapa menit menjadi satu setengah jam (pelatihan arsitektur akhir dan embeddings, tetapi embeddings dapat digunakan sebelum pelatihan, sehingga waktu dikurangi menjadi 20 menit).

Eksperimen yang dijelaskan menunjukkan bahwa di bidang Penambangan proses, mesin dan algoritma pembelajaran yang mendalam dapat berhasil diterapkan. Selain itu, terungkap bahwa kecepatan proses pembelajaran sangat tergantung pada jumlah GPU yang digunakan, yang menunjukkan keunggulan NVIDIA DGX Station.

Apa dan bagaimana bisa diperbaiki


Word2vec-style embeddings untuk acara

Ketika kami membuat model kami, termasuk embeddings untuk variabel kategori, kami tidak memperhitungkan urutan kejadian relatif satu sama lain, yaitu, semantik khusus peristiwa dalam kasus. Untuk mempelajari sesuatu yang berguna dari urutan kejadian di dalam kasing, Anda perlu melatih embeddings untuk acara ini.

Ide

  • Kami mengambil satu fitur kategorikal dan satu nyata, membagi yang nyata dengan ember, maka setiap transaksi akan ditandai dengan nilai variabel kategorikal dan ember tempat nilai variabel riil jatuh. Kombinasikan kedua nilai ini, kita dapatkan, seolah-olah, analog dari kata untuk acara tersebut.
  • Kami menganggap kasus sebagai kalimat (himpunan kata dalam kalimat sesuai dengan himpunan peristiwa dalam kasus).
  • Μ† , Μ† Μ†, , .
  • Μ†, Skipgram CBOW .
  • , Μ†, .



  • Skipgram.
  • β€” 5.

  • Batch size = 1000.
  • Learning rate = 3e-04.
  • = 10.
  • : Tesla k80 (colab) + Nvidia DGX Station.
  • (colab) β€” 20 .
  • (Nvidia DGX Station) β€” 8 .
  • Test MAE : 10 Μ†. 

Hitung



Menggunakan fitur dari embeddings memberi peningkatan beberapa persepuluh hari.

Akhirnya

  • Embeddings ternyata, tentu saja, tidak berpendidikan, karena mereka sedikit terlatih.
  • Ada sekitar 290 fitur dari pernikahan kategori, dan 20 fitur dari pernikahan semantik (tidak masuk akal untuk dilakukan karena ukuran kamusnya kecil), sehingga pengaruh fitur-fitur semantik ini dapat diratakan karena ketidakseimbangan dalam proporsi fitur.
  • Semantik antara peristiwa perlu entah bagaimana ditambahkan ke set pelatihan, karena karena fakta bahwa urutan peristiwa (kasus) dipesan, urutan masalah, dan informasi dapat diekstraksi dari ini.
  • Anda dapat menggunakan arsitektur yang lebih canggih untuk hiasan pernikahan.
  • , , β€” .

All Articles