Deep Speech 2: İngilizce ve Mandarin Çincesinde Uçtan Uca Konuşma Tanıma

Cahit Barkin Ozer
41 min readAug 8, 2024

--

2015'te yayımlanmış popüler “Deep Speech 2: End-to-End Speech Recognition in English and Mandarin” makalesinin Türkçe çevirisidir.

Basit Açıklama

Konuşma tanıma, bir bilgisayarın insanların söylediklerini anlamasını ve yazıya dökmesini sağlayan bir teknolojidir. Derin öğrenme, bilgisayarların çok büyük miktarda veri kullanarak öğrenmesini sağlayan bir yapay zeka yöntemidir. Bu yöntem, beynimizdeki sinir hücrelerine benzeyen yapılar kullanır ve bu sayede bilgisayarlar çok karmaşık görevleri öğrenebilirler.

Deep Speech 2 (DS2), konuşma tanıma alanında yapılan bir araştırma çalışmasıdır. Bu çalışma, bilgisayarların insanların söylediklerini daha iyi anlayabilmesi için geliştirilmiş yeni bir yöntemi tanıtır.

DS2 Nasıl Çalışıyor?

  • Veri Toplama: İlk adım, bilgisayara öğretmek için çok fazla ses kaydı toplanmıştır. Bu kayıtlarda insanlar çeşitli cümleler söylemektedir.
  • Eğitim: Bilgisayar bu ses kayıtlarını dinliyor ve her söylenen kelimeyi yazıya dönüştürmeyi öğreniyor. Bunu, birçok katmandan oluşan bir sinir ağı kullanarak yapıyor. Sinir ağı, her katmanda seslerin özelliklerini daha iyi anlamayı öğreniyor.
  • Dil Modeli: Bilgisayar sadece sesleri anlamakla kalmıyor, aynı zamanda hangi kelimelerin bir arada kullanılabileceğini de öğreniyor. Bu, dil modelidir. Mesela, “Merhaba, nasılsın?” gibi bir cümleyi doğru anlaması için dil modeline ihtiyaç var.
  • Gelişmiş Teknoloji: Deep Speech 2, hem İngilizce hem de Mandarin (Çince) dillerini tanıyabiliyor. Bu da çok dilli bir sistem olduğu anlamına geliyor. Ayrıca, bu sistemin en önemli özelliklerinden biri, çok büyük miktarda veriyle eğitildiği için farklı aksanları ve konuşma hızlarını da anlayabilmesidir.

Deep Speech 2, o dönemdeki diğer konuşma tanıma sistemlerine göre çok daha başarılıydı. İnsanların söylediklerini çok daha doğru bir şekilde anlayabiliyordu ve bu da onu çok popüler yaptı.

Öz

Uçtan uca derin öğrenme yaklaşımının, birbirinden çok farklı iki dil olan İngilizce veya Mandarin Çincesi konuşmasını tanımak için kullanılabileceğini gösteriyoruz. Bu yaklaşım, el ile tasarlanmış bileşenlerin tamamını sinir ağlarıyla değiştirdiği için, uçtan uca öğrenme, gürültülü ortamlar, aksanlar ve farklı diller gibi çeşitli konuşma türlerini ele almamıza olanak tanır. Yaklaşımımızın anahtar noktası, önceki sistemimize göre 7 kat hızlanma sağlayan HPC tekniklerinin uygulanmasıdır [26]. Bu verimlilik sayesinde, eskiden haftalar süren deneyler artık günler içinde tamamlanmaktadır. Bu da üstün mimarileri ve algoritmaları belirlemek için daha hızlı tekrarlamamıza olanak tanır. Sonuç olarak, birkaç durumda, sistemimiz standart veri kümelerinde karşılaştırıldığında insan transkripsiyonları (çeviryazıları) ile rekabet edebilir düzeydedir. Son olarak, veri merkezlerinde GPU’larla Batch Dispatch (Toplu Sevk Etme) tekniğini kullanarak, sistemimizin çevrimiçi ortamda düşük gecikme ile ölçekli olarak kullanıcıları hizmet verecek şekilde uygun maliyetle konuşlandırılabileceğini (deploy) gösteriyoruz.

1. Giriş

Onlarca yıllık elle mühendislik yapılmış alan bilgisi, mevcut en ileri otomatik konuşma tanıma (ASR) süreçlerine dahil edilmiştir. Bu tür ASR modellerini uçtan uca eğitmek ve çoğu modülü tek bir modelle değiştirmek için derin öğrenmeyi kullanmak basit ama güçlü bir alternatif çözümdür [26]. Uçtan uca öğrenmenin büyük avantajlarını örnekleyen konuşma sistemimizin ikinci neslini sunuyoruz. Deep Speech 2 ASR süreci, Amazon Mechanical Turk insan çalışanlarının birçok ölçütteki doğruluğuna yaklaşmakta veya aşmakta, az bir değişiklikle birden çok dilde çalışmakta ve üretim ortamında kullanılabilmektedir. Bu nedenle, insan tarafından ele alınan konuşma tanıma bağlamlarının tamamını kapsayan tek bir ASR sistemine doğru önemli bir adımı temsil etmektedir. Sistemimiz uçtan uca derin öğrenme üzerine kurulu olduğundan, geniş eğitim setleri toplamak, yüksek performanslı bilgi işlemle daha büyük modeller eğitmek ve sinir ağı mimarileri alanını metodik olarak keşfetmek gibi bir dizi derin öğrenme tekniği kullanabiliriz. Bu teknikler sayesinde, önceki uçtan uca sistemimizdeki [26] hata oranlarını İngilizcede %43'e kadar azaltabildiğimizi ve Mandarin konuşmasını da yüksek doğrulukla tanıyabildiğimizi gösteriyoruz.

Konuşma tanımanın zorluklarından biri, konuşma ve akustikteki geniş değişkenlik yelpazesidir. Sonuç olarak, modern ASR (Otomatik Konuşma Tanıma) iş akışları, karmaşık özellik çıkarma, akustik modeller, dil ve telaffuz modelleri, konuşmacı uyarlaması gibi birçok bileşenden oluşur. Bu bireysel bileşenleri oluşturmak ve ayarlamak, özellikle yeni bir dil için yeni bir konuşma tanıyıcısı geliştirmeyi çok zorlaştırır. Gerçekten de, birçok parça ortam veya diller arasında iyi genellenemez ve kabul edilebilir doğruluk sağlamak için genellikle birden fazla uygulamaya özgü sistemin desteklenmesi gerekir. Bu durum, insan konuşma tanımadan farklıdır: İnsanlar, genel becerileri kullanarak dil öğrenmek için doğuştan gelen bir yeteneğe sahiptirler. Okuma ve yazma öğrendikten sonra, çoğu insan, ortam, konuşmacı aksanı ve gürültüdeki değişkenliklere karşı dirençle, transkripsiyon (çeviryazı) görevi için ek eğitim almadan konuşmayı yazıya dökebilirler. Konuşma tanıma kullanıcılarının beklentilerini karşılamak için, tek bir motorun benzer şekilde yetkin olmayı öğrenmesi gerektiğine inanıyoruz; sadece küçük değişikliklerle çoğu uygulamayı yönetebilmeli ve köklü değişiklikler olmadan sıfırdan yeni diller öğrenebilmelidir. Uçtan uca sistemimiz, bu hedefi ulaşılabilir hale getirerek, iki çok farklı dilde — Mandarin ve İngilizce — yapılan birkaç testte insan çalışanların performansına yaklaşmamızı veya aşmamızı sağlamaktadır.

Deep Speech 2 (DS2) uçtan uca bir derin öğrenme sistemi olduğundan, model mimarisi, büyük etiketli eğitim veri setleri ve hesaplama ölçeği olmak üzere üç önemli bileşene odaklanarak performans kazanımları elde edebiliriz. Bu yaklaşım, bilgisayarla görme ve doğal dil işleme gibi diğer uygulama alanlarında da büyük ilerlemeler sağlamıştır. Bu makale, konuşma tanıma için bu üç alana yaptığımız katkıları, model mimarilerinin kapsamlı bir araştırmasını ve veri ve model boyutunun tanıma performansı üzerindeki etkisini detaylandırmaktadır. Özellikle, sesi metne dönüştürmek için Bağlantıcı Zaman Sınıflandırması (CTC: Connectionist Temporal Classification) kayıp fonksiyonu [22] ile eğitilen sinir ağlarıyla yapılan birçok deneyi açıklıyoruz. Birçok katmandan oluşan yinelemeli bağlantılar, evrişimli filtreler ve doğrusal olmayan fonksiyonlar içeren ağları ve RNN’lere uygulanan belirli bir Toplam Normalizasyonu[63] (BatchNorm) örneğinin etkisini ele alıyoruz. Sadece önceki çalışmalardan [26] çok daha iyi tahminler üreten ağlar bulmakla kalmıyor, aynı zamanda doğrulukta önemli bir kayıp olmadan üretim ortamında kullanılabilecek yinelemeli modellerin örneklerini de buluyoruz.

Daha iyi model mimarisi arayışının ötesinde, derin öğrenme sistemleri büyük miktarda eğitim verisinden büyük fayda sağlar. Konuşma tanıma sistemlerini eğitmek için tipik olarak kullanılan veri setlerinden daha büyük veri setleri oluşturmamızı sağlayan veri yakalama işlem hattımızı detaylandırıyoruz. İngilizce konuşma sistemimiz 11,940 saatlik konuşma üzerinde eğitilmişken, Mandarin sistemimiz 9,400 saatlik konuşma üzerinde eğitilmiştir. Eğitim sırasında veriyi daha da arttırmak için veri sentezi yöntemini kullanıyoruz.

Büyük miktarda veri üzerinde eğitim yapmak genellikle daha büyük modellerin kullanılmasını gerektirir. Gerçekten de, modellerimiz önceki sistemimizde kullanılanlardan çok daha fazla parametreye sahiptir. Bu ölçekte bir model eğitmek, tek bir GPU üzerinde 3 ila 6 hafta sürebilecek onlarca exaFLOP gerekir. Bu durum, model keşfini çok zaman alıcı bir çalışma haline getirir, bu nedenle bir modeli eğitmek için 8 veya 16 GPU kullanan yüksek derecede optimize edilmiş bir eğitim sistemi oluşturduk. Önceki büyük ölçekli eğitim yaklaşımlarının aksine [18, 10], parametre sunucuları (servers) ve asenkron güncellemeler yerine yeni fikirleri test ederken daha kolay hata ayıklanan ve aynı derecede veri paralelizmi için daha hızlı yakınsayan (converges) senkron SGD kullanıyoruz.

Tüm sistemin verimli çalışabilmesi amacıyla tek bir GPU için optimizasyonlarla birlikte birden fazla GPU için ölçeklenebilir hale gelen iyileştirmeleri açıklıyoruz. Ölçeklenebilirliği artırmak için Genel Yüksek Performanslı Hesaplama’da (High Performance Computing) tipik olarak bulunan optimizasyon tekniklerinden yararlanıyoruz. Bu optimizasyonlar arasında GPU üzerinde CTC kayıp fonksiyonunun hızlı bir şekilde uygulanması ve özel bellek tahsis edicisi (custom memory allocator) bulunuyor. Ayrıca, GPU’lar arası iletişimi hızlandırmak için dikkatle entegre edilmiş hesaplama düğümleri ve özel bir tüm-azaltım (all-reduce“)implementasyonu kullanıyoruz. Genel olarak, sistem 16 GPU üzerinde eğitim yaparken yaklaşık olarak 50 teraFLOP/saniye performans sergiliyor. Bu, GPU başına 3 teraFLOP/saniye demektir ki bu da teorik performansın yaklaşık %50'sidir. Bu ölçeklenebilirlik ve verimlilik sayesinde eğitim sürelerini 3 ila 5 güne düşürüyoruz, bu da modellerimiz ve veri setlerimiz üzerinde daha hızlı iterasyon yapmamıza olanak tanıyor.

Sistemi birkaç kamuya açık test seti üzerinde test ediyoruz ve sonuçları önceki uçtan uca sistemimizle karşılaştırıyoruz [26]. Amacımız, yalnızca veri kümesi özgü ayarlamalarla iyileştirilebilen belirli testlerde insan düzeyinde performans elde etmek değil, çeşitli senaryoları yansıtan bir dizi testte de insan düzeyinde performans sağlamaktır. Bu amaçla, her test için insan çalışanların performansını da karşılaştırma yapmak üzere ölçtük. Sistemin bazı yaygın olarak incelenen testlerde insanları geride bıraktığını ve daha zor vakalarda büyük ölçüde farkı kapattığını bulduk. Kamuya açık testlerin yanı sıra, Mandarin sistemimizin gerçek dünya ürün senaryolarını yansıtan iç veri kümelerindeki performansını da gösteriyoruz.

Derin öğrenme sistemlerinin ölçeklendirilmiş olarak dağıtılması zor olabilir. Büyük sinir ağları, her kullanıcı ifadesini değerlendirmek için hesaplama açısından pahalıdır ve bazı ağ mimarileri diğerlerine göre daha kolay konuşlandırılabilir. Model keşfi yoluyla, burada detaylandırdığımız yüksek doğruluğa sahip, dağıtılabilir ağ mimarileri buluyoruz. Ayrıca, GPU donanımı için uygun olan ve Batch Dispatch adı verilen bir gruplama düzeni kullanarak, Mandarin motorumuzun üretim sunucularında etkin ve gerçek zamanlı bir şekilde uygulanmasını sağlıyoruz. Uygulamamız, sunucunun 10 eşzamanlı ses akışı ile yüklü olduğu durumda %98'lik bir hesaplama gecikme süresi elde ediyor, bu da 67 milisaniyedir.

