SGNMT yeni modellerin ve arama stratejilerinin hızlı prototiplenmesi için esnek bir NMT kod çözme platformu

EMNLP 2017 Sistem Gösterileri

SGNMT yeni modellerin ve arama stratejilerinin hızlı prototiplenmesi için esnek bir NMT kod çözme platformu

SGNMT - Yeni Modellerin ve Arama Stratejilerinin Hızlı Prototiplenmesi için Esnek Bir NMT Kod Çözme Platformu

Cambridge Üniversitesi

Cambridge Üniversitesi

[Özet] Bu makale, makine çevirisi araştırmaları için deneysel platformumuz olan SGNMT'yi tanıtmaktadır. SGNMT, NMT, dil modelleri, çeviri ızgaraları, n-en iyi listeler veya diğer puanlama türleri ve kısıtlama çeviri modelleri gibi soldan sağa semantiğe sahip sinirsel ve sembolik puanlama modülleri (öngörücüler) için ortak bir arayüz sağlar. Öngörücü, karmaşık kod çözme görevleri oluşturmak için diğer öngörücülerle birleştirilebilir. SGNMT ayrıca, farklı tahmin ediciler için uygun tahmin değişkenleri tarafından kapsanan alanı dolaşmak için bazı arama stratejileri uygular. Yeni tahmin değişkenleri veya kod çözme stratejileri eklemek çok basittir, bu da onu prototip geliştirme için yeni araştırma fikirlerini keşfetmek için çok etkili bir araç haline getirir. SGNMT, Cambridge Üniversitesi'nde makine öğrenimi, konuşma ve dil teknolojisi yüksek lisans programında ders çalışmaları ve tez çalışmaları için aktif olarak kullanılmaktadır.Ayrıca ekibimizin araştırma çalışmalarının çoğunda da kullanılmaktadır.

1. Giriş

