Mail.ru Mail'de makine öğreniminin çalışması

Mail.ru Mail'de makine öğreniminin çalışması

Highload++ ve DataFest Minsk 2019'daki konuşmalarıma dayanmaktadır.

Bugün çoğu kişi için posta, çevrimiçi yaşamın ayrılmaz bir parçasıdır. Onun yardımıyla ticari yazışmalar yürütüyor, finans, otel rezervasyonları, sipariş verme ve çok daha fazlasıyla ilgili her türlü önemli bilgiyi saklıyoruz. 2018'in ortalarında posta geliştirmeye yönelik bir ürün stratejisi oluşturduk. Modern posta nasıl olmalı?

Posta olmalıdır akıllıyani kullanıcıların artan bilgi hacminde gezinmesine yardımcı olmak: bunları en uygun şekilde filtrelemek, yapılandırmak ve sağlamak. Olmalı kullanışlı, örneğin ceza ödeme gibi çeşitli görevleri doğrudan posta kutunuzda çözmenize olanak tanır (maalesef kullandığım bir işlev). Ve aynı zamanda elbette posta, bilgi koruması sağlamalı, spam'ı kesmeli ve bilgisayar korsanlığına karşı koruma sağlamalıdır; güvenli.

Bu alanlar, çoğu makine öğrenimi kullanılarak etkili bir şekilde çözülebilecek bir dizi temel sorunu tanımlar. Stratejinin bir parçası olarak geliştirilen mevcut özelliklerin örneklerini burada bulabilirsiniz - her yön için bir tane.

  • Akıllı Yanıt. Mail'in akıllı yanıt özelliği vardır. Sinir ağı, mektubun metnini analiz eder, anlamını ve amacını anlar ve sonuç olarak en uygun üç yanıt seçeneğini sunar: olumlu, olumsuz ve tarafsız. Bu, mektupları yanıtlarken önemli ölçüde zaman kazanmanıza ve ayrıca çoğu zaman standart dışı ve eğlenceli bir şekilde yanıt vermenize yardımcı olur.
  • E-postaları gruplandırmaçevrimiçi mağazalardaki siparişlerle ilgili. Genellikle çevrimiçi alışveriş yaparız ve kural olarak mağazalar her sipariş için birkaç e-posta gönderebilir. Örneğin, en büyük hizmet olan AliExpress'ten bir sipariş için çok sayıda mektup geliyor ve son durumda bu sayıların 29'a kadar çıkabileceğini hesapladık. Bu nedenle, Adlandırılmış Varlık Tanıma modelini kullanarak sipariş numarasını çıkarıyoruz. ve metindeki diğer bilgileri seçin ve tüm harfleri tek bir başlıkta gruplayın. Ayrıca siparişle ilgili temel bilgileri ayrı bir kutuda görüntülüyoruz, bu da bu tür e-postalarla çalışmayı kolaylaştırıyor.

    Mail.ru Mail'de makine öğreniminin çalışması

  • Kimlik avını önleme. Kimlik avı, saldırganların mali bilgileri (kullanıcının banka kartları dahil) ve oturum açma bilgilerini ele geçirmeye çalıştığı, özellikle tehlikeli, dolandırıcılık amaçlı bir e-posta türüdür. Bu tür mektuplar, görseller de dahil olmak üzere hizmet tarafından gönderilen gerçek mektupları taklit eder. Bu nedenle, Görüntü İşleme'nin yardımıyla, büyük şirketlerin (örneğin, Mail.ru, Sber, Alfa) logolarını ve mektuplarının tasarım stilini tanıyoruz ve bunu, spam ve kimlik avı sınıflandırıcılarımızda metin ve diğer özelliklerle birlikte dikkate alıyoruz. .

Makine öğrenme

Genel olarak e-postada makine öğrenimi hakkında biraz bilgi. Mail oldukça yüklü bir sistemdir: 1,5 milyon DAU kullanıcısı için sunucularımızdan günde ortalama 30 milyar mektup geçmektedir. Yaklaşık 30 makine öğrenimi sistemi, gerekli tüm işlevleri ve özellikleri destekler.

Her harf tam bir sınıflandırma hattından geçer. Öncelikle spam'ı kesip iyi e-postalar bırakıyoruz. Kullanıcılar genellikle antispam'in çalışmasını fark etmezler çünkü spam'lerin %95-99'u uygun klasöre bile gitmez. Spam tanıma, sistemimizin çok önemli bir parçasıdır ve en zorudur, çünkü anti-spam alanında savunma ve saldırı sistemleri arasında sürekli bir uyum vardır ve bu da ekibimiz için sürekli bir mühendislik zorluğu sağlar.

