Quora'da makine öğrenimi "simya" yapma deneyimi nedir?

AI Technology Review Press : Aslında, "Zhihu'nun Amerikan versiyonu" olarak bilinen Quora, çok sayıda makine öğrenimi teknolojisini de tanıttı. Quora mühendisleri, makine öğrenimini araştırma ve teknik çözümler üretme süreçlerine "simya" adını vermeyi seviyorlar. Deneyimlerini ve sonuçlarını dış dünya ile paylaşmak istiyorum ve "makine öğrenimi simya yolculuğu" üzerine bir dizi teknik blog başlattım. Birkaç gün önce, iki Quora mühendisi Kornél Csernai ve Naran Bayanbat tarafından yazılan "Simyayla Quora'da Özellik Mühendisliği" ("Simyayla Quora'da Özellik Mühendisliği") serisinin ilk makalesini yayınladılar. Leifeng.com AI Technology Review aşağıdaki gibi derlenmiştir.

Genel Bakış

Quora her zaman insanları yararlı bilgilere yaklaştırmaya adamıştır. Bu, bilgi koleksiyonunu sürekli olarak artırmamız ve bilgiyi değerlendirmemiz gerektiği, ancak aynı zamanda bunları nasıl verimli bir şekilde sıralayıp sınıflandıracağımızı da bilmemiz gerektiği anlamına gelir. Şimdi, Quora'nın odak noktası, bu hedeflere ulaşmak için Soru-Cevap'a odaklanıyor: okuyucular sitede alakalı içerik arıyor, soru soranlar faydalı cevaplar arıyor ve bizler sorularından doğru soruları çıkaran cevaplayıcılarız. İkinci olarak, düzenlemeleri ihlal eden içeriği tespit edip silmenin yanı sıra yinelenen sorunları tespit etmeyi de düşünmemiz gerekir. Bu hedeflere ulaşmak için, büyük ölçüde makine öğrenimi teknolojisine güveniyoruz.

Önce tipik bir duruma bakalım: Quora'nın Ana Sayfa Besleme işlevi. Bu en basit işlevde, sistem, aday gönderilerini belirli bir kullanıcının değer verebileceğini düşündüğümüz bağlamdaki bir dizi özelliğe göre sıralar. Bundan sonra, bu puanlanmış girdiler temel bir huni oluşturur.

Güçlü bir özellik, bir ürünün kalitesini önemli ölçüde artırabilir, bu nedenle model özelliklerini hızla yinelemek çok önemlidir. Quora web sitesindeki makine öğrenimi mühendislerinin sayısı arttıkça, üründeki çeşitli uygulamaları desteklemek için kullanılan benzersiz özellik mühendisliği çerçevelerinin sayısı da artmaktadır. Bu büyüme doğal olarak bazı zorlukları da beraberinde getiriyor:

  • Her zaman olduğu gibi, daha fazla çerçeve, daha fazla parçalanma, daha fazla yedeklilik ve mühendislik ekibimiz için daha ağır bir bakım yükü anlamına gelir. Çeşitli ekiplerdeki geliştiriciler, aynı teknik zorluğun üstesinden gelmek için farklı sistemler oluşturuyor ve özellikleri birden çok uygulamada yeniden kullanamıyor.

  • Tipik bir makine öğrenimi uygulaması için, her problem için yüzlerce veya binlerce aday gönderisi vardır ve her aday gönderiden yüzlerce özellik çıkarılabilir. Aynı zamanda, birden çok ürün ve hizmet gerçek zamanlı yanıt vermelidir ve yanıt süresi birkaç yüz milisaniyeyi geçemez. Bu, özellik çıkarmanın zaman açısından kritik hız, hesaplama ve bellek sınırlamaları ile sınırlı olduğu anlamına gelir. Çerçevelerimizden bazıları bu sınırlamalarla baş edemediği gibi, sistemin karşılaştığı zorlukları günlük özellik geliştirmeden başarılı bir şekilde soyutlayamaz.

Üst düzey tasarım

Yukarıdaki tüm zorlukların üstesinden gelmek için, Quora'daki tüm makine öğrenimi ile ilgili uygulamalara genelleştirilebilen, özellik çıkarma-Simya için yüksek performanslı, büyük ölçekli, sınırsız bir hizmet geliştirdik.

Besleme işlevi ve benzer uygulamalar söz konusu olduğunda, bu, özellik çıkarma adımının web sitesinin bir hizmeti olarak ayrıldığı anlamına gelir.

önce:

Daha sonra:

Alchemy, her biri için sayısal ve sınıflandırılmış bir özellik vektörü döndürmek için uygulama türünü (Besleme işlevi gibi) ve hedef listeyi (aday gönderi gibi) kullanır. Özelliklerin mantıksal gruplar halinde düzenlendiğini varsayalım (her mantıksal grup bir kategori olarak temsil edilir) Bu form, bir soruya verilen yanıt sayısı gibi veri bağımlılıklarına sahiptir. Bundan sonra, uygulama hangi özellik grubunun çıkarılması gerektiğini belirleyecektir,

Uygulamadan gelen istekler gerçek zamanlı olarak sıraya alınır ve bazı durumlarda farklı çalışma dönemlerinden gelen istekler de sıraya alınır. Her talep, değerlendirilmesi gereken istek türünü ve aday listesini içerir (aynı zamanda, ilgili uygulama her özellik listesini tanımlayacaktır). Bundan sonra, Alchemy gerekli verileri alır ve düzenler ve nihayet her hedefin özelliklerini paralel olarak hesaplar.

veri depolama

Alchemy, HBase'i depolama katmanı olarak kullanır, ancak diğer depoları desteklemek için kolayca genişletilebilir. Sorguyu daha verimli hale getirmek için, birden çok arabellek katmanı (HBase'in üstünde Memcache ve Memcache'nin üstünde bir bellek LRU önbelleği) kullanıyoruz. Verilerimiz, ikili serileştirilmiş formatta HBase ve Memcache'nin yanı sıra doğrudan bellek önbelleğinde saklanabilen Thrift hedeflerinden oluşur.

Yüksek hızlı arabellekte saklanan değerler bayatlayacağından, Alchemy'nin bazı değerleri temel gerçeklerden ne zaman çıkaracağını bildirmemiz gerekiyor. Bu işlem şu şekilde gerçekleştirilebilir: Uygulama tarafından Kafka kuyruğuna yazın ve Alchemy tarafında bu kuyruktan değeri okuyun. Kuyruk tablo, anahtar ve değer bilgilerini içerir, böylece Alchem eski değeri bellek tamponundaki yeni değerle değiştirebilir.

verim

Alchemy'nin ilk sürümünü uyguladıktan sonra, hizmetin performansını iyileştirmek için çok çaba sarf ettik. Alchemy'yi daha hızlı hale getirmek için, bunu C ++ 'da ayrı bir hizmet olarak yazdık, bu, özellik çıkarıcıyı web uygulamasının koduna yerleştirmenin tam tersi. Bunun nedenleri:

  • C ++, düşük seviyeli bir programlama dilidir ve genellikle Python'da yazılan uygulamalardan daha hızlı çalışabilir.

  • Her problem için, değerlendirme için yüzlerce aday postası göndereceğiz ve kod, aday seviyesinde kolayca paralelleştirilebilir. Python'da, bir süreç içinde paralel kod uygulamak zordur.

  • Alchemy'yi ayrı bir hizmet olarak yazarak, çok sayıda seriyi kaldırma hedefini bellekte depolayabilir ve böylece, genellikle web uygulama kodunda mümkün olmayan veri alma gecikmesini büyük ölçüde azaltabiliriz.

Bu tasarımları benimsemeye karar vermenin yanı sıra, sorunlu noktaları bulmak ve ortadan kaldırmak için kodun profilini de oluşturduk. Ek olarak, bu sıcak noktalar göründüğünde hız gerilemesinin kaynağını anlamak için çok sayıda ölçümü incelemeye devam ediyoruz.

(Evet, tek bir özellik çıkarımı için kod yazarken, C ++ kullanmayı seçmek geliştirme hızını düşürebilir. Bununla birlikte, C ++ avantajlarının bu kayıptan çok daha büyük olduğuna inanıyoruz, çünkü makine öğrenimi mühendislerinin Simya kullanırken artık buna ihtiyacı yok. Performans optimizasyonu sorunları konusunda endişeli.)

Göç ve gelecekteki iş planlaması

Şimdiye kadar Alchemy'ye tüm göçlerimiz olumlu sonuçlar getirdi. Çevrimiçi tahmin sistemimiz için, istek gecikmesi iyileştirildikten sonra, daha fazla zaman alan ve hesaplama açısından daha pahalı olan özellikleri denemek için daha fazla yerimiz var. Ayrıca, daha iyi bir kullanıcı deneyimi sağlamak için daha fazla aday gönderiyi sıralayabiliriz. Alchemy'yi kullanmak, daha önce bakımı çok fazla zaman alan (bazıları bizim tarafımızdan çevrimiçi olarak taşınan) çevrimdışı sistemleri korumaya devam etmemizi sağlar. Genel olarak, mühendislerin özellikleri etkinleştirebildiklerini ve modellerini daha sık yineleyebileceklerini gördük.