Sözdizimi Gezinme Sinir Makinesi Çevirisi [ adı verilen SGNMT adlı açık kaynaklı bir kod çözme çerçevesi geliştiriyoruz. Bu paket, TensorFlow [SGNMT, TensorFlow'a bağlıdır https://github.com/ehasler/tensorflow] (Abadi ve diğerleri, 2016), OpenFST (Allauzen ve diğerleri, 2007), Block / Theano ( Bastien vd., 2012; van Merrienboer vd., 2015) ve NPLM (Vaswani vd., 2013). SGNMT araçlarındaki iki temel kavram, tahmin ediciler ve kod çözücülerdir. Tahmin edici, mevcut iç yordayıcı durumu, geçmişi, kaynak cümleleri ve dış bilgiler göz önüne alındığında hedef dil kelime dağarcığının puanını tanımlayan bir puanlama modülüdür. Birden çok farklı tahminciden alınan puanlar, kod çözme için birleştirilebilir.

Kod çözücü, tahmincinin alanını kapsayan bir arama stratejisidir. SGNMT, yaygın olarak kullanılan arama ağacı çapraz algoritmaları (ışın arama gibi) sağlar. Kod çözücülerin çalışma zamanı karmaşıklığı ve yaptıkları arama hatalarının türleri farklı olduğundan, farklı kod çözücüler farklı tahmin düzenlemeleri için uygundur.

Puanlama modülü ile arama stratejisinin kesin ayrımı ve puanlama modülleri arasındaki ayrım, SGNMT'yi sadece makine çevirisi için değil, sinirsel ve sembolik modeller için de çok esnek bir kod çözme aracı haline getirir. SGNMT, OpenFST tabanlı Cambridge SMT sistemine dayanmaktadır (Allauzenet diğerleri, 2014). Sistem bir yıldan daha kısa bir süre önce geliştirilmiş olmasına rağmen, bu sistemin çok esnek ve yeni araştırmacılar için kullanımının kolay olduğuna inanıyoruz. Ekibimiz, araştırma çalışmalarının çoğuna SGNMT'yi koydu.

Ayrıca SGNMT'nin öğretim ve öğrenci araştırma projeleri için çok uygun olduğunu gördük. 2015-16 akademik yılında, Cambridge Üniversitesi'nden iki öğrenci makine öğrenimi, konuşma ve dil teknolojisinde tez projesi olarak SGNMT'yi kullandı [ İlk proje, SMT'de alt kelime modellerini uygulamak için SGNMT ve OpenFST kullanmayı içerir (Gao, 2016). İkinci proje, "Bach" korosunda izin verilen akor alanını tanımlamak için WFSA'ları kullanan LSTM'nin otomatik müzik çalışmalarının geliştirilmesidir (Tomczak, 2016). LSTM "yaratıcılık" sağlar ve WFSA koronun uyması gereken kısıtlamaları uygular. Bu ikinci proje, özellikle bu yöntemin çok yönlülüğünü göstermektedir. Mevcut 2016-17 öğretim yılı için, SGNMT bu iki kursta yoğun bir şekilde kullanılmaktadır.

2 tahminci

Bu nedenle SGNMT, makine çevirisi araştırmalarında kullanılan çok çeşitli kısıtlamalar veya modeller için ortak bir arayüz sağlayarak esnekliği ve ölçeklenebilirliği vurgular. Bu kavram, yeni araştırma fikirlerinin hızla oluşturulmasına yardımcı olur. Platformumuz, uygulama için gereken çabayı en aza indirecek şekilde tasarlanmıştır; SGNMT çerçevesinde bir fikir başarılı bir şekilde kanıtlandıktan sonra, üretim sistemi için optimize edilmiş kod üretilebilir. Göreceli olarak, kod çözme hızı ikincildir. SGNMT'de, puanlar bir veya daha fazla öngörücü aracılığıyla bazı hipotezlere atanır. Bir tahmincinin genellikle tek bir sorumluluğu vardır çünkü tek bir modeli veya kısıtlama türünü temsil eder. Tahmincinin aşağıdaki yöntemleri uygulaması gerekir:

1.initialize (src cümle), tahmin durumunu başlatmak için kaynak cümleyi kullanır.

2. get state () dahili tahmin edicinin durumunu alır.

3.set state (), dahili yordayıcının durumunu ayarlar.

4. sonraki tahmin et () Dahili tahmin edicinin durumu göz önüne alındığında, sonraki pozisyonda hedef işaretleyici için bir arka oluştur.

5. Mevcut geçmişe bir belirteç ekleyerek dahili tahmin durumunu güncelleyen (belirteç) tüketin.

Yordayıcı durumunun yapısı ve bu yöntemlerin uygulanması, yordayıcılar arasında büyük ölçüde farklılık gösterir. Tablo 2, halihazırda uygulanan tüm öngörücüleri listelemektedir. Tablo 1, çok yaygın üç kestiricinin arayüz anlamlarını özetlemektedir: Sinirsel Makine Çevirisi (NMT) yordayıcıları, (deterministik) Sonlu Durum Transformatörleri (FST) ızgara değerlendirmesi için öngörücüler ve uygulamalar N-gram dil modelinin n-gram öngörücüsü. Ayrıca doğal bir soldan sağa semantiğe sahip olmayan, ancak yine de tahmin olarak kullanılabilen iki örnek (kelime sayısı ve UNK sayısı) dahil ediyoruz.

Tablo 1 NMT, FST, n-ary LM ve sayma modülleri için tahmin işlemi

Tablo 2 Halihazırda uygulanan tahmin ediciler

2.1 Örnek tahmin düzenlemesi

SGNMT, herhangi bir sayıda tahmin edicinin, aynı tahmin türünün birden çok örneğinin bile birleştirilmesine izin verir. Birden fazla yordayıcı durumunda, yordayıcı puanları doğrusal modele dahil ediyoruz. Aşağıdaki liste, çeşitli ilginç kod çözme görevlerinin tahmin kombinasyonları olarak formüle edilebileceğini göstermektedir.

nmt : Tek bir NMT öngörücüsü, saf NMT kod çözmeyi temsil eder.

nmt, nmt, nmt : Çerçevemizde, birden çok NMT öngörücüsü kullanmak, entegre kod çözmeyi temsil etmenin doğal bir yoludur (Hansen ve Salamon, 1990; Sutskever ve diğerleri, 2014).

fst, nmt : NMT kod çözme FST ile sınırlıdır. Örneğin, MT'nin kaynak sadeleştirmesi (Hasler vd., 2016) veya "Bach" ta (Tomczak) akor ilerlemesi durumunda, bu, sinir ağı yeniden sınıflandırması (Stahlberg ve diğerleri, 2016) veya diğer kısıtlama türleri için kullanılabilir. . İlk öngörü, karakter tabanlı veya alt sözcük birimi tabanlı NMT'nin çıktısını FSA olarak kodlanmış büyük bir sözcük dağarcığı ile sınırlamak için de kullanılabilir.

nmt, rnnlm, srilm, nplm : NMT'yi üç dil modeliyle birleştirin: RNNLM (Zaremba ve diğerleri, 2014), Kneser-Ney n-gram LM (Heafield ve diğerleri, 2013; Stolcke ve diğerleri 2002) ve ileri beslemeli sinir ağı LM (Vaswani Et diğerleri, 2013).

nmt, ngramc, wc : MBR tabanlı NMT, Stahlberg ve diğerleri (2017). N-gram sonucunu çıkarmak için (ngramc) ve basit kelime cezasını (wc) kullanın.

3 Kod Çözücü

Kod çözme, en yüksek puanlama hipotezini arayan bir algoritmadır. Tahmin listesi, varsayımların nasıl değerlendirileceğini (bir kısmını) belirlemek için başlatma (·), getstate (), durum ayarlama (·), sonraki tahmin () ve tüketme (·) yöntemlerini uygular. Kod çözücü sınıfı, listedeki tüm öngörücüler için geçerli olan bu yöntemlerin sürümlerini uygular. initialize (·) her zaman yeni bir cümlenin kodunu çözmeden önce çağrılır. Pek çok popüler arama stratejisi geri kalan yöntemlerle tanımlanabilir get state (), set state (·), tahmin etmek () ve tüketmek (·). Algoritma 1 ve Algoritma 2, açgözlü ve ışın kod çözmeyi tanımlamak için bu yöntemin nasıl kullanılacağını gösterir [Resmen, Algoritma 1 ve Algoritma 2'de sonraki () tahmin et işaretli öğeleri ve bunların maliyet çiftlerini döndürür; dize birleştirme · olarak temsil edilir].

Tablo 3, halihazırda uygulanan kod çözücülerin bir listesini içerir. Şekil 1'deki UML sınıf diyagramı, kod çözücü ile tahminci arasındaki ilişkiyi açıklamaktadır.

Tablo 3 Şu anda uygulanan şifre çözücüler

Şekil 1 Basitleştirilmiş UML sınıf diyagramı

3.1 NMT toplu kod çözme

Öngörücü çerçevenin esnekliği, kod çözme süresinin azalmasıyla azalır. SGNMT, özellikle GPU'da saf NMT kod çözmeyi hızlandırmak için iki yöntem sağlar. Vanilya kod çözme stratejisi, kümedeki tüm geçerli hipotezlerin Blok'ta paralel olarak işlendiği küme araştırmasının uygulanmasını ortaya koymaktadır (van Merrienboer ve diğerleri ¨, 2015). Ayrıca, sıralı olarak kod çözme yerine birden çok cümleyi aynı anda çözen (toplu kod çözme) bir paket kod çözücü sürümü de uyguladık. Toplu kod çözme daha verimli olabilir, çünkü daha büyük gruplar GPU paralelliğini daha iyi kullanabilir. Toplu kod çözücü uygulamasının anahtarı şudur:

1. Birden çok cümleden büyük hesaplama grupları (GPU işleri) oluşturmak ve bunları iş kuyruğuna sağlamak için ayrı bir CPU iş parçacığı üzerinde çalışan bir zamanlayıcı kullanıyoruz.

2. GPU, tek bir iş parçacığı tarafından çalıştırılır ve CPU zamanlayıcı iş parçacığı ile işleri içeren bir kuyruk aracılığıyla iletişim kurar. Bu iş parçacığı yalnızca iş kuyruğundaki işleri almaktan, bunları hesaplamaktan ve iş sonucu kuyruğuna koymaktan, dolayısıyla GPU hesaplamasının kesinti süresini en aza indirmekten sorumludur.

3. İş sonucu kuyruğundaki GPU üzerinde hesaplanan sonuçların işlenmesinden başka bir CPU iş parçacığı sorumludur, örneğin, arkadan n iyi kelime elde edilir. İşlenen işler, yeni işlere yeniden birleştirildikleri CPU planlayıcısına geri gönderilir.

Bu kod çözücü, Stanlberg ve diğerleri (2016) [Theano 0.9.0, cuDNN 5.1, Cuda 8 with CNMeM, Intel RCore i7-6700 CPU], WMT English-French test set news- tarafından açıklanan kelime tabanlı NMT modelinde kullanılabilir. test2012, Titan X GPU'da saniyede 911.6 kelime ile en yeni2014'e çevrildi. Bu kod çözme hızı, Marian-NMT (Junczys-Dowmunt ve diğerleri, 2016) gibi yüksek performanslı NMT kod çözücülerle sıralı kod çözmeden daha hızlı görünmektedir. Kod çözme hızı saniyede 865 kelimedir. [Karşılaştırılabilirliğin oldukça sınırlı olduğuna dikkat edin. Çünkü aynı ışın boyutunu (5) ve kelime haznesini (30k) kullansak bile, (a) biraz daha yavaş bir GPU (Titan X ve GTX 1080), (b) farklı eğitim ve test setleri, (c) Biraz farklı bir ağ mimarisi ve (d) alt kelime birimleri yerine kelimeler]. Bununla birlikte, Marian-NMT kullanarak toplu kod çözme çok daha hızlıdır ve saniyede 4500 kelimeden fazlasına ulaşır [https://marian-nmt.github.io/features/]. Bu farklılıkların, Marian-NMT'deki yüksek düzeyde optimize edilmiş C ++ kodunun aksine, özellikle harici kitaplıkları kullanırken Python'daki sınırlı çoklu okuma desteği ve performansından kaynaklandığına inanıyoruz. Hız, SGNMT'nin ana tasarım hedefi olmadığından, daha hızlı kod çözmeyi teşvik etmedik. Lütfen toplu kod çözmenin tahmin çerçevesini atladığını ve yalnızca saf NMT kod çözme için kullanılabileceğini unutmayın.

Modelleri birden çok belirteç düzeyiyle birleştirin

SGNMT, öngörücüyü maskelemek için alternatif modelleme birimi gruplarının kullanımına izin verir. Farklı kestiricilerin belirteçleştirme şemaları arasındaki dönüşüm, FST tarafından tanımlanır. Bu, alt kelime birimi (BPE) tabanlı NMT (Sennrich ve diğerleri, 2016) ve karakter tabanlı NMT'nin kelime tabanlı NMT modelindeki puanları birleştirerek, karakter dizilerini BPE'ye veya kelime dizilerine dönüştürmek için FST'leri kullanarak kod çözmeyi mümkün kılar. BPE ve kelime tabanlı NMT tahminlerini kapsar. Maske, kod çözme stratejisine karşı şeffaftır, çünkü öngörücü, öngörülebilir FST'yi kullanarak tahmin_next () ve tüketme () çağrılarını alternatif işaretli öğelere sahip (bir dizi) tahmine dönüştürmek için maskelenmiş FST'yi kullanan özel bir sarmalayıcı (fsttok) ile değiştirilir. Ara. Işın aramasının eşzamanlı ışın değişimi, her belirteçten sonra rakip hipotezleri karşılaştırmak yerine, yalnızca özel sözcük sınırı sembollerini tükettikten sonra gerçekleşir. Bu, birden fazla seviyeye sahip jetonlaştırılmış modelleri kullanırken bile kelime düzeyinde puanları birleştirmeyi mümkün kılar. Ortak kod çözme için farklı simgeleştirme şemalarının kullanılması, farklı şemaların avantajlarını birleştirebilir: karakter tabanlı ve BPE tabanlı modeller nadir sözcükleri çözebilirken, sözcük tabanlı NMT, uzun mesafeli bağımlılıkları daha etkili bir şekilde modelleyebilir.

Sistem düzeyinde kombinasyon

Bölüm 2.1'de NMT setinin bir NMT öngörücü seti olarak nasıl formüle edileceğini gösteriyoruz. Her bir kod çözme adımında, her model puanının ortalaması alınır. Alternatif olarak, sistem düzeyinde kombinasyon her bir modelden tüm cümlenin kodunu çözer ve tüm modellerde en iyi puanlama tam hipotezini seçer. Deneylerimizde, sistem düzeyinde kombinasyon topluluk kadar etkili değil, ancak yine de saf NMT'ye orta düzeyde kazançlar getiriyor. Bununla birlikte, ayrı bir kod çözme çalışmasından sonra, son işlem adımında en iyi çeviriyi seçmenin basit uygulaması yavaş çalışır. Sepbeam kod çözme stratejisi, sistem seviyesi kombinasyonunun çalışma süresini tek bir sistem seviyesine düşürür. Bu strateji, hipotezi genişletmek için tüm yordayıcıların doğrusal kombinasyonu yerine yalnızca bir yordayıcı uygular. Tek bir tahminci, ana hipotez ile bağlantılıdır. Sepbeam'deki ilk yığın, normal küme araştırması gibi tek bir hipotez yerine her bir öngörücünün (yani sistemin) hipotezini içerir. Japonca-İngilizce ASPEC test setinde (Nakazawa ve diğerleri, 2016) 0,5 BLEU'luk orta bir kazanç bildirmek için Stahlberg ve diğerleri (2017) ile birlikte sepbeam kod çözücünün üç BPE tabanlı NMT modelini kullandık.

Yinelemeli küme araması

Çalışma süresi bilinmeyen hedef cümle uzunluğuna bağlı olduğundan, zaman kısıtlamalı bir ortamda normal ışın aramasını kullanmak zordur çünkü doğru ışın boyutunu önceden seçmek zordur. Grup arama algoritması, sabit hesaplama bütçesi tükenene kadar küçük küme arama geçişini tekrar tekrar gerçekleştirerek küme boyutunun ayarlanması sorununu ortadan kaldırır. Kova araması, ilk hipotezleri çok hızlı bir şekilde üretir ve kepçedeki her uzunluk için kısmi hipotezler sağlar. Sonraki ışın araması, bu kovaları yinelemeli olarak güncelleyerek ilk hipotezi rafine eder. İlk deneylerimiz, kova aramasının genellikle standart küme aramasına benzer bir seviyede gerçekleştirildiğini ve bu da zor zaman kısıtlamalarını destekleyebileceğini göstermektedir. Küme aramasının aksine, kova araması risksiz (yani izin verilen) budama için uygundur, çünkü mevcut en iyi tam hipotezden daha kötü olan tüm kısmi hipotezler atılabilir.

4. Sonuç

Bu makale, sinirsel ve sembolik modelleri içeren makine çevirisini içeren yeni yöntemlerin prototipini oluşturmak için SGNMT platformumuzu sunar. SGNMT, ortak bir arayüz (öngörücü) ve çeşitli arama stratejileri (kod çözücüler) aracılığıyla birçok farklı modeli ve kısıtlamayı destekler. Ek olarak, SGNMT'nin odak noktası, puanlama modüllerini birbirinden ve arama algoritmasından ayırarak yeni öngörücüler ve kod çözücüler ekleme uygulama işini en aza indirmektir. SGNMT, öğretim ve araştırma için aktif olarak kullanılmaktadır ve diğer çerçeveler ve araçlar kullanılarak eğitilmiş yeni öngörücüler uygulamak gibi, gelişimine katkıları memnuniyetle karşılıyoruz.

Kağıt indirme bağlantısı:

Nokia X'in gerçek makine lansmanı: yuvarlak patlamalar, duygular yeniden mi ortaya çıkıyor?
önceki
OnePlus 6 pozlama! Önceden tekrarlanan övgüyü deneyimleyin
Sonraki
Üniversiteden mezun olduktan sonra yeni bir arabadan bahsetmek 10.000'den fazla sürdü ve üç yılda sadece 20.000!
Tanıdık? Yerli masaüstü işletim sistemi şöyle görünüyor ...
Gözden geçir! Ulusal Üniversite Büyük Veri Uygulama İnovasyon Yarışması'nın ön listesi yayınlandı
RNG'nin MSI başlangıç sıralaması onaylandı: çifte bir strateji
İlk Yarı Roma 0-1 AC Milan, Donnarumma defalarca ithaf
HUAWEI Mobil Kupası Dünya Kupası Ligi sona erdi: Mate 20, amatör 4. seviyeye ulaştı
Manchester City 3-1 Arsenal, Aguero hat-trick, Sterling iki asist
İlk önce Haval H7'yi bu sefer test edin, şut çok ağır, genel güç rakipleri hazırlıksız yakaladı
EMNLP 2017 Pennsylvania Üniversitesi: Temel kullanıcı özelliklerine ilişkin insan algısını kontrol etme
Çok renkli + çift cam + Liu Haiping, LG'nin yeni amiral gemisi G7'nin fiyatı 5000+
Manchester City 3-1 Arsenal, Aguero hat-trick, Sterling iki asist
WeChat tekrar sessizce güncellendi ve editör WeChat'in bu şekilde hafızadan tasarruf edebileceğini biliyor ...
To Top