İnternette İstediğiniz Gibi Çevrimiçi Para Kazanma!

Bölüm II – Yapay Zekaya Doğru

Şu yayını okuyorsunuz: Bölüm II – Yapay Zekaya Doğru

İlk olarak dünyanın önde gelen yapay zeka ve teknoloji haber ve medya şirketi Towards AI’da yayınlandı. Yapay zeka ile ilgili bir ürün veya hizmet yaratıyorsanız sizi yapay zeka destekçisi olmayı düşünmeye davet ediyoruz. Towards AI’da yapay zeka ve teknoloji girişimlerinin ölçeklenmesine yardımcı oluyoruz. Teknolojinizi kitlelere ulaştırmanıza yardımcı olalım.

Bir önceki yazımda dikkat mekanizmasının temellerini ele alıp genel olarak transformatör bloğunu ele almıştım. Serinin bu bölümünde LogBERT’in nasıl eğitildiğinden ve onu log akışlarındaki anormallikleri tespit etmek için nasıl kullanabileceğimizden bahsetmek istiyorum.

LogBERT’in en ince ayrıntılarına girelim.

Kağıt üzerinde (bağlantı: https://arxiv.org/pdf/2103.04475.pdf) bir kayıt dizisi şu şekilde tanımlanır:

Burada S, kayıt sırasındaki bir anahtar (kelime) dizisidir. Kayıt anahtarlarımızın, ait oldukları sırayı belirtmek için j üst simgesiyle ve sözcük dizisindeki dizini belirtmek için k’nin üzerindeki alt simgeyle nasıl işaretlendiğine dikkat edin.

Her zaman olduğu gibi, bir transformatörü eğittiğimizde, dizinin başlangıcını işaretlemek için bir jeton eklemek istiyoruz ve jeton, belgede belirtildiği gibi “DIST” olacaktır. Ekleyeceğimiz bir diğer özel token ise “MASK” tokenidir. Maskeleme belirteci cümledeki kelimeleri kapatmak için kullanılacaktır.

Son kısma bakarsanız koşu örneğimizi hatırlayacaksınız:

Gördüğünüz gibi kayıt akışımız farklı özel tokenları içerecek şekilde ön işleme tabi tutuldu.

MESAFE — Cümlenin başlangıcı

YÜZ MASKESİ — Sıradaki bir anahtarı kapsar

EOS — Cümlenin sonu (makalede belirtilmese de GitHub kodunda kullanılmıştır).

Özel tokenlar hakkında her şeyi açıklığa kavuşturmadan önce LogBERT’in eğitim aşamasına bir göz atmak istiyorum.

LogBERT mimarisinin farklı kısımlarını hatırlayın:

Yukarıdaki işlevler MultiHead Attention’ın yalnızca matematiksel açıklamalarıdır:

Ve son olarak, her şey transformatör bloğunun matematiksel açıklamasına geliyor:

Bu tam transformatör bloğunun tamamı:

Çok güzel, artık her şey bir arada. Transformatörler tipik olarak birden fazla transformatör katmanına sahiptir; bu, yalnızca bir dizi transformatör bloğundan oluşan genel bir transformatör işlevi atayabileceğimiz anlamına gelir. Bu durum belgede şöyle anlatılıyor:

Nerede H Transformer fonksiyonunun çıktısı olduğundan, bu çıktı aslında X olarak tanımlanan kayıt dizisi hakkındaki tüm bilgileri kodlayan bir vektör olmalıdır.

Yukarıdaki görsel her şeyi özetliyor sanırım. Sadece genel LogBERT mimarisi. Çıktı katmanının sözcük dağarcığının boyutunda olduğuna dikkat edin. Sınıflandırma durumlarında olağan olduğu gibi, özellikle bizim durumumuzda, MASK belirteci kapsamındaki kelimeyi sınıflandırmamız gerekiyor. Bu beni son LogBERT modelinin kayıp fonksiyonuna getiriyor.

Yukarıda belirtildiği gibi, tüm günlük dizileri maskelenmiş bir sözcük içerecek şekilde önceden işlenir. Model, maskelenen kelimeyi tahmin etmeye çalışacaktır. Bu, modelin tamamlaması gereken, kendi kendini denetleyen bir görevdir. Bu görevin kayıp fonksiyonu:

Nerede VeBu maskenin altındaki gerçek kelime ve senin şapkanmaskenin altındaki gerçek kelime için atanan olasılıktır. Kaybın aslında kategorilerin aslında kelimelerden oluştuğu kategorik bir çapraz entropi kaybı fonksiyonu olduğunu görebiliriz. Toplamın N ve M’nin üzerinde olduğuna dikkat edin. N, kayıt dizilerinin sayısıdır ve M, cümlede seçilen toplam maske sayısıdır.

Her kayıt dizisi için maskelenecek rastgele bir kelimeyi 0,15 olasılıkla seçiyoruz. Aslında maskelemek için birkaç kelime seçiyoruz ve her kayıt için cümledeki maskeleme tahmini üzerinden toplam kaybı hesaplıyoruz. Nihai kayıp, her bir sekans üzerinden toplanır ve kayıt sekanslarının sayısına bölünür.

LogBERT’in en aza indirmesi gereken diğer görev (kayıp fonksiyonu), HyperSphere’in Hacmi kayıp fonksiyonudur.

Bu kayıp fonksiyonu şunu kullanır: H-Yukarıda da belirtildiği gibi. h, kayıt dizisinin temsilidir (özellikle h-dist) ve bu kayıp fonksiyonunun amacı, her kaydın temsili ile merkezi arasındaki mesafeyi en aza indirmektir. Merkez, her çağda güncellenir ve ortalama genel günlük temsili olarak hesaplanır.

Son olarak model ağırlıklarını güncellemek için her iki kayıp fonksiyonu da kullanılır. Nihai kayıp fonksiyonu, her iki kayıp fonksiyonunun ağırlıklı toplamından oluşur.

Şimdi anormal günlükleri bulmak için LogBERT’i nasıl kullanırız? Makalede önerildiği gibi, bir kayıt dizisinden geçiyoruz ve her maskelenmiş kelime için tahminleri hesaplıyoruz. Bir hiperparametre tanımlıyoruz grambu, maskenin ötesinde bulunması en muhtemel kelimelerin başında gelir. Eğer asıl kelime ilk g kelimeler arasında değilse o kelimeyi anormal sayarız. Şimdi, başka bir hiper parametre olan r’yi, bir kaydı anormal veya değil olarak sayma eşiğimiz olarak tanımlıyoruz. R’den fazla sözcük hatası varsa, kayıt dizisi başarısız kayıt olarak tanımlanır.

Anormal kayıtları bulmak için başka bir yöntem önermek istiyorum. Basitçe takip eden kayıp fonksiyonunu kullanın ve bir kaydın z’den yüksek puan alması durumunda bunun anormal bir kayıt olduğu bir z eşiği tanımlayın.

Hepsi bu kadar, umarım okurken keyif almışsınızdır. Orijinal belgeyi okumanızı ve kodun kendisini görmek için GitHub’a geçmenizi şiddetle tavsiye ederim.


LogBERT Derinlemesine Açıklandı: Bölüm II, ilk olarak Towards AI on Medium’da yayınlandı; burada insanlar bu hikayeyi vurgulayarak ve yanıtlayarak sohbete devam ediyor.

Towards AI aracılığıyla yayınlandı

Diğer ilginç konular:

Table of Contents