Keras ilə nəzarətsiz qruplaşma necə edilir

Dərin öyrənmə alqoritmləri qeyri-xətti təsvirləri ifadə etmək üçün müstəsna qabiliyyətləri sayəsində müəyyən etiketli qeydlərdəki çıxışlara daxil olmağı yaxşı bacarır. Bu tip tapşırıqlara təsnifat deyilir, kimsə bu məlumatları etiketləməlidir. XRay-dan şəkilləri və ya xəbər reportajları üçün mövzuları etiketləməyiniz, insanın müdaxiləsindən asılıdır və məlumatların miqdarı artdıqca olduqca bahalı ola bilər.

Klaster analizi və ya qruplaşdırma etiketli məlumatlar tələb etməyən nəzarətsiz maşın öyrənmə üsullarından biridir. Bu məqsədlə məlumat dəstləri oxşarlıqlarına görə qruplaşdırılır.

Niyə klasterləşdirmə və ya klaster təhlili ilə maraqlanmalısınız? Gəlin sizə bir neçə fikir göstərim.

Tətbiqlərin klasterləşdirilməsi

  • Tövsiyə sistemi vasitəsi ilə, istifadəçilərin alış tarixçəsinə əsaslanan klasterləşdirmə modeli istifadəçiləri oxşarlıqlara görə bölə bilər və həmfikir istifadəçiləri və ya əlaqəli məhsulları tapmaqda sizə kömək edə bilər.
  • Biologiyada ardıcıllıq klaster alqoritmləri bir şəkildə əlaqəli bioloji ardıcıllıqları qruplaşdırmağa çalışır. Zülallar amin turşusu tərkibinə görə qruplaşdırılmışdır.
  • Bənzərliklərə əsasən onları parçalamaq üçün şəkil və ya video klaster analizi.
  • Tibbi bir məlumat bazasında hər bir xəstə müəyyən testlər üçün (məsələn, qlükoza, xolesterol) müəyyən bir real dəyərə sahib ola bilər. Əvvəlcə xəstələrin ümumiləşdirilməsi, xüsusiyyət sıxlığını azaltmaq və xərçəng xəstələrinin sağ qalma proqnozu kimi təsnifat tapşırıqlarında dəqiqliyi artırmaq üçün real dünya xüsusiyyətlərində bininqin necə aparılmalı olduğunu anlamağımıza kömək edə bilər.
  • Ümumi istifadə vəziyyəti: Təsnifat, nümunələrin tanınması, hipotezin yaradılması və yoxlanılması üçün yığcam bir məlumat xülasəsi yaratmaq.

Hər halda, klasterləşmə hər hansı bir məlumat alimi üçün dəyərli bir sərvətdir.

Yaxşı klasterləşdirmə nədir?

Kümelenmənin yaxşı bir üsulu yüksək keyfiyyətli klasterlər meydana gətirir:

  • Yüksək sinifdaxili oxşarlıq: Kümələr içərisində birləşmə
  • Siniflər arasındakı kiçik oxşarlıq: Kümələr arasında fərq

K-Means ilə bir təməl xətt qurun

Ənənəvi K-Means alqoritmi sürətli və müxtəlif problemlərə tətbiq olunur. Bununla birlikdə, onların məsafə göstəriciləri orijinal məlumat sahəsi ilə məhdudlaşır və giriş ölçüsü yüksək olduqda, məsələn şəkillərlə, ümumiyyətlə təsirsiz olur.

Əlyazma MNIST rəqəmlərini 10 qrupa qruplaşdırmaq üçün bir K-Means modeli hazırlayaq.

Qiymətləndirilən K-Means qruplaşdırma dəqiqliyi% 53.2-dir. Onları sonradan dərindən yerləşmiş klasterləşdirmə modelimizlə müqayisə edəcəyik.

Qısa müddət ərzində təqdim edəcəyimiz model bir neçə hissədən ibarətdir:

  • Etiketlenmemiş məlumat dəstlərinin ilk sıxılmış təqdimatını öyrənmək üçün hazır bir avtomatik kodlayıcı.
  • Kodlayıcı çıxışını bir klasterə uyğunlaşdırmaq üçün kodlaşdırıcının üstünə yığılmış bir klaster təbəqəsi. Kümə qatının ağırlıqları mövcud qiymətləndirmə əsasında K-Means qrup qrupları ilə başlanır.
  • Kümelenmə qatını və kodlayıcıyı bir araya gətirmək üçün klaster modelini öyrədin.

Mənbə kodunu axtarırsınız? GitHub'umda əldə edin.

Qatarın qarşısında avtomatik kodlayıcı

