Kuidas teha Kerasega juhendamata klastrimist

Tänu selle erakordsele võimele väljendada mittelineaarseid esitusi on süvaõppe algoritmide abil võimalik sisendit väljundisse kaardistada antud märgistatud andmestikega. Selliseid ülesandeid nimetatakse klassifitseerimiseks, samal ajal kui keegi peab need andmed sildistama. Kas XRay-piltide sildistamine või uudiste reportaažide teemad, see sõltub inimese sekkumisest ja võib muutuda andmekogude suurenedes üsna kulukaks.

Klastrianalüüs või rühmitamine on üks juhendamata masinõppe tehnikaid, mis ei vaja märgistatud andmeid. See toimub rühmitamisel andmekogumid nende sarnasuste järgi.

Miks peaksite hoolima klastrist või klastrianalüüsist? Las ma näitan sulle mõned ideed.

Klasterdamise rakendused

  • Soovitussüsteem, õppides kasutajate ostuajalugu, võib klastrimudel kasutajate segmenteerida sarnasuste järgi, aidates teil leida mõttekaaslasi või seotud tooteid.
  • Bioloogias püüavad järjestuste rühmitamise algoritmid rühmitada bioloogilisi järjestusi, mis on kuidagi omavahel seotud. Valgud rühmitati vastavalt nende aminohapete sisaldusele.
  • Piltide või videote klastrianalüüs, et jagada need rühmadeks sarnasuste põhjal.
  • Meditsiinilises andmebaasis võib igal patsiendil olla konkreetne test (nt glükoos, kolesterool) konkreetse reaalväärtusega mõõt. Patsientide rühmitamine võib kõigepealt aidata meil mõista, kuidas tuleks tegelikul alusel hinnatud omaduste puhul blenderdada, et vähendada funktsioonide hõrevust ja parandada klassifitseerimisega seotud ülesannete täpsust, näiteks vähihaigete ellujäämise ennustamine.
  • Üldkasutatav juhtum, andmete kompaktse kokkuvõtte genereerimine klassifitseerimiseks, mustri leidmiseks, hüpoteesi genereerimiseks ja testimiseks.

Igatahes on klastrite koostamine väärtuslik vara, mida iga andmeteadlane omandada võib.

Mis teeb hea klastri

Hea rühmitusmeetod loob kvaliteetsed klastrid, millel peaks olema:

  • Suur klassisisene sarnasus: klastrites sidus
  • Madal klassidevaheline sarnasus: klastrite vaheline eristusvõime

Seadke lähtejoon K-vahenditega

Traditsiooniline K-algoritm on kiire ja rakendatav paljude probleemide lahendamisel. Nende kaugusmõõdikud on siiski piiratud algse andmeruumiga ja see kipub olema ebatõhus, kui sisendmõõtmed, näiteks pildid, on suured.

Treenime K-Meansi mudelit MNISTi käsikirjaliste numbrite rühmitamiseks 10 klastrisse.

Hinnatud K-Meansi klastrite täpsus on 53,2%, võrdleme seda hiljem oma sügava manustamise klastrimudeliga.

Mudel, mida lähiajal tutvustame, koosneb mitmest osast:

  • Autokooder, eelkoolitatud, et õppida sildistamata andmekogumite esialgset lühendatud esitust.
  • Kodeerijale virnastatud klastrikiht, et kodeerija väljund klastrile määrata. Klastrikihi kaalud lähtestatakse praeguse hinnangu alusel K-Meansi klastrikeskustega.
  • Treenige klastrimudelit klastrikihi viimistlemiseks ja kodeerimiseks ühiselt.

Kas otsite lähtekoodi? Hankige see minu GitHubi kaudu.

Rongieelne automaatne kooder

Autoencoder on andmete tihendamise algoritm, kus on kaks peamist osa, kooder ja dekooder. Kodeerija ülesanne on sisendandmete tihendamine madalama mõõtmega funktsioonideks. Näiteks ühel 28x28 MNIST-kujutise näidisel on kokku 784 pikslit, meie ehitatud kooder võib tihendada selle massiiviks, millel on ainult kümme ujukoma numbrit, mida tuntakse ka pildi omadustena. Dekooderiosa seevastu võtab sisendina tihendatud funktsioonid ja rekonstrueerib pildi võimalikult originaalilähedaseks. Autoencoder on oma olemuselt järelevalveta algoritm, kuna koolituse ajal võtab ta ainult pilte ise ega vaja silte.

Autoencoder

Meie ehitatav automaatkooder on üks täielikult ühendatud sümmeetriline mudel, mis sümmeetriliselt sõltub sellest, kuidas pilti tihendatakse ja dekompresseeritakse täpselt vastupidiste viiside abil.

Täielikult ühendatud automaatkooder

Me koolitame autokodeerijat 300 ajastut ja salvestame mudeli raskused hilisemaks.

Klastrimudel

Autokooderit koolitades oleme selle kodeerija osa õppinud tihendama iga pildi kümneks ujukoma väärtuseks. Võib-olla mõtlete, kuna sisendi mõõtmed on vähendatud 10-ni, peaks K-Means siinjuures suutma rühmituse teha? Jah, klastri tsentrid moodustame K-Meansi abil, mis on 10 klastri keskpunkt 10-D funktsiooniruumis. Kuid ehitame ka oma kohandatud klastrikihi, et teisendada sisendfunktsioonid klastri sildi tõenäosuseks.