Makalenin geri kalanı şu şekildedir. İlk olarak, Derin Öğrenme, uçtan uca konuşma tanıma ve ölçeklenebilirlik alanındaki ilgili çalışmaları incelemek için Bölüm 2'ye başlıyoruz. Bölüm 3, modelin mimari ve algoritmik iyileştirmelerini açıklarken, Bölüm 4 bu iyileştirmelerin verimli bir şekilde nasıl hesaplandığını açıklar. Eğitim verileri ve eğitim setini daha da artırmak için atılan adımları Bölüm 5'te tartışıyoruz. İngilizce ve Mandarin için DS2 sistemine yönelik sonuçların analizi Bölüm 6'da sunulmaktadır. Son olarak, DS2'yi gerçek kullanıcılara nasıl konuşlandıracağımızı (deploy) açıklayan Bölüm 7 ile makale sona ermektedir.

2. Alakalı Çalışmalar

Bu çalışma, derin öğrenme ve konuşma tanıma (speech recognition) alanlarında önceki çalışmalara ilham kaynağı olmuştur. İleri beslemeli sinir ağı akustik modelleri, 20 yıldan fazla önce [7, 50, 19] keşfedildi. Konuşma tanımada Yinelemeli sinir ağı ve evrişimli ağlar da aynı zamanlarda kullanıldı [51, 67]. Daha yakın zamanda, derin sinir ağları (DNN’ler) konuşma tanıma sürecinin vazgeçilmez bir parçası haline gelmiştir ve neredeyse tüm son model konuşma çalışmaları bir tür derin sinir ağı içermektedir [42, 29, 17, 16, 43, 58]. Evrişimsel ağların akustik modeller için de yararlı olduğu bulunmuştur [1, 53]. Yinelemeli sinir ağları, genellikle LSTM’ler, son model tanıyıcılarda kullanılmaya başlamakta olup [24, 25, 55], özellik çıkarımı için evrişimsel katmanlarla iyi bir şekilde çalışmaktadır [52]. Hem iki yönlü [24] hem de tek yönlü yinelemeleye sahip modeller de araştırılmıştır.

Uçtan uca konuşma tanıma, DNN-HMM [23] ve bağımsız [26] sistemlerin çıktılarının yeniden derecelendirilmesinde etkileyici sonuçlar gösteren aktif bir araştırma alanıdır. Şu anda değişken uzunluktaki ses dizilerini doğrudan değişken uzunluktaki transkripsiyonlara (çeviryazılara) eşlemek için iki yöntem kullanılmaktadır. RNN kodlayıcı-çözücü paradigması, girdi verilerini sabit uzunlukta bir vektöre eşlemek için bir kodlayıcı RNN ve sabit uzunlukta bir vektörü bir çıktı tahminleri dizisine genişletmek için bir çözücü ağ kullanır [11, 62]. Çözücüye dikkat mekanizması eklemek, özellikle uzun girdiler veya çıktılar söz konusu olduğunda, sistemin performansını büyük ölçüde artırır [2]. Konuşmada, dikkatli RNN kodlayıcı-çözücü modeli, hem fonemleri/ sesbirimleri (bir kelimeyi diğer bir kelimeden ayıran bir ses birimi) [12] hem de grafemleri (dilbilimde herhangi bir dilin bir yazı sisteminin en küçük birimi) [3, 8] tahmin etmede iyi performans göstermektedir.

Değişken uzunluktaki ses girdilerini değişken uzunluktaki çıktılara eşlemede yaygın olarak kullanılan diğer bir teknik, CTC kayıp fonksiyonudur [22] ve bu fonksiyon, zamansal bilgileri modellemek için bir RNN ile birlikte kullanılır. CTC-RNN modeli, grafem çıktılarıyla uçtan uca konuşma tanımada iyi performans göstermektedir [23, 27, 26, 40]. CTC-RNN modelinin, fonemleri tahmin etmede de iyi çalıştığı gösterilmiştir [41, 54], ancak bu durumda yine de bir sözlük gerekmektedir. Ayrıca, CTC-RNN ağını, bir GMM-HMM sisteminden gelen çerçeve bazlı hizalamalarla beslenen bir çapraz entropi derin sinir ağı ile önceden eğitmek zorunlu olmuştur [54]. Buna karşın, biz CTC-RNN ağlarını sıfırdan, önceden eğitim için çerçeve bazlı hizalamalara ihtiyaç duymadan eğitiyoruz.

Derin öğrenmede ölçek kullanımını maksimize etmek, bu alanın başarısının merkezinde olmuştur [36, 38]. Tek bir GPU’da eğitim yapmak, önemli performans artışlarına yol açmıştır [49] ve bu performans, daha sonra iki [36] veya daha fazla GPU’ya [15] lineer olarak ölçeklenmiştir. Düşük seviyeli derin öğrenme ilkelere yönelik bireysel GPU verimliliğini artırma çalışmalarından yararlanıyoruz [9]. Konuşma tanımada derin RNN’lerin eğitiminde hızlı ve yüksek derecede ölçeklenebilir bir sistem oluşturmak için model-paralelizmi [15], veri-paralelizmi [18] veya bunların kombinasyonlarından [64, 26] yararlanılmış geçmiş çalışmalardan faydalanıyoruz.

Veri, uçtan uca konuşma tanımanın başarısında merkezi bir rol oynamıştır; Deep Speech 1 (DS1)’de [26] 7000 saatten fazla etiketlenmiş konuşma verisi kullanılmıştır. Veri artırımı, bilgisayarla görmede derin öğrenmenin performansını artırmada oldukça etkili olmuştur [39, 56, 14]. Bu aynı şekilde konuşma sistemlerini de geliştirdiği gösterilmiştir [21, 26]. Konuşmada veri artırımı için kullanılan teknikler, basit gürültü eklemelerinden [26] konuşmacının vokal kanal uzunluğu ve konuşma hızındaki değişikliklerin simülasyonuna kadar [31, 35] karmaşık bozulmalara kadar çeşitlilik göstermektedir.

Mevcut konuşma sistemleri, yeni veri toplama işlemlerine başlamak için de kullanılabilir. Bir yaklaşımda, yazarlar bir konuşma motorunu kullanarak bin saatlik okunmuş konuşmayı hizalar ve filtreler [46]. Diğer bir yaklaşımda, büyük ölçekli bir çevrimdışı konuşma tanıyıcı kullanılarak on binlerce saatlik konuşma için transkripsiyonlar (çeviryazılar) üretilir [33]. Bu veriler daha sonra bir filtreden geçirilir ve tanıyıcıyı yeniden eğitmek için kullanılır, bu da önemli performans artışlarına yol açar. Daha büyük veri setleri ve veri artırımı ile etkili etiketlenmiş veri miktarını artırma konusunda bu geçmiş yaklaşımlardan ilham alıyoruz.

3. Model Mimarisi

Basit bir çok katmanlı model, binlerce saatlik etiketlenmiş konuşmadan yararlanamaz. Bu kadar büyük veri kümelerinden öğrenmek için model kapasitesini derinliği arttırarak arttırıyoruz. 11 katmana kadar olan ve birçok çift yönlü yinelemeli ve evrişimsel katman içeren mimarileri araştırıyoruz. Bu modeller, Deep Speech 1'deki modellere kıyasla veri örneği başına neredeyse 8 kat daha fazla hesaplama gerektirmektedir, bu da hızlı optimizasyon ve hesaplamayı kritik hale getirmektedir. Bu modelleri başarılı bir şekilde optimize edebilmek için, RNN’ler için Toplu Normalizasyon ve SortaGrad adını verdiğimiz yeni bir optimizasyon müfredatı kullanıyoruz. Ayrıca, veri örneği başına hesaplamayı 3 kat azaltmak için RNN girdileri arasında uzun adımlar (strides) kullanıyoruz. Bu, hem eğitim hem de değerlendirme için faydalıdır, ancak Bağlantıcı Geçici Sınıflandırma (CTC: Connectionist temporal classification) ile iyi çalışması için bazı değişiklikler gerekmektedir. Son olarak, araştırma sonuçlarımızın çoğu çift yönlü yinelemeli katmanları kullanıyor olsa da, yalnızca tek yönlü yinelemeli katmanlar kullanan mükemmel modellerin de var olduğunu gördük — bu özellik, bu tür modelleri dağıtmayı çok daha kolay hale getiriyor. Tüm bu özellikler bir araya geldiğinde, derin RNN’leri uygulanabilir bir şekilde optimize etmemizi ve küçük temel modellerin İngilizce ve Mandarin hata oranlarında %40'tan fazla performans artışı sağlamamızı mümkün kılıyor.

3.1 Ön Bilgiler (Preliminaries)

Şekil 1, özünde önceki DS1 sistemine [26] benzeyen DS2 sisteminin mimarisini yani konuşma spektrogramlarını sindirmek ve metin transkripsiyonları (çeviryazıları) üretmek üzere eğitilmiş yinelemeli bir sinir ağı (RNN) göstermektedir.

Tek bir ifade x^(i) ve etiket y^(i) bir eğitim setinden X = {(x (1), y (1)), (x (2), y (2)), . . .} alınsın. Her ifade x^(i), her zaman dilimi bir ses özellikleri vektörü olan, uzunluğu T^(i) olan bir zaman serisidir,x^(i) t,t = 0, . . . , T^(i) − 1. Sistemimizin özellikleri olarak güç-normalize edilmiş ses kliplerinin bir spektrogramını kullanıyoruz, bu nedenle x (i) t,p zaman t anındaki ses karesinde ppp’inci frekans bölmesinin gücünü belirtir. RNN’nin amacı, bir girdi dizisini x (i) nihai bir transkripsiyona (çeviryazılara) y(i) dönüştürmektir. Gösterim kolaylığı için üst simgeleri bırakıp seçilen bir ifadeyi belirtmek için x ve karşılık gelen etiketi belirtmek için y kullanıyoruz.

Ağın çıktıları her dilin grafemleridir. Her çıktı zaman adımında t, RNN karakterler üzerinde bir tahmin yapar, p(lt​∣x), burada ltl​ ya alfabedeki bir karakter ya da boşluk sembolüdür. İngilizce’de, lt ∈ {a, b, c, . . . , z,space, apostrophe, blank}, olup kelime sınırlarını belirtmek için bir boşluk sembolünün yanı sıra apostrof da eklenmiştir. Mandarin sistemi için ağ, basitleştirilmiş Çince karakterleri çıktılar. Bunu daha ayrıntılı olarak Bölüm 3.9'da açıklıyoruz.

RNN modeli, gizli birimlerden oluşan birkaç katmandan oluşur. Deney yaptığımız mimariler, bir veya daha fazla evrişimsel katmandan, ardından bir veya daha fazla yinelemeli katmandan ve ardından bir veya daha fazla tam bağlı katmandan oluşur.

l katmanındaki gizli temsil, girdi x’i temsil eden h⁰ ile h^l olarak verilir. Ağın alt kısmı, girdinin zaman boyutuna göre bir veya daha fazla evrişimlidir. c boyutunda bir bağlam penceresi için, evrişimli katmanın t zaman adımındaki i’nci aktivasyonu şu şekilde verilir:

(1)

◦, i’nci filtreden ve önceki katmanın aktivasyonlarının bağlam penceresinden gelen eleman bazında çarpımı belirtirken, f bir tekil doğrusal olmayan fonksiyonu ifade eder. Doğrusal olmayan şekilde kırpılıp düzeltilmiş (rectifiedlinear) ReLU fonksiyonunu σ(x) = min{max{x, 0}, 20} kullanıyoruz. Bazı katmanlarda, genellikle ilk katmanda, evrişimi s kare ile kaydırarak (striding) alt örnekleme (sub-sample) yapıyoruz. Amaç, yukarıdaki yinelemeli katmanlar için zaman adımlarının sayısını azaltmaktır.

Evrişimli katmanların ardından bir veya daha fazla çift yönlü yinelemeli katman gelir [57]. Zaman içinde ileri →h^l ve zaman içinde geri ←h^l yinelemeli katman aktivasyonları şu şekilde hesaplanır:

(2)
Şekil 1: Hem İngilizce hem de Mandarin konuşmaları üzerinde eğitim yapmak için kullanılan DS2 sisteminin mimarisi. Bu mimarinin varyantlarını, evrişimsel katman sayısını 1'den 3'e ve yinelemeli veya GRU katman sayısını 1'den 7'ye değiştirerek araştırıyoruz.

İki aktivasyon kümesi, h^l = →h^l + ←h^l katmanı için çıktı aktivasyonlarını oluşturmak üzere toplanır. g(·) fonksiyonu, standart geri dönüşüm işlemi olabilir:

(3)

Burada W^l, girdi-gizli katman ağırlık matrisini, →U^l ise yinelemeli ağırlık matrisini ve b^l bir bias terimini temsil eder. Bu durumda, girdi-gizli katman ağırlıkları, yinelemenin her iki yönü için de paylaşılır. g(·) fonksiyonu, Uzun Kısa Süreli Hafıza (LSTM) birimleri [30] ve kapılı yinelemeli birimler (GRU) [11] gibi daha karmaşık yineleme işlemlerini de temsil edebilir.

