Oppikaa tekoälyä Pythonilla · Oppitunti

Siirto-oppimisen käsitteet ja strategiat

Piirteiden irrotus ja hienosäätö, jäädytetyt kerrokset, milloin siirto-oppimisesta on hyötyä.

Oppitunti 1/413 vaihetta

Siirto-oppimisen käsitteet ja strategiat on ilmainen Oppikaa tekoälyä Pythonilla-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Oppikaa tekoälyä Pythonilla-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Oppikaa tekoälyä Pythonilla-kurssilla on yhteensä 4 oppituntia.

Mitä siirto-oppiminen on?

Siirto-oppimisessa suurilla aineistoilla koulutettua mallia käytetään uudelleen uuden, siihen liittyvän tehtävän lähtökohtana. Sen sijaan että opettaisitte visuaaliset piirteet alusta alkaen, hyödynnätte piirteitä, jotka verkko on jo oppinut.

Tämä vähentää huomattavasti sen datan ja laskennan määrää, jota tarvitsette korkean tarkkuuden saavuttamiseen.

ImageNetin perusta

Useimmat esikoulutetut näkömallit koulutetaan ImageNetillä: noin 1,4 miljoonalla kuvalla, jotka jakautuvat 1 000 luokkaan.

Koulutuksen aikana verkko oppii piirteistä hierarkian: varhaisissa kerroksissa reunoja ja värejä, keskimmäisissä tekstuureja ja ylemmissä kerroksissa objektien osia. Nämä matalan tason piirteet siirtyvät hyvin lähes mihin tahansa kuvatehtävään.

Miksi varhaiset piirteet siirtyvät

Ensimmäiset konvoluutiokerrokset tunnistavat yleisiä kuvioita (reunoja, läiskiä ja gradientteja), joita esiintyy jokaisessa luonnollisessa kuvassa – olipa kyse kissoista, röntgenkuvista tai satelliittikuvista.

Syvemmät kerrokset muuttuvat enemmän tehtäväkohtaisiksi (ne kokoavat reunat ImageNet-objektien osiksi). Siksi varhaiset kerrokset yleensä säilytetään ja myöhemmät korvataan tai koulutetaan uudelleen.

Strategia 1: Piirteiden poiminta

Piirteiden poiminta jäädyttää esikoulutetun perusverkon kaikki kerrokset, joten sen painot eivät muutu. Perusverkko toimii kiinteänä piirteiden poimijana, ja sen päälle koulutetaan vain pieni uusi luokittelupää.

Käyttäkää tätä, kun aineistonne on pieni ja ImageNetin kaltainen. Menetelmä on nopea ja ehkäisee ylisovittamista, koska opetettavia parametreja on vähän.

base.trainable = False

model = Sequential([
    base,                      # frozen ImageNet features
    GlobalAveragePooling2D(),
    Dense(num_classes, activation="softmax")  # only this trains
])

Strategia 2: Hienosäätö

Hienosäädössä perusverkon ylempien kerrosten jäädytys poistetaan ja niitä koulutetaan uudelleen yhdessä pään kanssa, jolloin verkko voi mukauttaa korkean tason piirteensä juuri teidän aineistoonne.

Käyttäkää tätä, kun teillä on enemmän dataa tai toimialanne poikkeaa ImageNetistä (esimerkiksi lääketieteelliset kuvaukset). Hienosäätäkää aina erittäin pienellä oppimisnopeudella, jotta esikoulutetut painot eivät tuhoudu.

Piirteiden poiminta vai hienosäätö

  • Piirteiden poiminta: perusverkko jäädytettynä, vain pää opetetaan, erittäin nopea ja paras pienelle tai samankaltaiselle aineistolle.
  • Hienosäätö: perusverkon ylempien kerrosten jäädytys poistettu ja pää mukana opetuksessa, hitaampi ja paras suuremmalle tai erilaiselle aineistolle.

Yleinen toimintatapa on aloittaa piirteiden poiminnalla ja siirtyä sitten toiseen vaiheeseen, jossa mallia hienosäädetään, kun pää on vakiintunut.

Tarvittava datamäärä

Käytettävissänne olevan datan määrä ratkaisee strategian:

  • Muutama sata kuvaa: pelkkä piirteiden poiminta (kaikki jäädytetään).
  • Muutama tuhat: piirteiden poiminta ja sen jälkeen ylimpien kerrosten hienosäätö.
  • Kymmeniä tuhansia tai enemmän: suurempi osa perusverkosta, mahdollisesti koko verkko, hienosäädetään.