Bu geçişler aynı zamanda pek çok görüş, geri bildirim ve özellik talebini de beraberinde getirdi ve bunların tümü yol haritamızı önemli bir şekilde aktif olarak bilgilendirecek. Küçük bir örnek olarak, daha iyi önbellek kullanımı elde etmek için hedef kimliğin isteklerini bölümlemeye başladık.

Gelecekteki çalışma planlarına gelince, Python bağlamalarını artırabiliriz, böylece mühendisler ve veri bilimciler sistemi daha geniş bir şekilde kullanabilir. Ayrıca özellikler arasındaki bağımlılıkları belirleyeceğiz, özellik haritaları oluşturacağız ve özellikler ile veriler arasındaki bağımlılıkları eşzamansız olarak hesaplayacağız. Esnek bir eşzamansız veri alma soyutlaması, birden çok veri deposuna erişimi kolaylaştıracaktır. Tüm bu iyileştirmeler, makine öğrenimi mühendislerinin yükünü ortadan kaldırabilir ve mükemmel makine öğrenimi modelleri geliştirmeye daha fazla odaklanmalarına olanak tanır.

sonuç olarak

Alchemy çok sayıda uygulamayı entegre edebildiğinde, yatırım getirisi çok yüksektir. Sistemin daha iyi özellik çıkarımı, sıralamasının da daha iyi olduğu anlamına gelir.

Herkes büyümenin zorluklarla birlikte iyi bir şey olduğunu söyledi. Verimsizliği ve fazlalığı azaltmak için bu büyümenin akıllıca nasıl kontrol edileceğini anlamak, birden çok boyutta düşünmeye değer ve bu büyüme büyük faydalar sağlayabilir.

üzerinden:

https://engineering.quora.com/Feature-Engineering-at-Quora-with-Alchemy

Tıklamak Orijinal metni okuyun, geriye bakın "Derin öğrenme simya değildir", Yann LeCun bunu sıkıştırdı ve NIPS ödüllü makalenin yazarı

Wanda Media, reklamverenlere kesin yerleştirme fırsatları sağlamak için Shadow Cube APP'yi yayınladı
önceki
Teknoloji ve modaya sahip bir cep telefonu, OPPO R17 Pro önerilir
Sonraki
Yurtiçi geri çekilme büyük hamleler yapmaya devam ediyor! WOS33'e ek olarak "çok pahalı" ürünler de yayınlandı!
19 yaşındaki "Qiang Qiang Üçlüsü" gitti, 50 yaşındaki Dou Wentao hala orada değil mi?
Endüstri Huawei'nin 5G katlanır ekranlı cep telefonu Mate X'in kapsamlı bir yorumu
Kurye Bağımsız satışlar Temmuz'da% 28,6 düştü, Changan "geri dönmenin sorun olmadığını" söyledi
Sıcak satışlar! OPPO R17 Pro bugün ilk satıldı, 10 saatlik satışlar yeni bir zirveye ulaştı
Kaynaklar Sadece iki ayda, Çin Bilim ve Teknoloji Üniversitesi Bilgisayar Bilimleri Fakültesi'nin kurs kaynaklarından 4.000'den fazla yıldız toplandı.
Hyundai'nin yeni Sonatı, karışık versiyon casus fotoğrafları ekleyin! Veya 2018'de listelenmiştir
Yerinde 20.000'den fazla konfigürasyon seçeneği ile SAIC MAXUS D90 özelleştirilecek mi?
Supreme, yıl sonunda ağır eşyalar yayınlıyor! Tanrıların bu sefer tekrar savaşacağı tahmin ediliyor?
İlk yıl kırmızı ve beyaz renk şemasını yakalayamadınız mı? Bu sefer NIKE Air Max 1'in mavi ve beyaz yeniden gravürü karakterin değerini bir kez daha test etti!
Kuru ürünler | Görüntü bölümlendirmeye genel bakış ve ENet örnekleri
Zemin temizlendi ve yolların kaçak işgali azaltıldı ... "Kapı önündeki üç teminat" davasının ardından cadde dükkanlarında bu değişiklikler yapıldı
To Top