Çift yönlü yinelemeli katmanlardan sonra, aşağıdaki şekilde bir veya daha fazla tam bağlı katmanı uygularız:

(4)

Çıktı katmanı L, karakterler üzerinde aşağıdaki şekilde verilen bir olasılık dağılımını hesaplayan bir softmax’tır:

(5)

Model, Bağlantıcı Geçici Sınıflandırma kayıp (CTC loss) fonksiyonu [22] kullanılarak eğitilmiştir. Bir girdi-çıktı çifti (x, y) ve ağın mevcut parametreleri θ verildiğinde, kayıp fonksiyonunu L(x, y; θ) ve ağın parametreleriyle ilgili türevini ∇θL(x, y; θ) hesaplarız. Bu türev, zaman içinde geri yayılım algoritması aracılığıyla ağın parametrelerini güncellemek için kullanılır.

Aşağıdaki alt bölümlerde, DS1 [26]’ya göre yapılan mimari ve algoritmik iyileştirmeleri açıklıyoruz. Aksi belirtilmedikçe, bu iyileştirmeler dil bağımsızdır. Sonuçları, esas olarak okuma ses kayıtlarından oluşan ve 2048 söylem içeren dahili bir veri kümesi olan İngilizce konuşmacı-harici geliştirme seti üzerinde rapor ediyoruz. Tüm modeller, Bölüm 5'te açıklanan veri kümeleri üzerinde eğitilmiştir. İngilizce sistem için Kelime Hata Oranını (WER) ve Mandarin sistemi için Karakter Hata Oranını (CER) rapor ediyoruz. Her iki durumda da, Bölüm 3.8'de açıklandığı gibi ışın arama kod çözme (beam search decoding) adımında bir dil modeli entegre ediyoruz.

Tablo 1: RNN derinliklerinin eğitim ve geliştirme setlerindeki WER (Word Error Rate) karşılaştırması, BatchNorm kullanılarak ve kullanılmadan yapılmıştır. Derinlik arttıkça, parametre sayısı sabit tutulmuş ve bu nedenle katman başına düşen gizli birim sayısı azalmıştır. Tüm ağlar 38 milyon parametreye sahiptir. “M RNN, N toplam” mimarisi, girdide 1 katman 1D evrişim, M ardışık çift yönlü RNN katmanı ve toplamda N katman içeren tam bağlantılı katmanlardan oluşur.

3.2 (Batch Normalization for Deep RNNs)

Modelimizi verisetimizi genişlettikçe verimli bir şekilde ölçeklendirmek için, her katmanı daha büyük yapmak yerine, gizli katmanların sayısını artırarak ağın derinliğini artırıyoruz. Önceki çalışmalar, ardışık çift yönlü yinelenen katmanların sayısını artırarak bunu incelemiştir [24]. Bu tür ağların genellikle optimizasyon sorunlarından muzdarip olmaları nedeniyle, Toplam Normalizasyonu (BatchNorm) tekniğini kullanarak eğitim sürecini hızlandırmayı araştırıyoruz [63].

Son araştırmalar, BatchNorm’un yinelemeli ağların yakınsama hızını artırdığını, ancak genelleme performansında herhangi bir iyileşme göstermediğini ortaya koymuştur [37]. Buna karşın, çok büyük veri setlerinde basit RNN’lerin çok derin ağlarına uygulandığında, toplam normalizasyonunun nihai genelleme hatasını önemli ölçüde iyileştirirken, eğitimi büyük ölçüde hızlandırdığını gösteriyoruz.

Bir afin dönüşümün (affine transformation) ardından doğrusal olmayan bir f(·) içeren tipik bir ileri beslemeli katmanda, f(W h + b) yerine f(B(W h)) uygulayarak bir BatchNorm dönüşümü ekleriz; burada:

(6)

Terimler E ve Var, bir mini toplam (minibatch) üzerindeki deneysel ortalama ve varyanstır. Katmanın önyargısı (bias) b, ortalama giderme (mean removal) nedeniyle etkisi iptal edildiği için dikkate alınmaz. Öğrenilebilir parametreler γ ve β, katmanın her gizli birimi istenildiği gibi ölçeklendirmesine ve kaydırmasına olanak tanır. Sürekli ε küçük ve pozitiftir ve yalnızca sayısal kararlılık için dahil edilir. Evrişimli katmanlarımızda, ortalama ve varyans, bir mini toplam üzerindeki belirli bir evrişimli filtre için tüm zamansal çıktı birimleri üzerinde tahmin edilir. BatchNorm dönüşümü, belirli bir katmanı, katmanın girdisinin ortalama ve varyansındaki potansiyel olarak ilgisiz değişikliklerden yalıtarak iç kovaryans kaymasını azaltır.

BatchNorm’u çift yönlü RNN’lere genişletmenin iki yöntemini ele alıyoruz [37]. Doğal bir genişletme, her doğrusal olmayan durumdan hemen önce bir BatchNorm dönüşümü eklemektir. Denklem 3 daha sonra şu hale gelir:

(7)

Bu durumda, ortalama ve varyans istatistikleri, minibatch’in tek bir zaman adımında birikir. Zaman adımları arasındaki ardışık bağımlılık, tüm zaman adımları üzerinde ortalama alınmasını engeller. Bu tekniğin optimizasyonda iyileştirmelere yol açmadığını bulduk. Ayrıca, sonraki zaman adımlarının tüm mevcut ve önceki zaman adımlarına göre normalleştirilmesi için ardışık zaman adımlarının ortalamasını toplamayı da denedik. Bu da etkisiz olduğunu kanıtladı ve geri yayılımı büyük ölçüde karmaşık hale getirdi.

Dizi bazlı normalizasyonun [37] bu sorunların üstesinden geldiğini görüyoruz. Yinelenen hesaplama şu şekilde verilir:

(8)

Her gizli birim için, minibatch’teki tüm öğeler üzerinde ve dizinin uzunluğu boyunca ortalama ve varyans istatistiklerini hesaplarız. Şekil 2, dizisel normalizasyonla derin ağların daha hızlı yakınsadığını göstermektedir. Tablo 1, dizisel normalizasyonun performans iyileşmesinin ağın derinliği arttıkça arttığını ve en derin ağ için %12 performans farkı olduğunu göstermektedir. Derinliği karşılaştırırken, model boyutunu kontrol etmek için toplam parametre sayısını sabit tutarız ve hala güçlü performans kazançları görürüz. Katman başına aktivasyon sayısını sabit tutup katman eklersek derinlikten daha büyük iyileştirmeler bekleriz. Ayrıca BatchNorm’un en sığ ağ için genelleme hatasına zarar verdiğini ve daha sığ ağlar için daha yavaş yakınsadığını bulduk.

Şekil 2: BatchNorm ile ve BatchNorm olmadan eğitilen iki modelin eğitim eğrileri. Bölüm 3.3'te belirtilen SortaGrad müfredat yöntemi nedeniyle eğrinin yorumlanması daha zor olduğundan, grafiği ilk eğitim döneminden sonra başlatıyoruz.
Tablo 2: SortaGrad ile ve SortaGrad olmadan ve toplu normalizasyonla ve toplu normalizasyon olmadan bir eğitim ve geliştirme setinde WER karşılaştırması.

BatchNorm yöntemi eğitimde iyi çalışır, ancak dağıtılmış bir ASR sistemi için uygulamak zordur çünkü dağıtımda genellikle bir toplam işleme yerine tek bir konuşmayı değerlendirmek gereklidir. Her nöronu sadece dizisi üzerinden ortalama ve varyansa göre normalize etmenin performansı düşürdüğünü görüyoruz. Bunun yerine, eğitim sırasında toplanan nöronlar için ortalama ve varyansın hareketli ortalamasını depolar ve dağıtımda bu değerleri değerlendirme için kullanırız [63]. Bu teknikle, tek bir konuşmayı bir seferde, büyük bir toplu işlemi değerlendirmekten daha iyi sonuçlarla değerlendirebiliriz.

3.3 SortaGrad

Farklı uzunluktaki örnekler üzerinde eğitim yapmak bazı algoritmik zorluklar yaratır. Olası bir çözüm, zaman içindeki geri yayılımı keserek [68], tüm örneklerin eğitim sırasında aynı sıra uzunluğuna sahip olmasını sağlamaktır [52]. Ancak, bu, daha uzun vadeli bağımlılıkları öğrenme yeteneğini engelleyebilir. Diğer çalışmalar, zorluk sırasına göre örneklerin sunulmasının çevrimiçi öğrenmeyi hızlandırabileceğini bulmuştur [6, 70]. Makine çevirisi ve konuşma tanıma gibi birçok dizi öğrenme probleminde ortak tema, daha uzun örneklerin genellikle daha zorlayıcı olduğudur [11].

Açıkça kullandığımız CTC maliyet fonksiyonu, ifadenin uzunluğuna bağlıdır:

(9)

Align(x, y), CTC operatörü altında x girdisinin karelerine y transkripsiyonunun (çeviryazıların) karakterlerinin tüm olası hizalamalarının kümesidir. Denklem 9'da iç terim, dizinin uzunluğuna göre küçülen, dizinin zaman adımları üzerinde bir çarpımdır, çünkü pctc(lt|x; θ).

Tablo 3: Farklı derinliklerde basit RNN veya GRU içeren ağlar için geliştirme seti WER karşılaştırması. Tüm modellerde toplam normalizasyonu, bir katman 1 boyutlu değişmez evrişim (1D-invariant convolution) ve yaklaşık 38 milyon parametre bulunmaktadır.

İlk eğitim epoch’unda, mini toplam’daki en uzun konuşmanın uzunluğuna göre artan sırayla eğitim kümesini iteratif olarak geçiyoruz. İlk epoch’tan sonra eğitim, mini toplamlar üzerinde rastgele bir sıraya geri döner. Tablo 2, SortaGrad ile ve SortaGrad olmadan 7 yinelemeli katmana sahip 9 katmanlı modeldeki eğitim maliyetinin karşılaştırmasını göstermektedir. Bu etki, özellikle BatchNorm’suz ağlar için belirgindir, çünkü bu ağlar sayısal olarak daha az kararlıdır. Bir anlamda, iki teknik birbirinin yerine geçebilir, ancak SortaGrad ve BatchNorm’u birlikte uyguladığımızda bile kazanımlar buluyoruz. BatchNorm ile bile, bu müfredatın sayısal kararlılığı ve eğitimdeki küçük değişikliklere duyarlılığı artırdığını görüyoruz. Sayısal kararsızlık, özellikle CTC maliyetini hesaplama sırasında CPU ve GPU’daki farklı transandantal fonksiyon uygulamalarından kaynaklanabilir. Bu müfredat, her iki uygulama için de benzer sonuçlar verir.

Bu faydaların, uzun ifadelerin genellikle daha büyük gradyanlara sahip olmasından kaynaklandığını düşünüyoruz, ancak ifade uzunluğundan bağımsız olarak sabit bir öğrenme oranı kullanıyoruz. Ayrıca, daha uzun ifadeler, RNN’lerin iç durumunun eğitimde erken bir aşamada patlamasına daha yatkındır.

3.4 Basit Yinelemeli Sinir Ağlarının (RNN) ve Kapılı Yinelemeli Birimlerin (GRU) karşılaştırılması

Şu ana kadar gösterdiğimiz modeller, hem ileri hem de geri zaman yönünde yinelenen katmanları olan basit RNN’lerdir ve bunların yinelemeleri Denklem 3 ile modellenmiştir. Konuşma ve dil işleme alanındaki güncel araştırmalar, daha karmaşık bir yineleme yapısının ağın daha fazla zaman adımı boyunca durumu hatırlamasına olanak tanırken, bu durumun eğitimi daha hesaplamalı olarak maliyetli hale getirdiğini göstermiştir [52, 8, 62, 2]. Yaygın olarak kullanılan iki yinelemeli mimari, Uzun Kısa Süreli Bellek (LSTM) birimler [30] ve Kapılı Yinelemeli Birimler (GRU) [11] olmakla birlikte, birçok başka varyasyon da mevcuttur. LSTM ve GRU mimarilerinin binlerce varyasyonunun yakın zamanda yapılan kapsamlı bir çalışması, doğru bir şekilde başlatılmış unutma kapısı önyargısına sahip bir LSTM’nin GRU ile karşılaştırılabilir olduğunu ve en iyi varyasyonlarının birbirleriyle rekabet edebileceğini göstermiştir [32]. GRU’ları incelemeye karar verdik çünkü daha küçük veri setleri üzerindeki deneyler, GRU ve LSTM’in aynı sayıda parametre için benzer doğruluğa ulaştığını, ancak GRU’ların daha hızlı eğitildiğini ve sapma olasılıklarının daha düşük olduğunu gösterdi.

Kullandığımız GRU’lar şu şekilde hesaplanır:

(10)

σ(·) sigmoid fonksiyonu olmak üzere, z ve r sırasıyla güncelleme ve sıfırlama kapılarını temsil eder ve basitlik açısından katman üst simgelerini atlıyoruz. Standart GRU’dan biraz farklı olarak, gizli durum ht−1'i sıfırlama kapısı ile ölçeklendirmeden önce Uh ile çarparız. Bu, ht−1 üzerindeki tüm işlemlerin tek bir matris çarpımı ile hesaplanmasına olanak tanır. Çıktı doğrusal olmayan fonksiyonu f(·) tipik olarak hiperbolik tanjant fonksiyonu tanh’dır. Ancak, tanh ve clippedReLU doğrusal olmayan fonksiyonları için benzer performans buluyoruz ve ağın geri kalanıyla basitlik ve bütünlük sağlamak için clipped-ReLU’yu kullanmayı tercih ediyoruz.