Daha sonra insanlardan ve robotlardan gelen harfleri ayırıyoruz. İnsanlardan gelen e-postalar en önemlileri olduğundan, onlar için Akıllı Yanıt gibi özellikler sağlıyoruz. Robotlardan gelen mektuplar iki bölüme ayrılır: işlemsel - bunlar hizmetlerden gelen önemli mektuplardır, örneğin satın alma veya otel rezervasyonlarının onayları, finans ve bilgilendirme - bunlar ticari reklamlar, indirimlerdir.

İşlemsel e-postaların kişisel yazışmalarla eşit öneme sahip olduğuna inanıyoruz. Elimizin altında olmalılar çünkü çoğu zaman bir sipariş veya uçak bileti rezervasyonu hakkında hızlı bir şekilde bilgi bulmamız gerekiyor ve bu mektupları aramak için zaman harcıyoruz. Bu nedenle, kolaylık olması açısından bunları otomatik olarak altı ana kategoriye ayırıyoruz: seyahat, siparişler, finans, biletler, kayıtlar ve son olarak para cezaları.

Bilgi mektupları en büyük ve muhtemelen daha az önemli olan gruptur ve anında yanıt gerektirmezler, çünkü böyle bir mektubu okumazsa kullanıcının hayatında önemli hiçbir şey değişmeyecektir. Yeni arayüzümüzde bunları iki başlığa ayırıyoruz: sosyal ağlar ve haber bültenleri, böylece gelen kutusunu görsel olarak temizliyor ve yalnızca önemli mesajları görünür durumda bırakıyoruz.

Mail.ru Mail'de makine öğreniminin çalışması

Sömürü

Çok sayıda sistem, operasyonda birçok zorluğa neden olur. Sonuçta modeller de diğer yazılımlar gibi zamanla bozulur: özellikler bozulur, makineler arızalanır, kodlar çarpık hale gelir. Ayrıca veriler sürekli değişiyor: yenileri ekleniyor, kullanıcı davranış kalıpları değişiyor vb., dolayısıyla uygun desteği olmayan bir model zamanla daha da kötü çalışacaktır.