Mitä vähemmän dataa on, sitä enemmän kannattaa jäädyttää, sillä opetettavien parametrien vähentäminen pienentää ylisovittamisen riskiä.

Luokittelupään vaihtaminen

ImageNet-mallit tuottavat 1 000 luokkaa. Tehtävässänne on todennäköisesti eri määrä luokkia, joten poistatte alkuperäisen yläosan (include_top=False) ja liitätte tilalle omien luokkienne määrään mitoitetun pään.

from tensorflow.keras import layers, Model

x = base.output
x = layers.GlobalAveragePooling2D()(x)
x = layers.Dropout(0.2)(x)
outputs = layers.Dense(5, activation="softmax")(x)  # 5 custom classes
model = Model(base.input, outputs)

Esikäsittelyn on vastattava mallia

Jokainen esikoulutettu malliperhe odottaa syötteet skaalattuina samalla tavalla kuin ImageNet-koulutuksessa. Vastaavan preprocess_input-funktion käyttäminen on välttämätöntä, sillä muuten tarkkuus romahtaa.

from tensorflow.keras.applications.resnet50 import preprocess_input

# Scale pixels exactly as ResNet50 expects
x = preprocess_input(raw_image_batch)

Oppimisnopeuden hallinta

Piirteiden poiminnan aikana tavallinen oppimisnopeus (esimerkiksi 1e-3) sopii hyvin, koska vain uusi pää opetetaan.

Hienosäädön aikana oppimisnopeus on pienennettävä hyvin pieneksi, esimerkiksi arvoon 1e-5. Suuret päivitykset pyyhkisivät huolellisesti opitut ImageNet-painot pois; tätä ilmiötä kutsutaan katastrofaaliseksi unohtamiseksi.

Tyypillinen työnkulku

  1. Ladatkaa esikoulutettu perusverkko asetuksella include_top=False.
  2. Jäädyttäkää se ja kouluttakaa uusi pää (piirteiden poiminta).
  3. Poistakaa ylimpien kerrosten jäädytys ja jatkakaa koulutusta erittäin pienellä oppimisnopeudella (hienosäätö).
  4. Arvioikaa malli ja muuntakaa se käyttöönottoa varten.

Tällä vaiheistetulla lähestymistavalla saavutetaan hyvä tarkkuus myös kohtuullisen pienillä aineistoilla.

Pikatesti

Testatkaa ymmärrystänne siirto-oppimisen strategioista.

Kertaus

Opitte, että siirto-oppimisessa hyödynnetään ImageNetillä esikoulutettuja piirteitä (1,4 miljoonaa kuvaa, 1 000 luokkaa). Piirteiden poiminnassa perusverkko jäädytetään pienille ja samankaltaisille aineistoille, kun taas hienosäädössä ylempien kerrosten jäädytys poistetaan ja niitä opetetaan erittäin pienellä oppimisnopeudella suurempia tai erilaisia aineistoja varten.

Sovittakaa esikäsittely perusverkkoon, vaihtakaa pää omien luokkienne mukaiseksi ja käyttäkää vaiheistettua työnkulkua. Seuraavaksi viemme tämän koodiin VGG16:n ja ResNet50:n avulla.

Aloita maksutta

Opi Python tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
53
Oppitunnit
225

Usein kysytyt kysymykset

Onko oppitunti ”Siirto-oppimisen käsitteet ja strategiat” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Oppikaa tekoälyä Pythonilla-oppimispolun 3 oppituntia, myös oppitunnin “Siirto-oppimisen käsitteet ja strategiat”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppikaa tekoälyä Pythonilla-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Siirto-oppimisen käsitteet ja strategiat”?

Piirteiden irrotus ja hienosäätö, jäädytetyt kerrokset, milloin siirto-oppimisesta on hyötyä. Harjoittelet Oppikaa tekoälyä Pythonilla-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Oppikaa tekoälyä Pythonilla-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Oppikaa tekoälyä Pythonilla-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.

Kuinka kauan ”Siirto-oppimisen käsitteet ja strategiat”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Oppikaa tekoälyä Pythonilla-oppitunnilla?

Kyllä. Jokainen Oppikaa tekoälyä Pythonilla-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Siirto-oppimisen käsitteet ja strategiat
  2. VGG16:n ja ResNet50:n käyttö perusmalleina
  3. Hienosäätö: kerrosten vapauttaminen ja uudelleenkoulutus
  4. MobileNet ja EfficientNet reunalaitteille käyttöönotettaviksi
← Takaisin: Oppikaa tekoälyä Pythonilla