Tablo 4: Çeşitli evrişimli katman düzenlemeleri için WER karşılaştırması. Tüm durumlarda, evrişimler 7 yinelemeli katman ve 1 tam bağlı katman tarafından takip edilir. 2D-değişmez evrişimler için ilk boyut frekans ve ikinci boyut zamandır. Tüm modellerde BatchNorm, SortaGrad ve 35 milyon parametre vardır.

Hem GRU hem de basit RNN mimarileri, grup normalizasyonundan faydalanır ve derin ağlarda güçlü sonuçlar gösterir. Ancak, Tablo 3, sabit bir parametre sayısı için GRU mimarilerinin tüm ağ derinliklerinde daha iyi WER elde ettiğini gösteriyor. Bu, konuşma tanıma görevinde hem bireysel kelimeler içinde hem de kelimeler arasında bulunan uzun vadeli bağımlılıkların açık bir kanıtıdır. Bölüm 3.8'de tartıştığımız gibi, basit RNN’ler bile büyük miktarda eğitim verisi nedeniyle örtük olarak bir dil modeli öğrenebilir. İlginç bir şekilde, 5 veya daha fazla yinelemeli katmana sahip GRU ağları performansı önemli ölçüde artırmaz. Bunu, toplam parametre sayısını sabit tutmak için 1 yinelemeli katman için katman başına 1728 gizli birimden, 7 yinelemeli katman için katman başına 768 gizli birime incelmeye bağlıyoruz.

GRU ağları, Tablo 3'te basit RNN’lerden daha iyi performans göstermektedir. Ancak, daha sonraki sonuçlarda (Bölüm 6) model boyutunu büyüttüğümüzde ve sabit bir hesaplama bütçesi için basit RNN ağlarının biraz daha iyi performans gösterdiğini görüyoruz. Bu nedenle, kalan deneylerin çoğunda GRU yerine basit RNN katmanları kullanılmıştır.

3.5 Frekans Evrişimleri

Geçici evrişim (temporal convolution), değişken uzunlukta konuşmalar için geçici öteleme değişmezliğini verimli bir şekilde modellemek amacıyla konuşma tanımada yaygın olarak kullanılır. Bu tür evrişim, konuşma alanındaki sinir ağları için ilk olarak 25 yıldan uzun bir süre önce önerilmiştir [67]. Birçok sinir ağı konuşma modeli, bazı bağlam penceresi ile girdi çerçevelerini işleyen bir ilk katmana sahiptir [16, 66]. Bu, adım boyu bir olan bir geçici evrişim olarak görülebilir.

Ek olarak, yüksek örnekleme oranına sahip seslerle yinelemeli sinir ağlarını hesaplama açısından uygulanabilir hale getirmek için alt örnekleme gereklidir. DS1 sistemi, bunu bir spektrogramı girdi olarak kullanarak ve ilk katmanda zaman adımı sayısını azaltmak için bir adımlama (stride) parametresi ile zamansal evrişim uygulayarak başarmıştır [26].

Zaman ve frekans alanlarındaki evrişimler, diğer işlemlerden önce spektral girdi özelliklerine uygulandığında, ASR performansını hafifçe artırabilir [1, 53, 60]. Frekansta evrişim, büyük tam bağlantılı ağlarla mümkün olandan daha özlü bir şekilde konuşmacı değişkenliğinden kaynaklanan spektral varyansı modellemeye çalışır. Tam bağlantılı ve yinelemeli katmanlar tarafından özelliklerin spektral sıralaması kaldırıldığından, frekans evrişimleri ağın ilk katmanları olarak daha iyi çalışır.

1 ile 3 katman arasında evrişim eklemeyi deneyimliyoruz. Bunlar, zaman ve frekans alanında (2D değişmezliği) ve sadece zaman alanında (1D değişmezliği) bulunmaktadır. Tüm durumlarda, frekans ve zamandaki girdi özelliklerinin sayısını koruyarak aynı evrişimi kullanıyoruz. Bazı durumlarda, çıktının boyutunu azaltmak için herhangi bir boyut boyunca bir adımlama (stride) belirliyoruz. Parametre sayısını açıkça kontrol etmiyoruz, çünkü evrişimli katmanlar ağlarımıza küçük bir parça parametre eklemektedir. Tablo 4'te gösterilen tüm ağlar yaklaşık 35 milyon parametreye sahiptir.

İki veri kümesi üzerinde sonuçları bildiriyoruz, bunlar 2048 konuşmadan oluşan bir geliştirme seti (“Regular Dev”) ve CHiME 2015 geliştirme veri setlerinden rastgele seçilmiş, çok daha gürültülü 2048 konuşmadan oluşan bir veri seti (“Noisy Dev”). Birden fazla katmanlı 1D- değişmez evrişimlere (invariant convolutions) çok az bir fayda sağladığını buluyoruz. 2D-değişmez evrişimler, temiz verilerde küçük bir fayda sağlarken, gürültülü verilerde sonuçları önemli ölçüde iyileştiriyor. Bir katmanlı 1Ddeğişmez evrişimden üç katmanlı 2D değişmez evrişime geçiş, gürültülü geliştirme setinde WER’yi %23.9 oranında iyileştiriyor.

Tablo 5: 1D-değişmez evrişim katmanı, 7 yinelemeli katman ve 1 tam bağlı katmana sahip bir modelde unigram ve bigram çıktıları için farklı adımlama miktarlarına sahip WER’in karşılaştırılması. Tüm modellerde BatchNorm, SortaGrad ve 35 milyon parametre vardır. Modeller, 5 gramlık bir dil modelinin kullanıldığı ve kullanılmadığı bir geliştirme setinde karşılaştırılır.

3.6 Adımlama (Striding)

Konvolüsyon katmanlarında, daha uzun adımlama (stride) ve daha geniş bağlam uygulayarak eğitimi hızlandırıyoruz çünkü belirli bir sözü modellemek için daha az zaman adımı gereklidir. Girdi sesinin aşağı örneklenmesi (FFT ve evrişim adımlaması yoluyla) sonraki katmanlarda gereken zaman adımlarını ve hesaplama miktarını azaltır ancak performans düşer.

Mandarin modellerimizde, adımlama yöntemini doğrudan kullanıyoruz. Ancak İngilizce’de adımlama kullanmak doğruluğu düşürebilir çünkü ağımızın çıktısı, her çıktı karakteri için en az bir zaman adımı gerektirir ve İngilizce konuşmada zaman başına karakter sayısı, adımlama sırasında sorunlara yol açacak kadar yüksektir. Bunu aşmak için, İngilizce alfabesini, tüm kelimeler, heceler veya çakışmayan n-gramlar gibi alternatif etiketlemeleri temsil eden sembollerle zenginleştirebiliriz. Pratikte, oluşturulmaları basit olduğu için çakışmayan iki harfli grafikler veya bigramlar kullanıyoruz. Bunlar hecelere göre daha az sayıda ve tüm kelimeler gibi alternatiflere göre daha azdır. Tek harfli etiketleri, basit bir izomorfizm (eşbiçimcilik: matematiksel iki küme arasındaki benzerlik ilişkisi) aracılığıyla iki harfli etiketlere dönüştürüyoruz.

Örtüşmeyen ikililer (bigramlar) çıktı transkripsiyonunun (çeviryazıların) uzunluğunu kısaltır ve böylece açılmış RNN’nin uzunluğunun azalmasına olanak tanır. Örneğin, “the cat sat” cümlesi örtüşmeyen ikililerle [th, e, boşluk, ca, t, boşluk, sa, t] olarak segmentlere ayrılır. Karakter sayısı tek olan kelimelerde, son karakter bir tekli (unigram) olur ve boşluk da bir tekli olarak değerlendirilir. Bu izomorfizm, aynı kelimelerin her zaman aynı ikili ve tekli tokenlerden oluşmasını sağlar. İkililerden oluşan çıktı seti, eğitim setinde yer alan tüm ikilileri içerir.

Tablo 5'te, dil modeli kullanarak veya kullanmadan çeşitli adım seviyeleri için hem bigram hem de unigram sistemlerinin sonuçlarını gösteriyoruz. Bigrama, kelime hata oranında herhangi bir fedakarlık yapmadan daha büyük adımlar atma olanağı sağladığını gözlemliyoruz. Bu, açılmış RNN’nin zaman adımlarının sayısını azaltarak hem hesaplama hem de bellek kullanımında fayda sağlar.

3.7 Satır Evrişimi ve Tek Yönlü Modeller

Çift yönlü RNN modellerini çevrimiçi, düşük gecikmeli bir ortamda kullanmak zordur, çünkü bu modeller tüm örnek üzerinde çalışmak üzere tasarlanmıştır ve bu nedenle, kullanıcının konuşması akarken transkripsiyon (çeviryazı) işlemi yapılamaz. Tek yönlü bir mimarinin çift yönlü modellerimiz kadar iyi performans gösterdiğini bulduk. Bu, dağıtım sistemimizde sadece tek yönlü, ileriye dönük RNN katmanlarını kullanmamıza olanak tanır.

Bunu başarmak için, Şekil 3'te gösterilen ve sıra evrişimi olarak adlandırdığımız özel bir katman kullanıyoruz. Bu katmanın arkasındaki düşünce, mevcut zaman adımında doğru bir tahmin yapmak için sadece gelecekteki bilginin küçük bir kısmına ihtiyaç duyduğumuzdur. Zaman adımı t’de, τ adımlık bir gelecek bağlamı kullandığımızı varsayalım. Şimdi, d × (τ + 1) boyutunda ht +τ = [ht, ht+1, …, ht+τ] şeklinde bir özellik matriksine sahibiz. ht+τ ile aynı boyutta bir W parametre matrisi tanımlıyoruz. Zaman adımı t’deki yeni katmanın aktivasyonları rt şu şekildedir:

(11)

Denklem 11'deki evrişim benzeri işlem hem W, hem de ht:t+τ için satır yönelimli olduğundan, buna katman satır evrişimi adını veriyoruz.

Şekil 3: Gelecekteki bağlam boyutu 2 olan satır evrişim mimarisi

Cümle katmanını tüm yinelemeli katmanların üstüne yerleştiriyoruz. Bunun iki avantajı vardır. Birincisi, bu, satır katmanı altında kalan tüm hesaplamaları daha ince bir ayrıntıda akış halinde gerçekleştirmemize olanak tanır, çünkü çok az gelecekteki bağlama ihtiyaç duyulur. İkincisi, bu, Mandarin dili için en iyi çift yönlü modelle karşılaştırıldığında daha iyi CER (Karakter Hata Oranı) sonuçları elde etmemizi sağlar. Yinelemeli katmanların iyi özellik temsilleri öğrendiğini ve cümle katmanının sadece sınıflandırıcıya iletilecek uygun bilgiyi topladığını düşünüyoruz. Satır katmanı ile tek yönlü Mandarin konuşma sistemi ve çift yönlü modelle karşılaştırma sonuçları Konuşlandırma Bölümü 7'de verilmiştir.

3.8 Dil Modeli

RNN modellerimizi, milyonlarca benzersiz ifade üzerinde eğitiyoruz, bu da ağın güçlü bir örtük dil modeli öğrenmesini sağlıyor. En iyi modellerimiz, herhangi bir dış dil kısıtlaması olmadan oldukça iyi bir şekilde heceleme yapabiliyor. Ayrıca, geliştirme veri kümelerimizde, modellerimizin homofonları örtük olarak ayırt edebildiği birçok durumu buluyoruz — örneğin, “o, Japon ajanının bunu iki yüz yetmiş beş bin dolara satmasını bekliyor”. Yine de, etiketli eğitim verileri, mevcut etiketlenmemiş metin kütlelerinin boyutuna kıyasla küçüktür. Bu nedenle, sistemimizi dış metinlerden eğitilmiş bir dil modeli ile desteklediğimizde WER’nin (Kelime Hata Oranı) iyileştiğini görüyoruz.

Etiketlenmemiş büyük miktarda metin üzerinde iyi ölçeklendiklerinden dolayı bir n-gram dil modeli kullanıyoruz [26]. İngilizce için dil modelimiz, Common Crawl Deposu’ndaki temizlenmiş metin üzerinde KenLM araç seti [28] kullanılarak eğitilen, budama işlemi uygulanmış ve Kneser-Ney düzeltmesi yapılmış bir 5-gram modelidir. Kelime hazinesi, 250 milyon satır metinden en sık kullanılan 400,000 kelimedir ve bu da yaklaşık 850 milyon n-gram içeren bir dil modeli üretir. Mandarin için ise dil modeli, 8 milyar satırlık dahili bir metin korpusu üzerinde eğitilen, budama işlemi uygulanmış ve Kneser-Ney düzeltmesi yapılmış karakter seviyesinde bir 5-gram modelidir. Bu da yaklaşık 2 milyar n-gram içeren bir dil modeli üretir.

(12)

Çıkarım sırasında, 12. Denklem‘de gösterilen Q(y) ifadesini maksimize eden transkripsiyon (çeviryazı) y’yi ararız. Bu, CTC ile eğitilmiş ağdan ve dil modelinden gelen log olasılıklarının, bir kelime ekleme terimi ile birlikte, lineer kombinasyonudur [26].