Autoencoder, iki əsas hissədən ibarət olan bir məlumat sıxılma alqoritmidir: kodlayıcı və dekoder. Enkoderin işi giriş məlumatlarını kiçik xüsusiyyətlərə sıxmaqdır. Nümunə: 28x28 MNIST təsvirinin bir nümunəsi cəmi 784 pikseldir. Yaratdığımız kodlayıcı onu görüntünün xüsusiyyətləri kimi də bilinən, yalnız on üzən nöqtə nömrəsi ilə bir sıra halında sıxa bilər. Dekoder hissəsi, əksinə, sıxılmış xüsusiyyətləri giriş kimi qəbul edir və orijinal görüntüyə mümkün qədər yaxın bir görüntüyü yenidən qurur. Avtomatik kodlaşdırıcı nəzarətsiz bir öyrənmə alqoritmidir, çünki yalnız təlim zamanı şəkillərin özünü qeyd edir və heç bir etiketə ehtiyac yoxdur.

Avtomatik kodlayıcı

Yaratdığımız avtomatik kodlayıcı, görüntünün tam əks istiqamətlərdə necə sıxıldığına və sıxıldığına işarə edən tam əlaqəli simmetrik bir modeldir.

Tamamilə qoşulmuş avtomatik kodlayıcı

Avtomatik kodlayıcıyı 300 dövr üçün hazırlayacağıq və model ağırlıqlarını daha sonra saxlayacağıq.

Kümelenme modeli

Avtomatik kodlayıcıya təlim verərək, kodlayıcı hissəsinin hər çərçivəni on üzən nöqtə dəyərinə sıxdığını öyrənirik. Giriş ölçüsünün 10-a endirildiyi üçün K-Meansın klasterləşdirmə işini buradan edə biləcəyini düşünürsən? Bəli, klaster centroidləri yaratmaq üçün K-Means istifadə edəcəyik. Bunlar 10 ölçülü xüsusiyyət məkanındakı 10 çoxluq mərkəzidir. Bununla yanaşı giriş xüsusiyyətlərini klaster etiketi ehtimalına çevirmək üçün xüsusi klaster qatımızı da yaradacağıq.

Ehtimal şagirdin t-paylanmasından istifadə edərək hesablanır. T-SNE alqoritmində olduğu kimi T-paylanması yerləşmiş nöqtə ilə ağırlıq mərkəzi arasındakı oxşarlığı ölçür. Və təxmin etdiyiniz kimi, kümelenme təyyarəsi, K qruplaşdırma üçün K-vasitələrinə bənzər bir şəkildə davranır və təyyarənin ağırlıqları, bir K-vasitəsi ilə işə salına bilən klaster santroidlərini təmsil edir.

Keras-da xüsusi təbəqələr yaratmaqda yenisinizsə, tətbiq etmək üçün üç metod var.

  • build (input_shape), burada qatın ağırlıqlarını təyin etməlisiniz, bizim vəziyyətimizdə 10-D xüsusiyyət məkanındakı 10 qrup, yəni 10 x 10 ağırlıq dəyişənləri.
  • Səviyyə məntiqinin yerləşdiyi zəng (x), xüsusiyyətlərin klaster etiketlərinə uyğunlaşdırılmasının aparıldığı yerdir.
  • compute_output_shape (input_shape), forma çevrilmə məntiqini girişdən çıxış formalarına daxil edin.

Xüsusi klasterləşdirmə qat kodu:

Sonra, klaster modelini yaratmaq üçün əvvəlcədən hazırlanmış kodlayıcıdan sonra bir klaster qatını yığacağıq. Kümə təbəqəsi üçün onun çəkilərini işə salırıq, qruplar bütün şəkillərin xüsusiyyət vektorları üzərində öyrədilmiş k-vasitələri ilə mərkəzləşdirilir.

Kümelenme model quruluşu

Kümelenmə modelini öyrədin

Köməkçi hədəflərin paylanması və KL fərqliliyinin itirilməsi

Növbəti addım eyni zamanda klaster Xəritəçəkmə və xüsusiyyət təqdimatını yaxşılaşdırmaqdır. Bu məqsədlə ağırlıq mərkəzinə əsaslanan hədəf ehtimal paylanmasını təyin edirik və model klasterləşdirmə nəticəsi ilə müqayisədə KL fərqliliyini minimuma endiririk.

Hədəf paylanmasının aşağıdakı xüsusiyyətlərə sahib olmasını istəyirik.

  • Proqnozları gücləndirin, d. H. Küme təmizliyini yaxşılaşdırın.
  • Yüksək təhlükəsizlik ilə təyin edilmiş məlumat nöqtələrinə daha çox diqqət yetirin.
  • Böyük qrupların gizli funksional sahəni təhrif etməsinin qarşısını alın.

