Gizli katman temsillerini yerleştirerek sinir ağlarını anlama

Bu makale, Yapay Zeka Araştırma Enstitüsü tarafından derlenen, gizli temsilleri yerleştirerek Sinir Ağlarını Anlamak adlı orijinal bir blogdur ve yazarı Rakesh Chada'dır.

Çeviri | Yao Xiuqing Düzenleyen Ye Qing | Fan Jiang

Https://rakeshchada.github.io/Neural-Embedding-Animation.html adresinden çapraz gönderi.

Sinir ağlarını görselleştirmek her zaman ilginçtir. Örneğin, nöronal aktivasyonun görselleştirilmesi yoluyla büyüleyici iç farkındalıkları ortaya çıkardık. Denetimli öğrenmenin ayarlanması için, bir sinir ağının eğitim süreci, bir dizi girdi veri noktasını, doğrusal bir sınıflandırıcıyla ayrılabilen ve temsil edilebilen bir işleve dönüştürmek olarak düşünülebilir. Bu sefer, eğitim sürecine daha fazla dahili ayrıntı getirmek için görselleştirmeler oluşturmak için bu (gizli) temsilleri kullanmayı planlıyorum. Bu görselleştirme, sinir ağı performansıyla ilgili ilginç dahili ayrıntıları ortaya çıkarabilir.

Birkaç fikir için beyin fırtınası yaptım ve sonunda Andrej Karpathy'nin mükemmel çalışmasından büyük ilham aldım.