Ağırlık α, dil modeli ve CTC ağı arasındaki göreli katkıları kontrol eder. Ağırlık β, transkripsiyonda (çeviryazıda) daha fazla kelimeyi teşvik eder. Bu parametreler, bir geliştirme seti üzerinde ayarlanır. En uygun transkripsiyonu (çeviryazıyı) bulmak için bir beam search (ışın araması) kullanıyoruz [27].

Tablo 6: İngilizce için WER ve Mandarin için CER’in dil modeliyle ve dil modeli olmadan karşılaştırılması. Bunlar yalnızca bir 1D değişmez evrişim katmanına sahip basit RNN modelleridir.

Tablo 6, harici bir dil modelinin İngilizce ve Mandarin konuşma sistemlerine yardımcı olduğunu göstermektedir. Dil modelinin sağladığı göreceli iyileşme, 5 katman ve 1 döngüsel katmana sahip bir modelden, 9 katman ve 7 döngüsel katmana sahip bir modele geçtikçe, İngilizce’de %48'den %36'ya ve Mandarin’de %27'den %23'e düşmektedir. Ağın, daha fazla döngüsel katmanla daha güçlü bir örtük dil modeli oluşturduğunu varsayıyoruz. Dil modelinden kaynaklanan göreceli performans iyileşmesi İngilizce’de Mandarin’den daha yüksektir. Bunu, bir Çin karakterinin bir İngiliz karakterinden daha büyük bir bilgi bloğunu temsil etmesine bağlıyoruz. Örneğin, İngilizce’de doğrudan hecelere veya kelimelere çıktılar alırsak, model daha az yazım hatası yapar ve dil modeli muhtemelen daha az yardımcı olur.

Bir dil modelinin göreceli performans iyileştirmesi İngilizcede Mandarinceye göre daha yüksektir. Bunu, bir Çince karakterin bir İngilizce karakterden daha büyük bir bilgi bloğunu temsil etmesine bağlıyoruz. Örneğin, eğer doğrudan hece ya da kelime olarak İngilizce çıktı verirsek, model daha az yazım hatası yapar ve dil modelinin yardımı muhtemelen daha az olur.

3.9 Mandarin’e Adaptasyon

Şimdiye kadar açıkladığımız teknikler, doğrudan Çince karakterleri çıktı olarak veren uçtan uca bir Mandarin konuşma tanıma sistemi oluşturmak için kullanılabilir. Bu, konuşma sistemlerini diğer dillere taşımak için sıklıkla oldukça karmaşık bir bileşen olan bir telaffuz modeli oluşturma gereğini ortadan kaldırır [59]. Karakterlere doğrudan çıktı verme, dil özelinde telaffuz özelliklerini açıkça modelleme gereğini de ortadan kaldırır. Örneğin, bazı konuşma sistemlerinin yapması gerektiği gibi Mandarin tonlarını açıkça modellememize gerek yoktur [59, 45].

Ağlarımızda yaptığımız tek mimari değişiklik, Çin karakter setinin özelliklerinden kaynaklanmaktadır. İlk olarak, ağın çıktı katmanı yaklaşık 6000 karakter üretir, ki bu karakterler arasında Roma alfabesi de bulunur, çünkü hibrit Çin-İngilizce transkriptler yaygındır. Değerlendirme sırasında bu setin içinde bulunmayan bir karakter olursa, bir sözlük dışı (out-of-vocabulary) hatası oluşur. Bu büyük bir sorun değildir, çünkü test setimizde yalnızca %0,74 oranında sözlük dışında karakter bulunmaktadır.

Metin genellikle kelimelere ayrılmadığı için, Mandarin dilinde karakter düzeyinde bir dil modeli kullanıyoruz. Denklem 12'nin kelime ekleme terimi, karakter ekleme terimi haline gelir. Ayrıca, çözümleme sırasında beam search performansının daha küçük bir beam boyutunda dengelendiğini görüyoruz. Bu, CER’de ihmal edilebilir bir bozulma ile 200 beam boyutunu kullanmamıza olanak tanır. Bölüm 6.2'de, Mandarin konuşma modellerimizin mimari değişikliklere İngilizce konuşma modellerimizle kabaca aynı iyileştirmeleri gösterdiğini belirtiyoruz.

4. Sistem Optimizasyonları

Ağlarımız on milyonlarca parametreye sahiptir ve eğitim algoritması, yakınsamak için on milyonlarca tek hassasiyetli exaFLOP gerektirir. Verilerimiz ve modellerimizle ilgili hipotezleri değerlendirme yeteneğimizin modelleri hızlı bir şekilde eğitme yeteneğimize bağlı olduğundan, son derece optimize edilmiş bir eğitim sistemi kurduk. Bu sistemin iki ana bileşeni vardır: C++ ile yazılmış bir derin öğrenme kütüphanesi ve hem CUDA hem de C++ ile yazılmış yüksek performanslı bir lineer cebir kütüphanesi. 8 Titan X GPU’ya sahip yoğun hesaplama düğümleri üzerinde çalışan optimize edilmiş yazılımımız, bir düğümde tek bir modeli eğitirken 24 tek hassasiyetli teraFLOP/saniye sürdürebilmemizi sağlar. Bu, her bir düğümün teorik maksimum hesaplama kapasitesinin %45'idir. Ayrıca, bir sonraki alt bölümde açıklandığı gibi, birden fazla düğüme ölçeklenebiliriz.

4.1 Ölçeklenebilirlik ve Veri Parallelizmi

Veri paralelliği tekniğini kullanarak, çoklu GPU’larda senkronize SGD (Stokastik Gradyan İnişi) ile eğitim yapıyoruz. En yaygın yapılandırmamız, 8 GPU’da 512 mini gruplar kullanır. Eğitim hattımız her GPU’ya bir işlem bağlar. Bu işlemler, geri yayılım sırasında gradyan matrislerini tüm azaltım (all-reduce) kullanarak değiş tokuş ederler; bu yöntem, bir matrisi birden fazla işlem arasında değiş tokuş edip sonucu toplar, böylece sonunda her işlem, tüm işlemlerden gelen tüm matrislerin toplamının bir kopyasına sahip olur.

Senkron SGD’yi faydalı buluyoruz çünkü tekrarlanabilir ve deterministiktir. Sistemimizde deterministik olmayan davranışların ortaya çıkması genellikle ciddi bir hatayı işaret eder ve bu yüzden tekrarlanabilirlik hedefi, hata ayıklamayı büyük ölçüde kolaylaştırmıştır. Buna karşılık, Dean ve arkadaşlarının [18] çalışmasında bulunan parametre sunucuları (parameter servers) ile asenkron SGD gibi asenkron yöntemler genellikle tekrarlanabilirlik sağlamaz ve bu nedenle hata ayıklamak daha zordur. Senkron SGD, anlaşılması ve uygulanması basittir. Eğitim sürecine birden fazla düğüm ekledikçe iyi ölçeklenir.

Şekil 4: İki ağın ölçekleme karşılaştırması — her katmanında 2560 gizli birim bulunan 3 yinelemeli katmana sahip 5 katmanlı bir model ve her katmanında 1760 gizli birim bulunan 7 yinelemeli katmana sahip 9 katmanlı bir model. Gösterilen süreler 1 dönem (epoch) boyunca eğitmek içindir. 5 katmanlı model daha büyük matrisler kullandığı ve daha fazla hesaplama verimliliğine sahip olduğu için daha hızlı eğitilir.

Şekil 4, kullanılan GPU sayısını iki katına çıkardığımızda, bir dönemi eğitmek için gereken sürenin yarıya indiğini ve bu sayede neredeyse doğrusal zayıf ölçekleme elde edildiğini göstermektedir. Bu deney sırasında, GPU başına minibatch boyutunu 64'te sabit tutarak, GPU sayısını iki katına çıkardığımızda minibatch boyutunu da iki katına çıkarmış oluyoruz. Büyük minibatch’lere ölçeklenebilirken, tipik olarak eğitimi sırasında ya 8 ya da 16 GPU kullanarak, 512 veya 1024 minibatch ile en iyi sonuca ulaşmayı hedefliyoruz.

Tüm-azaltım işlemi eğitimimizin ölçeklenebilirliği için kritik olduğundan, daha yüksek performans ve daha iyi stabilite için ring algoritmasının [48, 65] kendi uygulamamızı yazdık. Uygulamamız, CPU ve GPU arasında gereksiz kopyalamalardan kaçınır ve ölçeklenebilirliğimiz için temeldir. İki farklı GPU’nun belleğinde bulunan tamponları GPUDirect kullanarak gönderip alabilen smcuda taşımacılığıyla OpenMPI’yi konfigüre ediyoruz. İki GPU aynı PCI kök kompleksinde olduğunda, bu, CPU belleğine gereksiz kopyalamalardan kaçınır. Bu ayrıca, ağaç yapısındaki ara bağlantılardan yararlanarak ringin birden fazla segmentini komşu cihazlar arasında eşzamanlı olarak çalıştırır. Uygulamamızı MPI gönderme ve alma fonksiyonlarını, eleman bazında işlemler için CUDA çekirdekleriyle birlikte kullanarak oluşturduk.

Tablo 7, OpenMPI sürüm 1.8.5 tarafından sağlanan tüm azaltma (all-reduce) uygulamamızın performansını karşılaştırmaktadır. İngilizce veri kümesi üzerinde 5 katmanlı, 3 yinelemeli katmanlı ve her katmanda 2560 gizli birime sahip bir mimari ile bir epoch süren tam bir eğitim çalışması için tüm azaltmada harcanan zamanı rapor ediyoruz. Bu tabloda, her GPU başına 64'lük bir mini-toplam (minibatch) kullanıyoruz ve daha fazla GPU’ya ölçeklendikçe algoritmik mini-toplam’ı genişletiyoruz. İletişim bir düğüm içinde olduğunda (8 GPU veya daha az) uygulamamızın OpenMPI’dan çok daha hızlı olduğunu görüyoruz. GPU sayısını artırdıkça ve düğümler arası iletişim miktarını artırdıkça, aradaki fark azalıyor, ancak uygulamamız hala 2–4 kat daha hızlıdır.

Yaptığımız tüm eğitim çalışmaları ya 8 ya da 16 GPU kullanıyor ve bu durumda, tüm-azaltım uygulamamız, OpenMPI’ı doğrudan kullanmaya kıyasla tam eğitim süresi boyunca 2,5 kat daha hızlı eğitim sağlıyor. Tüm-azaltım’ı optimize etmek, deneylerimiz için önemli verimlilik faydaları sağlamış, basit senkronize SGD yaklaşımımızı ölçeklenebilir hale getirmiştir.

Tablo 7: İki farklı tüm-azaltım (all-reduce) uygulamasının karşılaştırması. Tüm zamanlar saniye cinsindendir. Performans kazancı, OpenMPI tüm-azaltım süresinin bizim tüm-azaltım süremize oranıdır.
Tablo 8: İki farklı uygulama için bir dönemde CTC kayıp fonksiyonunu ve eğimi hesaplamak için harcanan zamanın saniye cinsinden karşılaştırılması. Hızlanma (Speedup), CPU CTC süresinin GPU CTC süresine oranıdır.

4.2 CTC kayıp fonksiyonunun GPU uygulaması

CTC kayıp fonksiyonunu hesaplamak, RNN mimarilerimizde ileri ve geri yayılım yapmaktan daha karmaşıktır. Başlangıçta, aktivasyonları GPU’lardan CPU’ya aktarıyorduk ve CTC’yi OpenMP ile paralel hale getirilmiş bir uygulama kullanarak hesaplıyorduk. Ancak bu uygulama, iki nedenden dolayı ölçeklenebilirliğimizi önemli ölçüde sınırlıyordu. İlk olarak, RNN’in verimliliğini ve ölçeklenebilirliğini artırdıkça hesaplama açısından daha önemli hale geliyordu. İkinci olarak, büyük aktivasyon matrislerini CPU ve GPU arasında aktarmak, veri paralelliği kullanarak daha fazla işlemciyle ölçeklenmemizi sağlamak yerine CTC için ara bağlantı bant genişliği harcamamızı gerektiriyordu.

Bunun üstesinden gelmek için, CTC kayıp fonksiyonunun GPU uygulamasını yazdık. Paralel uygulamamız, CTC hesaplamasındaki bağımlılıkları basitleştirmek için hafif bir yeniden yapılandırmaya ve ModernGPU [5] ile optimize edilmiş paralel sıralama uygulamalarının kullanımına dayanıyor. Bu paralelizasyonun detaylarını Ek’te veriyoruz.

Tablo 8, iki CTC uygulamasının performansını karşılaştırmaktadır. GPU uygulaması, İngilizce dilinde her bir dönemde 95 dakika, Mandarin dilinde ise 25 dakika tasarruf sağlamaktadır. Bu, genel eğitim süresini %10–20 oranında azaltmakta olup, deneylerimiz için de önemli bir verimlilik avantajı sunmaktadır.

4.3 Bellek Tahsisi

