Grafik BERT (NLP'de transfer öğrenimi)

Bu makale Jay Alammar'ın The Illustrated BERT, ELMo ve co. Blogundan çevrilmiştir. (How NLP Cracked Transfer Learning)

2018, makine öğrenimi modellerinin metni işlemesi için bir dönüm noktasıdır (daha doğrusu, doğal dil işleme veya kısaca NLP). Kelimeleri ve cümleleri temsil etmek için gizli anlambilim ve ilişkileri nasıl yakalayacağımız konusundaki anlayışımız da hızla gelişiyor. Buna ek olarak, NLP topluluğundaki bazı kişiler, ücretsiz olarak indirip kendi model ve ardışık düzenlerinizde kullanmanız için çok güçlü birçok modeli paylaştılar (bu, yıllar önce bilgisayar görüşünün hızlı gelişimine atıfta bulunan NLP'nin ImageNet anı olarak adlandırılır).

En son dönüm noktalarından biri, yeni bir NLP döneminin başlangıcı olarak kabul edilen BERT'nin piyasaya sürülmesidir. BERT, dil temelli birçok görevi kıran bir rekor. Makalenin yayınlanmasından kısa bir süre sonra, modelin ekibi de modelin kodunu açık kaynaklı ve büyük veri kümeleri üzerinde önceden eğitilmiş modelin indirilmiş bir sürümünü sağladı. Bu büyük bir gelişmedir çünkü doğal dil işleme için bir makine öğrenimi modeli oluşturmak isteyen herkesin, bu güçlü önceden eğitilmiş modeli kullanıma hazır bir bileşen olarak kullanmasına olanak tanır ve böylece modeli sıfırdan eğitme maliyetini düşürür. Gereken zaman, enerji, bilgi ve kaynaklar.

BERT'i kullanmak için iki adım. İlk adım: önceden eğitilmiş modeli indirin; ikinci adım: belirli bir göreve ince ayar yapın

BERT ayrıca Yarı Denetimli Sıralı Öğrenme (Andrew Dai ve Quoc Le tarafından), ELMo (Matthew Peters ve AI2 ve UW CSE'den araştırmacılar tarafından), ULMFiT (hızlı .ai kurucuları Jeremy Howard ve Daniel Sebastian Ruder), OpenAI transformatörü (OpenAI araştırmacıları Radford, Narasimhan, Salimans ve Sutskever tarafından) ve Transformer (Vaswani ve diğerleri), vb.

BERT'in ne olduğunu anlamak için birçok kavramı anlamamız gerekir. Öncelikle BERT'in ne kullandığını görmek daha iyi olacaktır.

1. Örnek: cümle sınıflandırması

En basit fikir, tek bir metni sınıflandırmak için BERT kullanmaktır. Model şuna benzer:

Böyle bir modeli eğitmek için, bir sınıflandırıcıyı eğitmeye odaklanmanız gerekir ve eğitim aşamasında BERT modelinde yapılan değişiklikler çok küçüktür. Bu eğitim sürecine ince ayar denir ve kökleri Yarı Denetimli Sıralı Öğrenme ve ULMFiT'dir.

Bu konsepte aşina olmayanlar için, sınıflandırıcıları tartıştığımız için, bu görev makine öğreniminde denetimli öğrenmeyi içerir. Bu, böyle bir modeli eğitmek için etiketli bir veri setine ihtiyacımız olduğu anlamına gelir. İstenmeyen posta sınıflandırmasını örnek olarak alırsak, etiketli veri kümesi bir e-posta mesajları listesi ve bir etiket ("istenmeyen posta" veya "istenmeyen posta değil" olarak etiketlenir) olacaktır.

Benzer görev senaryoları şunları içerir:

  • duygu analizi
  • Giriş: Bir film incelemesi / ürün incelemesi.
  • Çıktı: pozitif mi, negatif mi?
  • Veri kümesi, örneğin: SST
  • Doğruluk kontrolü
  • Girdi: bir cümle.
  • Çıktı: Bu bir iddia mı
  • Daha zor görevler:
  • Girdi: bir iddia.
  • Çıktı: doğru veya yanlış
  • Full Fact organizasyonu otomatik bir doğruluk kontrol aracı oluşturdu. Bu aracın akışı, iddiaları tespit etmek için haber makalelerini okuyan bir sınıflandırıcı içerir.
  • Video: Otomatik doğruluk kontrolü için cümle yerleştirme-Lev Konstantinovskiy.

İki, model mimari

Artık BERT için bir kullanım örneğiniz olduğuna göre, nasıl çalıştığını daha iyi anlayalım.

Google, gazetede farklı model boyutlarında iki BERT'den bahsetti:

  • BERT BASE - Ölçek, performans karşılaştırması için uygun olan OpenAI Transformer modeline benzer
  • BERT LARGE-Birden fazla kıyaslamanın mevcut SOTA'sına ulaşan devasa bir model

BERT temelde eğitimli bir Transformer kodlayıcı yığınıdır. Transformer'in içeriği için lütfen Illustrating Transformer blog gönderisine bakın. Transformatör, BERT'in temelidir ve bu kavramı da aşağıda ele alacağız.

BERT modellerinin her iki ölçeğinde de birçok kodlayıcı katmanı vardır (kağıtta "Transformatör blokları" olarak anılır) -BERT Base'de bu tür 12 yapı vardır ve BERT Large'da 24 vardır. Kodlayıcıda ileri beslemeli ağlar da vardır (BERT Base'de 768 gizli katman nöronu ve BERT Large'da 1024 gizli katman nöronu) ve dikkat katmanında Transformer kağıdına göre daha fazla dikkat katmanı kullanılır. "Kafa" (BERT Tabanı 12 "kafaya" sahiptir ve BERT Büyük 16'ya sahiptir).

Model girişi

Giriş sırasının ilk simgesi, CLS'nin sınıf anlamına geldiği özel bir semboldür.

Tıpkı Transformer'in kodlayıcısı gibi, BERT girdi olarak bir kelime dizisini alır ve bu kelimeler kodlayıcı yığınında sürekli olarak akar. Her katmanın bir öz-dikkat katmanından ve ileri beslemeli bir ağdan geçmesi ve ardından bunu bir sonraki kodlayıcıya vermesi gerekir.

Mimari açıdan şu ana kadar Transformer ile aynıdır (bazı hiperparametreler hariç). Ardından, çıktı tarafında, onunla Transformer arasındaki farkı göreceğiz.

Model çıktısı

Her konum uygun şekilde, boyutu hidden_size (BERT Tabanında 768) olan bir vektör çıkarır. Daha önce bahsedilen cümle sınıflandırma örneği için, yalnızca ilk konumun çıktısına (yani, sembolle değiştirilen konuma) odaklanıyoruz.

Bu çıktı vektörü artık seçtiğimiz sınıflandırıcıya girdi olarak kullanılabilir. Kağıt, daha iyi sınıflandırma sonuçları elde etmek için sınıflandırıcı olarak tek katmanlı bir sinir ağı kullanıyor.

Daha fazla etiketiniz varsa (örneğin, bir e-posta servis sağlayıcısıysanız, e-postaları "spam", "spam olmayan", "sosyal" ve "promosyonlar" vb. Olarak işaretlemeniz gerekir), siz Sadece sınıflandırıcının bu bölümünün ağını daha fazla çıkış nöronuna sahip olacak şekilde ayarlayın ve ardından softmax'ı geçin.

Üç, evrişimli ağ ile paralel

CV geçmişine sahip kişiler için bu vektör aktarımı, VGGNet gibi bir ağın evrişimli kısmı ile ağ yapısının sonundaki tam bağlantılı katman arasında olanları anımsatmalıdır.

Dördüncüsü, yeni yerleşik temsil çağı

Bu yeni keşifler, metin kodlama yöntemlerinde yeni değişiklikler getirdi. Şimdiye kadar, çoğu NLP modelinde, kelime gömme temel bir metin temsil yöntemi olmuştur. Word2Vec ve Glove gibi yöntemler bu tür görevlerde yaygın olarak kullanılmaktadır. Önce bunları nasıl kullanacağımızı gözden geçirelim.

Kelime yerleştirmeyi özetleyin

Makine öğrenimi modelinin kelimeleri işleyebilmesi için, modelin hesaplamalarda kullanılabilmesi için metni sayılar şeklinde temsil etmemiz gerekir. Word2Vec kullanarak, kelimeleri temsil etmek için bir vektör kullanabiliriz ve bu vektör aynı zamanda belirli anlamsal bilgileri de ("Stockholm" ile "İsveç" arasındaki ilişki "Kahire" ve "Mısır" arasındaki ilişkiye eşdeğerdir) ve gramer bilgilerini yakalar. , Veya dilbilgisine dayalı ilişkiler (örneğin, "vardı" ve "sahip" arasındaki ilişki, "oldu" ve "eşittir" arasındaki ilişki ile aynıdır).

İnsanlar, modeli küçük bir veri seti üzerinde sıfırdan eğitmek yerine, kelime yerleştirmeyi öğrenmek için ön eğitim için büyük miktarda metin verisi kullanmanın iyi bir fikir olduğunu çabucak anladılar. Önceden eğitilmiş Word2Vec veya GloVe'yi indirebilirsiniz. Aşağıda, GloVe eğitimi ile elde edilen "çubuğa" karşılık gelen vektör temsilidir (gömme vektör boyutu 200'dür).

Büyük boyutlar nedeniyle, sonraki makalelerde vektörleri temsil etmek için aşağıdaki şekiller kullanılacaktır:

ELMo: Bağlamın önemi

GloVe tarafından eğitilen vektörü, örneğin "sopa" nın temsili gibi bir kelime olarak kullanırsak, bu temsil, bağlam ne olursa olsun aynıdır. Bazı çalışmalarda (Peters vd., 2017, McCann vd., 2017, Peters vd., 2018 ELMo makalesinde), araştırmacılar "sopa" gibi kelimelerin aslında çok fazla anlamı olduğuna inanıyor. Ne anlama geldiği, kullanıldığı bağlama bağlıdır. Öyleyse neden bir kelimenin bağlamına göre gömülü temsilini öğrenmiyorsunuz? Yani, kelimenin bağlamının anlamını öğrenin ve diğer bağlamsal bilgileri öğrenin. Bu bağlamda, bağlamsallaştırılmış kelime gömme modeli ortaya çıkmıştır.

Bağlamsallaştırılmış kelime gömme modeli, bir kelimenin bağlamının anlamına dayalı olarak bir kelimenin vektör temsilini verebilir (https://www.youtube.com/watch?v=OwwdgsN9wF8)

ELMo, her kelime için sabit bir gömme kullanmaz, bunun yerine her kelimeye gömme atamadan önce tüm cümleye bakar. Bu yerleştirmeleri oluşturmak için göreve özgü çift yönlü LSTM kullanır.

ELMo, bağlamda ön eğitim için önemli fikirler sağlar. ELMo LSTM, büyük veri kümeleri üzerinde eğitilebilir ve daha sonra diğer doğal dil görevlerini işlemek için diğer modellerin bir parçası olarak kullanılabilir.

ELMo'nun sırrı nedir?

ELMo, bir kelime dizisindeki bir sonraki kelimeyi tahmin etmek için eğitim alarak dili anlar - bu göreve Dil modelleme . Bu çok kullanışlıdır, çünkü büyük miktarda metin verisine sahibiz, böyle bir model ek etiketlere ihtiyaç duymadan bu verilerden öğrenebilir.

ELMo'nun ön eğitiminin bir adımı: "Devam edelim" girdisi verildiğinde, bir sonraki kelimeyi tahmin et Bu, dil modelinin görevidir. Model, büyük bir külliyat üzerinde önceden eğitildiğinde, dil modelini öğrenecektir. Bu örnekte bir sonraki kelimeyi doğrudan doğru bir şekilde tahmin etmek pek olası değildir. Daha pratik olarak, "asmak" gibi bir kelimeden sonra, "kameraya" daha yüksek bir olasılık atamak yerine, "dışarı" gibi bir kelimeye ("takılmak" için) daha yüksek bir olasılık atayacaktır.

Her LSTM zaman adımının gizli durumunun ELMo'nun "başının" arkasından çıktığını görebiliriz. Bu vektörler, ön eğitimden sonra yerleştirme sürecinde kullanışlı olacaktır.

ELMo aslında bir adım daha ileri gitti ve iki yönlü bir LSTM eğitti - böylece dil modeli sadece bir sonraki kelimeyi değil, aynı zamanda önceki kelimeyi de tahmin edebilir.

(https://www.slideshare.net/shuntaroy/a-review-of-deep-contextualized-word-representations-peters-2018) ELMo'da

ELMo, gizli durumu (ve ilk yerleştirmeyi) belirli bir şekilde (eklemeden sonra ağırlıklı toplama) birleştirerek bağlamsallaştırılmış kelime yerleştirmeyi önerir.

5. ULM-FiT: NLP'de transfer öğrenmeyi anlama

ULM-FiT, modelin eğitim öncesi öğrendiklerini etkili bir şekilde kullanmak için bazı yöntemler sunar - yalnızca yerleştirme değil, aynı zamanda bağlamsallaştırılmış yerleştirme sunumu. ULM-FiT, çeşitli görevler için dil modelini etkili bir şekilde ince ayar yapmak için bir dil modeli ve bir dizi prosedür sunar.

NLP nihayet CV gibi transfer öğrenmeyi gerçekleştirmenin bir yolunu buldu.

6. Transformatör: LSTM'nin Ötesinde

Transformer'in kağıtlarının ve kodlarının piyasaya sürülmesinin yanı sıra makine çevirisi gibi görevlerdeki başarıları, sektördeki bazı insanları bunun LSTM'nin yerini alacağını düşündürmeye başladı. Transformer, uzun vadeli bağımlılıkları LSTM'den daha iyi idare edebilir.

Transformatörün kodlayıcı-kod çözücü yapısı, onu makine çevirisi için ideal bir model haline getirir. Fakat cümleleri sınıflandırmak için onu nasıl kullanırsınız? Diğer özel görevler için dil modelinde nasıl ince ayar yapacaksınız?

7. OpenAI Transformer: Dil modelleme için Transformer kod çözücüyü önceden eğitin

Tam bir Transformer olmadan öğrenmeyi aktarabileceğimiz ve ince ayar yapabileceğimiz ortaya çıktı. Transformer'in kod çözücüsünü kullanabiliriz. Kod çözücü iyi bir seçimdir çünkü sonraki kelimeleri engelleyebilir (bu, kelime kelime çeviri yaparken çok kullanışlı bir özelliktir).

OpenAI Transformer, Transformer'in kod çözücü yığınından oluşur

Bu model 12 kod çözücü katmanını istifler. Bu tasarımda kodlayıcı olmadığından, bu kod çözücü katmanları Transformer metninde kodlayıcı-kod çözücü dikkat alt katmanına sahip olmayacaktır. Bununla birlikte, hala bir öz-ilgi katmanı var.

Bu yapıyla, modeli aynı dil modelleme görevi üzerinde eğitmeye devam edebiliriz: sonraki kelimeyi tahmin etmek için büyük miktarda (etiketlenmemiş) metin kullanın. Sadece 7000 kitabın metnini modele atın ve öğrenmesine izin verin! Kitaplar bu tür görevler için harikadır çünkü modelin eğitim için tweet veya makale kullandığınızda elde edemeyeceğiniz ilişkili bilgileri öğrenmesine olanak tanır.

OpenAI Transformer artık bir sonraki kelimeyi tahmin etmek için eğitilmeye hazır

8. Transfer öğrenimini aşağı akış görevlerinde kullanın

Artık OpenAI Transformer önceden eğitildiğine ve çeşitli katmanları ayarlandığına göre, onu aşağı akış görevlerinde kullanmaya başlayabiliriz. Önce cümle sınıflandırmasına bir göz atalım (e-posta mesajlarını "spam" veya "spam olmayan" olarak sınıflandırın):

Cümle sınıflandırması yapmak için önceden eğitilmiş bir OpenAI transformatörü nasıl kullanılır

OpenAI belgesi, farklı görev türleri için girdileri işlemek için kullanılan birçok girdi dönüşümünü listeler. Aşağıdaki şekil, modelin yapısını ve farklı görevleri yerine getirirken girdi dönüşümünü gösterir.

Dokuz, BERT: kod çözücüden kodlayıcıya

openAI Transformer, Transformer'a dayalı olarak ince ayarlanabilir, önceden eğitilmiş bir model sunar. Ancak LSTM'yi Transformer olarak değiştirmek yine de bir şeyleri eksik yapar. ELMo'nun dil modeli çift yönlüdür, openAI Transformer ise yalnızca soldan sağa bir dil modeli eğitir. Öyleyse, soldan sağa ve sağdan sola tahmin edebilen (aynı zamanda yukarı ve aşağı sınırlamalarına tabi olan) Transformer tabanlı bir model oluşturabilir miyiz?

MLM dil modeli

BERT, "Transformer kodlayıcı kullanacağız" dedi.

"Bu çılgınlık," dedi biri, "herkes iki yönlü şartlandırmanın her bir kelimenin kendisini çok seviyeli bir bağlamda görmesini sağlayacağını biliyor."

"Maske kullanacağız," dedi BERT kendinden emin bir şekilde.

BERT, giriş sırasının% 15'inde jetonların% 15'ini maskeler ve ardından modelin bu maskelenmiş konumlarda hangi kelimelerin olduğunu tahmin etmesine izin verir.

Transformer'in kodlayıcı yığınını eğitmek için uygun bir görev bulmak karmaşık bir sorundur BERT, bu sorunu çözmek için ilk literatürdeki (cloze task) "maskeli dil modeli" kavramını kullanır.

Girişin% 15'ini korumaya ek olarak, BERT ayrıca modelin ince ayarını iyileştirmek için bir şeyler karıştırır. Bazen rastgele bir kelimeyi başka bir kelimeyle değiştirir ve modelin o konumda doğru kelimeyi tahmin etmesine izin verir.

İki cümle görevi

OpenAI Transformer tarafından farklı görevleri işlerken yapılan girdi dönüşümlerini hatırlarsanız, bazı görevlerin modelin iki cümle hakkındaki bilgileri işlemesini gerektirdiğini fark edeceksiniz (örneğin, bir cümlenin başka bir cümlenin açıklaması olup olmadığı; örneğin, bir Wikipedia varsayalım) Girdi olarak girdi ve bu girdi hakkında başka bir girdi olarak bir soru. Bu soruyu cevaplayabilir miyiz?)

BERT'in birden çok cümle arasındaki ilişkiyi daha iyi ele alabilmesi için, eğitim öncesi süreçte ek bir görev vardır: iki cümle verildiğinde (A ve B), B, A'dan sonra görünen cümle olabilir mi?

BERT ön eğitiminin ikinci görevi, iki cümleden oluşan sınıflandırma görevidir.

Belirli görevleri çözmek için modeller

BERT belgesi, BERT'nin farklı görevlerde uygulanmasını gösterir.

Özellik çıkarma için BERT

BERT'i kullanmanın tek yolu ince ayar yöntemi değildir. Tıpkı ELMo gibi, bağlamsal kelime düğünleri oluşturmak için önceden eğitilmiş BERT'i de kullanabilirsiniz. Ardından, bu gömme temsillerini mevcut modele besleyebilirsiniz - kağıt ayrıca NER gibi görevlerde bu kullanımın nihai etkisinin ince ayar yönteminin sonucundan çok daha kötü olmadığından da bahsetti.

Bağlamsal yerleştirme olarak en çok hangi vektör işe yarar? Sanırım özel göreve bağlı. Kağıt, 6 seçeneği karşılaştırır (ince ayardan sonra 96,4 noktalı modelle karşılaştırıldığında):

Ten, BERT'i yürüyüşe çıkar

BERT'yi denemenin en iyi yolu, Google Colab'da barındırılan Cloud TPU'lar ile BERT FineTuning'dir. Daha önce hiç Cloud TPU kullanmadıysanız, bu aynı zamanda onları denemek için iyi bir başlangıçtır ve BERT kodu TPU, CPU ve GPU üzerinde de çalışabilir.

Sonra, BERT kod uygulamasına bakabilirsiniz:

  • Model, modeling.py'de (sınıf BertModel) tanımlanmıştır ve yerel Transformer kodlayıcıya çok benzer.
  • run_classifier.py, ince ayar işlemine bir örnektir. Bir sınıflandırma katmanı oluşturulur. Kendi sınıflandırıcınızı oluşturmak istiyorsanız, dosyadaki create_model () yöntemine bakabilirsiniz.
  • Önceden eğitilmiş bazı modeller indirilebilir. Bunlara BERT Base ve BERT Large'ın yanı sıra Wikipedia'da Çince ve İngilizce gibi 102 dilde önceden eğitilmiş modeller dahildir.
  • BERT, kelimeleri doğrudan işlemez ancak belirteç olarak WordPieces'i kullanır. tokenization.py, kelimeleri wordPieces'e dönüştürebilen bir betiktir.

Ayrıca BERT'nin PyTorch uygulamasına da başvurabilirsiniz. AllenNLP, diğer modellerin BERT yerleştirmeleri ile temsil edilmesine izin vermek için bu kodu kullanır.

Transfer: https://www.cnblogs.com/d0main/p/10165671.html

Dahi bir kız, Wu Junmei ve David'i olay yerinde tartışmaya kışkırtır.
önceki
Pingxiang, Hebei: "Buğday Tarlası Kontrolü" gelirin artmasına yardımcı oluyor
Sonraki
Dağıtılmış kilit ilkelerini öğrenme ve düşünme-redis dağıtılmış kilit, zookeeper dağıtılmış kilit
İlkokul oluşumu, Halk Donanmasına haraç vermek için "Deniz Geçidi" düzenledi
"Like You Me Too" da kabin atmosferi donma noktasına geldi .. Erkek konuk neden öfkeyle ayrılıyor?
Saf kuru ürünler | Şimdiye kadar gördüğüm daha kapsamlı BERT ürünleri, şiddetle tavsiye edilir
Hızlı yaşlanmana şaşmamalı! Ama çoğu insan sık sık ...
Transformer ve BERT Üzerine Kısa Bir Konuşma
Ne dağınıklık! Havaalanının camı hayranlar tarafından parçalandı ve Kamu Güvenliği Bakanlığı yardım edemedi ama konuştu
Saf kuru ürünler | Boosting ailesinin Adaboost algoritması
Akşam saat 2'de Zhejiang'lı bir kadın 120'yi aradı, ama ambulanstan çıkan kocasıydı! orijinal
Öneri algoritması yeterince doğru değil mi? Bilgi grafiği çözsün
Kar düştü! Bu yıldız şirkete ne oldu
Borsa birçok iyi hafta sonunun ardından neden düştü?
To Top