Fikir basittir ve aşağıdaki adımlarda kısaca açıklanabilir:

  • Bir eğitim ağı eğitin.

  • Eğitim tamamlandıktan sonra, doğrulama / test verilerindeki her veri noktası için son bir gizli gösterim (gömme) oluşturulur. Bu gizli gösterim, temelde sinir ağındaki son katmanın ağırlığıdır. Bu gösterim, verileri sınıflandıran sinir ağının yaklaşık bir temsilidir.

  • Görselleştirme amacıyla, bu ağırlıkların boyutlarını 2-B veya 3-B'ye düşürün. Ardından, uzayda nasıl ayrıldıklarını görmek için bu noktaları dağılım grafiğinde görselleştirin. T-SNE veya UMAP gibi popüler boyut azaltma tekniklerini kullanabiliriz.

  • Yukarıdaki çizim eğitimden sonraki veri noktalarını gösterse de, eğitim sürecinde veri noktalarının birden çok noktada görselleştirilmesinin ilginç bir uzantı olduğunu düşünüyorum. Ardından, her bir görselleştirmeyi ayrı ayrı inceleyebilir ve ilgili verilerin nasıl değiştiğine dair bazı ayrıntılar alabilirsiniz. Örneğin, eğitim tamamlanana kadar her dönemden sonra böyle bir görselleştirme oluşturabilir ve nasıl karşılaştırdıklarını görebiliriz. Bunun bir başka uzantısı da bu görsel animasyonların üretilmesi olacaktır. Bu, bu veri noktalarının statik bir görselleştirmesini alarak ve aralarına nokta ekleyerek noktadan noktaya geçişe neden olarak yapılabilir.

    Bu fikir beni heyecanlandırıyor, bu yüzden bu görselleştirmeleri oluşturmamızı sağlayan D3.js tabanlı bir Javascript aracı geliştirmeye devam ediyorum. Statik görselleştirmeler ve animasyonlar oluşturmamızı sağlar. Animasyon için, karşılaştırmak istediğimiz gizli temsilleri içeren iki csv dosyası yüklememiz gerekiyor ve bu dosyalar için animasyonlar oluşturabiliriz. Animasyonu da kontrol edebiliriz, böylece eğitim sırasında belirli bir veri noktası kümesinin nasıl hareket ettiğini gözlemleyebiliriz.

    Araca bağlantı: Nöral Gömme Animasyon Üreteci https://bl.ocks.org/rakeshchada/raw/43532fc344082fc1c5d4530110817306/

    Araç belgeleri: README https://bl.ocks.org/rakeshchada/43532fc344082fc1c5d4530110817306

    Bu kesinlikle karmaşık bir araç değildir. Sadece bazı düşüncelerimi hızlıca görselleştirmek istiyorum.

    Animasyon görselleştirmenin önemli bir özelliği - önceden açıklamalıyım - T-SNE / UMAP yürütüldükten sonra her 2-D / 3-D gösterimde tutarsızlıklar olacaktır. İlk olarak, hiperparametreler, rastgele tohumlar vb. Ayarlarken çok dikkatli olmalısınız. İkincisi, bildiğim kadarıyla T-SNE, farklı nesneleri belli bir mesafeden ayırırken, yakınlarda görünen benzer nesneleri yerleştirmeye çalışıyor. Bu nedenle, epoch1 ve epoch2 gibi iki görselleştirmeyi canlandırdığımızda, saf rastgeleliğin neden olduğu değişiklikler ile sinir ağının gerçek öğrenmesinden kaynaklanan ağırlık değişimlerini ayırt etmek kolay olmayabilir. Diğer bir deyişle, deneylerimde ilginç içgörüler elde etmeme yardımcı olmak için bazen makul animasyonlar yapabiliyorum.

    Bu görselleştirme çerçevesinin birkaç ilginç uygulaması vardır. Aşağıda, sınıflandırma sorununun bazı arka planı verilmiştir:

    • Modelin davranışını daha iyi anlayın. Verilerle

    • Sinir ağı eğitimi sırasında veri temsilindeki değişiklikleri anlayın

    • Hiperparametre değişiklikleri ve hatta mimari değişiklikleri dahil olmak üzere belirli bir veri kümesindeki modelleri karşılaştırın

    • Eğitim sırasında (ayarlama yaparken) yerleştirmenin zaman içinde nasıl değiştiğini anlayın

    Bu makalenin geri kalanı, yukarıdaki arka planı belirli örneklerle gösterir.

    Modelin davranışını daha iyi anlayın. Verilerle

    Kötü niyetli yorum sınıflandırma görevi

    Burada kullandığımız ilk örnek, bu aracı geliştirirken Kaggle'ın yaptığı bu ilginç doğal dil işleme yarışmasıdır. Amaç, metin yorumlarını toksik, müstehcen, tehdit edici, aşağılayıcı vb. Farklı kategorilere ayırmaktır. Bu çok etiketli bir sınıflandırma problemidir.

    Sinir ağı modelinde, basitten (evrişim / tekrarlama olmadan ileri beslemeli sinir ağları) karmaşık mimarilere kadar birçok mimariyi denedim. Sinir ağının son katmanında ikili çapraz entropi kaybı ve sigmoid aktivasyonu kullandım. Bu şekilde - çok etiketli sınıflandırmaya ulaşmak için her etiket için yalnızca iki olasılık çıktılar. Bu gösteriyi tamamlamak için eğitimsiz önceden eğitilmiş kelime yerleştirmeleriyle başlatılan çift yönlü LSTM'den gizli gösterimi kullanacağız.

    Bu yüzden yukarıdaki ile aynı adımları uyguladım - son katmandan doğrulama setindeki her bir metin ek açıklamasının gizli gösterimini ayıklamak, onları 2 boyuta düşürmek için T-SNE / UMAP gerçekleştirmek ve bunları görselleştirmek için aracı kullanmak. Her eğitim, durdurulmadan önce 5 dönem sürdü. UMAP kullanmanın bir avantajı, hızının bir sıra kadar artırılması ve yine de yüksek kaliteli performans üretebilmesidir. Google gerçek zamanlı TSNE yayınladı, ancak henüz araştırmadım.

    Bu, 5. çağın sonundaki görselleştirmenin yakınlaştırılmış bir sürümüdür. Görsel sınıf bir hakarettir. Yani kırmızı nokta bir hakaret ve yeşil nokta bir hakarettir.

    Kötü niyetli yorum sınıflandırma görevinin beşinci döneminden sonraki gizli temsil.

    İlginç bir yerle başlayalım ve yukarıdaki mavi okların işaret ettiği iki noktaya bakalım. Biri hakaret, diğeri değil. Metin ne diyor?

    Metin 1 (mavi oklu yeşil nokta): "Saçmalık, saçmalık, saçmalık, pislik."

    Metin 2 (mavi oklu kırmızı nokta): "Senden nefret ediyorum, senden nefret ediyorum, senden nefret ediyorum, senden nefret ediyorum, senden nefret ediyorum, senden nefret ediyorum, senden nefret ediyorum".

    Modelin tekrarlanan iki metni nasıl bir araya getirdiği ilginçtir. Ve hakaret kavramı burada çok ince görünüyor!

    Kırmızı yıldız kümesinin ortasındaki bazı yeşil noktalara da merakla baktım. Model neden onlar tarafından karıştırılıyor? Metinleri nasıl görünecek? Örneğin, yukarıdaki resimde siyah okla gösterilen noktadaki metindir:

    "Bana baş belası deme, onun gibisin, XYZ gibi ırkçı bir sağcısın" (sansür ve isim ihmalleri benimdir - metinde yoklar).

    Bu bir hakaret gibi görünüyor - bu yüzden kötü bir etiket gibi görünüyor! Bunun yerine kırmızı nokta kullanılmalıdır!

    Belki tüm bu yanlış hizalamalar kötü etiketler değildir, ancak yukarıda da belirtildiği gibi, görselleştirme yoluyla verilerin tüm bu özelliklerine daha derine inebiliriz.

    Ayrıca bunun, belirteçleştirme / ön işleme gibi şeylerin model performansı üzerindeki etkisini bulmamıza yardımcı olduğunu düşünüyorum. Yukarıdaki 2. metinde, uygun noktalama işareti varsa, modele yardımcı olabilir - her "senden nefret ediyorum" dan sonra bir nokta olabilir. Başka örnekler de var, bence büyük harf kullanımı yardımcı olabilir.

    Yelp incelemesi duyarlılık sınıflandırma görevi

    Bu yöntemi farklı veri kümelerinde de denemek istiyorum. Bu yüzden Kaggle'dan yelp yorum veri setini seçtim ve basit bir duyarlılık sınıflandırıcı uygulamaya karar verdim. İşleri kolaylaştırmak için yıldız derecelendirmesini ikiliye çevirdim. Yani - 1, 2 ve 3 yıldız olumsuz, 4 yıldız ve 5 yıldız olumlu eleştirilerdir. Benzer şekilde, basit bir ileri beslemeli sinir ağı mimarisiyle başladım; bu, yerleştirmeler üzerinde işliyor, onları düzleştiriyor, tamamen bağlı katmana gönderiyor ve olasılıkları çıktılar. Bu, NLP sınıflandırma görevleri için alışılmadık bir mimaridir - ancak nasıl yapıldığını bilmek istiyorum. Erken durmadan önce 10 dönemlik eğitimi tamamladık.

    Bu, son çağ görselleştirmesinin içeriğidir:

    10. çağdan sonra sarı ikili duyarlılık sınıflandırma görevinin gizli temsili.

    Siyah okla gösterilen metin şöyle diyor:

    Buraya her gittiğimde yemek her zaman lezzetli oluyor. Ne yazık ki hizmet çok iyi değil. Bu yüzden, yemekleri sevdiğim için tekrar ziyaret ediyorum.

    Tarafsız ve hatta daha olumlu bir değerlendirme gibi görünüyor. Dolayısıyla modelin bu noktayı pozitif kategoride sınıflandırması mantıksız değildir. Ek olarak, bu model her kelimeyi ayrı ayrı işler (n-gram modeli yoktur), bu da modelin yukarıdaki "o kadar iyi değil" ifadesinde neden "hayır" kelimesini gözden kaçırdığını açıklayabilir. Aşağıda, yukarıdaki negatif noktalara en yakın pozitif noktaların metni bulunmaktadır.

    "Burayı seviyorum. Çok basit bir menüye sahip sade ramen, ancak her zaman lezzetli ve mükemmel servis eşlik ediyor. Fiyatlar makul ve atmosfer zarif. Kesinlikle yakındaki bir butik olarak sınıflandırın."

    Modelin yukarıdaki iki metni çok yakın bir alana koyması, modelin sınırlamalarını (örneğin n-gram gibi şeyleri yakalamamak gibi) yeniden teyit edebilir.

    Bazen bu tür bir analizin hangi örneklerin model için "zor" ve "kolay" olduğunu anlamamıza yardımcı olabileceğini düşünüyorum. Bu sorun, yanlış sınıflandırılan noktaların yakınlarındaki noktalarla karşılaştırılmasıyla anlaşılabilir. Biraz anlayışa sahip olduktan sonra, bu bilgileri modelin bu örnekleri daha iyi anlamasına yardımcı olacak daha kişiselleştirilmiş özellikler eklemek için kullanabilir veya bu "zor" örnekleri daha iyi anlamak için modelin yapısını değiştirebiliriz.

    Sinir ağı eğitimi sırasında veri temsilinin evrimini anlayın

    Bunu anlamak için animasyon kullanacağız. Genelde animasyon görselleştirmenin yolunun bir nokta alt kümesi seçmek ve eğitim sırasında komşuluklarının nasıl değiştiğini gözlemlemek olduğunu anlıyorum. Sinir ağı yavaş yavaş öğrendikçe, mahallenin eldeki sınıflandırma görevini daha iyi temsil ettiğini hayal ediyorum. Ya da başka bir deyişle, benzerliği sınıflandırma görevine göre tanımlarsak, ağ öğrendiğinde, benzer noktalar uzayda gittikçe yaklaşacaktır. Yukarıdaki araçtaki kaydırıcı, bir dizi noktadaki değişiklikleri yakından takip ederken animasyonu kontrol etmemize yardımcı olur.

    Aşağıdaki animasyon, toksisite incelemesi sınıflandırma görevinde 4 dönem (2-5 dönem) boyunca verilerin gizli temsilinin nasıl geliştiğini göstermektedir. Küçük bir nokta kümesi seçtim, böylece nasıl hareket ettiklerini gözlemlemek kolay. Yeşil nokta toksik olmayan kategoriyi ve kırmızı nokta toksik kategoriyi temsil eder.

    2-5 çağındaki gizli temsilin canlandırılması

    Bazı nokta çiftleri (F ve G, C ve I gibi) etrafta dans ederken diğerleri (D ve K, N ve O gibi) her zaman birbirine yakındır.

    Bu nedenle, bu noktalara karşılık gelen cümleleri manuel olarak incelediğimde, bazen çağ sinir ağının neler öğrenmiş olabileceğini anlayabiliyorum. Birbiriyle tamamen ilgisiz iki cümle görürsem (örneğin, epoch2'de E ve F), o zaman modelin biraz daha öğrenilmesi gerektiğini düşünüyorum. Bazen sinir ağlarının benzer kelimelerle cümleleri bir araya getirdiğini görüyorum - tüm cümlenin anlamı farklı olsa da. Eğitim ilerledikçe bu etkinin yavaş yavaş ortadan kaybolduğunu görüyorum (doğrulama kaybı azalır).

    Yazının başında belirtildiği gibi, bu davranışın tutarlı olması garanti edilmez. Bazen bir noktanın mahallesinde kesinlikle hiçbir anlamı yoktur. Ama umarım bu animasyonları yaparak ve nokta hareketinde herhangi bir önemli değişiklik fark ederek, bazı yararlı içgörüler elde edebiliriz.

    Aynı deneyi yelp veri setini kullanarak tekrarladım ve benzer bir şey buldum.

    Bir çağ boyunca eğitim aldıktan sonra, sinir ağı şöyle görünür:

    1. dönemden sonra Yelp-Temsili (yeşil olumlu duygu, kırmızı olumsuz duygudur)

    Bu iki sınıf arasında çok fazla örtüşme var ve ağ gerçekten net bir sınır öğrenmedi.

    Aşağıdaki animasyon, 5 dönemlik eğitimden sonra performansın gelişimini göstermektedir:

    Yelp-1'den 5'e kadar olan dönemlerde gizli temsilin animasyonu

    İki tür noktanın kendi sınıflarında daha yoğun hale geldiğini ve ağın iki sınıfı ayırmada daha iyi bir iş çıkardığını görebilirsiniz.

    Yan not: Şu anda yaptığım animasyon, çağlar arasındaki temsili değişiklikleri göstermektir. Ancak, mini gruplar veya yarım dönem veya başka bir şey kullanmak gibi insanların bunu daha fazla rafine edememeleri için hiçbir neden yok. Bu, daha ince değişiklikleri tespit etmeye yardımcı olabilir.

    Model karşılaştırması

    Bu aynı zamanda nispeten sezgisel bir yaklaşımdır. Karşılaştırmak istediğimiz modellerin temsillerini sadece son dönemin sonunda seçip araca yerleştiriyoruz.

    Burada karşılaştırma için kullandığım iki model basit bir ileri beslemeli sinir ağı (evrişim ve döngüler olmadan) ve çift yönlü bir LSTM modelidir. Hepsi önceden eğitilmiş kelime düğünleri kullanılarak başlatılır.

    Bu nedenle, toksisitenin sınıflandırma zorluğu ve müstehcen yorumlar için, modeller arasında ifade edilen değişiklikler aşağıdadır.

    Tüm kırmızı noktalar müstehcen kategoriyi temsil eder ve yeşil noktalar müstehcen olmayan kategoriyi temsil eder.

    İleri beslemeli sinir ağı ve çift yönlü LSTM ağının gizli katman görüntüsünün animasyonu

    İki yönlü LSTM'nin iki kategoriyi ayırt etmede daha iyi performans gösterdiği görülebilir.

    Kelime yerleştirme görselleştirme

    Kelime düğünlerini sevdiğimi söylemeliyim, NLP ile ilgili herhangi bir analizde denemem gereken tek şey bunlar. Bu çerçeve özellikle kelime yerleştirme için uygun olmalıdır. Öyleyse, kullanımını nasıl anlayabileceğimizi görelim.

    Aşağıdaki örnek, yelp görevinde gömme kelimesinin nasıl değiştiğini gösteren bir animasyondur. 50 boyutlu bir Glove kelime vektörü ile başlatılırlar.

    Yelp veri kümesinde ayarlandığı şekliyle kelime yerleştirme değişiklikleri

    Büyüleyici olan şey, "yemek" kelimesinin ilk başta "ramen" ve "domuz eti" gibi gerçek yiyeceklerden uzak olmasıdır. Uçları ayarlarken aralarındaki mesafe giderek küçülmeye başlar. Dolayısıyla bu model, tüm bu "ramen" ve "domuz eti" nin yiyecek örnekleri olduğunu öğrenmiş olabilir. Benzer şekilde, "masanın" "restorana" yakın olduğunu da görüyoruz. Animasyon, bu ilginç kalıpları kolayca tespit edebilir.

    Denenecek bir başka ilginç şey de, araca tersine mühendislik uygulamak ve bazı özel analizler yapmaktır. Örneğin, toksik kelimelerin gömülmesinin yukarıdaki toksisite gözden geçirme sınıflandırma görevinde nasıl değiştiğini merak ediyorum. Düğmeleri sıfırdan öğrenmek için yukarıdaki toksisite yorumu sınıflandırma görevinde bir model oluşturdum (bu nedenle ağırlık başlatma için önceden eğitilmiş yerleştirmeler kullanılmadı). Belirli miktarda veriyle modellemenin biraz zor olduğunu düşünüyorum - ancak denemeye değer olduğunu düşünüyorum. Mimari, çift yönlü LSTM ile aynıdır. Bu nedenle, tüm toksik kelimeleri kırmızıya boyadım ve animasyonda izledim. Bu, gömülü sistemin nasıl değiştiğini gösteren bir animasyondur: (PG-13 uyarısı !!)

    Zararlı yorum verilerinde sıfırdan öğrenilen kelime düğünlerindeki değişiklikler

    Bu büyüleyici görünmüyor mu? Model, lanetli kelimeleri (toksisiteyi temsil eden) güzel bir kümeye ayırır.

    Umarım bu makale, veri noktalarının gizli temsillerini görselleştirmenin farklı yollarına ve model hakkında yararlı içgörüleri nasıl ortaya çıkarabileceklerine ışık tutabilir. Bu analizleri giderek daha fazla makine öğrenimi problemine uygulamayı dört gözle bekliyorum. Ve başkalarının da aynı şekilde düşüneceğini ve bundan yararlanacağını umuyoruz. Makine öğrenimi modelinin daha az kara kutu gibi görünmesine yardımcı olacaklarına inanıyorum!

    Uygun olduğunu düşünüyorsanız, lütfen geri bildirimde bulunmaktan çekinmeyin!

    Not: Gizli temsilin boyutsallığını 2 boyuta düşürmek için PCA'yı kullanmayı denedim ve ondan animasyon oluşturmaya çalıştım. PCA'nın avantajlarından biri, olasılıklı olmamasıdır, bu nedenle nihai temsil tutarlıdır. Bununla birlikte, PCA'daki yerel komşuluk, T-SNE kadar yorumlanabilir değildir. Yani bu bir değiş tokuş, ancak bu iki yönden en iyi şekilde nasıl yararlanılacağı konusunda başka fikirleri olan varsa, çok teşekkür ederim!

    Orijinal bağlantı: https://medium.com/@rakesh.chada/understanding-neural-networks-by-embedding-hidden-representations-f256842ebf3a

    Takma ad

    Odaklanmış biri

    AI teknolojisinin geliştirilmesi ve AI mühendislerinin büyümesi için bilgi arayan bir topluluk

    Doğdu!

    Herkesi aşağıdaki bağlantıyı ziyaret etmeye veya deneyimlemek için kodu taramaya hoş geldiniz

    https://club.leiphone.com/page/home

    Lei Feng Ağı Lei Feng Ağı

    Lei Feng Ağı Lei Feng Ağı

    Lei Feng

    Yeni nesil Lexus LS, Nisan ayında yerel olarak piyasaya sürülecek, ancak bu uzun eksenli bir versiyon değil
    önceki
    Yeni Redmi Note serisi, devam eden alt sitede göründü, ancak "Little King Kong" kod adlı modelde görünmedi!
    Sonraki
    Renk eşleştirmenin en değerli koleksiyonu! Nike Air Max 90 retro serisi en son rengi yayınladı!
    S6 finallerinde gazilerin çiçekleri açıyor
    "Flying Life" tema şarkısı "Half Life" MV Han Han Axin yaşamı ateşlemeyi seviyor, ilk olarak yeşil soğan fotoğrafları ortaya çıktı
    Yeni nesil Grand Cherokee'nin yerini yeni bir platform alacak veya 2018'de piyasaya sürülecek
    Samsung'un cep telefonu pazarı kayboldu, TV'ler karı artırdı ve Apple, iTunes kaynaklarını tanıtmak için Apple ile işbirliği yaptı!
    Maybach veya itin tamamen elektrikli SUV, lüks çevre dostu yerel zorbaların favorisi
    Xiaomi'nin TCL Group'a yaptığı yatırım ve iki taraf arasındaki stratejik işbirliği TCL'nin geleneksel pazarını kurtarabilir mi?
    Meituan'ın insansız teslimat tutkusu
    Bu grup insan aslında Zhou Xingchi tarafından mı görüldü? Sınırlı kız grubu "Hytest Girl" in kökeni nedir?
    Xiaomi Play ile karşı karşıya kalan Honor Play 8A, Huawei'nin resmi web sitesinde piyasaya sürüldü ve ikisinin görünümü benzer!
    FAW Pentium X40, bu ayın 17'sinde Changan CS35'e karşı montaj hattından çıkıyor
    Yasak Şehir güveç randevuları önümüzdeki aya kadar planlandı ve mücadele el hızı! Menüye emperyal kararname alıyormuş gibi bakın
    To Top