Sistemimiz, değişken uzunluktaki konuşmaların etkinlik verilerini ve ara sonuçları saklamak için sık sık GPU ve CPU belleğine dinamik bellek tahsisleri yapar. Bireysel tahsisler çok büyük olabilir; en uzun konuşmalar için 1 GB’ın üzerinde bellek kullaılmaktadır. Bu çok büyük tahsisler için, CUDA’nın bellek tahsiscisinin ve hatta std::malloc’ın uygulamamıza önemli bir ek yük getirdiğini fark ettik — bazı durumlarda std::malloc kullanarak 2 kat yavaşlama meydana geldi. Bunun nedeni, hem cudaMalloc hem de std::malloc’ın çok büyük tahsisleri işletim sistemine veya GPU sürücüsüne sistem sayfa tablolarını güncellemek için iletmesidir. Bu, hafıza kaynaklarını paylaşan birden çok uygulama çalıştıran sistemler için iyi bir optimizasyondur, ancak düğümlerin tamamen tek bir modeli çalıştırmaya adanmış olduğu sistemimiz için sayfa tablolarını düzenlemek tamamen bir ek yüktür. Bu sınırlamayı aşmak için, hem CPU hem de GPU tahsisleri için kendi bellek tahsiscimizi yazdık. Uygulamamız, jemalloc’taki son seviye paylaşılan tahsisçi yaklaşımını izler: tüm tahsisler, buddy algoritması kullanılarak bitişik bellek bloklarından ayrılır [34]. Parçalanmayı önlemek için, eğitimin başlangıcında tüm GPU belleğini önceden tahsis ediyoruz ve bu bloktan bireysel tahsisleri alt bölümlere ayırıyoruz. Benzer şekilde, CPU bellek bloğu boyutunu std::malloc’tan önemli ölçüde daha büyük olacak şekilde, 12GB olarak mmap’a iletecek şekilde ayarlıyoruz.

Tablo 9: DS2'yi İngilizce olarak eğitmek için kullanılan veri kümelerinin özeti. Wall Street Journal (WSJ), Switchboard ve Fisher [13] korpusları, Linguistic Data Consortium tarafından yayınlanmıştır. LibriSpeech veri kümesi [46] çevrimiçi ve ücretsiz olarak mevcuttur. Diğer veri kümeleri dahili Baidu korpuslarıdır.

Derin yinelemeli ağların eğitimi için gereken belleğin çoğu, ağın parametrelerini saklamak için değil, geri yayılım tarafından kullanılmak üzere her katmandaki aktivasyonları saklamak için kullanılır. Örneğin, 9 katmanlı ve 70 milyon parametreli bir ağın ağırlıklarını saklamak yaklaşık 280 MB bellek gerektirir, ancak 64 adet 7 saniyelik konuşma örneğinden oluşan bir partinin aktivasyonlarını saklamak 1.5 GB bellek gerektirir. TitanX GPU’lar 12GB GDDR5 RAM içerir ve bazen çok derin ağlar uzun konuşma örneklerini işlerken GPU bellek kapasitesini aşabilir. Bu, özellikle konuşma uzunluklarının dağılımında aykırı değerler bulunduğunda, öngörülemeyen bir şekilde meydana gelebilir ve bu durum oluştuğunda yıkıcı bir hatayı önlemek arzu edilir. İstenen bellek tahsisi mevcut GPU belleğini aştığında, bunun yerine cudaMallocHost kullanarak sayfa kilitli GPU-bellek eşlemeli CPU belleği tahsis ederiz. Bu bellek, azaltılmış bant genişliğinde PCIe üzerinden bireysel bellek işlemlerini ileterek GPU tarafından doğrudan erişilebilir ve bu, modelin bir aykırı değerle karşılaştıktan sonra bile ilerlemeye devam etmesini sağlar.

Hızlı bellek tahsisinin bir geri dönüş mekanizmasıyla birleştirilmesi, mevcut GPU belleğini birazcık aşmamıza olanak tanır.

5. Eğitim Verisi

Geniş ölçekli derin öğrenme sistemleri bol miktarda etiketlenmiş eğitim verisine ihtiyaç duyar. Hem İngilizce hem de Mandarin konuşma modelleri için kapsamlı bir eğitim veri seti topladık ve eğitimimizi herkese açık veri setleriyle de zenginleştirdik. İngilizce için, Tablo 9'da özetlenen 8 milyon ifadeyi içeren 11.940 saatlik etiketlenmiş konuşma verisi kullanıyoruz. Mandarin sistemi için ise 11 milyon ifadeyi içeren 9.400 saatlik etiketlenmiş ses verisi kullanıyoruz. Mandarin konuşma verileri, hem standart Mandarin hem de aksanlı Mandarin’de olmak üzere, okunan ve spontane konuşmaların bir karışımını temsil eden iç Baidu veri setlerinden oluşmaktadır.

5.1 Veri Kümesi Oluşturma

İçeriden elde edilen bazı İngilizce (3.600 saat) ve Mandarin (1.400 saat) veri setleri, gürültülü transkripsiyonlarla birlikte uzun ses klipleri şeklinde yakalanan ham verilerden oluşturuldu. Bu kliplerin uzunluğu birkaç dakikadan bir saati aşan sürelere kadar değişmekteydi ve bu durum, eğitim sırasında RNN’de (Yinelenen Sinir Ağı) zaman içinde açılmalarını pratik olmayan hale getirdi. Bu sorunu çözmek için, daha kısa cümleler ve daha az hatalı transkripsiyon içeren bir eğitim seti oluşturmak amacıyla bir hizalama, segmentasyon ve filtreleme hattı geliştirdik. Bu hattın ilk adımı, transkripsiyonu sesin karelerine hizalamak için CTC ile eğitilmiş mevcut bir çift yönlü RNN modelini kullanmaktır. Verilen bir ses-transkript çifti (x, y) için, hizalamayı maksimuma çıkaran düzenlemeyi buluyoruz.

(13)

Bu, temelde CTC ile eğitilmiş bir RNN modeli kullanılarak bulunan bir Viterbi hizalamasıdır. Denklem 9 hizalama üzerinde bütünleştirildiği için, CTC kayıp fonksiyonunun açıkça doğru bir hizalama üretmesi istenmez. Prensipte, CTC, transkripsiyonun tüm karakterlerini belirli bir gecikmeden sonra yaymayı seçebilir ve bu, tek yönlü RNN’lerde gerçekleşebilir [54]. Ancak, CTC’nin çift yönlü bir RNN ile eğitildiğinde doğru bir hizalama ürettiğini gördük.

Hizalamadan sonra, uzun bir dizi ardışık boş etiketle karşılaşıldığında sesi ve karşılık gelen hizalanmış transkripsiyonu dilimleyen bir segmentasyon adımı gelir, çünkü bu genellikle bir sessizlik süresini belirtir. Ardışık boş sayısını ayarlayarak üretilen ifadelerin uzunluğunu ayarlayabiliriz. İngilizce konuşma verileri için, yalnızca kelime sınırlarında segmentasyon yapmak üzere boşluk dizisi içinde bir boşluk (space) karakterinin olmasını da gerektiririz. Segmentasyonu, ortalama olarak 7 saniye uzunluğunda ifadeler üretmek için ayarlarız.

Pipelin’in son adımı, başarısız hizalamadan kaynaklanan hatalı örnekleri kaldırmaktır. Birkaç bin örnek için doğru transkripsiyonları topluluk kaynaklı olarak elde ederiz. Doğru transkripsiyon ile hizalanmış transkripsiyon arasındaki kelime düzeyinde düzenleme mesafesi, iyi veya kötü bir etiket üretmek için kullanılır. Kelime düzeyindeki düzenleme mesafesi için eşik değeri, geliştirme setinin iyi kısmının sonuç WER’inin %5'ten az olması sağlanacak şekilde seçilir. Daha sonra, konuşma tanıyıcı tarafından üretilen girdi özellikleri verilerek hatalı örnekleri doğru bir şekilde tahmin etmek için doğrusal bir sınıflandırıcı eğitiriz. Şu özellikleri faydalı buluruz: ham CTC maliyeti, dizi uzunluğuna göre normalleştirilmiş CTC maliyeti, transkript uzunluğuna göre normalleştirilmiş CTC maliyeti, dizi uzunluğunun transkript uzunluğuna oranı, transkripsiyondaki kelime sayısı ve transkripsiyondaki karakter sayısı. İngilizce veri seti için, filtreleme sürecinin WER’i %17'den %5'e düşürürken örneklerin %50'den fazlasını koruduğunu buluyoruz.

5.2 Veri Arttırımı (Data Augmentation)

Eğitim verilerimizi, gürültü ekleyerek artırıyoruz, bu sayede eğitim verilerimizin etkili boyutunu artırıyor ve gürültülü konuşmaya karşı dayanıklılığımızı geliştiriyoruz [26]. Eğitim verileri bir miktar içsel gürültü içerse de, artırma yoluyla gürültü miktarını ve çeşitliliğini artırabiliriz. Aşırı gürültü artırımı, optimizasyonu zorlaştırma eğiliminde olup daha kötü sonuçlara yol açabilir ve yetersiz gürültü artırımı ise sistemi düşük sinyal-gürültü oranına sahip konuşmalara karşı daha az dayanıklı hale getirir. İyi bir dengenin, rastgele seçilen konuşmaların %40'ına gürültü eklemek olduğunu bulduk. Gürültü kaynağı, yüzlerce saatlik gürültü üretmek için birleştirilmiş birkaç bin saatlik rastgele seçilmiş ses kliplerinden oluşmaktadır.

5.3 Ölçekleme Verileri

İngilizce ve Mandarin dilindeki korpuslarımız, konuşma tanıma literatüründe yaygın olarak bildirilenlerden çok daha büyüktür. Tablo 10'da, etiketlenmiş eğitim verilerinin miktarının artırılmasının WER (Kelime Hata Oranı) üzerindeki etkisini gösteriyoruz. Bu, eğitimden önce tam veri kümesini rastgele örnekleme yoluyla yapılmaktadır. Her veri kümesi için model, genellikle bir geliştirme seti üzerindeki hataya dayalı olarak erken durdurulsa da, 20 dönem boyunca eğitildi. Hem düzenli hem de gürültülü geliştirme setleri için WER’nin bir güç yasası ile azaldığını not ediyoruz. Eğitim seti boyutunun her 10 kat artışında WER, yaklaşık %40 oranında azalmaktadır. Düzenli ve gürültülü veri setleri arasında WER’de (yaklaşık %60 oranında) tutarlı bir fark gözlemliyoruz, bu da daha fazla verinin her iki duruma da eşit şekilde fayda sağladığını ima ediyor.

Bu, bir konuşma sisteminin daha fazla etiketlenmiş eğitim verisiyle gelişmeye devam edeceğini gösterir. Ham saat sayısını artırmanın yanı sıra, veri kümesinde yakalanan konuşma bağlamlarının sayısını artırmanın da aynı derecede önemli olduğunu öne sürüyoruz. Bağlam, konuşmayı benzersiz kılan herhangi bir özellik olabilir; farklı konuşmacılar, arka plan gürültüsü, ortam ve mikrofon donanımı dahil. Bu iddiayı doğrulamak için gereken etiketlere sahip olmasak da, veri kümesindeki konuşmacı sayısının bir fonksiyonu olarak WER’yi ölçmenin, basit rastgele örneklemeden çok daha büyük nispi kazançlara yol açacağını tahmin ediyoruz.

6. Sonuçlar

Konuşma sistemimizin gerçek dünya uygulanabilirliğini daha iyi değerlendirmek için geniş bir test seti yelpazesi değerlendiriyoruz. Birkaç kamuya açık benchmark ve dahili olarak toplanmış birkaç test seti kullanıyoruz. Bu test setleri birlikte, düşük sinyal-gürültü oranları (gürültülü ve uzak alan), aksanlı, okunan, spontane ve konuşma dilini içeren geniş bir zorlu konuşma ortamı yelpazesini temsil ediyor.

Tablo 10: Düzenli ve Gürültülü geliştirme kümeleri için İngilizce WER’in artan eğitim veri seti boyutundaki karşılaştırması. Mimari, 2 katmanlı 2D-değişmez evrişim ve 68M parametreli 7 yinelemeli katmana sahip 9 katmanlı bir modeldir.

Tüm modeller, Tablo 9'da açıklanan tam İngilizce veri setinde veya Bölüm 5'te açıklanan tam Mandarin veri setinde 20 epoch boyunca eğitiliyor. Nesterov momentumlu [61] stokastik gradyan inişi kullanıyoruz ve minibatch boyutumuz 512 cümleden oluşuyor. Gradyanın normu 400'ü aşarsa, 400'e yeniden ölçeklendirilir [47]. Eğitim sırasında ayrı tutulan bir geliştirme setinde en iyi performansı gösteren model değerlendirme için seçilir. Öğrenme oranı, en hızlı yakınsamayı sağlamak için [1 × 10−4, 6 × 10−4] aralığından seçilir ve her epoch’tan sonra 1.2 sabit faktörüyle küçültülür. Tüm modeller için 0.99 momentum kullanıyoruz.

Kullanılan dil modelleri, Bölüm 3.8'de açıklanan modellerdir. Eşitlik 12'den gelen kodlama parametreleri, ayrı tutulan bir geliştirme setinde ayarlanır. İngilizce kod çözücü için 500, Mandarin kod çözücü için 200 ışın boyutu kullanıyoruz.

6.1 İngilizce

