Kara kutu dil modelinin anlaşılması nasıl kolaylaştırılır?

Tam metin 3608 Kelimeler, tahmini öğrenme süresi 10 Dakika veya daha uzun

Resim kredisi: Pawe Durczok / Unsplash

Makinenin metni okuma şeklini görselleştirmek için, bu makale metin modelinin nerede "okuduğunu" belirlemek ve metinde bahsedilen kahvenin hafif kavrulmuş mu yoksa koyu kavrulmuş mu olduğunu belirlemek için bir ısı haritası oluşturacaktır.

Yıllar geçtikçe, bilgisayarla görme görevlerinde sürekli olarak Evrişimli Sinir Ağlarını (CNN) geliştirdik ve bu da aşağıdaki alanlarda büyük gelişmeler sağladı:

· Modelin sağlamlığını artırdı

· Model sapmasını görselleştirin ve azaltın

· Rakip görüntülerin derin öğrenme modellerinin çıktılarını nasıl değiştirdiğini daha iyi anlayın

Şimdi daha iyi model anlayışı bu kadar bariz faydalar getirdiğine göre, modellerin yorumlanabilirliğine neden doğal dil işleme (NLP) alanında aynı önem verilmiyor?

Yukarıdaki resim, sinir ağının dambıl hakkında düşündüğü şeydir. Bu örnekte, modelin insan kolunu dambıldan ayırmadığını, dolayısıyla modelin halterin genel şekline tam olarak nüfuz etmediğini unutmayın. (Google Yapay Zeka Blogu tarafından sağlanan resim)

CNN odak konumunu görselleştirin

Bu makale, vizyona dayalı olarak CNN'nin odak konumunu anlamak için kullanılan teknolojiyi metin tanımaya uygulayacak ve ardından sınıflandırma için giriş metninin belirli bir alanında CNN'nin odak konumunu gösteren bir ısı haritası oluşturacaktır.

GPT-2, BERT, ELMo ve diğer modellerin oldukça geliştirildiği bu çağda, CNN biraz yetişemedi. Bununla birlikte, CNN gerçek uygulamalarda hala iyi bir performansa sahiptir ve bazı gelişmiş modeller gibi büyük boyut, uzun çıkarım süresi ve büyük bellek ayak izi gibi dezavantajlara sahip değildir.

Kahvenin nasıl kavrulacağını tahmin edin:

Bu örneği size göstermek için, önce genel bir sınıflandırıcı oluşturun ve kahvenin açık kavrulmuş mu yoksa koyu kavrulmuş mu olduğunu anlamak için onun açıklamasını kullanın.

Veri seti birçok kahve değerlendirmesini içerir. Örnek kahvenin hafif kavrulmuş mu yoksa koyu kavrulmuş mu olduğunu anlamak için aşağıdaki tablodaki kahvenin kör tadım kaydını kullanmaya çalışacağız.

Aşağıda, Keras'ta bir CNN oluşturmak ve verileri eğitmek için kod verilmiştir:

X = df.blind_assesment.values y = df.y.values tokenizer = Tokenizer (num_words = 4000) tokenizer.fit_on_texts (X) X = tokenizer.texts_to_sequences (X) vocab_size = len (tokenizer.word_index) + 1 # Ayrılmış 0 indeksi nedeniyle 1 ekleniyor maxlen = 200 embedding_dim = 50 X = pad_sequences (X, padding = 'post', maxlen = maxlen) Sequence_input = layer.Input (şekil = (maxlen,), dtype = 'int32') embedded_sequences = layerlar. l_cov1 = layer.Conv1D (317, 3, aktivasyon = 'relu') (embedded_sequences) l_pool1 = layer.MaxPooling1D (2) (l_cov1) l_cov2 = layer.Conv1D (317, 1, aktivasyon = 'relu') (l_pool1) l_cov3 = layer.Conv1D (317, 2, aktivasyon = 'relu') (l_cov2) l_pool3 = layer.GlobalMaxPooling1D () (l_cov3) # global maksimum havuzlama l_bnorm = layer.BatchNormalization () (l_pool3) l_dense = layer.Dense (128, activation = 'relu') (l_pool3) preds = layer.Dense (1, activation = 'sigmoid', name = 'preds') (l_dense) model = Model (sequ_input, outputs = preds) model.compile (optimize edici = 'adam', kayıp = 'binary_crossentropy', metrics =) model.summary () model.fit (X, y, epochs = 3, validation_split = 0.1, batch_size = 10)