Hədəf dağılımı əvvəlcə q (kodlanmış xüsusiyyət vektorlarını) ikinin gücünə qaldırmaq və sonra hər bir klasterə görə tezliklə normallaşdırmaqla hesablanır.

Köməkçi hədəf paylanmasından istifadə edərək yüksək güvən səviyyəli tapşırıqlardan öyrənərək qrupları təkrarən saflaşdırmaq lazımdır. Müəyyən sayda təkrarlamadan sonra hədəf dağılımı yenilənir və hədəf dağılımı ilə klaster çıxışı arasındakı KL fərqlilik itkisini minimuma endirmək üçün klasterləşdirmə modeli hazırlanır. Təlim strategiyası özünütəhsil forması kimi qəbul edilə bilər. Özünütəsdiqdə olduğu kimi, ilkin bir təsnifçi və etiketlənməmiş bir verilənlər bazası götürürük və sonra proqnozlarını yüksək etibarlılıqla öyrətmək üçün verilənlər bazasını təsnifçi ilə etiketləyirik.

Zərər funksiyası, KL divergensiyası və ya Kullback-Leibler divergensiyası iki fərqli paylanma arasındakı davranış fərqinin ölçüsüdür. Hədəf paylamasının klaster çıxışı paylanmasına mümkün qədər yaxın olması üçün bunu minimuma endirmək istəyirik.

Aşağıdakı kod parçasında hədəf paylama hər 140 təlim təkrarını yeniləyir.

Hər yeniləmədən sonra klaster dəqiqliyinin durmadan artdığını görəcəksiniz.

Reytinq metriki

Metrik, 96.2% bir klaster dəqiqliyinə nail olunduğunu göstərir. Girişlərin etiketlənməmiş şəkillər olduğunu nəzərə alsaq, bu olduqca yaxşıdır. Dəqiqliyin necə əldə edildiyini daha ətraflı nəzərdən keçirək.

Bu metrik, nəzarətsiz bir alqoritmdən bir toplu tapşırıq və əsas həqiqət tapşırığı götürür və sonra aralarında ən yaxşı uyğunluğu tapır.

Ən yaxşı tapşırıq, lineer_assignment olaraq skikit öyrənmək kitabxanasında tətbiq olunan Macarıstan alqoritmi ilə səmərəli şəkildə hesablana bilər.

Qarışıqlıq matrisinə baxmaq daha asandır.

Qarışıqlıq matrisi

Burada qruplaşdırma tapşırığını əl ilə sürətlə uyğunlaşdıra bilərsiniz, məsələn. B. Klaster 1, həqiqi etiket 7 və ya "7" əlyazma nömrəsi ilə vizaya uyğun gəlir.

Qarışıqlıq matrisini göstərmək üçün aşağıda göstərilən kod parçası.

Konvolyusiyalı avtokoderin tətbiqi (eksperimental)

Bunlar görüntü məlumat dəstləri olduğundan, yalnız bir-birinə tam birləşdirilmiş təbəqələrlə qurulma əvəzinə konvolyusiyalı bir avtomatik kodlayıcı istifadə etməyə çalışmağa dəyər.

Görüntünün yenidən qurulması üçün qeyd edilməli olan bir şey daha az artefakt problemi üçün ya dekonvolyusiya təyyarələrini (Conv2DTranspose in Keras), ya da nümunə götürmə təyyarələrini (UpSampling2D) seçə bilərsiniz. Dönüşümlü avtomatik kodlayıcılar üçün sınaq nəticəsi GitHub'umda mövcuddur.

Nəticə və əlavə oxumaq

Etiketlenmemiş veri kümelerinde klaster analizini aparmaq ucun Keras modelinin qurulmasini öyrendik. Əvvəlcədən hazırlanmış avtomatik kodlayıcılar ölçünün azaldılmasında və parametr başlanğıcında mühüm rol oynadı. Daha sonra dəqiqliyi daha da dəqiqləşdirmək üçün xüsusi hazırlanmış bir klaster təbəqəsi hədəf paylanmasına qarşı hazırlandı.

Daha çox oxu

Keras-da avtomatik kodlayıcıların yaradılması - Keras rəsmi bloqu

Kümələrin analizi üçün nəzarətsiz dərin yerləşdirmə - bu yazını yazmağım üçün ilham verdi.

Tam mənbə kodu GitHub-da və dizilişin sona qədər oxunacaq, çünki konvolyutsiyanın klasterləşdirmə dəqiqliyini artırmaqda faydalı olan klasterləşdirmə və avtomatik kodlayıcı itkilərini minimuma endirmək üçün başqa bir alternativ metod tapacaqsınız. Kümelenmə modelini təkmilləşdirin.

Əvvəlcə www.dlology.com saytında yayımlandı.