Makine öğreniminin kullanıcıların hayatlarına ne kadar derinlemesine nüfuz ederse, ekosistem üzerindeki etkisinin o kadar büyük olacağını ve bunun sonucunda da piyasa oyuncularının daha fazla finansal kayıp veya kar elde edebileceğini unutmamalıyız. Bu nedenle, giderek artan sayıda alanda oyuncular makine öğrenimi algoritmalarının çalışmasına uyum sağlıyor (klasik örnekler reklam, arama ve daha önce bahsedilen antispam'dir).

Ayrıca, makine öğrenimi görevlerinin bir özelliği vardır: Sistemdeki herhangi bir, hatta küçük değişiklik, model üzerinde çok fazla çalışmaya neden olabilir: verilerle çalışmak, yeniden eğitim, dağıtım, bu da haftalar veya aylar sürebilir. Bu nedenle modellerinizin çalıştığı ortam ne kadar hızlı değişirse, onları korumak da o kadar fazla çaba gerektirir. Bir ekip çok sayıda sistem oluşturabilir ve bundan memnun olabilir, ancak daha sonra yeni bir şey yapma fırsatı olmadan kaynaklarının neredeyse tamamını bunların bakımına harcayabilir. Bir zamanlar antispam ekibinde böyle bir durumla karşılaştık. Ve desteğin otomatikleştirilmesi gerektiği sonucuna vardılar.

Otomasyon

Neler otomatikleştirilebilir? Aslında neredeyse her şey. Makine öğrenimi altyapısını tanımlayan dört alan belirledim:

  • Veri toplama;
  • ek eğitim;
  • dağıtmak;
  • test etme ve izleme.

Ortam istikrarsızsa ve sürekli değişiyorsa, modelin etrafındaki tüm altyapının modelin kendisinden çok daha önemli olduğu ortaya çıkar. Eski güzel bir doğrusal sınıflandırıcı olabilir, ancak onu doğru özelliklerle beslerseniz ve kullanıcılardan iyi geri bildirimler alırsanız, tüm özelliklere sahip Son Teknoloji Modellerden çok daha iyi çalışacaktır.

Geribildirim döngüsü

Bu döngü, veri toplamayı, ek eğitimi ve konuşlandırmayı (aslında tüm model güncelleme döngüsünü) birleştirir. Neden önemlidir? Postadaki kayıt programına bakın:

Mail.ru Mail'de makine öğreniminin çalışması

Bir makine öğrenimi geliştiricisi, botların e-postaya kaydolmasını önleyen bir anti-bot modeli uyguladı. Grafik yalnızca gerçek kullanıcıların kaldığı bir değere düşer. Her şey harika! Ancak dört saat geçer, botlar komut dosyalarını değiştirir ve her şey normale döner. Bu uygulamada geliştirici, özellikleri eklemek ve modeli yeniden eğitmek için bir ay harcadı, ancak spam yapan kişi dört saat içinde uyum sağlamayı başardı.

Bu kadar dayanılmaz derecede acı verici olmamak ve her şeyi daha sonra yeniden yapmak zorunda kalmamak için, öncelikle geri bildirim döngüsünün nasıl görüneceğini ve ortam değişirse ne yapacağımızı düşünmeliyiz. Veri toplayarak başlayalım; bu, algoritmalarımızın yakıtıdır.

Veri toplama

Modern sinir ağları için ne kadar çok veri olursa o kadar iyi olduğu ve bunların aslında ürünün kullanıcıları tarafından oluşturulduğu açıktır. Kullanıcılar verileri işaretleyerek bize yardımcı olabilirler ancak bunu kötüye kullanamayız çünkü kullanıcılar bir noktada modellerinizi tamamlamaktan yorulacak ve başka bir ürüne geçiş yapacaklardır.

En yaygın hatalardan biri (burada Andrew Ng'ye atıfta bulunuyorum), aslında iş kalitesinin ana ölçüsü olan kullanıcıdan gelen geri bildirimlere değil, test veri kümesindeki metriklere çok fazla odaklanmaktır; kullanıcıya yönelik bir üründür. Kullanıcı modelin çalışmasını anlamazsa veya beğenmezse her şey mahvolur.

Bu nedenle kullanıcıya her zaman oy verebilmeli ve geri bildirim için bir araç verilmelidir. Eğer finansla ilgili bir mektubun posta kutumuza geldiğini düşünüyorsak, onu “finans” olarak işaretleyip kullanıcının tıklayıp bunun finans olmadığını söyleyebileceği bir buton çizmemiz gerekiyor.

Geri bildirim kalitesi

Kullanıcı geri bildirimlerinin kalitesi hakkında konuşalım. Öncelikle siz ve kullanıcı tek bir kavrama farklı anlamlar yükleyebilirsiniz. Örneğin, siz ve ürün yöneticileriniz "finans"ın bankadan gelen mektuplar anlamına geldiğini düşünüyorsunuz ve kullanıcı, büyükannesinden emekli maaşıyla ilgili bir mektubun aynı zamanda finanstan da bahsettiğini düşünüyor. İkincisi, herhangi bir mantık olmadan tuşlara basmayı akılsızca seven kullanıcılar var. Üçüncüsü, kullanıcı vardığı sonuçlarda derinden yanılıyor olabilir. Uygulamamızdan çarpıcı bir örnek, bir sınıflandırıcının uygulanmasıdır. Nijeryalı spam, kullanıcının Afrika'da aniden bulunan uzak bir akrabasından birkaç milyon dolar almasının istendiği çok komik bir spam türü. Bu sınıflandırıcıyı uyguladıktan sonra, bu e-postalardaki "Spam Değil" tıklamalarını kontrol ettik ve bunların %80'inin Nijeryalı spam olduğu ortaya çıktı, bu da kullanıcıların aşırı derecede saf olabileceğini gösteriyor.

Ayrıca butonların sadece insanlar tarafından değil aynı zamanda tarayıcı gibi davranan her türlü bot tarafından da tıklanabileceğini unutmayalım. Bu nedenle ham geri bildirim öğrenme için iyi değildir. Bu bilgiyle ne yapabilirsiniz?

İki yaklaşım kullanıyoruz:

  • Bağlantılı ML'den geri bildirim. Mesela çevrimiçi anti-bot sistemimiz var ve bahsettiğim gibi sınırlı sayıdaki işarete göre hızlı karar veriyor. Ve olaydan sonra çalışan ikinci, yavaş bir sistem var. Kullanıcı, davranışı vb. hakkında daha fazla veriye sahiptir. Sonuç olarak, en bilinçli karar verilir; dolayısıyla daha yüksek doğruluk ve tamlığa sahiptir. Bu sistemlerin çalışmalarındaki farkı eğitim verisi olarak ilkine yönlendirebilirsiniz. Bu nedenle, daha basit bir sistem her zaman daha karmaşık bir sistemin performansına yaklaşmaya çalışacaktır.
  • Sınıflandırmayı tıklayın. Her kullanıcı tıklamasını basitçe sınıflandırabilir, geçerliliğini ve kullanılabilirliğini değerlendirebilirsiniz. Bunu antispam postasında kullanıcı özelliklerini, geçmişini, gönderen özelliklerini, metnin kendisini ve sınıflandırıcıların sonuçlarını kullanarak yapıyoruz. Sonuç olarak, kullanıcı geri bildirimlerini doğrulayan otomatik bir sistem elde ediyoruz. Ve çok daha az sıklıkta yeniden eğitilmesi gerektiğinden, çalışması diğer tüm sistemlerin temelini oluşturabilir. Bu modeldeki ana öncelik kesinliktir çünkü modeli yanlış verilerle eğitmek sonuçlarla doludur.

Verileri temizlerken ve ML sistemlerimizi daha da eğitirken kullanıcıları da unutmamalıyız çünkü grafikteki binlerce, milyonlarca hata bizim için istatistik, kullanıcı için ise her hata bir trajedidir. Kullanıcının üründeki hatanızla bir şekilde yaşamak zorunda olmasının yanı sıra, geri bildirim aldıktan sonra gelecekte benzer bir durumun ortadan kalkacağını beklemektedir. Bu nedenle, kullanıcılara yalnızca oy verme fırsatı vermekle kalmayıp, aynı zamanda makine öğrenimi sistemlerinin davranışını düzeltme, örneğin her geri bildirim tıklaması için kişisel buluşsal yöntemler oluşturma fırsatı vermek her zaman değerlidir; posta durumunda bu, filtreleme yeteneği olabilir. bu tür mektuplar göndericiye ve bu kullanıcı için başlığa göre.

Ayrıca diğer kullanıcıların da benzer sorunlar yaşamaması için yarı otomatik veya manuel modda destek almak üzere bazı raporlara veya isteklere dayalı bir model oluşturmanız gerekir.

Öğrenme için buluşsal yöntemler

Bu buluşsal yöntemler ve koltuk değnekleriyle ilgili iki sorun var. Birincisi, sürekli artan koltuk değneklerinin uzun vadede kalite ve performansını bir kenara bırakın, bakımının da zor olmasıdır. İkinci sorun, hatanın sık olmayabileceği ve modeli daha fazla eğitmek için birkaç tıklamanın yeterli olmayacağıdır. Aşağıdaki yaklaşımın uygulanması halinde bu iki ilgisiz etkinin önemli ölçüde etkisiz hale getirilebileceği görülmektedir.

  1. Geçici bir koltuk değneği yaratıyoruz.
  2. Ondan modele veri gönderiyoruz, alınan veriler de dahil olmak üzere kendisini düzenli olarak güncelliyor. Burada elbette eğitim setindeki verinin kalitesini düşürmemek için buluşsal yöntemlerin yüksek doğrulukta olması önemlidir.
  3. Daha sonra izlemeyi koltuk değneğini tetikleyecek şekilde ayarladık ve bir süre sonra koltuk değneği artık çalışmıyorsa ve model tarafından tamamen kaplanmışsa, onu güvenle kaldırabilirsiniz. Artık bu sorunun tekrar yaşanması pek mümkün görünmüyor.

Yani bir koltuk değneği ordusu çok faydalıdır. Önemli olan hizmetlerinin acil olması ve kalıcı olmamasıdır.

Ek eğitim

Yeniden eğitim, kullanıcılardan veya diğer sistemlerden gelen geri bildirimler sonucunda elde edilen yeni verilerin eklenmesi ve mevcut bir modelin bunun üzerinde eğitilmesi işlemidir. Ek eğitimle ilgili birkaç sorun olabilir:

  1. Model ek eğitimi desteklemeyebilir, yalnızca sıfırdan öğrenebilir.
  2. Doğa kitabının hiçbir yerinde ek eğitimin üretimdeki işin kalitesini kesinlikle artıracağı yazmıyor. Çoğu zaman bunun tersi olur, yani yalnızca bozulma mümkündür.
  3. Değişiklikler tahmin edilemez olabilir. Bu, kendimiz için belirlediğimiz oldukça ince bir noktadır. A/B testinde yeni bir model mevcut modele benzer sonuçlar gösterse bile bu onun aynı şekilde çalışacağı anlamına gelmez. Çalışmaları yalnızca yüzde bir farklılık gösterebilir, bu da yeni hatalara yol açabilir veya daha önce düzeltilmiş olan eski hataları geri getirebilir. Hem biz hem de kullanıcılar mevcut hatalarla nasıl yaşayacağımızı zaten biliyoruz ve çok sayıda yeni hata ortaya çıktığında kullanıcı da öngörülebilir bir davranış beklediği için ne olduğunu anlayamayabilir.

Bu nedenle ek eğitimlerde en önemli şey modelin iyileştirilmesini veya en azından kötüleşmemesini sağlamaktır.

Ek eğitim denilince akla ilk gelen Aktif Öğrenme yaklaşımıdır. Bu ne anlama gelir? Örneğin, sınıflandırıcı bir e-postanın finansla ilgili olup olmadığını belirler ve karar sınırının çevresine etiketli örneklerden oluşan bir örnek ekleriz. Bu, örneğin çok fazla geri bildirimin olduğu ve modeli çevrimiçi olarak eğitebileceğiniz reklamcılıkta işe yarar. Ve çok az geri bildirim varsa, üretim verilerinin dağılımına göre oldukça önyargılı bir örnek alırız ve buna dayanarak modelin çalışma sırasındaki davranışını değerlendirmenin imkansız olduğu ortaya çıkar.

Mail.ru Mail'de makine öğreniminin çalışması

Aslında amacımız eski kalıpları, bilinen modelleri korumak, yenilerini kazanmak. Burada süreklilik önemli. Çoğu zaman hayata geçirmek için büyük çaba harcadığımız model zaten çalışıyor, dolayısıyla performansına odaklanabiliriz.

Postada farklı modeller kullanılır: ağaçlar, doğrusal, sinir ağları. Her biri için kendi ek eğitim algoritmamızı oluşturuyoruz. Ek eğitim sürecinde, yalnızca yeni verileri değil, aynı zamanda aşağıdaki tüm algoritmalarda dikkate alacağımız yeni özellikleri de alıyoruz.

Doğrusal modeller

Diyelim ki lojistik regresyonumuz var. Aşağıdaki bileşenlerden bir kayıp modeli oluşturuyoruz:

  • Yeni verilerde LogLoss;
  • yeni özelliklerin ağırlıklarını düzenliyoruz (eskilere dokunmuyoruz);
  • aynı zamanda eski kalıpları korumak için eski verilerden de öğreniyoruz;
  • ve belki de en önemlisi, ağırlıkların eski modele göre normlara göre çok fazla değişmeyeceğini garanti eden Harmonik Düzenlemeyi ekliyoruz.

Her Kayıp bileşeninin katsayıları olduğundan, çapraz doğrulama yoluyla veya ürün gereksinimlerine göre görevimiz için en uygun değerleri seçebiliriz.

Mail.ru Mail'de makine öğreniminin çalışması

Деревья

Karar ağaçlarına geçelim. Ağaçların ek eğitimi için aşağıdaki algoritmayı derledik:

  1. Üretim, eski bir veri seti üzerinde eğitilmiş 100-300 ağaçtan oluşan bir ormanı çalıştırıyor.
  2. Sonunda M = 5 parçayı çıkarıyoruz ve 2M = 10 yeni parça ekliyoruz, tüm veri seti üzerinde eğitilmiş, ancak yeni veriler için yüksek bir ağırlığa sahip, bu da doğal olarak modelde artan bir değişikliği garanti ediyor.

Açıkçası, zamanla ağaç sayısı büyük ölçüde artar ve zamanlamalara uymak için periyodik olarak azaltılmaları gerekir. Bunu yapmak için artık her yerde bulunan Bilgi Damıtma'yı (KD) kullanıyoruz. Kısaca çalışma prensibi hakkında.

  1. Mevcut "karmaşık" modele sahibiz. Bunu eğitim veri seti üzerinde çalıştırıyoruz ve çıktıda sınıf olasılık dağılımını alıyoruz.
  2. Daha sonra öğrenci modelini (bu durumda daha az ağaçlı model), sınıf dağılımını hedef değişken olarak kullanarak modelin sonuçlarını tekrarlaması için eğitiyoruz.
  3. Burada hiçbir şekilde veri seti işaretlemesini kullanmadığımızı ve bu nedenle isteğe bağlı verileri kullanabileceğimizi belirtmek önemlidir. Elbette, öğrenci modeli için eğitim örneği olarak savaş akışından alınan bir veri örneğini kullanıyoruz. Böylece eğitim seti, modelin doğruluğunu garanti etmemizi sağlar ve akış örneği, eğitim setinin sapmasını telafi ederek üretim dağıtımında benzer bir performansı garanti eder.

Mail.ru Mail'de makine öğreniminin çalışması

Bu iki tekniğin birleşimi (ağaçların eklenmesi ve Bilgi Damıtma kullanılarak periyodik olarak sayılarının azaltılması), yeni modellerin tanıtılmasını ve tam sürekliliğin sağlanmasını sağlar.

KD yardımıyla model özellikleri üzerinde özelliklerin kaldırılması, boşlukların üzerinde çalışma gibi farklı işlemler de gerçekleştiriyoruz. Bizim durumumuzda, veritabanında saklanan ve başarısız olma eğiliminde olan bir dizi önemli istatistiksel özelliğe sahibiz (gönderenlere göre, metin karmaları, URL'ler vb.). Eğitim setinde başarısızlık durumları oluşmadığı için model elbette böyle bir olay gelişimine hazır değil. Bu gibi durumlarda KD ve büyütme tekniklerini birleştiriyoruz: verinin bir kısmı için eğitim alırken gerekli özellikleri kaldırıyoruz veya sıfırlıyoruz ve orijinal etiketleri (mevcut modelin çıktıları) alıyoruz ve öğrenci modeli bu dağıtımı tekrarlamayı öğreniyor .

Mail.ru Mail'de makine öğreniminin çalışması

Model manipülasyonu ne kadar ciddi olursa, gereken iplik numunesi yüzdesinin de o kadar yüksek olduğunu fark ettik.

En basit işlem olan özellik kaldırma, akışın yalnızca küçük bir kısmını gerektirir, çünkü yalnızca birkaç özellik değişir ve mevcut model aynı set üzerinde eğitilir; fark minimumdur. Modeli basitleştirmek için (ağaç sayısını birkaç kez azaltmak), zaten 50'den 50'ye kadar bir sayı gereklidir ve modelin performansını ciddi şekilde etkileyecek önemli istatistiksel özelliklerin atlanması durumunda, modelin çalışmasını düzleştirmek için daha da fazla akış gerekir. Tüm harf türlerinde atlanmaya karşı dayanıklı yeni model.

Mail.ru Mail'de makine öğreniminin çalışması

Hızlı Metin

FastText'e geçelim. Bir kelimenin temsilinin (Gömme), kelimenin kendisinin ve tüm harflerinin N-gramlarının, genellikle trigramların gömülmesinin toplamından oluştuğunu hatırlatmama izin verin. Oldukça fazla trigram olabileceğinden Bucket Hashing kullanılır, yani tüm alanı belirli bir sabit hashmap'e dönüştürür. Sonuç olarak, iç katmanın kelime sayısı + kova sayısı başına boyutu ile ağırlık matrisi elde edilir.

Ek eğitimle yeni işaretler ortaya çıkar: kelimeler ve trigramlar. Facebook'tan alınan standart takip eğitimlerinde önemli hiçbir şey olmuyor. Yalnızca çapraz entropiye sahip eski ağırlıklar yeni veriler üzerinde yeniden eğitilir. Dolayısıyla yeni özellikler kullanılmaz; elbette bu yaklaşım, modelin üretimdeki öngörülemezliğiyle ilişkili yukarıda açıklanan tüm dezavantajlara sahiptir. Bu yüzden FastText'i biraz değiştirdik. Tüm yeni ağırlıkları (kelimeler ve trigramlar) ekliyoruz, tüm matrisi çapraz entropi ile genişletiyoruz ve eski ağırlıklarda önemsiz bir değişikliği garanti eden doğrusal modele benzetme yoluyla harmonik düzenleme ekliyoruz.

Mail.ru Mail'de makine öğreniminin çalışması

CNN

Evrişimsel ağlar biraz daha karmaşıktır. CNN'de son katmanlar tamamlanırsa elbette harmonik düzenleme uygulayabilir ve sürekliliği garanti edebilirsiniz. Ancak ağın tamamının ek eğitimi gerekiyorsa, bu tür bir düzenleme artık tüm katmanlara uygulanamaz. Ancak, tamamlayıcı yerleştirmeleri Üçlü Kayıp (orijinal makale).

Üçlü Kayıp

Kimlik avına karşı koruma görevini örnek olarak kullanarak Üçlü Kayba genel hatlarıyla bakalım. Kendi logomuzun yanı sıra diğer firmaların logolarından da olumlu ve olumsuz örnekler alıyoruz. Birincisi arasındaki mesafeyi en aza indiriyoruz ve ikincisi arasındaki mesafeyi maksimuma çıkarıyoruz, sınıfların daha fazla kompaktlığını sağlamak için bunu küçük bir boşlukla yapıyoruz.

Mail.ru Mail'de makine öğreniminin çalışması

Ağı daha da eğitirsek, metrik alanımız tamamen değişir ve öncekiyle tamamen uyumsuz hale gelir. Vektörlerin kullanıldığı problemlerde bu ciddi bir problemdir. Bu sorunu aşmak için eğitim sırasında eski yerleştirmeleri karıştıracağız.

Eğitim setimize yeni veriler ekledik ve modelin ikinci versiyonunu sıfırdan eğitiyoruz. İkinci aşamada ağımızı daha da eğitiyoruz (İnce Ayar): önce son katman tamamlanıyor ve ardından tüm ağ çözülüyor. Üçlü oluşturma sürecinde, yerleştirmelerin yalnızca bir kısmını eğitilmiş modeli kullanarak, geri kalanını ise eskisini kullanarak hesaplıyoruz. Böylece ek eğitim sürecinde v1 ve v2 metrik uzaylarının uyumluluğunu sağlıyoruz. Harmonik düzenlemenin benzersiz bir versiyonu.

Mail.ru Mail'de makine öğreniminin çalışması

Tüm mimari

Örnek olarak antispam kullanan sistemin tamamını ele alırsak, modeller birbirinden izole değil, iç içedir. CNN ve Hızlı Metin'i kullanarak resimler, metinler ve diğer özellikleri çekiyoruz. Daha sonra, çeşitli sınıflar için (mektup türleri, spam, logo varlığı) puanlar sağlayan sınıflandırıcılar yerleştirmelerin üzerine uygulanır. Nihai kararın verilmesi için sinyaller ve işaretler şimdiden ağaç ormanına giriyor. Bu şemadaki bireysel sınıflandırıcılar, tüm verileri ham biçimde karar ağaçlarına beslemek yerine, sistemin sonuçlarının daha iyi yorumlanmasını ve daha spesifik olarak sorun olması durumunda bileşenlerin yeniden eğitilmesini mümkün kılar.

Mail.ru Mail'de makine öğreniminin çalışması

Sonuç olarak her seviyede sürekliliği garanti ediyoruz. CNN ve Fast Text'de alt seviyede harmonik düzenleme kullanıyoruz, ortadaki sınıflandırıcılar için de olasılık dağılımının tutarlılığı için harmonik düzenleme ve oran kalibrasyonunu kullanıyoruz. Ağaç güçlendirme aşamalı olarak veya Bilgi Damıtma kullanılarak eğitilir.

Genel olarak, bu tür iç içe geçmiş bir makine öğrenimi sisteminin sürdürülmesi genellikle zahmetlidir, çünkü alt seviyedeki herhangi bir bileşen, yukarıdaki sistemin tamamının güncellenmesine yol açar. Ancak bizim kurulumumuzda her bileşen biraz değiştiği ve bir öncekiyle uyumlu olduğu için, tüm yapıyı yeniden eğitmeye gerek kalmadan tüm sistem parça parça güncellenebiliyor ve bu da ciddi bir yük olmadan desteklenmesine olanak tanıyor.

Dağıtmak

Veri toplamayı ve farklı model türlerine ilişkin ek eğitimleri tartıştık, dolayısıyla bunların üretim ortamına dağıtımına geçiyoruz.

A/B testi

Daha önce de söylediğim gibi, veri toplama sürecinde genellikle modelin üretim performansını değerlendirmenin imkansız olduğu önyargılı bir örnek alıyoruz. Bu nedenle dağıtım sırasında işlerin gerçekte nasıl gittiğini anlamak, yani A/B testleri yapmak için modelin önceki sürümle karşılaştırılması gerekir. Aslında grafiklerin kullanıma sunulması ve analiz edilmesi süreci oldukça rutindir ve kolayca otomatikleştirilebilir. Model yanıtları ve kullanıcı geri bildirimlerine ilişkin mevcut tüm ölçümleri toplarken, modellerimizi aşamalı olarak kullanıcıların %5, %30, %50 ve %100'üne sunuyoruz. Bazı ciddi aykırı değerler durumunda modeli otomatik olarak geri alırız ve diğer durumlarda yeterli sayıda kullanıcı tıklaması topladıktan sonra yüzdeyi artırmaya karar veririz. Sonuç olarak, yeni modeli kullanıcıların %50'sine tamamen otomatik olarak ulaştırıyoruz ve bu adım otomatikleştirilebilse de, hedef kitlenin tamamına dağıtım bir kişi tarafından onaylanacak.

Ancak A/B testi süreci optimizasyon için alan sunar. Gerçek şu ki, herhangi bir A/B testi oldukça uzundur (bizim durumumuzda geri bildirim miktarına bağlı olarak 6 ila 24 saat sürer), bu da onu oldukça pahalı ve sınırlı kaynaklara sahip kılar. Buna ek olarak, A/B testinin genel süresini esasen hızlandırmak için test için yeterince yüksek bir akış yüzdesi gereklidir (metrikleri küçük bir yüzdede değerlendirmek için istatistiksel olarak anlamlı bir numune almak çok uzun zaman alabilir), bu da A/B yuvalarının sayısı son derece sınırlıdır. Açıkçası, ek eğitim sürecinde oldukça fazla aldığımız, yalnızca en umut verici modelleri test etmemiz gerekiyor.

Bu sorunu çözmek için A/B testinin başarısını tahmin eden ayrı bir sınıflandırıcı geliştirdik. Bunu yapmak için eğitim seti, ertelenmiş set ve akıştaki örnek üzerindeki karar verme istatistiklerini, Precision, Recall ve diğer metrikleri özellik olarak alıyoruz. Ayrıca modeli üretimdeki mevcut modelle buluşsal yöntemlerle karşılaştırırız ve modelin Karmaşıklığını dikkate alırız. Test geçmişi konusunda eğitimli bir sınıflandırıcı, tüm bu özellikleri kullanarak aday modelleri (bizim durumumuzda bunlar ağaç ormanlarıdır) değerlendirir ve A/B testinde hangisinin kullanılacağına karar verir.

Mail.ru Mail'de makine öğreniminin çalışması

Uygulama sırasında bu yaklaşım, başarılı A/B testlerinin sayısını birkaç kat artırmamıza olanak tanıdı.

Test ve İzleme

Test ve takip, garip bir şekilde sağlığımıza zarar vermiyor, tam tersine iyileştirip bizi gereksiz stresten kurtarıyor. Test etme, bir arızayı önlemenize olanak tanır ve izleme, kullanıcılar üzerindeki etkiyi azaltmak için arızayı zamanında tespit etmenize olanak tanır.

Burada, sisteminizin er ya da geç her zaman hata yapacağını anlamak önemlidir - bu, herhangi bir yazılımın geliştirme döngüsünden kaynaklanmaktadır. Sistem geliştirmenin başlangıcında, her şey sakinleşene ve yeniliğin ana aşaması tamamlanana kadar her zaman çok sayıda hata olur. Ancak zamanla, entropi olumsuz etkileniyor ve başlangıçta bahsettiğim gibi etraftaki bileşenlerin bozulması ve verilerdeki değişiklikler nedeniyle hatalar yeniden ortaya çıkıyor.

Burada herhangi bir makine öğrenimi sisteminin tüm yaşam döngüsü boyunca kârı açısından değerlendirilmesi gerektiğini belirtmek isterim. Aşağıdaki grafik, sistemin nadir görülen bir spam türünü yakalamak için nasıl çalıştığına dair bir örnek göstermektedir (grafikteki çizgi sıfıra yakındır). Bir gün, yanlış önbelleğe alınmış bir özellik nedeniyle çıldırdı. Şans eseri, anormal tetikleme için herhangi bir izleme yapılmadı; sonuç olarak sistem, karar verme sınırındaki "spam" klasörüne büyük miktarlarda mektup kaydetmeye başladı. Sonuçlarını düzeltmesine rağmen sistem zaten o kadar çok hata yaptı ki, beş yıl sonra bile kendini amorti etmeyecek. Bu da modelin yaşam döngüsü açısından tam bir başarısızlıktır.

Mail.ru Mail'de makine öğreniminin çalışması

Bu nedenle izleme gibi basit bir şey, bir modelin yaşamının anahtarı olabilir. Standart ve açık metriklere ek olarak, model yanıtlarının ve puanlarının dağılımının yanı sıra temel özellik değerlerinin dağılımını da dikkate alıyoruz. KL diverjansını kullanarak mevcut dağılımı geçmiş dağılımla veya A/B testindeki değerleri akışın geri kalanıyla karşılaştırabiliriz, bu da modeldeki anormallikleri fark etmemize ve değişiklikleri zamanında geri almamıza olanak tanır.

Çoğu durumda, basit buluşsal yöntemleri veya gelecekte izleme olarak kullanacağımız modelleri kullanarak sistemlerimizin ilk sürümlerini başlatırız. Örneğin, NER modelini belirli çevrimiçi mağazalar için normal modellerle karşılaştırmalı olarak izliyoruz ve sınıflandırıcı kapsamı bunlara kıyasla düşerse nedenlerini anlıyoruz. Buluşsal yöntemin bir başka yararlı kullanımı!

sonuçlar

Makalenin ana fikirlerini tekrar gözden geçirelim.

  • Fibdeck. Her zaman kullanıcıyı düşünüyoruz: Bizim hatalarımızla nasıl yaşayacak, bunları nasıl rapor edebilecek. Eğitim modelleri için kullanıcıların salt geri bildirim kaynağı olmadığını, bunun yardımcı ML sistemleri yardımıyla temizlenmesi gerektiğini unutmayın. Kullanıcıdan sinyal toplamak mümkün değilse, bağlı sistemler gibi alternatif geri bildirim kaynakları ararız.
  • Ek eğitim. Burada önemli olan devamlılıktır, bu nedenle mevcut üretim modeline güveniyoruz. Yeni modelleri, harmonik düzenleme ve benzeri püf noktaları nedeniyle bir öncekinden çok fazla farklı olmayacak şekilde eğitiyoruz.
  • Dağıtmak. Ölçümlere dayalı otomatik dağıtım, modellerin uygulanması süresini büyük ölçüde azaltır. Karar verme istatistiklerinin ve dağılımlarının izlenmesi, kullanıcıların düşme sayıları, rahat uykunuz ve verimli hafta sonunuz için zorunludur.

Umarım bu, makine öğrenimi sistemlerinizi daha hızlı geliştirmenize, onları daha hızlı pazara sunmanıza ve onları daha güvenilir ve daha az stresli hale getirmenize yardımcı olur.

Kaynak: habr.com

Yorum ekle