Keras'taki model bundan biraz farklı görünüyorsa, bunun nedeni Keras'ın işlevsel bir uygulama programlama arayüzü kullanmasıdır (https://keras.io/getting-started/functional-api-guide/). Bu kod, modeli eğitir ve uyarlar ve doğrulama verileriyle ilgili eğitimin doğruluğu yaklaşık% 75-% 80'dir. CNN metin sınıflandırıcılarının oluşturulmasıyla ilgili birçok makale var ve bunları burada detaylandırmayacağım. Bu makale, bu sınıflandırıcı tarafından yapılan tahminlerin nasıl yorumlanacağına odaklanacaktır.

Aktivasyon haritası oluşturun:

Keras'ı kullanmak hızlı ve kolaydır, yalnızca birkaç satır kod gerektirir.

1. Model tahminini ve CNN'nin son çıktı katmanını alın.

Model yapısının dökümünü almak için Keras'ta model.summary () işlevini kullanabilirsiniz. Diyagramda, conv1d_45, modeldeki son CNN katmanının adıdır.

Aşağıdaki kod yalnızca tahmin edilen kategoriyi değil, aynı zamanda CNN'nin son katmanını da alabilir:

class_idx = np.argmax (y_pred) # sadece iki sınıf olduğu için bu durumda gerekli değildir class_output = model.output last_conv_layer = model.get_layer ("conv1d_45")

2. Özellik haritasına göre çıktı kategorisini hesaplayın ve tüm gradyanları bir araya toplayın.

Bu karmaşık görünse de, aslında Keras arka uç işlevlerini kullanmak için yalnızca birkaç satır kod gerektirir:

grads = K.gradients (class_output, last_conv_layer.output) pooled_grads = K.mean (mezun) yineleme = K.function (,) pooled_grads_value, conv_layer_output_value = iterate ()

3. Özellik haritalarının ortalamasını alın ve 0 ile 1 arasına normalleştirin (düzenleyin).

heatmap = np.mean (conv_layer_output_value, axis = -1) ısı haritası = np.maximum (ısı haritası, 0) heatmap / = np.max (ısı haritası) # tahmindeki değerleri normalleştir

Şimdi, CNN son katmanının çıktı şeklinin boyutundan elde edilen tahmin edilen kategoriye dayalı bir aktivasyon ısı haritası elde edilir. Daha sonra, hangi kelimelerin sinir ağını tetiklediğini anlamak için boyutu yalnızca ilk giriş bilgilerinin uzunluğuna (kelime sayısı) göre yeniden ayarlamanız (uzatmanız) gerekir.

Çıktı sonuçlarını Köprü Metni Biçimlendirme Dili (HTML) ile görselleştirin

Son tahmine bazı temel hiper metin biçimlendirme dili eklemek, modelin nasıl tahminler yaptığını anlama yeteneğini artırırken çok etkili bir kullanıcı arabirimi oluşturabilir.

norm_len = maxlen / last_conv_layer.output_shape # metnin konv katmanı uzunluğuna oranını bulun html = "" y_pred ise > 0.5: pred = 'ışık' Başka: pred = 'karanlık' html + = " < açıklık > < h3 > Açıklamaya göre, model bunun bir {} kahve kavurması. ".Format (önceden) olduğuna inanmaktadır. html + = " < küçük > < br > Güven:% {: .0f} < br > < br > < /küçük > < / h3 > < / span > ".format (abs (((y_pred * 100) -50) * 2)) j için i numaralandırmada (tokenizer.sequences_to_texts (Xtst) .split ()): html + = " < span style = 'background-color: rgba ({}, 0,150, {})' > {} < / span > ".format (ısı haritası * 255, ısı haritası-0.3, i) HTML (html)

Bu köprü metni biçimlendirme dili kod parçacığı, Google Colab'da aşağıdaki çıktıyı verir:

Buradan modelin metni "anladığını" ve metinde anlatılan kahvenin biraz "tatlılık" ve "taze ekşilik" ile "yabani çilek" tadı olduğunu fark ettiğini görebiliriz, dolayısıyla model Olumlu (doğru) olarak onu hafif kavrulmuş kahve olarak değerlendirin.

Özet olarak, bu makale modelin tahminler (sınıflandırmalar) yaptığı alanların "okuyarak" kolayca nasıl vurgulanacağını açıklamaktadır. Bunun aşağıdakiler için önemli çıkarımları vardır:

1. Modelin temel hata ayıklama ve mantık testlerini gerçekleştirin.

2. Modelin eğitim örneklerini neden yanlış sınıflandırdığının daha iyi anlaşılması.

3. Olası model sapmalarını tespit edin.

Kod portalı:

https://colab.research.google.com/drive/1taIt9A9tsENJTYh3eK0ZuUyRIdrHeNty

Yorum Beğen Takip Et

AI öğrenme ve geliştirmenin kuru mallarını paylaşalım

Tam platform yapay zeka dikey öz medya "temel okuma" yı takip etmeye hoş geldiniz

Her gün 15 milyondan fazla çeşit malın fiyatları gözüküyor, bunu nasıl yaptım?
önceki
190623 Di Ali Gerba'nın "Extreme Challenge" kayıt fotoğrafı yayınlandı, Xiaobawang sebze pazarını süpürdü
Sonraki
WalkingPad yürüyüş makinesi A1 Pro değerlendirmesi: küçük ve depolanması kolay, sağlıktan "yürümek" kolay
190623 Arılar o kadar sefil ki, bir grup hayranın emecek otları yok ve sadece alçakgönüllülükle aşk paketleri gönderebiliyorlar
Sony, 3.500 $ fiyatla tam çerçeve amiral gemisi mikro-tekli A7R4: 61 milyon piksel yayınladı
"Paralel Vizyon" Geliyor: Huawei Tablet M6, Android Tablet Geliştirmenin Yeni Vizyonunu Açıyor
Huai'an, Jiangsu: Huai'an Kanal Köprüsü resmen açıldı
Teknik gönderi: Google, Facebook ve Amazon'dan nasıl teklifler aldım?
Xingu Kaiyuan K1 Şasi Değerlendirmesi: Açık ATX 3.0 Yeni Çağ
Mükemmelden zirveye, veri bilimciye giden yolunuz hala bu 13 beceriden eksik
Bugünün Temel Sesi | Yine mi karıştırıyorsun? FedEx, bir kullanıcı tarafından kontrol edilen bir Huawei cep telefonunu iade eder
En yüksek ödül 500.000! Danzhou polisi, 93 telekom dolandırıcılığı kaçağını tutukladığı için bir ödül teklif ediyor. Lütfen görürseniz polisi arayın
HUAWEI operasyondan şok oldu! 2799 yuan yeni makine, yüz gerdirmenize, bacakları inceltmenize ve germenize yardımcı olacak
Görmek gerekir! Tek bir makalede en gelişmiş gerçek zamanlı nesne algılama sistemi YOLO'da ustalaşın
To Top