En iyi DS2 modeli, 3 katmanlı 2D konvolüsyon, 7 çift yönlü yinelemeli katman ve Tam Bağlantılı bir çıktı katmanına sahip 11 katmana ve ayrıca Toplam Normalizasyonu’na sahiptir. İlk katman, 3 geçici adımlama (temporal stride) ile bigramlara çıktı verir. Karşılaştırıldığında, DS1 modeli 5 katmanlı olup tek bir çift yönlü yinelemeli katmana sahiptir ve ilk katmanda 2 geçici adımlama ile unigram çıktı verir. Hem DS2 hem de DS1 modelleri için çeşitli test setlerinde sonuçları rapor ediyoruz. Test setlerindeki konuşma koşullarına göre hiçbir modeli ayarlamıyor veya adapte etmiyoruz. Dil modeli kod çözme (decode) parametreleri, ayrılmış bir geliştirme setinde bir kez ayarlanır.

Sistemimizin performansını bağlam içine oturtmak için, sonuçlarımızın çoğunu insan çalışanlara karşı kıyaslıyoruz, çünkü konuşma tanıma, insanların ustalaştığı bir ses algılama ve dil anlama problemidir. İnsan düzeyinde performans ölçüsü elde etmek için Amazon Mechanical Turk’ten çalışanlara tüm test setlerimizi elle yazıya döktürüyoruz. Aynı ses klibini iki farklı çalışan yazıya döküyor, ki bu klip genellikle yaklaşık 5 saniye uzunluğunda oluyor, ve son WER (Word Error Rate) hesaplaması için iki transkripsiyondan daha iyi olanı kullanıyoruz. Çalışanlar ses klibini istedikleri kadar dinleme özgürlüğüne sahiptirler. Bu çalışanlar çoğunlukla Amerika Birleşik Devletleri’nde bulunuyor ve ortalama olarak her bir transkripsiyon için yaklaşık 27 saniye harcıyorlar. Elle yazıya dökülmüş sonuçlar mevcut doğru verilerle karşılaştırılarak bir WER üretiliyor. Mevcut doğru transkripsiyonlarda bazı etiket hataları bulunsa da, bu sıklıkla %1 ihtimalden az gerçekleşiyor. Bu da, doğru transkripsiyonlarla insan düzeyinde transkripsiyonlar arasındaki anlaşmazlığın, insan düzeyinde performans için iyi bir ölçüt olduğunu gösteriyor.

6.1.1 Model Boyutu

İngilizce konuşma eğitim setimiz, yaygın olarak kullanılan konuşma veri setlerinin boyutundan önemli ölçüde daha büyüktür. Ayrıca, veriler gürültü sentezi ile artırılmıştır. En iyi genelleme hatasını elde etmek için, model boyutunun verilerdeki kalıpları tam olarak kullanabilmesi için artması gerektiğini düşünüyoruz. Bölüm 3.2'de, parametre sayısını sabit tutarak model derinliğinin etkisini inceledik. Buna karşılık, burada model boyutunun konuşma sisteminin performansı üzerindeki etkisini gösteriyoruz. Her katmanın boyutunu değiştirirken, derinlik ve diğer mimari parametreleri sabit tutuyoruz. Modelleri, Bölüm 3.5'te kullandığımız aynı Düzenli ve Gürültülü geliştirme setlerinde değerlendiriyoruz.

Tablo 11'deki modeller, Tablo 3'tekilerden farklı olarak adım sayısını 3'e çıkarıp çıktıları bigramlara yükseltiyoruz. Model boyutunu 100 milyon parametreye kadar artırdığımız için hızlı hesaplama ve bellek kısıtlamaları açısından adım sayısının artırılması gerektiğini görüyoruz. Ancak, bu durumda GRU ağlarının basit RNN’lere göre performans avantajının azaldığını fark ediyoruz. Aslında, 100 milyon parametreli ağlar için, basit RNN, GRU ağına göre daha iyi performans gösteriyor ve 2 ekstra evrişim katmanına rağmen daha hızlı eğitiliyor.

Tablo 11: İngilizce konuşma sisteminin normal ve gürültülü geliştirme setlerindeki WER (Kelime Hata Oranı) üzerindeki model boyutunun etkisinin karşılaştırılması. Evrişim katmanları hariç, gizli birimlerin sayısını değiştiriyoruz. GRU modeli, 2D-değişmez evrişimli 1 katmanla birlikte 3 katmanlı çift yönlü GRU’lara sahiptir. RNN modeli, 2D-değişmez evrişimli 3 katmanla birlikte 7 katmanlı çift yönlü basit yinelemeye sahiptir. Her iki model de 3 zaman adımı genişliğinde bigram çıkıtı verir. Tüm modeller yaklaşık 35 milyon parametre içerir ve BatchNorm ve SortaGrad ile eğitilmiştir
Tablo 12: DS1 ve DS2'nin 3.300 örnekten oluşan dahili bir test kümesi üzerindeki WER karşılaştırması. Test kümesi, aksanlı, düşük sinyal-gürültü oranına sahip, spontane ve sohbet tarzı konuşmaları içeren çeşitli konuşmaları içermektedir.

Tablo 11, sistemin performansının 100 milyon parametreye kadar sürekli olarak iyileştiğini göstermektedir. Tüm sonraki İngilizce DS2 sonuçları, en düşük genelleme hatalarını elde ettiği için aynı 100 milyon parametreli RNN modeli ile rapor edilmiştir.

Tablo 12, 100 milyon parametreli RNN modelinin (DS2), çeşitli konuşma biçimlerini içeren ve zorlu aksanlar, uzak mesafe veya arka plan gürültüsünden düşük sinyal-gürültü oranları, spontane ve konuşma tarzı konuşmalar dahil olmak üzere geniş bir çeşitliliğe sahip 3300 cümlelik bir iç Baidu veri setinde, 1 yinelemeli katmana sahip 5 katmanlı modele (DS1) göre %43.4 oranında göreceli bir iyileşme sağladığını göstermektedir.

6.1.2 Okuma Konuşması

Yüksek sinyal-gürültü oranına sahip okunmuş konuşma, kesintisiz konuşma tanıma görevi için tartışmasız en kolay geniş kelime dağarcığıdır. Sistemimizi, Wall Street Journal (WSJ) haber makaleleri derlemesinden okunmuş iki test setinde değerlendirdik. Bu setler, LDC94S13B ve LDC93S6B olarak LDC kataloğunda mevcuttur. Ayrıca, LibriVox projesinden alınan sesli kitaplar kullanılarak oluşturulan, yakın zamanda geliştirilen LibriSpeech derlemesinden de yararlandık [46].

Tablo 13, DS2 sisteminin 4 test setinden 3'ünde insanları geride bıraktığını ve dördüncü test setinde de rekabetçi olduğunu göstermektedir. Bu sonuca bakarak, genel bir konuşma sisteminin, alan uyarlaması yapılmadan temiz okunmuş konuşmada daha fazla iyileşme sağlaması için fazla alan kalmadığını düşünüyoruz.

Tablo 13: İki konuşma sistemi için WER karşılaştırması ve okunan konuşmada insan düzeyindeki performans.
Tablo 14: DS1 sisteminin aksanlı konuşmadaki WER değerinin DS2 sistemiyle karşılaştırılması.
Tablo 15: Gürültülü konuşmada DS1 ve DS2 sistemlerinin karşılaştırılması. “CHiME eval clean” gürültüsüz bir temel değerdir. “CHiME eval real” veri kümesi gerçek gürültülü ortamlarda toplanır ve “CHiME eval sim” veri kümesi temiz konuşmaya sentetik olarak eklenen benzer bir gürültüye sahiptir. Her bir ifadeyi test etmek için altı kanaldan yalnızca birini kullandığımızı unutmayın.

6.1.3 Aksanlı Konuşma