Tõenäosus arvutatakse õpilase t-jaotuse järgi. T-jaotus, sama, mida kasutati t-SNE algoritmis, mõõdab manustatud punkti ja tsentroidi sarnasust. Ja nagu võib arvata, toimib kobestamiskiht klastri moodustamiseks sarnaselt K-vahenditele ja kihi kaalud tähistavad klastri tsentrid, mida saab K-vahendi treenimisel lähtestada.

Kui olete Kerase kohandatud kihi ehitamisega uus, rakendate kolme kohustuslikku meetodit.

  • build (input_shape), kus saate määratleda kihi raskused, meie puhul 10 klastrit 10-D funktsiooniruumis, see tähendab 10x10 kaalu muutujaid.
  • kõne (x), kus kihi loogika elab, kus toimub kaardistamine funktsioonidest klastrite siltide maagiaks.
  • compute_output_shape (input_shape), määrake siin kuju teisendusloogika sisendist väljundkujuks.

Siin on kohandatud klastrikihi kood,

Järgmisena virnastame klastrikihi pärast eelkoolitatud kooderit klastrimudeli moodustamiseks. Klastrikihi jaoks lähtestame selle kaalu, klastri keskpunktid on k-vahendid, mis on treenitud kõigi piltide tunnusvektoritel.

Klastrimudelite struktuur

Klastrimudeli koolitamine

Täiendav sihtjaotus ja KL-i divergentsi kaotus

Järgmine samm on klastrite määramise ja funktsioonide esituse parandamine üheaegselt. Selleks määratleme tsentripõhise sihtmärgi tõenäosusjaotuse ja minimeerime selle KL-i erinevuse mudeliklastri tulemuse suhtes.

Soovime, et sihtjaotusel oleks järgmised omadused.

  • Tugevdage ennustusi, st parandage klastri puhtust.
  • Pange rohkem rõhku andmepunktidele, mis on määratud suure usaldusega.
  • Hoidke suurtel klastritel varjatud funktsiooniruumi moonutamast.

Sihtjaotus arvutatakse nii, et esmalt tõstetakse q (kodeeritud tunnusvektorid) teisele võimsusele ja seejärel normaliseeritakse klastri sageduse järgi.

Klastreid on vaja iteratiivselt viimistleda, õppides kõrgendatud usalduse määramistest abistava sihtjaotuse abil. Pärast kindlat arvu iteratsiooni värskendatakse sihtjaotust ja klastrimudel koolitatakse nii, et minimeerida KL-i divergentsi kadu sihtjaotuse ja klastri väljundi vahel. Treeningstrateegiat võib vaadelda kui enesetreeningu vormi. Nagu ka enesetreenimisel, võtame algse klassifikaatori ja sildistamata andmestiku, seejärel märgistame selle koos klassifikaatoriga, et treenida selle kõrge usalduse prognooside järgi.

Kaotusfunktsioon, KL divergents või Kullback-Leibleri divergents on kahe erineva jaotuse käitumise erinevuse mõõt. Tahame selle minimeerida nii, et sihtjaotus oleks klastri väljundi jaotusele võimalikult lähedal.

Järgmises koodilõigus värskendatakse sihtjaotust iga 140 treening iteratsiooni järel.

Näete, et klastrite täpsus kasvab pärast iga värskendust pidevalt.

Hindamismõõdik

Mõõtja ütleb, et see on saavutanud klasterdamise täpsuse 96,2%, mis on üsna hea, kui arvestada, et sisendid on siltideta pildid. Vaatame lähemalt, kuidas selle täpsus tuletatakse.

See mõõdik võtab klastri määramise juhendamata algoritmi ja maapealse tõe määramise põhjal ning leiab seejärel nende vahel parima vaste.

Parimat kaardistamist saab tõhusalt arvutada ungari algoritmi abil, mis on rakendatud scikit oppi raamatukogus lineaarse määramisena.

Selgem on vaadata segaduste maatriksit.

Segamismaatriks

Siin saate kiiresti klastrite määramise käsitsi kokku sobitada, nt klastri 1 vasted tõelise etiketiga 7 või käsitsi kirjutatud numbriga “7” ja viisaviisaga.

Allpool näidatud segamismaatriksi koodilõik.

Konvolutsioonilise automaatkoodri rakendamine (katseline)

Kuna tegemist on pildiandmekogumitega, tasub proovida ainult täielikult ühendatud kihtidega üksuse asemel konvolutsioonilist automaatkoodrit.

Üks asi, mida tasub mainida, pildi rekonstrueerimiseks võite väiksemate artefaktide probleemide jaoks valida dekonvolutsioonikihid (Conv2DTranspose in Keras) või ülevalimi (UpSampling2D) kihid. Konvolutsiooniliste automaatkooderite katsetulemused on saadaval minu GitHubis.

Järeldus ja edasine lugemine

Oleme õppinud, kuidas ehitada kerase mudelit klastrianalüüsi tegemiseks siltideta andmekogumitega. Eelkoolitatud automaatkooder mängis olulist rolli mõõtmete vähendamisel ja parameetrite lähtestamisel, seejärel treeniti kohandatud ehitatud klastrikiht sihtjaotuse suhtes täpsuse täpsustamiseks.

Lisalugemist

Autoenkoderite ehitamine Kerasesse - Kerase ametlik ajaveeb

Klastrianalüüsi juhendamata sügav kinnistamine - inspireeris mind seda postitust kirjutama.

Täielik lähtekood on minu GitHubis, loe kuni sülearvuti lõpuni, sest avastad veel ühe alternatiivse viisi, kuidas minimeerida klastrite moodustumist ja autoenkoderite kaotust, mis on osutunud kasulikuks konvolutsioonilise klastrimudeli rühmituse täpsuse parandamiseks.

Algselt avaldatud veebisaidil www.dlology.com.