Farklı aksanlara sahip konuşmacılardan temiz konuşmaların yer aldığı ve herkese açık olan VoxForge (http://www.voxforge.org) veri setini aksanlı konuşma kaynağı olarak kullanıyoruz. Bu aksanları dört kategoriye ayırıyoruz. Amerikan-Kanada ve Hint grupları kendiliğinden anlaşılabilir. İngiliz Milletler Topluluğu aksanı, İngiliz, İrlandalı, Güney Afrikalı, Avustralyalı ve Yeni Zelandalı aksanlarına sahip konuşmacıları ifade eder. Avrupa grubu, ana dili İngilizce olmayan Avrupa ülkelerinden gelen konuşmacıların aksanlarını içerir. Her aksan grubundan 1024 örnek olmak üzere toplam 4096 örnekle VoxForge verilerinden bir test seti oluşturuyoruz.

Bu test setlerindeki performansımız, bir ölçüde, eğitim verilerimizin kapsamı ve kalitesinin bir göstergesidir. Tablo 14, daha fazla aksanlı eğitim verisi eklediğimizde ve bu veriler üzerinde etkili bir şekilde eğitim yapabilen bir mimari kullandığımızda, tüm aksanlarda performansımızın iyileştiğini göstermektedir. Ancak, insan seviyesindeki performans, Hint aksanı dışında, DS2'nin performansından hala belirgin şekilde daha iyidir.

6.1.4 Gürültülü Konuşma

Performansımızı gürültülü konuşma üzerinde, yakın zamanda tamamlanan üçüncü CHiME yarışmasından [4] alınan ve halka açık olarak erişilebilen test setlerini kullanarak test ediyoruz. Bu veri seti, bir otobüs, kafe, sokak ve yaya alanı gibi çeşitli gürültülü ortamlarda okunmuş WSJ test setinden 1320 cümle içermektedir. CHiME seti ayrıca, aynı ortamlardan simüle edilmiş gürültü içeren 1320 cümleyi ve aynı konuşmacılar tarafından gürültüsüz bir ortamda okunan aynı cümleleri içeren kontrol setini de içermektedir. Kontrol seti ve gürültülü setler üzerindeki sonuçlar arasındaki farklar, ağın çeşitli gerçek ve sentetik gürültü koşullarını yönetme yeteneğinin bir ölçüsünü sağlar. CHiME ses verileri 6 kanallıdır ve bunların tamamının kullanılması performansta önemli iyileşmeler sağlayabilir [69]. Sonuçlarımızın tamamında tek bir kanal kullanıyoruz çünkü çok kanallı ses çoğu cihazda yaygın değildir. Tablo 15, DS2'nin DS1'e kıyasla önemli ölçüde iyileşme sağladığını ancak gürültülü verilerde insan seviyesindeki performanstan daha kötü olduğunu göstermektedir. DS2 ile insan seviyesindeki performans arasındaki göreli fark, veri temiz konuşmaya sentetik olarak gürültü eklemek yerine, gerçek bir gürültülü ortamdan geldiğinde daha büyüktür.

6.2 Mandarin

Tablo 16'da, 2000 cümleden oluşan bir geliştirme seti ve 1882 örnekten oluşan gürültülü konuşma test seti üzerinde Mandarince konuşma eğitimi almış çeşitli mimarileri karşılaştırıyoruz. Bu geliştirme seti, aynı zamanda kod çözme parametrelerini ayarlamak için de kullanıldı. En derin modelin, 2D-değişmez evrişimli ve BatchNorm ile, sığ RNN’den göreceli olarak %48 daha iyi performans gösterdiğini görüyoruz. Bu da İngilizce sistemde gördüğümüz trendi devam ettiriyor — çift yönlü yinelemeli birden fazla katman, performansı önemli ölçüde artırıyor.

Tablo 16: DeepSpeech’teki iyileştirmelerin mimari iyileştirmelerle karşılaştırılması. Geliştirme ve test setleri Baidu dahili korpuslarıdır. Tablodaki tüm modellerin her biri yaklaşık 80 milyon parametreye sahiptir.

En iyi Mandarin Çincesi konuşma sistemimiz, kısa sesli sorgu benzeri ifadeleri, tipik bir Mandarin Çincesi konuşmacısından daha iyi bir şekilde yazıya döktüğünü bulduk. İnsanlara karşı kıyaslama yapmak için rastgele seçilmiş 100 ifadeyle bir test gerçekleştirdik ve 5 kişilik bir insan grubunun hepsini birlikte etiketlemesini sağladık. İnsan grubunun hata oranı %4.0 iken, konuşma sisteminin performansı %3.7 olarak belirlendi. Ayrıca, tek bir insan transkripsiyoncuyu konuşma sistemiyle 250 rastgele seçilmiş ifade üzerinden karşılaştırdık. Bu durumda, konuşma sistemi çok daha iyi performans gösterdi: insan için %9.7'lik bir hata oranı varken, konuşma modeli için bu oran %5.7 oldu.

7. Konuşlandırma (Deployment)

Gerçek dünya uygulamaları genellikle bir konuşma sisteminin gerçek zamanlı veya nispeten düşük gecikme süresiyle metne dönüştürme yapmasını gerektirir. Bölüm 6.1'de kullanılan sistem, birkaç nedenle bu görev için iyi tasarlanmamıştır. İlk olarak, RNN’nin birkaç çift yönlü katmanı olduğundan, bir ifadenin ilk kısmını metne dönüştürmek için tüm ifadenin RNN’ye sunulması gerekir. İkinci olarak, bir dil modeliyle geniş bir ışın araması kullanarak kod çözdüğümüzden, ışın araması özellikle Mandarin dilinde pahalı olabilir; çünkü olası sonraki karakterlerin sayısı çok fazladır (yaklaşık 6000). Üçüncü olarak, Bölüm 3'te açıklandığı gibi, tüm bir ifade boyunca gücü normalize ederiz, bu da yine tüm ifadenin önceden mevcut olmasını gerektirir.

Güç normalizasyonu sorununu, çevrimiçi metne dönüştürme sırasında konuşma girdilerinin uyarlanabilir bir şekilde normalize edilmesi için eğitim setimizden bazı istatistikleri kullanarak çözüyoruz. Diğer sorunları, ağımızı ve kod çözme prosedürümüzü değiştirerek, daha düşük gecikme süresine sahip ve neredeyse aynı derecede iyi performans gösteren bir model üreterek çözebiliriz. Büyük karakter seti gibi bazı yönleri dağıtmak daha zor olduğu için Mandarin sistemimize odaklanıyoruz, ancak aynı teknikler İngilizce için de uygulanabilir.

Bu bölümde, gecikme süresi, bir ifadenin bitiminden transkripsiyonun üretilmesine kadar ölçülen konuşma sistemimizin hesaplama gecikmesini ifade eder. Bu gecikme, internet üzerinden veri iletimini içermez ve bir ifadenin başlangıcından ilk transkripsiyonun üretilmesine kadar olan gecikmeyi ölçmez. İfadenin bitiminden transkripsiyona kadar olan gecikmeye odaklanıyoruz çünkü bu, konuşma tanıma kullanan uygulamalar için önemlidir.

7.1 Toplu Gönderim

Relatif olarak büyük derin sinir ağlarımızı düşük gecikmeyle dağıtmak için, dağıtım sırasında verimliliğe özel önem verdik. Çoğu internet uygulaması, veri merkezine ulaşan istekleri tek tek işler. Bu, her isteğin bir iş parçacığı tarafından yönetilebileceği basit bir uygulama sağlar. Ancak, istekleri tek tek işlemek hesaplama açısından verimsizdir ve bunun iki ana nedeni vardır. Birincisi, istekleri tek tek işlerken, işlemci her bir istek için ağın tüm ağırlıklarını yüklemek zorundadır. Bu durum, iş yükünün aritmetik yoğunluğunu düşürür ve hesaplamayı bellek bant genişliği ile sınırlı hale getirir; çünkü istekler tek tek sunulduğunda yongadaki önbelleklerin etkin bir şekilde kullanılması zordur. İkincisi, tek bir isteği sınıflandırmak için kullanılabilecek paralelizm miktarı sınırlıdır, bu da SIMD veya çok çekirdekli paralelizmi kullanmayı zorlaştırır. RNN’leri dağıtmak özellikle zordur çünkü RNN’leri örnek bazında değerlendirmek, sıralı matris-vektör çarpımlarına dayanır; bu çarpımlar bant genişliği ile sınırlıdır ve paralelize edilmesi zordur.

Şekil 5: Belirli bir boyuttaki bir toplu işlemde bir isteğin işlenme olasılığı

Bu sorunların üstesinden gelmek için, kullanıcı isteklerinden gelen veri akışlarını gruplar halinde toplayan ve bu gruplar üzerinde ileri yayılım gerçekleştiren Batch Dispatch adlı bir gruplama zamanlayıcısı geliştirdik. Bu durumda, artan grup boyutu ve dolayısıyla artan verimlilik ile artan gecikme arasında bir denge söz konusudur. Kullanıcı isteklerini büyük bir grup oluşturmak için ne kadar çok biriktirirsek, kullanıcıların sonuçlarını bekleme süresi de o kadar uzun olur. Bu durum, gerçekleştirebileceğimiz gruplama miktarına sınırlamalar getirir.

Önceki grup tamamlanır tamamlanmaz, o ana kadar ne kadar iş hazır olursa olsun, her grubu hemen işleyen bir hızlı gruplama yöntemi kullanıyoruz. Bu zamanlama algoritması, grup boyutunu maksimize etmeye çalışmadığından, hesaplama açısından daha az verimli olsa da son kullanıcı gecikmesini azaltmada en iyi sonucu vermiştir.

Şekil 5, tek bir NVIDIA Quadro K1200 GPU üzerinde çalışan ve 10–30 eşzamanlı kullanıcı isteği alan üretim sistemimizde, bir isteğin belirli bir boyuttaki bir grupta işlenme olasılığını göstermektedir. Beklendiği gibi, sunucu yoğun olarak kullanıldığında gruplama en iyi şekilde çalışır: Yük arttıkça, dağılım büyük gruplarda isteklerin işlenmesini destekleyecek şekilde değişir. Ancak, yalnızca 10 eşzamanlı kullanıcı isteği gibi hafif bir yükle bile, sistemimiz işlerliğin yarısından fazlasını en az 2 örnek içeren gruplar halinde gerçekleştirmektedir.

Şekil 6: Sunucu yüküne bağlı olarak medyan ve %98 gecikme süreleri.

Şekil 6'da, sistemimizin 10 eşzamanlı akışla yüklendiğinde, ortalama gecikme süresinin 44 ms ve %98'lik gecikme süresinin 70 ms olduğunu görüyoruz. Sunucudaki yük arttıkça, toplu iş planlayıcısı işleri daha verimli gruplara kaydırarak gecikmeyi düşük tutar. Bu, Batch Dispatch’in bu büyük modellerin yüksek verimlilik ve düşük gecikme süresiyle dağıtılmasını mümkün kıldığını gösterir.

Şekil 7: A, 2560 × 2560 boyutunda bir matris ve x, Batch boyutu ∈ [1, 10] olacak şekilde 2560 × Batch boyutunda bir matris olmak üzere, Ax = b hesaplayan çekirdeklerin karşılaştırması. Tüm matrisler yarı hassasiyetli formatta.

7.2 Dağıtım Optimize Edilmiş Matris Çarpma Çekirdekleri

Şunu bulduk: Modellerimizi yarı-hassasiyetli (16-bit) kayan nokta aritmetiği kullanarak dağıtmak, tanıma doğruluğunu ölçülebilir şekilde değiştirmemektedir. Dağıtım, ağ ağırlıklarında herhangi bir güncelleme gerektirmediği için, eğitimden çok daha az sayısal hassasiyete duyarlıdır. Yarı-hassasiyetli aritmetik kullanmak bellek alanı ve bant genişliği tasarrufu sağlar, bu da dağıtım için özellikle faydalıdır çünkü RNN değerlendirmesi, ağırlık matrislerini önbelleğe alma ve akışa alma maliyeti tarafından domine edilir.

Bölüm 7.1’de görüldüğü gibi, dağıtım sırasında kullanılan yığın boyutu, eğitimdeki yığın boyutundan çok daha küçüktür. Bu yığın boyutunda standart BLAS kütüphanelerinin verimsiz olduğunu bulduk. Bunun üstesinden gelmek için, kendi yarı-hassasiyetli matris-matris çarpma çekirdeğimizi yazdık. 10 eşzamanlı akış için yığınların %90’ından fazlası N ≤ 4 için geçerlidir, bu durumda matris çarpımı bant genişliği ile sınırlıdır. A matrisini, yükleme sonrası transpozisyonu önleyerek mümkün olan en geniş vektör yüklemelerini kullanarak bant genişliğini maksimize etmek için transpoze edilmiş şekilde depolarız. Her warp, tüm N çıktı sütunları için dört satır çıktı hesaplar. N ≤ 4 olduğunda B matrisi tamamen L1 önbelleğine sığar. Bu şema, N ≤ 4 için bant genişliğinin %90’ına ulaşır ancak B matrisi L1 önbelleğine sığmamaya başladığında, N değeri arttıkça verimlilik düşer. Bununla birlikte, mevcut kütüphanelere kıyasla N = 10’a kadar gelişmiş performans sağlamaya devam eder.

Şekil 7, dağıtım çekirdeğimizin K1200 GPU’da, kullandığımız tüm yığın boyutları aralığında Nervana Systems [44] tarafından sağlanan çekirdeklerden daha yüksek bir hesaplama verimi sürdürdüğünü göstermektedir. Hem bizim çekirdeklerimiz hem de Nervana çekirdekleri, NVIDIA CUBLAS sürüm 7.0’dan önemli ölçüde daha hızlıdır; daha fazla ayrıntı için buraya bakabilirsiniz [20].

7.3 Işın Arama

Işın aramasını gerçekleştirmek, n-gram dil modeli içinde yinelemeli aramalar yapmayı gerektirir ve bunların çoğu bellekte önbelleğe alınmamış okumalara denk gelir. Işın aramasının doğrudan uygulanması, her zaman adımında her bir beam için karakter başına bir arama yapılmasını gerektirir. Mandarin dilinde, bu durum 40ms’lik konuşma verisi diliminde 1 milyonun üzerinde arama yapılmasına yol açar, bu da dağıtım için çok yavaştır. Bu sorunun üstesinden gelmek için, ışın aramasını daha da budamak amacıyla sezgisel bir yaklaşım kullanıyoruz. Işın’a eklenmeye uygun tüm karakterleri göz önünde bulundurmak yerine, birikimli olasılığı en az p olan en az sayıda karakteri dikkate alıyoruz. Pratikte, p = 0.99 değerinin iyi çalıştığını gördük. Ayrıca, en fazla 40 karakter ile kendimizi sınırlıyoruz. Bu, Mandarin dil modeli arama süresini 150 kat hızlandırır ve CER (Karakter Hata Oranı) üzerinde ihmal edilebilir bir etkiye sahiptir (%0.1–0.3 relatif).

7.4 Sonuçlar

Sistemimizi düşük gecikme süresi ve yüksek verimlilikle, çok fazla doğruluktan ödün vermeden kullanıma sunabiliriz. 2000 konuşmadan oluşan bir test setinde, araştırma sistemimiz %5,81 karakter hata oranına ulaşırken, devreye alınmış sistem %6,10 karakter hata oranı elde ediyor. Bu, devreye alınmış sistem için yalnızca %5'lik bir göreli düşüş anlamına geliyor. Bunu başarmak için, düşük dağıtım gecikmesine sahip bir sinir ağı mimarisi kullanıyor, ağımızın hassasiyetini 16-bit’e düşürüyor, RNN’leri daha verimli değerlendirmek için bir toplu planlayıcı oluşturuyor ve ışın arama maliyetini azaltmak için basit bir sezgi buluyoruz. Model, 2560 gizli birime sahip beş ileri yönlü yinelemeli katman, τ = 19 olan bir satırlık evrişim katmanı (Bölüm 3.7) ve 2560 gizli birime sahip bir tam bağlantılı katman içeriyor. Bu teknikler, Deep Speech’i etkileşimli uygulamalarda düşük maliyetle kullanıma sunmamıza olanak tanıyor.

8. Sonuç

Uçtan uca derin öğrenme, veri ve hesaplama gücündeki artışlarla konuşma tanıma sistemlerini sürekli olarak iyileştirmek için heyecan verici bir fırsat sunmaktadır. Gerçekten de, sonuçlarımız, önceki versiyona kıyasla Deep Speech’in daha fazla veri ve daha büyük modellerden yararlanarak insan çalışanlara kıyasla transkripsiyon performansındaki farkı önemli ölçüde kapattığını göstermektedir. Dahası, yaklaşım son derece genel olduğundan, yeni dillere hızlı bir şekilde uygulanabileceğini gösterdik. İki çok farklı dil, İngilizce ve Mandarin için yüksek performanslı tanıyıcılar oluşturmak, diller hakkında neredeyse hiçbir uzman bilgisi gerektirmedi. Son olarak, bu yaklaşımın, kullanıcı isteklerini bir GPU sunucusunda bir araya getirerek verimli bir şekilde dağıtılabileceğini de gösterdik; bu da uçtan uca Derin Öğrenme teknolojilerini kullanıcılara sunmanın yolunu açmaktadır.

Bu sonuçlara ulaşmak için çeşitli ağ mimarilerini inceledik ve birkaç etkili teknik bulduk: SortaGrad ve Batch Normalization ile sayısal optimizasyonun iyileştirilmesi, İngilizce için bigram çıktılı daha büyük adımlarla RNN’lerin değerlendirilmesi ve çift yönlü ve tek yönlü modellerin araştırılması. Bu keşif, büyük veri setlerimiz üzerinde yeni, tam ölçekli modelleri sadece birkaç gün içinde eğitmemizi sağlayan iyi optimize edilmiş bir Yüksek Performanslı Hesaplama eğitim sistemi tarafından desteklendi.

Genel olarak, sonuçlarımızın, konuşma tanıma için uçtan uca Derin Öğrenme yöntemlerinin değerini çeşitli ortamlarda doğruladığına ve örneklediğine inanıyoruz. Sistemimizin insanlarla karşılaştırılabilir olmadığı durumlarda bile, fark hızla azalmıştır ve bu büyük ölçüde uygulamaya özgü olmayan Derin Öğrenme teknikleri sayesindedir. Bu tekniklerin ölçeklenmeye devam edeceğine inanıyoruz ve bu nedenle, çoğu senaryoda insanları geride bırakan tek bir konuşma sistemi vizyonunun yakında gerçekleştirilebileceğini düşünüyoruz.

Kaynaklar

[1] Baidu Research — Silicon Valley AI Lab, (8 December 2015), Deep Speech 2: End-to-End Speech Recognition in English and Mandarin:

[https://arxiv.org/abs/1512.02595]

--

--

Cahit Barkin Ozer
Cahit Barkin Ozer

Written by Cahit Barkin Ozer

Üretken YZ başta olmak üzere teknoloji alanındaki yenilikleri öğrenip sizlerle paylaşıyorum. Youtube Kanalım: https://www.youtube.com/@cbarkinozer

No responses yet